<?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>108697</bug_id>
          
          <creation_ts>2013-02-01 14:35:31 -0800</creation_ts>
          <short_desc>Web Inspector: highlight matching braces in DTE.</short_desc>
          <delta_ts>2013-02-07 03:52:50 -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>
          <dependson>108685</dependson>
    
    <dependson>108692</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Lushnikov">lushnikov</reporter>
          <assigned_to name="Andrey Lushnikov">lushnikov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</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>823278</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-01 14:35:31 -0800</bug_when>
    <thetext>Highlight matching braces in DefaultTextEditor:
- when cursor on a curly/round brace, highlight matching one
- when cursor not on a curly/round brace, highlight enclosing braces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823321</commentid>
    <comment_count>1</comment_count>
      <attachid>186154</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-01 15:07:15 -0800</bug_when>
    <thetext>Created attachment 186154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823322</commentid>
    <comment_count>2</comment_count>
      <attachid>186155</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-01 15:07:54 -0800</bug_when>
    <thetext>Created attachment 186155
Cursor inside OR block</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823469</commentid>
    <comment_count>3</comment_count>
      <attachid>186154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-01 17:46:39 -0800</bug_when>
    <thetext>Comment on attachment 186154
Patch

Attachment 186154 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16330404

New failing tests:
inspector/editor/brace-matcher.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823489</commentid>
    <comment_count>4</comment_count>
      <attachid>186154</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-01 18:27:28 -0800</bug_when>
    <thetext>Comment on attachment 186154
Patch

Attachment 186154 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16331433

New failing tests:
inspector/editor/brace-matcher.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823529</commentid>
    <comment_count>5</comment_count>
      <attachid>186154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-01 20:12:47 -0800</bug_when>
    <thetext>Comment on attachment 186154
Patch

Attachment 186154 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16336468

New failing tests:
inspector/editor/brace-matcher.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825350</commentid>
    <comment_count>6</comment_count>
      <attachid>186594</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-05 03:40:41 -0800</bug_when>
    <thetext>Created attachment 186594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826201</commentid>
    <comment_count>7</comment_count>
      <attachid>186783</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-06 01:20:50 -0800</bug_when>
    <thetext>Created attachment 186783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826314</commentid>
    <comment_count>8</comment_count>
      <attachid>186783</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-06 04:09:19 -0800</bug_when>
    <thetext>Comment on attachment 186783
Patch

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

Overall looks good. Please migrate the {} auto-indent code to the new matcher to test if the API is universal enough.

&gt; Source/WebCore/inspector/front-end/TextEditorHighlighter.js:199
&gt; +                        else

{} around multiline block please.

&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:676
&gt; +        if (lineNumber &gt;= this._textModel.linesCount || lineNumber &lt; 0)

When does this happen?

&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:702
&gt; +    findLeftPretendent: function(lineNumber, column, maxBraceIteration)

Pretendent -&gt; Candidate

&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:796
&gt; +

You don&apos;t need to make every other line a whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826345</commentid>
    <comment_count>9</comment_count>
      <attachid>186783</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-06 04:46:59 -0800</bug_when>
    <thetext>Comment on attachment 186783
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/TextEditorHighlighter.js:199
&gt;&gt; +                        else
&gt; 
&gt; {} around multiline block please.

fixed

&gt;&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:676
&gt;&gt; +        if (lineNumber &gt;= this._textModel.linesCount || lineNumber &lt; 0)
&gt; 
&gt; When does this happen?

in while-loop of findLeftPretendent:
..
while ((braces = this._braceRanges(--lineNumber)) &amp;&amp; !braces.length) {};
..

and in a symmetrical findRightCandidate:
...
while ((braces = this._braceRanges(++lineNumber)) &amp;&amp; !braces.length) {};
...

&gt;&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:702
&gt;&gt; +    findLeftPretendent: function(lineNumber, column, maxBraceIteration)
&gt; 
&gt; Pretendent -&gt; Candidate

fixed

&gt;&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:796
&gt;&gt; +
&gt; 
&gt; You don&apos;t need to make every other line a whitespace.

removed couple of newlines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826346</commentid>
    <comment_count>10</comment_count>
      <attachid>186830</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-06 04:47:53 -0800</bug_when>
    <thetext>Created attachment 186830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826413</commentid>
    <comment_count>11</comment_count>
      <attachid>186830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 06:47:59 -0800</bug_when>
    <thetext>Comment on attachment 186830
Patch

Rejecting attachment 186830 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 186830, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
113.
2 out of 2 hunks FAILED -- saving rejects to file LayoutTests/inspector/editor/highlighter-basics-expected.txt.rej
patching file LayoutTests/inspector/editor/text-editor-long-line-expected.txt
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/inspector/editor/text-editor-long-line-expected.txt.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Pavel Feldman&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16389274</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826439</commentid>
    <comment_count>12</comment_count>
      <attachid>186853</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-06 07:43:03 -0800</bug_when>
    <thetext>Created attachment 186853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827274</commentid>
    <comment_count>13</comment_count>
      <attachid>186853</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 03:52:45 -0800</bug_when>
    <thetext>Comment on attachment 186853
Patch

Clearing flags on attachment: 186853

Committed r142091: &lt;http://trac.webkit.org/changeset/142091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827275</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 03:52:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186154</attachid>
            <date>2013-02-01 15:07:15 -0800</date>
            <delta_ts>2013-02-05 03:40:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108697-20130202030356.patch</filename>
            <type>text/plain</type>
            <size>22609</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk0MDk1YmRkNTc4N2U2
NjJkMDY5MTZmMmFlMWMyZGI2OTk2YzUyOC4uNDVjOTdkNzBkNjM2YmRmMTQ4MjU2YmEwODY4ZTA1
ZDg5YmQ1YWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEzLTAyLTAxICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgbWF0Y2hpbmcgYnJhY2VzIGluIERURS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODY5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBCcmFjZU1hdGNoZXIg
Y2xhc3Mgd2hpY2ggZm9yIGdpdmVuIHBvc2l0aW9uIGluIHRleHRNb2RlbAorICAgICAgICB3aWxs
IHJlc3BvbmQgd2l0aCBlbmNsb3NpbmcgYnJhY2UgcGFpciBmb3IgdGhhdCBwb3NpdGlvbi4KKyAg
ICAgICAgTWFrZSB1c2Ugb2YgdGhpcyBjbGFzcyBpbiBEZWZhdWx0VGV4dEVkaXRvciBieSBoYW5k
bGluZworICAgICAgICBzZWxlY3Rpb25DaGFuZ2UgZXZlbnQuCisKKyAgICAgICAgTmV3IHRlc3Q6
IGluc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwucHJvdG90eXBlLl9oYW5kbGVTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0
Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTW9kZWwuZW5kc1dpdGhCcmFja2V0UmVnZXgpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRSZWdleC4pOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3M6CisgICAgICAgICgudGV4dC1l
ZGl0b3ItYnJhY2UtbWF0Y2gpOgorCisyMDEzLTAyLTAxICBBbmRyZXkgTHVzaG5pa292ICA8bHVz
aG5pa292QGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgcm91bmQg
YnJhY2VzIHRvIGphdmFzY3JpcHQgdG9rZW5pemVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg2OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggNTFiMjgz
YzA4NjY5ZjI0MjkyOWZlMzIzNTcxNmQ2NjIzOTJkZWZkNi4uMDczNGFhM2RkNDc2MTA1ZjliODRi
ZmI2NzhlNGNkYWU4YzFkN2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0xMzg0LDYgKzEzODQsOCBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCA9IGZ1bmN0aW9uKGRlbGVnYXRlLCB0
ZXh0TW9kZWwsIHVybCwgc3luY1Njcm9sbAogICAgIHRoaXMuX2hpZ2hsaWdodERlc2NyaXB0b3Jz
ID0gW107CiAKICAgICB0aGlzLl90b2tlbkhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsLlRva2VuSGlnaGxpZ2h0ZXIodGhpcywgdGV4dE1vZGVsKTsKKyAg
ICB0aGlzLl9icmFjZU1hdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5C
cmFjZU1hdGNoZXIodGV4dE1vZGVsKTsKKyAgICB0aGlzLl9icmFjZUhpZ2hsaWdodGVyID0gbmV3
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0Q29udHJvbGxl
cih0aGlzLCB0ZXh0TW9kZWwsIHRoaXMuX2JyYWNlTWF0Y2hlcik7CiAKICAgICB0aGlzLl9mcmVl
Q2FjaGVkRWxlbWVudHMoKTsKICAgICB0aGlzLmJ1aWxkQ2h1bmtzKCk7CkBAIC0yNjczLDYgKzI2
NzUsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9sYXN0U2VsZWN0aW9uID0gdGV4dFJhbmdlOwogCiAgICAgICAgIHRo
aXMuX3Rva2VuSGlnaGxpZ2h0ZXIuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHRleHRSYW5nZSk7Cisg
ICAgICAgIHRoaXMuX2JyYWNlSGlnaGxpZ2h0ZXIuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHRleHRS
YW5nZSk7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNlbGVjdGlvbkNoYW5nZWQodGV4dFJhbmdl
KTsKICAgICB9LAogCkBAIC0zMzQ0LDQgKzMzNDcsNjEgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRU
ZXh0RWRpdG9yLldvcmRNb3ZlbWVudENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIH0KIH0K
IAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWx9IHRleHRFZGl0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbH0gdGV4dE1vZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9k
ZWwuQnJhY2VNYXRjaGVyfSBicmFjZU1hdGNoZXIKKyAqLworV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250cm9sbGVyID0gZnVuY3Rpb24odGV4dEVkaXRv
ciwgdGV4dE1vZGVsLCBicmFjZU1hdGNoZXIpCit7CisgICAgdGhpcy5fdGV4dEVkaXRvciA9IHRl
eHRFZGl0b3I7CisgICAgdGhpcy5fdGV4dE1vZGVsID0gdGV4dE1vZGVsOworICAgIHRoaXMuX2Jy
YWNlTWF0Y2hlciA9IGJyYWNlTWF0Y2hlcjsKKyAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9y
cyA9IFtdOworfQorCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhpZ2hs
aWdodENvbnRyb2xsZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlRleHRSYW5nZX0gc2VsZWN0aW9uUmFuZ2UKKyAgICAgKi8KKyAgICBoYW5kbGVT
ZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uKHNlbGVjdGlvblJhbmdlKQorICAgIHsKKyAgICAgICAg
aWYgKCFzZWxlY3Rpb25SYW5nZSB8fCAhc2VsZWN0aW9uUmFuZ2UuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICB0aGlzLl9yZW1vdmVIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZFJhbmdlICYmIHRoaXMuX2hp
Z2hsaWdodGVkUmFuZ2UuY29tcGFyZVRvKHNlbGVjdGlvblJhbmdlKSA9PT0gMCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZW1vdmVIaWdobGlnaHQoKTsKKyAgICAgICAg
dmFyIGxpbmVOdW1iZXIgPSBzZWxlY3Rpb25SYW5nZS5zdGFydExpbmU7CisgICAgICAgIHZhciBj
b2x1bW4gPSBzZWxlY3Rpb25SYW5nZS5zdGFydENvbHVtbjsKKyAgICAgICAgdmFyIGxpbmUgPSB0
aGlzLl90ZXh0TW9kZWwubGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYgKGNvbHVtbiA+IDAg
JiYgL1spfV0vLnRlc3QobGluZS5jaGFyQXQoY29sdW1uIC0gMSkpKQorICAgICAgICAgICAgLS1j
b2x1bW47CisKKyAgICAgICAgdmFyIGVuY2xvc2luZ0JyYWNlcyA9IHRoaXMuX2JyYWNlTWF0Y2hl
ci5lbmNsb3NpbmdCcmFjZXMobGluZU51bWJlciwgY29sdW1uLCAyMDApOworICAgICAgICBpZiAo
IWVuY2xvc2luZ0JyYWNlcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9o
aWdobGlnaHRlZFJhbmdlID0gc2VsZWN0aW9uUmFuZ2U7CisgICAgICAgIHRoaXMuX2hpZ2hsaWdo
dERlc2NyaXB0b3JzLnB1c2godGhpcy5fdGV4dEVkaXRvci5oaWdobGlnaHRSYW5nZShXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbihlbmNsb3NpbmdCcmFjZXMubGVmdEJy
YWNlLmxpbmVOdW1iZXIsIGVuY2xvc2luZ0JyYWNlcy5sZWZ0QnJhY2UuY29sdW1uKSwgInRleHQt
ZWRpdG9yLWJyYWNlLW1hdGNoIikpOworICAgICAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9y
cy5wdXNoKHRoaXMuX3RleHRFZGl0b3IuaGlnaGxpZ2h0UmFuZ2UoV2ViSW5zcGVjdG9yLlRleHRS
YW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oZW5jbG9zaW5nQnJhY2VzLnJpZ2h0QnJhY2UubGluZU51
bWJlciwgZW5jbG9zaW5nQnJhY2VzLnJpZ2h0QnJhY2UuY29sdW1uKSwgInRleHQtZWRpdG9yLWJy
YWNlLW1hdGNoIikpOworICAgIH0sCisKKyAgICBfcmVtb3ZlSGlnaGxpZ2h0OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodERlc2NyaXB0b3JzLmxlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5f
aGlnaGxpZ2h0RGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl90ZXh0
RWRpdG9yLnJlbW92ZUhpZ2hsaWdodCh0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9yc1tpXSk7CisK
KyAgICAgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2hpZ2hsaWdodGVkUmFuZ2U7CisgICAgfQorfQorCiBXZWJJbnNwZWN0b3IuZGVidWdE
ZWZhdWx0VGV4dEVkaXRvciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcwppbmRleCA2ZDczYzcyM2I5M2NkYWQ5
ZDg1Yjc3NDE1ZjAwZWZmNTg2ODFiOTBkLi5kZWJiMzNlOTQyOGEwYjYwZjMzZTIxMTA5YjJkZTMw
YTdmNGFhMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRFZGl0b3JNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRFZGl0b3JNb2RlbC5qcwpAQCAtNjU2LDMgKzY1NiwyNzAgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlCiB9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFy
YW0ge251bWJlcn0gbGluZU51bWJlcgorICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlSW5kZXgKKyAq
LworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5SYW5nZUxvY2F0aW9uID0gZnVuY3Rpb24o
bGluZU51bWJlciwgcmFuZ2VJbmRleCkKK3sKKyAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lTnVt
YmVyOworICAgIHRoaXMucmFuZ2VJbmRleCA9IHJhbmdlSW5kZXg7Cit9CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWx9IHRleHRN
b2RlbAorICovCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLkJyYWNlTWF0Y2hlciA9IGZ1
bmN0aW9uKHRleHRNb2RlbCkKK3sKKyAgICB0aGlzLl90ZXh0TW9kZWwgPSB0ZXh0TW9kZWw7Cit9
CisKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VNYXRjaGVyLnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBy
ZXR1cm4ge0FycmF5Ljx7c3RhcnRDb2x1bW46IG51bWJlciwgZW5kQ29sdW1uOiBudW1iZXIsIHRv
a2VuOiBzdHJpbmd9Pn0KKyAgICAgKi8KKyAgICBfaGlnaGxpZ2h0UmFuZ2VzOiBmdW5jdGlvbihs
aW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKGxpbmVOdW1iZXIgPj0gdGhpcy5fdGV4dE1v
ZGVsLmxpbmVzQ291bnQgfHwgbGluZU51bWJlciA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKworICAgICAgICB2YXIgYXR0cmlidXRlID0gdGhpcy5fdGV4dE1vZGVsLmdldEF0dHJpYnV0
ZShsaW5lTnVtYmVyLCAiaGlnaGxpZ2h0Iik7CisgICAgICAgIGlmICghYXR0cmlidXRlKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBh
dHRyaWJ1dGUucmFuZ2VzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuUmFuZ2VMb2NhdGlvbn0gcmFuZ2VMb2NhdGlvbgorICAg
ICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLlJhbmdlTG9jYXRpb259
CisgICAgICovCisgICAgX3ByZXZpb3VzUmFuZ2VJdGVyYXRvcjogZnVuY3Rpb24ocmFuZ2VMb2Nh
dGlvbikKKyAgICB7CisgICAgICAgIC0tdGhpcy5fbWF4UmFuZ2VJdGVyYXRvcjsKKyAgICAgICAg
aWYgKCF0aGlzLl9tYXhSYW5nZUl0ZXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisK
KyAgICAgICAgdmFyIHJhbmdlSW5kZXggPSByYW5nZUxvY2F0aW9uLnJhbmdlSW5kZXg7CisgICAg
ICAgIHZhciBsaW5lTnVtYmVyID0gcmFuZ2VMb2NhdGlvbi5saW5lTnVtYmVyOworCisgICAgICAg
IC0tcmFuZ2VJbmRleDsKKyAgICAgICAgaWYgKHJhbmdlSW5kZXggPCAwKSB7CisgICAgICAgICAg
ICB2YXIgcmFuZ2VzOworICAgICAgICAgICAgd2hpbGUoLS1saW5lTnVtYmVyID49IDApIHsKKyAg
ICAgICAgICAgICAgICByYW5nZXMgPSB0aGlzLl9oaWdobGlnaHRSYW5nZXMobGluZU51bWJlcik7
CisgICAgICAgICAgICAgICAgaWYgKCFyYW5nZXMgfHwgIXJhbmdlcy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGluZU51bWJl
ciA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICByYW5nZUlu
ZGV4ID0gcmFuZ2VzLmxlbmd0aCAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLlJhbmdlTG9jYXRpb24obGluZU51bWJlciwgcmFu
Z2VJbmRleCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNb2RlbC5SYW5nZUxvY2F0aW9ufSByYW5nZUxvY2F0aW9uCisgICAgICogQHJl
dHVybiB7P1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuUmFuZ2VMb2NhdGlvbn0KKyAgICAg
Ki8KKyAgICBfbmV4dFJhbmdlSXRlcmF0b3I6IGZ1bmN0aW9uKHJhbmdlTG9jYXRpb24pCisgICAg
eworICAgICAgICAtLXRoaXMuX21heFJhbmdlSXRlcmF0b3I7CisgICAgICAgIGlmICghdGhpcy5f
bWF4UmFuZ2VJdGVyYXRvcikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHZh
ciByYW5nZUluZGV4ID0gcmFuZ2VMb2NhdGlvbi5yYW5nZUluZGV4OworICAgICAgICB2YXIgbGlu
ZU51bWJlciA9IHJhbmdlTG9jYXRpb24ubGluZU51bWJlcjsKKworICAgICAgICB2YXIgcmFuZ2Vz
ID0gdGhpcy5faGlnaGxpZ2h0UmFuZ2VzKGxpbmVOdW1iZXIpOworICAgICAgICBpZiAoIXJhbmdl
cykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgICsrcmFuZ2VJbmRleDsKKyAg
ICAgICAgaWYgKHJhbmdlSW5kZXggPj0gcmFuZ2VzLmxlbmd0aCkgeworICAgICAgICAgICAgd2hp
bGUgKChyYW5nZXMgPSB0aGlzLl9oaWdobGlnaHRSYW5nZXMoKytsaW5lTnVtYmVyKSkgJiYgIXJh
bmdlcy5sZW5ndGgpIHt9CisgICAgICAgICAgICBpZiAoIXJhbmdlcykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKworICAgICAgICAgICAgcmFuZ2VJbmRleCA9IDA7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLlJhbmdlTG9j
YXRpb24obGluZU51bWJlciwgcmFuZ2VJbmRleCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5SYW5nZUxvY2F0aW9ufSByYW5n
ZUxvY2F0aW9uCisgICAgICogQHJldHVybiB7P3tzdGFydENvbHVtbjogbnVtYmVyLCBlbmRDb2x1
bW46IG51bWJlciwgdG9rZW46IHN0cmluZ319CisgICAgICovCisgICAgX3JldHJpZXZlUmFuZ2U6
IGZ1bmN0aW9uKHJhbmdlTG9jYXRpb24pCisgICAgeworICAgICAgICBpZiAocmFuZ2VMb2NhdGlv
bi5yYW5nZUluZGV4IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHZh
ciBhdHRyaWJ1dGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKHJhbmdlTG9jYXRpb24u
bGluZU51bWJlciwgImhpZ2hsaWdodCIpOworICAgICAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB2YXIgcmFuZ2VzID0gYXR0cmlidXRlLnJhbmdl
czsKKyAgICAgICAgaWYgKCFyYW5nZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgaWYgKHJhbmdlTG9jYXRpb24ucmFuZ2VJbmRleCA+PSByYW5nZXMubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHJhbmdlc1tyYW5n
ZUxvY2F0aW9uLnJhbmdlSW5kZXhdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuUmFuZ2VMb2NhdGlvbik6ID9X
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLlJhbmdlTG9jYXRpb259IHJhbmdlSXRlcmF0b3IK
KyAgICAgKiBAcGFyYW0gez9XZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLlJhbmdlTG9jYXRp
b259IHJhbmdlTG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5SYW5nZUxvY2F0aW9ufQorICAgICAqLworICAgIF9icmFjZUl0ZXJhdG9yOiBmdW5j
dGlvbihyYW5nZUl0ZXJhdG9yLCByYW5nZUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFy
YW5nZUxvY2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgd2hpbGUg
KHJhbmdlTG9jYXRpb24gPSByYW5nZUl0ZXJhdG9yKHJhbmdlTG9jYXRpb24pKSB7CisgICAgICAg
ICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9yZXRyaWV2ZVJhbmdlKHJhbmdlTG9jYXRpb24pOworICAg
ICAgICAgICAgaWYgKHJhbmdlLnRva2VuID09PSAiYnJhY2Utc3RhcnQiIHx8IHJhbmdlLnRva2Vu
ID09PSAiYnJhY2UtZW5kIiB8fCByYW5nZS50b2tlbiA9PT0gImJsb2NrLXN0YXJ0IiB8fCByYW5n
ZS50b2tlbiA9PT0gImJsb2NrLWVuZCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlTG9j
YXRpb247CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBicmFjZVRva2VuTGVmdAorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBicmFjZVRva2VuUmlnaHQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAq
LworICAgIF9tYXRjaGVzOiBmdW5jdGlvbihicmFjZVRva2VuTGVmdCwgYnJhY2VUb2tlblJpZ2h0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgoYnJhY2VUb2tlbkxlZnQgPT09ICJicmFjZS1zdGFy
dCIgJiYgYnJhY2VUb2tlblJpZ2h0ID09PSAiYnJhY2UtZW5kIikgfHwgKGJyYWNlVG9rZW5MZWZ0
ID09PSAiYmxvY2stc3RhcnQiICYmIGJyYWNlVG9rZW5SaWdodCA9PT0gImJsb2NrLWVuZCIpKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5SYW5nZUxvY2F0aW9ufSByYW5nZUxvY2F0aW9uCisgICAgICogQHJldHVybiB7P1dl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuUmFuZ2VMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBf
ZmluZExlZnRQcmV0ZW5kZW50OiBmdW5jdGlvbihyYW5nZUxvY2F0aW9uKQorICAgIHsKKyAgICAg
ICAgdmFyIHJhbmdlSXRlcmF0b3IgPSB0aGlzLl9wcmV2aW91c1JhbmdlSXRlcmF0b3IuYmluZCh0
aGlzKTsKKyAgICAgICAgdmFyIHN0YWNrID0gW107CisgICAgICAgIHdoaWxlIChyYW5nZUxvY2F0
aW9uID0gdGhpcy5fYnJhY2VJdGVyYXRvcihyYW5nZUl0ZXJhdG9yLCByYW5nZUxvY2F0aW9uKSkg
eworICAgICAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5fcmV0cmlldmVSYW5nZShyYW5nZUxvY2F0
aW9uKTsKKyAgICAgICAgICAgIHN0YWNrLnB1c2gocmFuZ2UudG9rZW4pOworICAgICAgICAgICAg
aWYgKHN0YWNrLmxlbmd0aCA9PT0gMSAmJiAocmFuZ2UudG9rZW4gPT09ICJibG9jay1zdGFydCIg
fHwgcmFuZ2UudG9rZW4gPT09ICJicmFjZS1zdGFydCIpKQorICAgICAgICAgICAgICAgIHJldHVy
biByYW5nZUxvY2F0aW9uOworICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDEpIHsK
KyAgICAgICAgICAgICAgICB2YXIgbGVmdEJyYWNlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07
CisgICAgICAgICAgICAgICAgdmFyIHJpZ2h0QnJhY2UgPSBzdGFja1tzdGFjay5sZW5ndGggLSAy
XTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWF0Y2hlcyhsZWZ0QnJhY2UsIHJpZ2h0QnJh
Y2UpKQorICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2Uoc3RhY2subGVuZ3RoIC0gMiwg
Mik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHs/V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5SYW5n
ZUxvY2F0aW9ufSByYW5nZUxvY2F0aW9uCisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTW9kZWwuUmFuZ2VMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBfZmluZFJpZ2h0UHJl
dGVuZGVudDogZnVuY3Rpb24ocmFuZ2VMb2NhdGlvbikKKyAgICB7CisgICAgICAgIGlmICghcmFu
Z2VMb2NhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHZhciByYW5n
ZUl0ZXJhdG9yID0gdGhpcy5fbmV4dFJhbmdlSXRlcmF0b3IuYmluZCh0aGlzKTsKKyAgICAgICAg
dmFyIHN0YWNrID0gW107CisgICAgICAgIHdoaWxlIChyYW5nZUxvY2F0aW9uID0gdGhpcy5fYnJh
Y2VJdGVyYXRvcihyYW5nZUl0ZXJhdG9yLCByYW5nZUxvY2F0aW9uKSkgeworICAgICAgICAgICAg
dmFyIHJhbmdlID0gdGhpcy5fcmV0cmlldmVSYW5nZShyYW5nZUxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIHN0YWNrLnB1c2gocmFuZ2UudG9rZW4pOworICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0
aCA9PT0gMSAmJiAocmFuZ2UudG9rZW4gPT09ICJibG9jay1lbmQiIHx8IHJhbmdlLnRva2VuID09
PSAiYnJhY2UtZW5kIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlTG9jYXRpb247Cisg
ICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMSkgeworICAgICAgICAgICAgICAgIHZh
ciBsZWZ0QnJhY2UgPSBzdGFja1tzdGFjay5sZW5ndGggLSAyXTsKKyAgICAgICAgICAgICAgICB2
YXIgcmlnaHRCcmFjZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgICAg
IGlmICh0aGlzLl9tYXRjaGVzKGxlZnRCcmFjZSwgcmlnaHRCcmFjZSkpCisgICAgICAgICAgICAg
ICAgICAgIHN0YWNrLnNwbGljZShzdGFjay5sZW5ndGggLSAyLCAyKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbgor
ICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLlJhbmdlTG9jYXRp
b259CisgICAgICovCisgICAgX2Nsb3Nlc3RSYW5nZVRvUG9zaXRpb246IGZ1bmN0aW9uKGxpbmVO
dW1iZXIsIGNvbHVtbikKKyAgICB7CisgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLl9oaWdobGln
aHRSYW5nZXMobGluZU51bWJlcik7CisgICAgICAgIGlmICghcmFuZ2VzKQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisKKyAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcih2YWx1ZSwgcmFuZ2Up
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSAtIHJhbmdlLmVuZENvbHVtbjsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciByYW5nZUluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JP
YmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGNvbHVtbiwgcmFuZ2VzLCBjb21wYXJhdG9yKTsK
KyAgICAgICAgdmFyIHJhbmdlTG9jYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
b2RlbC5SYW5nZUxvY2F0aW9uKGxpbmVOdW1iZXIsIHJhbmdlSW5kZXgpOworCisgICAgICAgIHJl
dHVybiByYW5nZUxvY2F0aW9uOworICAgIH0sCisKKyAgICBlbmNsb3NpbmdCcmFjZXM6IGZ1bmN0
aW9uKGxpbmVOdW1iZXIsIGNvbHVtbiwgbWF4UmFuZ2VJdGVyYXRvcikKKyAgICB7CisgICAgICAg
IHZhciByYW5nZUxvY2F0aW9uID0gdGhpcy5fY2xvc2VzdFJhbmdlVG9Qb3NpdGlvbihsaW5lTnVt
YmVyLCBjb2x1bW4pOworCisgICAgICAgIGlmICghcmFuZ2VMb2NhdGlvbikKKyAgICAgICAgICAg
IHJldHVybiBudWxsOworCisgICAgICAgIHRoaXMuX21heFJhbmdlSXRlcmF0b3IgPSBtYXhSYW5n
ZUl0ZXJhdG9yIHx8IE51bWJlci5NQVhfVkFMVUU7CisKKyAgICAgICAgdmFyIHJhbmdlID0gdGhp
cy5fcmV0cmlldmVSYW5nZShyYW5nZUxvY2F0aW9uKTsKKyAgICAgICAgdmFyIHJhbmdlQ29udGFp
bnNQb3NpdGlvbiA9IHJhbmdlICYmIHJhbmdlLnN0YXJ0Q29sdW1uID49IGNvbHVtbiAmJiByYW5n
ZS5lbmRDb2x1bW4gPD0gY29sdW1uOworICAgICAgICB2YXIgbGVmdEJyYWNlOworICAgICAgICBp
ZiAocmFuZ2VDb250YWluc1Bvc2l0aW9uICYmIChyYW5nZS50b2tlbiA9PT0gImJyYWNlLXN0YXJ0
IiB8fCByYW5nZS50b2tlbiA9PT0gImJsb2NrLXN0YXJ0IikpCisgICAgICAgICAgICBsZWZ0QnJh
Y2UgPSByYW5nZUxvY2F0aW9uOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsZWZ0QnJhY2Ug
PSB0aGlzLl9maW5kTGVmdFByZXRlbmRlbnQocmFuZ2VMb2NhdGlvbik7CisKKyAgICAgICAgdmFy
IHJpZ2h0QnJhY2U7CisgICAgICAgIGlmIChyYW5nZUNvbnRhaW5zUG9zaXRpb24gJiYgKHJhbmdl
LnRva2VuID09PSAiYnJhY2UtZW5kIiB8fCByYW5nZS50b2tlbiA9PT0gImJsb2NrLWVuZCIpKQor
ICAgICAgICAgICAgcmlnaHRCcmFjZSA9IHJhbmdlTG9jYXRpb247CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJpZ2h0QnJhY2UgPSB0aGlzLl9maW5kUmlnaHRQcmV0ZW5kZW50KHJhbmdlQ29u
dGFpbnNQb3NpdGlvbiA/IHJhbmdlTG9jYXRpb24gOiB0aGlzLl9wcmV2aW91c1JhbmdlSXRlcmF0
b3IocmFuZ2VMb2NhdGlvbikpOworCisgICAgICAgIGlmICghbGVmdEJyYWNlIHx8ICFyaWdodEJy
YWNlKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGxlZnRSYW5nZSA9
IHRoaXMuX3JldHJpZXZlUmFuZ2UobGVmdEJyYWNlKTsKKyAgICAgICAgdmFyIHJpZ2h0UmFuZ2Ug
PSB0aGlzLl9yZXRyaWV2ZVJhbmdlKHJpZ2h0QnJhY2UpOworCisgICAgICAgIGlmICghdGhpcy5f
bWF0Y2hlcyhsZWZ0UmFuZ2UudG9rZW4sIHJpZ2h0UmFuZ2UudG9rZW4pKQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGxlZnRCcmFjZTog
eworICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxlZnRCcmFjZS5saW5lTnVtYmVyLAorICAg
ICAgICAgICAgICAgIGNvbHVtbjogbGVmdFJhbmdlLnN0YXJ0Q29sdW1uCisgICAgICAgICAgICB9
LAorCisgICAgICAgICAgICByaWdodEJyYWNlOiB7CisgICAgICAgICAgICAgICAgbGluZU51bWJl
cjogcmlnaHRCcmFjZS5saW5lTnVtYmVyLAorICAgICAgICAgICAgICAgIGNvbHVtbjogcmlnaHRS
YW5nZS5zdGFydENvbHVtbgorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3Iu
Y3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcwpp
bmRleCAzNDc0NWM3Nzk4MmZhYTliODk2ODcyOThmZDdiZjRhNmMwNmVlNDVlLi45MDEyNGVjOWVk
NTUxYWZlMWVjNmM3NzMzZGFkY2E0NmI4OWVlN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MKQEAgLTQyLDYgKzQyLDEwIEBACiAg
ICAgYm9yZGVyLXJhZGl1czogM3B4OwogfQogCisudGV4dC1lZGl0b3ItYnJhY2UtbWF0Y2ggewor
ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsKK30KKwogLnRleHQtZWRpdG9yLWNv
bnRlbnRzIC5pbm5lci1jb250YWluZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0
b3A6IDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTc0NjNkM2IyNzUzYzA2NjM1NDJiZGMyNzE0Y2RiY2Y4MjRhOWU5OS4u
NmZmNTgyNmFmNzcwNzdiYjkxZGRhYjUyOGMyYTcyZGNhMGEyNjc3MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDE3IEBACiAyMDEzLTAyLTAxICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVt
Lm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBoaWdobGlnaHQgbWF0Y2hpbmcgYnJhY2Vz
IGluIERURS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwODY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5ldyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgYnJhY2UgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eS4K
KworICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5odG1sOiBB
ZGRlZC4KKworMjAxMy0wMi0wMSAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJvbWl1
bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIHJvdW5kIGJyYWNlcyB0byBqYXZh
c2NyaXB0IHRva2VuaXplcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA4NjkyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0
b3IvYnJhY2UtbWF0Y2hlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRp
dG9yL2JyYWNlLW1hdGNoZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZjMyZTUxMTI3Yjcz
OGM5ZThiMjc5ZTgyYTU5OTBjZWQxMDdkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNoZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
ODEgQEAKK1RoaXMgdGVzdCBjaGVja3MgaGlnaGxpZ2h0ZXIgY29ycmVjdG5lc3MuCisKK2Z1bmN0
aW9uIGJhcigpIHsKKyAgICAvLyBjb21tZW50IGhlcmUKKyAgICB2YXIgYSwgYiwgYywgZDsKKyAg
ICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7CisgICAgZm9yKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIGlmIChhIDwgYiAmJiBjID4gZCkgeworICAgICAgICB9CisgICAg
fQorfQorQ3Vyc29yIGF0IGxpbmUgIzAgPj4+ZnVuY3Rpb24gYmFyKCkgezw8PCBjb2x1bW4gMCAo
Y2hhciBpcyAiZiIpCitlbmNsb3NpbmcgYnJhY2VzOiBudWxsCisKK0N1cnNvciBhdCBsaW5lICMw
ID4+PmZ1bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDEyIChjaGFyIGlzICIoIikKK2VuY2xvc2lu
ZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTJ9LCJyaWdo
dEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTN9fQorCitDdXJzb3IgYXQgbGluZSAj
MCA+Pj5mdW5jdGlvbiBiYXIoKSB7PDw8IGNvbHVtbiAxMyAoY2hhciBpcyAiKSIpCitlbmNsb3Np
bmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjEyfSwicmln
aHRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjEzfX0KKworQ3Vyc29yIGF0IGxpbmUg
IzAgPj4+ZnVuY3Rpb24gYmFyKCkgezw8PCBjb2x1bW4gMTQgKGNoYXIgaXMgIiAiKQorZW5jbG9z
aW5nIGJyYWNlczogbnVsbAorCitDdXJzb3IgYXQgbGluZSAjMCA+Pj5mdW5jdGlvbiBiYXIoKSB7
PDw8IGNvbHVtbiAxNSAoY2hhciBpcyAieyIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFj
ZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1fSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVy
Ijo4LCJjb2x1bW4iOjB9fQorCitDdXJzb3IgYXQgbGluZSAjMiA+Pj4gICAgdmFyIGEsIGIsIGMs
IGQ7PDw8IGNvbHVtbiA1IChjaGFyIGlzICJhIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJy
YWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTV9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1i
ZXIiOjgsImNvbHVtbiI6MH19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgo
MSArIDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAxMiAoY2hhciBpcyAiKCIpCitlbmNsb3Npbmcg
YnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEyfSwicmlnaHRC
cmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjMwfX0KKworQ3Vyc29yIGF0IGxpbmUgIzMg
Pj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDEzIChjaGFyIGlz
ICIoIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNv
bHVtbiI6MTN9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTl9fQorCitD
dXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBj
b2x1bW4gMTQgKGNoYXIgaXMgIjEiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsi
bGluZU51bWJlciI6MywiY29sdW1uIjoxM30sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6Mywi
Y29sdW1uIjoxOX19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIp
ICogKDMgKyA0KSk7PDw8IGNvbHVtbiAxNSAoY2hhciBpcyAiICIpCitlbmNsb3NpbmcgYnJhY2Vz
OiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEzfSwicmlnaHRCcmFjZSI6
eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjE5fX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAg
IHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDIyIChjaGFyIGlzICIgIikK
K2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6
MTJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MzB9fQorCitDdXJzb3Ig
YXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBjb2x1bW4g
MjQgKGNoYXIgaXMgIjMiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51
bWJlciI6MywiY29sdW1uIjoyM30sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1u
IjoyOX19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICogKDMg
KyA0KSk7PDw8IGNvbHVtbiAyOSAoY2hhciBpcyAiKSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7Imxl
ZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjIzfSwicmlnaHRCcmFjZSI6eyJsaW5l
TnVtYmVyIjozLCJjb2x1bW4iOjI5fX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBh
ID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDMwIChjaGFyIGlzICIpIikKK2VuY2xv
c2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTJ9LCJy
aWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MzB9fQorCitDdXJzb3IgYXQgbGlu
ZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBjb2x1bW4gMzEgKGNo
YXIgaXMgIjsiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6
MCwiY29sdW1uIjoxNX0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowfX0K
KworQ3Vyc29yIGF0IGxpbmUgIzQgPj4+ICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
ezw8PCBjb2x1bW4gMTkgKGNoYXIgaXMgImkiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJh
Y2UiOnsibGluZU51bWJlciI6NCwiY29sdW1uIjo3fSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVy
Ijo0LCJjb2x1bW4iOjMxfX0KKworQ3Vyc29yIGF0IGxpbmUgIzQgPj4+ICAgIGZvcih2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgezw8PCBjb2x1bW4gMzIgKGNoYXIgaXMgIiAiKQorZW5jbG9zaW5n
IGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxNX0sInJpZ2h0
QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowfX0KKworQ3Vyc29yIGF0IGxpbmUgIzQg
Pj4+ICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgezw8PCBjb2x1bW4gMzMgKGNoYXIg
aXMgInsiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6NCwi
Y29sdW1uIjozM30sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6NywiY29sdW1uIjo0fX0KKwor
Q3Vyc29yIGF0IGxpbmUgIzUgPj4+ICAgICAgICBpZiAoYSA8IGIgJiYgYyA+IGQpIHs8PDwgY29s
dW1uIDIwIChjaGFyIGlzICIgIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7Imxp
bmVOdW1iZXIiOjUsImNvbHVtbiI6MTF9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjUsImNv
bHVtbiI6MjZ9fQorCitDdXJzb3IgYXQgbGluZSAjNSA+Pj4gICAgICAgIGlmIChhIDwgYiAmJiBj
ID4gZCkgezw8PCBjb2x1bW4gMjggKGNoYXIgaXMgInsiKQorZW5jbG9zaW5nIGJyYWNlczogeyJs
ZWZ0QnJhY2UiOnsibGluZU51bWJlciI6NSwiY29sdW1uIjoyOH0sInJpZ2h0QnJhY2UiOnsibGlu
ZU51bWJlciI6NiwiY29sdW1uIjo4fX0KKworQ3Vyc29yIGF0IGxpbmUgIzYgPj4+ICAgICAgICB9
PDw8IGNvbHVtbiA4IChjaGFyIGlzICJ9IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNl
Ijp7ImxpbmVOdW1iZXIiOjUsImNvbHVtbiI6Mjh9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIi
OjYsImNvbHVtbiI6OH19CisKK0N1cnNvciBhdCBsaW5lICM3ID4+PiAgICB9PDw8IGNvbHVtbiA0
IChjaGFyIGlzICJ9IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1i
ZXIiOjQsImNvbHVtbiI6MzN9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjcsImNvbHVtbiI6
NH19CisKK0N1cnNvciBhdCBsaW5lICM4ID4+Pn08PDwgY29sdW1uIDAgKGNoYXIgaXMgIn0iKQor
ZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjox
NX0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowfX0KKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNoZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM4OTY5MjVhM2UwYjkyNTgwOTc3MWFjMjMxNzU5OTFhMGNjMWFiNDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNoZXIuaHRtbApAQCAt
MCwwICsxLDczIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJl
ZGl0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
K2Z1bmN0aW9uIGJhcigpIHsKKyAgICAvLyBjb21tZW50IGhlcmUKKyAgICB2YXIgYSwgYiwgYywg
ZDsKKyAgICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7CisgICAgZm9yKHZhciBpID0gMDsg
aSA8IDEwMDsgKytpKSB7CisgICAgICAgIGlmIChhIDwgYiAmJiBjID4gZCkgeworICAgICAgICB9
CisgICAgfQorfQorCisKKyAgICB2YXIgdGV4dEVkaXRvciA9IEluc3BlY3RvclRlc3QuY3JlYXRl
VGVzdEVkaXRvcigpOworICAgIHRleHRFZGl0b3Iub3ZlcnJpZGVWaWV3cG9ydEZvclRlc3QoMCwg
dW5kZWZpbmVkLCAzKTsKKyAgICB0ZXh0RWRpdG9yLm1pbWVUeXBlID0gInRleHQvamF2YXNjcmlw
dCI7CisgICAgdGV4dEVkaXRvci5zZXRSZWFkT25seShmYWxzZSk7CisgICAgdGV4dEVkaXRvci5z
ZXRUZXh0KGJhci50b1N0cmluZygpKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0
RWRpdG9yLnRleHQoKSk7CisKKyAgICB2YXIgYnJhY2VIaWdobGlnaHRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvck1vZGVsLkJyYWNlTWF0Y2hlcih0ZXh0RWRpdG9yLl90ZXh0TW9kZWwp
OworICAgIGZ1bmN0aW9uIHRlc3RBbmREdW1wKGxpbmVOdW1iZXIsIGNvbHVtbikKKyAgICB7Cisg
ICAgICAgIHZhciBsaW5lID0gdGV4dEVkaXRvci5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7
CisgICAgICAgIHZhciB0ZXh0ID0gIkN1cnNvciBhdCBsaW5lICMiICsgKGxpbmVOdW1iZXIpICsg
IiA+Pj4iICsgbGluZSArICI8PDwgY29sdW1uICIgKyBjb2x1bW4gKyAiIChjaGFyIGlzIFwiIiAr
IGxpbmUuY2hhckF0KGNvbHVtbikgKyAiXCIpIjsKKyAgICAgICAgdGV4dCArPSAiXG5lbmNsb3Np
bmcgYnJhY2VzOiAiICsgSlNPTi5zdHJpbmdpZnkoYnJhY2VIaWdobGlnaHRlci5lbmNsb3NpbmdC
cmFjZXMobGluZU51bWJlciwgY29sdW1uKSk7CisgICAgICAgIHRleHQgKz0gIlxuIjsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodGV4dCk7CisgICAgfQorCisgICAgdGVzdEFuZER1
bXAoMCwgMCk7CisgICAgdGVzdEFuZER1bXAoMCwgMTIpOworICAgIHRlc3RBbmREdW1wKDAsIDEz
KTsKKyAgICB0ZXN0QW5kRHVtcCgwLCAxNCk7CisgICAgdGVzdEFuZER1bXAoMCwgMTUpOworICAg
IHRlc3RBbmREdW1wKDIsIDUpOworICAgIHRlc3RBbmREdW1wKDMsIDEyKTsKKyAgICB0ZXN0QW5k
RHVtcCgzLCAxMyk7CisgICAgdGVzdEFuZER1bXAoMywgMTQpOworICAgIHRlc3RBbmREdW1wKDMs
IDE1KTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAyMik7CisgICAgdGVzdEFuZER1bXAoMywgMjQpOwor
ICAgIHRlc3RBbmREdW1wKDMsIDI5KTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAzMCk7CisgICAgdGVz
dEFuZER1bXAoMywgMzEpOworICAgIHRlc3RBbmREdW1wKDQsIDE5KTsKKyAgICB0ZXN0QW5kRHVt
cCg0LCAzMik7CisgICAgdGVzdEFuZER1bXAoNCwgMzMpOworICAgIHRlc3RBbmREdW1wKDUsIDIw
KTsKKyAgICB0ZXN0QW5kRHVtcCg1LCAyOCk7CisgICAgdGVzdEFuZER1bXAoNiwgOCk7CisgICAg
dGVzdEFuZER1bXAoNywgNCk7CisgICAgdGVzdEFuZER1bXAoOCwgMCk7CisKKyAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUaGlzIHRlc3QgY2hlY2tzIGhpZ2hsaWdodGVyIGNv
cnJlY3RuZXNzLgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>186155</attachid>
            <date>2013-02-01 15:07:54 -0800</date>
            <delta_ts>2013-02-01 15:07:54 -0800</delta_ts>
            <desc>Cursor inside OR block</desc>
            <filename>cursor-inside-or-part.png</filename>
            <type>image/png</type>
            <size>5257</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAfkAAABfCAIAAABk5in0AAAAA3NCSVQICAjb4U/gAAAAGXRFWHRT
b2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAFBxJREFUeJzt3X9wE2WfAPDvtqW7iiQLBRqq
yHJ2risMJR3AroDTIErXm0HivfA2jjoGzhmjN2PXm3kl3r16GV9niDLzEnznlbzvcLb3Kq8RfI+o
NxJ1JPHVQm7wbEDHBMFLyqtNCtSmLSWbkHbvj/R3ftamSZN+P8Mf2W92nz48T/LNs89unhBqtRoQ
QggVNWJgYCDfdUAIITSzyiRJyncdEEIIzays5Xqr1ZqVcnIAp60QQnPNWK6XJGmqeZ8gCIIgRjcf
ffTRbFZtZrz11lt4KoMQmmvKRh9NStwIIYSKxti43u12+/3+SCQyODgIAPPnzx8aGgqFQgAgSdKk
j4HS0tLy8vIlS5asWbMm95WeJhzXI4TmmrFx/ZkzZzo7O5cuXRrL9d3d3QBQUVEBACUlJUNDQ6N7
SpJUVlZ2+fLlRYsWFWKuRwihuWbCtdl169Y1NjbGHh8+fPj222/ftm1bsiM//vhjr9dbiGPkQqwz
QghNR8noI4IgYnM1MbFLtbGpG7/ff+PGDWKi2CF5qzhCCKGMjY3rCYKIRqORSCS2KUlSJBKJRCID
AwMffPBBbW3t+vXrYzM5kiSVlJREo9GfcevObFCIdUYIoekYG9fHMuD4YTuMjNyvXLnicrm+++67
khF40w5CCBWQyffXx28SBCGXy7u7u9va2gYHB1euXFleXg4AQ0NDacf1P7733NP7P/L1w4Ka3Yff
FBbYJmyy5Mh+V9/75dYXz1fttp4QVqYoLtz21OaXa46m3ik9HNcjhOaasrR7SJJ048aNkpKSy5cv
2+32m266afny5bEJ/XSH/mh/4yNff/n6R5r52vVV5I/vT9gct2N51fotGysq2PKkRfWdee6x/ZGV
QIZ9bwmPnmd+/R/jPioQQgillHRcPz4IE+d2xu+ZNOOHPa8+0HSkGwAiXx7Z3zn4ysVX91pGN+Gd
B/lxO0c6v7SfOl9VEwEe4Gqb6YWX3z3V2Q8AC5gte37z0p5amazmqed2HXr55f7u819X/Fp37+Jx
ib6/v9/pdN51111yuRwAIpFIW1vbnXfeqVAoElYNx/UIoblm8no4CTfnzZsXCoWWLVu2bt06mUw2
/hadpHmTrOKbHzm//8iX/Qs27tbx965ZueqRi2ObVckG5X1tLwgtp8gtzS/xFf1tb+x//+AL5o1H
n2Nl5Z02e//G5p2dh055FjfvGnfIqVOngsHgyZMnVSrV/Pnz7XZ7MBjs6enZvn37vHnz4v8E5nqE
0FyTNNePDt4HBwf7+voqKio2btxYXV0dDodHd0s5Xy+r3bFrk/nIl/0Vm3Y9uuNWgNqJm8mEIxGA
yLmTbVX8Jv431l/VrpQBAMCtjb96fU3VhpX968+TtbLxR2zcuNFut4dCodgUU19fX1lZ2T333JMw
0QPmeoTQ3DPh/npIdIUWAJYuXVpXV1ddXR2NRgmCiF2VnaEKye596ZWdayq6v/7oyP4Xn35Mfc+9
wjFvGABAxm5gZUDeWlu7eOIhCxYs2Lp16/z582/cuBFL9A0NDUuWLJmhGiKEUMEZG9cPDQ2Nv42S
IIjS0lIAuPnmm3mer6ioiEajsfvrS0pKYNxnQ3YrFL4aYfjm159aSXaeO3fy/YMtdvurB889aNqQ
8krspHtAU9cKx/UIoblmwrg+ltyHnygpKSsri8UVCkVpaen4JXEAoLS0dFq32PedeWHHAw/80xux
Qfuoq7a9TU880fT0wTZvBGJTNVW1i1Mm+oGBgU8//fTatWvl5eW33HJLNBp1OBxdXV0/v24IIVRc
JtyH89VXX3V0dMTWPuvt7e3q6rp48SIAlJaWxoKje5aVlXV3d1dUVExjjNzv9XV29v/YPzF666Ov
H468vP+N9/e/+D5AedX6Rw689Ejq++lPnTp1/fp1kiS3bNlCkqTD4ejt7f3iiy+2b98e+yrAJDiu
RwjNNWP31991111+v//69eux8fvq1auj0ei1a9cSHlZSUlJdXb106dKUha/cc+LsnmSbsnvfOnt2
+HF/bGGG2DB+8YY9pqPjDkuL4zin01lfXy+TyQBgy5Ytn3/++erVqxMmeoQQmoPGxvU1NTUsy45f
HgdSDoFjX6caXT/nZ+s78+qzLx47DwAVVQt+VgkLFiy4//77RzdJkrzvvvtS7I/jeoTQXDM2ro+t
ZDmlg7ORNMOdbW1fdkagYv3u5zYuTr8/QgihKSubdHtlzpGs8N5ZIad/Esf1CKG5ZvJ3qeaCOfhf
RgjNcZjrEUKo+JWk3wUhhFCBI958881slZVsXcnZJhAI5LsKCCGUU0QwGJxmEWfOnEl9jyNCaPbL
7EcpUKHCORyEECp+M5LrI//952PVn3SLcU90fOvc9PtjsteOyVrOfZdRUT4zx/CWQptzCVo4ihFc
8Q0wTLTxFK1xJH1+5syO9py97ZMXPpOS4lrjOyVZfNbIVj+mK2c28ZlVCj5RZyWJpyI6jTxLEwSh
NHmyVb/k0uT66JX2D9/9zz/+zmQy/e6DH6IZFlp6+4rlv7iVoiYXdnnfX/8GyoYLT+649Njqv8+g
oKBNbwiojeqJ1wFEl8AQjD6udZLFZ5Los+hUDEUQBMWoBGumXc2otRpeMbmBEpev5RQEQRAUw5s9
aeOpJW7PmTTT7TPLiJ6uf+Hdd1Ou5cTZf3YMpT+gUMytfrxx2uTbxX5dTbiWU18/qOn6atw8N6M1
8C6DwTn5gylZPIWgzWBwKEzukOQS2KxUPKV04/roQNnCOzZsXnXzVAotrd3EvbJq/uTwoHgpMm/D
31VUkuV0WWmiAycJWI1WWqdTztrXiujSqx5uFTWW0+2nW9XBgw/xxozSLsXqzGZtBt0btOm0Fkpv
9/r9LougpNPFU8t5e854+8w64iDJyp820bfluyJZNcf6UQx/ZI1W65b93l591LJIZvP/Un3lb6PP
UpxODRaDbfJ1zmTx5IKBQJjhODZH78c0ub5s2eZtWzfX3aHI8He8Bz+3/kX22jHZaxPncMKX/uG1
Y7I//M8XcOONY/+V6RxOwGZ2KnieyexPJyZ6LDqOoQiCIGiG043OXozFKUYlWH0AAKJDQ9OciqUI
Sqkz61U0QSjUrb7hyjiMaiVNEARBs2qjMwgAIDpNrR0rhFajmlNyGqP5ycqzZvPImagYsOlVCoIg
KFZtco28AHxm5fAP92Y4RyGCglNxjELBcjynSB9PIVF7Fnj7BKwCr1TEqs/ygtWX52kASlm1z1T1
mHq+LP2+WVXg/Zi0nLygbjE4qvcJixtVt9ytvvW3JjL8Wc+3YzWilBoV5TA74pJ9knhyIgBkOE7L
gizP15feo/5F3zM7/jxpYRvy9g+f2dX3ZP1mmLdn1z/2PbOrb3dt2jkc0WN1Acsz0/nUC1i0Wgut
d3j9frfDrGOp2MtOdOn5hy20YHN73VYdmMfGKb0ib3a28L4/CC6t4/QBxma0eGL78ybQWtq9XrdF
GzTyGksAIOBy9ZLKkeRJsTwLHc7hl2m46x1TQGP1ek+bla5neWH4FcDoXJIkhU40ZvbhSav0fNBs
sE0+Z04WTyVRexZ4+4jBACiFVofb63VbBdryEJ9q3jPQyhHxVNbzU4znNQ8llqV+hHy9zpOWk/A/
m9t+DAclkM9bMu5tQ7E8E3ZZPZM/w5LFkxFFESBuqnvGlKXfJV8CHl+Y5ugkTZGshSbExYArEFao
VRyjAFDwrHI47DJZOtYaHIKKAWD1ZqH1TrPZJRgBoJJTcUoFz5A+tUqpDHIKoysgigGj2ae2OASe
BgBGMGnNnNkRVLO+INBjs5EUrZCDKxAEUAAA1BtNOk4BoDUZW5dpTU6zip9qtwZsguBklJROY1Y6
dAwABJwOH8MxrsRxLtXUaIL2LPT2oVidyTj8mNEZtEal1RnQs0lOcxRqS7sy7g1OMzW0ckrx3I3E
MpWdfgSAPPUjTKmcnPZjsMdojKzSr1w1vi60gpF3eXwicBNrmCyeuGSn1XJermRz9nKaxbleDIpA
JfrUoygFBVR8WouPU6xWV29+XslYeZVKxWu0GiUNAEGfp0vOKkdSAqNiyFdcAREooCiKAqAoavgv
U5QoAvicrt7e8w8sfGfcH6vxBSDlRGTlaC/SrLIy7PAEYIrTUUGboHWoLC6TolXFqfVKp5ETnXq1
6bHDin9LFNf5HJoUr7EE7VnY7QMAoqdV0Bksn3X0DgfWBlMMqmhGqUz8xBTjs02W+hEgX/04tXJy
1o/iwGH1pdPcbe/pb5r4xqIoKjYqnyRZfHK5LoGtO9gB8sYWK5+zXD+L76+nFTSICd+6FE2RCXJ9
gjil1DsDbptRy4LT+HAdq53ClROYcJJQs88tjefRsxTNUBAMjNZQDAZ6gVZkq+9EV6tD5DQcTbGC
xUib1VprIOAL0svD7ySMM2lmuxK1ZyG3D4DoFPjdNoXB4Q9JkiS599Wk3L2I53AKux+nKEf9KIbe
VF88AIqjlsXL454LBoFOMOWQLD4JpTT5Qj2n9zEOQT+F6f1pmsXjepplK7s8viDEXXpkdM6gNsGI
P3GcZlUaVqXRCSpumd7iEXmOZlh5r8sVABUDAOBz+MIreAUFyVqd4Vi5wRY/O6BQKuVhp80HKhYA
RI/NAys0Sjp2zaXL5RmuetDj6iIZZZKZheQoGkRP7FSZ0VnMNlaj8tCi6k+rqU8SxS1p7q9J1p6F
0z5iwBcAWqEYeTMFXM5Ajc6gjR0a9Dl9KQ8v3jkcAMhGPwKwcl8e+hFgSuXkoh9F8ajmolFcctRW
WR3/tgp4fOEVCa4kJosnQtGcWsM83+oKgipHr6hgald//L8LF9z/+95vDQbzX7+5cOHCpa7Ju3zy
ySfSROEPjhy94+OroUlhseOBg8ebO6NShnpO7JDLm+yTi5Ek96EdDU0t3vTxkLuleV+Lvd3r97vt
BxrkZH3s2dDp5hUgbzxgd3vdJ/Y1kFCz1x2SQvamyhXN7SHJ31JP1rf4pZB7b418hz0khdr31gBZ
3/z2aa/X3W5/e9/jjx9yS5IUam9eAWT93uPt7tNvN68FWBsbFfW8XQ8AlU0tp73e9pamFVD5uL1n
XEVDJxrJhP+zCULte9eSlTta3CFJkkLe402VAJWP20PJ4lNvz8JqH39LPQDZeGI0HLI3ycn6Q+6Q
JEn+E801ALD2gFfKp1DkQvu1b05caoD2R1r6v2m/diltt0iS98Basr7Fn3E8/q9mpR8BID/9mLac
XAtbd5y7rfLin+zXvmmP/QsFxz3dc7yRrHz8dFzPJosn4z2wNu48agalGddHe5zvHvn6OgAA9J18
9wiA4oGnNDXJLq7/5Fr31oULscdXTy51A8Civzy59f5ML8ZPRKsENaUxO0WVauIVV9Hj+szJxs3u
xMcpihJtBo1hd1cYyJpGnaVVywAAUJzR1iJq9VvufBbIFQ264zYDS0HyaTZKaXTYaUEQ7j7YBSBf
Uc/rjIrh+NuiVtDUvRImVzQ0H7foR+Y2ycomgW5Vr9zdRdbsOGAz/4zPbkpptNlonaCidSJF0ywv
7GsyPa8z6FxJ4ymvCcW3Z2G3D1Aqk0XQ6JS0nqYVSo3QXCM4pl5KNoke/2N1P/0AAADf7774GQB3
fM0xdSZfJpmObPUj5Kcfs1lONoihY+8NAvT/65b+kVD5v3tXPcHEHgcdrU6FxhZ3Gp0snhwFkOIk
K+vSjOszED+uzx73vrWVjcczGNkUlp7jDVMaAGRNgbRn3tonP6Y9rs8OAMhyiUXZj/6WBnn9IW/G
8eR6jjeSZEPsvDQHZvG1WQAAVjALtMM1i5cEmRoxGAgEfM5Wk3O63xz4eWZ7e+a7fVB2FHE/BhxO
xmCOnTdlEk+B5g0GVUB/500Em9n3kKdnFl+bBQAAitNbuHxXImsCraplT50FIGuaTNYcrkozZna3
Z/7bB2VDMfejQmNunUo8FYrT2zz66dYoU7h+/ZxAEER8UMLFymcH0ed0BhhV3P1myeIoXwr6fTTb
x/UoKwrl5Tg3UQwXuysywzjKl4J+H2V3vl506RmCIGilxpzxohAIIYRmWuo5nAHfmc+cX3cE+sIA
5MI71m/dtuG2uPsnJ8/hiC4TV2dg7QGLqqguyiCEUMFKOYcT7fv+++uL1mzasGQRGfY5T7a9e5zc
o6lNs14rxXJcpegJiMkXKEMIIZRLKXN92bKtmp0jG7dtC3//xslv/eFaWbqvRlFUyi9sIIQQyq0p
zNdHw4NQKpufyXcAKQBIv9obQgih3Mg41w983/Zl38K6DYr0d+5QDMeCq9Wa3x+XQQghNCKzXB+9
csb64Q+KbQ9tXpLJTZo0bzJyzqfqFubm+2AIIYRSyyDXR39qt1qcpZt3bl+V4a9oBm2C3skdau+R
PKNrJCGEEMqbdLk++tM56ztfhOt27qzLaEgPACD6nB5QatXKWbrQN0IIzTWp83fftx+8c/KKomH7
HWU9V64AAJTKlixKv0KxCLn8zVyEEEKppcz14SvfdoQBOj57t2MktHDTnsc3pJvKEUURb61HCKHZ
I2WuJ+/YKQhTLjLocTq7KDbB78EihBDKi2yvhyMwxMI6g9hkNKT8iSSEEEI5lN11LimlySeZslok
QgihaZvlv0uFEEIoCzDXI4RQ8cNcjxBCxQ9zPUIIFT/M9QghVPww1yOEUPHDXI8QQsUPcz1CCBU/
zPUIIVT8MNcjhFDxw1yPEELFD3M9QggVP8z1CCFU/DDXI4RQ8cNcjxBCxQ9zPUIIFT/M9QghVPww
1yOEUPHDXI8QQsUPcz1CCBU/zPUIIVT8MNcjhFDxw1yPEELFD3M9QggVP8z1CCFU/DDXI4RQ8cNc
jxBCxQ9zPUIIFT/M9QghVPww1yOEUPHDXI8QQsUPcz1CCBU/zPUIIVT8MNcjhFDx+38zc2MheC3g
4wAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186594</attachid>
            <date>2013-02-05 03:40:41 -0800</date>
            <delta_ts>2013-02-06 01:20:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108697-20130205153719.patch</filename>
            <type>text/plain</type>
            <size>23741</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3YmQ4YmNiMDA5NTgy
ODM4ZjMzZDRlZDdmMTJmNTQ0MjRkYmQ1Ny4uOTU5NTg2NjIwMGFmM2U3YTBlZjRlZTA2YzlhM2Q3
ZWMzYTg2YmM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTA1ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgbWF0Y2hpbmcgYnJhY2VzIGluIERURS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODY5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBCcmFjZU1hdGNoZXIg
Y2xhc3Mgd2hpY2ggZm9yIGdpdmVuIHBvc2l0aW9uIGluIHRleHRNb2RlbAorICAgICAgICB3aWxs
IHJlc3BvbmQgd2l0aCBlbmNsb3NpbmcgYnJhY2UgcGFpciBmb3IgdGhhdCBwb3NpdGlvbi4KKyAg
ICAgICAgTWFrZSB1c2Ugb2YgdGhpcyBjbGFzcyBpbiBEZWZhdWx0VGV4dEVkaXRvciBieSBoYW5k
bGluZworICAgICAgICBzZWxlY3Rpb25DaGFuZ2UgZXZlbnQuCisKKyAgICAgICAgTmV3IHRlc3Q6
IGluc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwucHJvdG90eXBlLl9oYW5kbGVTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0
Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlLl9oaWdobGlnaHRMaW5l
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLmVuZHNXaXRoQnJhY2tldFJlZ2V4
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuZW5kc1dpdGhCcmFja2V0
UmVnZXguKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzOgor
ICAgICAgICAoLnRleHQtZWRpdG9yLWJyYWNlLW1hdGNoKToKKwogMjAxMy0wMi0wNSAgSGFqaW1l
IE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBMaW51
eCBBU0FOIGJ1aWxkIGZpeCBmb3IgcjE0MTc4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IDMwYTMzNjQy
MzFkODAzYjM4NDJmZDhhMDdiZTNiYjc3OGFmNWQxMDQuLjIyNGJiNzkwZTFhYjFmMDU2YjNlYTZm
ZmFkNTZhZWEzOTgyYmQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAtMTM4NCw2ICsxMzg0LDggQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4
dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGwKICAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9ycyA9
IFtdOwogCiAgICAgdGhpcy5fdG9rZW5IaWdobGlnaHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5Ub2tlbkhpZ2hsaWdodGVyKHRoaXMsIHRleHRNb2RlbCk7CisgICAg
dGhpcy5fYnJhY2VNYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJh
Y2VNYXRjaGVyKHRleHRNb2RlbCk7CisgICAgdGhpcy5fYnJhY2VIaWdobGlnaHRlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhpZ2hsaWdodENvbnRyb2xsZXIo
dGhpcywgdGV4dE1vZGVsLCB0aGlzLl9icmFjZU1hdGNoZXIpOwogCiAgICAgdGhpcy5fZnJlZUNh
Y2hlZEVsZW1lbnRzKCk7CiAgICAgdGhpcy5idWlsZENodW5rcygpOwpAQCAtMjY3Myw2ICsyNjc1
LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGlvbiA9IHRleHRSYW5nZTsKIAogICAgICAgICB0aGlz
Ll90b2tlbkhpZ2hsaWdodGVyLmhhbmRsZVNlbGVjdGlvbkNoYW5nZSh0ZXh0UmFuZ2UpOworICAg
ICAgICB0aGlzLl9icmFjZUhpZ2hsaWdodGVyLmhhbmRsZVNlbGVjdGlvbkNoYW5nZSh0ZXh0UmFu
Z2UpOwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zZWxlY3Rpb25DaGFuZ2VkKHRleHRSYW5nZSk7
CiAgICAgfSwKIApAQCAtMzM0NSw0ICszMzQ4LDYxIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4
dEVkaXRvci5Xb3JkTW92ZW1lbnRDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsfSB0ZXh0RWRpdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TW9kZWx9IHRleHRNb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVs
LkJyYWNlTWF0Y2hlcn0gYnJhY2VNYXRjaGVyCisgKi8KK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0Q29udHJvbGxlciA9IGZ1bmN0aW9uKHRleHRFZGl0b3Is
IHRleHRNb2RlbCwgYnJhY2VNYXRjaGVyKQoreworICAgIHRoaXMuX3RleHRFZGl0b3IgPSB0ZXh0
RWRpdG9yOworICAgIHRoaXMuX3RleHRNb2RlbCA9IHRleHRNb2RlbDsKKyAgICB0aGlzLl9icmFj
ZU1hdGNoZXIgPSBicmFjZU1hdGNoZXI7CisgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMg
PSBbXTsKK30KKworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuQnJhY2VIaWdobGln
aHRDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UZXh0UmFuZ2V9IHNlbGVjdGlvblJhbmdlCisgICAgICovCisgICAgaGFuZGxlU2Vs
ZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbihzZWxlY3Rpb25SYW5nZSkKKyAgICB7CisgICAgICAgIGlm
ICghc2VsZWN0aW9uUmFuZ2UgfHwgIXNlbGVjdGlvblJhbmdlLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlSGlnaGxpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0ZWRSYW5nZSAmJiB0aGlzLl9oaWdo
bGlnaHRlZFJhbmdlLmNvbXBhcmVUbyhzZWxlY3Rpb25SYW5nZSkgPT09IDApCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fcmVtb3ZlSGlnaGxpZ2h0KCk7CisgICAgICAgIHZh
ciBsaW5lTnVtYmVyID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRMaW5lOworICAgICAgICB2YXIgY29s
dW1uID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb2x1bW47CisgICAgICAgIHZhciBsaW5lID0gdGhp
cy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAgICAgIGlmIChjb2x1bW4gPiAwICYm
IC9bKX1dLy50ZXN0KGxpbmUuY2hhckF0KGNvbHVtbiAtIDEpKSkKKyAgICAgICAgICAgIC0tY29s
dW1uOworCisgICAgICAgIHZhciBlbmNsb3NpbmdCcmFjZXMgPSB0aGlzLl9icmFjZU1hdGNoZXIu
ZW5jbG9zaW5nQnJhY2VzKGxpbmVOdW1iZXIsIGNvbHVtbiwgMjAwKTsKKyAgICAgICAgaWYgKCFl
bmNsb3NpbmdCcmFjZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faGln
aGxpZ2h0ZWRSYW5nZSA9IHNlbGVjdGlvblJhbmdlOworICAgICAgICB0aGlzLl9oaWdobGlnaHRE
ZXNjcmlwdG9ycy5wdXNoKHRoaXMuX3RleHRFZGl0b3IuaGlnaGxpZ2h0UmFuZ2UoV2ViSW5zcGVj
dG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oZW5jbG9zaW5nQnJhY2VzLmxlZnRCcmFj
ZS5saW5lTnVtYmVyLCBlbmNsb3NpbmdCcmFjZXMubGVmdEJyYWNlLmNvbHVtbiksICJ0ZXh0LWVk
aXRvci1icmFjZS1tYXRjaCIpKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMu
cHVzaCh0aGlzLl90ZXh0RWRpdG9yLmhpZ2hsaWdodFJhbmdlKFdlYkluc3BlY3Rvci5UZXh0UmFu
Z2UuY3JlYXRlRnJvbUxvY2F0aW9uKGVuY2xvc2luZ0JyYWNlcy5yaWdodEJyYWNlLmxpbmVOdW1i
ZXIsIGVuY2xvc2luZ0JyYWNlcy5yaWdodEJyYWNlLmNvbHVtbiksICJ0ZXh0LWVkaXRvci1icmFj
ZS1tYXRjaCIpKTsKKyAgICB9LAorCisgICAgX3JlbW92ZUhpZ2hsaWdodDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9ycy5sZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2hp
Z2hsaWdodERlc2NyaXB0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVk
aXRvci5yZW1vdmVIaWdobGlnaHQodGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnNbaV0pOworCisg
ICAgICAgIHRoaXMuX2hpZ2hsaWdodERlc2NyaXB0b3JzID0gW107CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9oaWdobGlnaHRlZFJhbmdlOworICAgIH0KK30KKwogV2ViSW5zcGVjdG9yLmRlYnVnRGVm
YXVsdFRleHRFZGl0b3IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvckhpZ2hsaWdodGVyLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKaW5kZXggYjIzMWRh
YjZiOGY4YmMwZjgxODg1YmQyMjM1M2MzOWRkNTJlMTdiYi4uMWE1YmNiNmQwMGNjMzJiOTMwYTRm
N2ZmNjI1MjNhZThkNzkwMWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKQEAgLTE4NSwxNSAr
MTg1LDIzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlID0g
ewogCiAgICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IGxpbmUuCiAgICAgICAgICAgICAgICAg
c3RhdGUucmFuZ2VzID0gc3RhdGUucmFuZ2VzIHx8IFtdOworICAgICAgICAgICAgICAgIHN0YXRl
LmJyYWNlcyA9IHN0YXRlLmJyYWNlcyB8fCBbXTsKICAgICAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1bW4gPSB0aGlzLl90b2tlbml6ZXIubmV4dFRva2Vu
KGxhc3RIaWdobGlnaHRlZENvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlblR5
cGUgPSB0aGlzLl90b2tlbml6ZXIudG9rZW5UeXBlOwotICAgICAgICAgICAgICAgICAgICBpZiAo
dG9rZW5UeXBlICYmIGxhc3RIaWdobGlnaHRlZENvbHVtbiA8IHRoaXMuX2hpZ2hsaWdodExpbmVM
aW1pdCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuVHlwZSAmJiBsYXN0SGlnaGxpZ2h0
ZWRDb2x1bW4gPCB0aGlzLl9oaWdobGlnaHRMaW5lTGltaXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlLnJhbmdlcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENvbHVtbjogbGFzdEhpZ2hsaWdodGVkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0b2tlbjogdG9rZW5UeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0b2tlblR5cGUgPT09ICJicmFjZS1zdGFydCIgfHwgdG9r
ZW5UeXBlID09PSAiYnJhY2UtZW5kIiB8fCB0b2tlblR5cGUgPT09ICJibG9jay1zdGFydCIgfHwg
dG9rZW5UeXBlID09PSAiYmxvY2stZW5kIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZS5icmFjZXMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
Q29sdW1uOiBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW46IHRva2VuVHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGxhc3RIaWdobGln
aHRlZENvbHVtbiA9IG5ld0NvbHVtbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCsrdG9rZW5z
Q291bnQgPiB0aGlzLl9oaWdobGlnaHRDaHVua0xpbWl0KQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRFZGl0b3JNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGV4dEVkaXRvck1vZGVsLmpzCmluZGV4IDZkNzNjNzIzYjkzY2RhZDlkODViNzc0MTVmMDBlZmY1
ODY4MWI5MGQuLjI1MTFhZjFhZWQ5ZTdjN2U1MmQ4Y2NmMmEyNDFmMTlmZTMwY2UwZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1v
ZGVsLmpzCkBAIC02NTYsMyArNjU2LDI1NSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVs
LnByb3RvdHlwZSA9IHsKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGUKIH0KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCisgKiBAcGFyYW0ge251bWJlcn0gYnJhY2VJbmRleAorICovCitXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1vZGVsLkJyYWNlTG9jYXRpb24gPSBmdW5jdGlvbihsaW5lTnVtYmVyLCBicmFj
ZUluZGV4KQoreworICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgdGhpcy5i
cmFjZUluZGV4ID0gYnJhY2VJbmRleDsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbH0gdGV4dE1vZGVsCisgKi8KK1dlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VNYXRjaGVyID0gZnVuY3Rpb24odGV4dE1vZGVs
KQoreworICAgIHRoaXMuX3RleHRNb2RlbCA9IHRleHRNb2RlbDsKK30KKworV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNb2RlbC5CcmFjZU1hdGNoZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHJldHVybiB7QXJyYXkuPHtz
dGFydENvbHVtbjogbnVtYmVyLCBlbmRDb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmluZ30+fQor
ICAgICAqLworICAgIF9icmFjZVJhbmdlczogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7Cisg
ICAgICAgIGlmIChsaW5lTnVtYmVyID49IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50IHx8IGxp
bmVOdW1iZXIgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGF0
dHJpYnV0ZSA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hs
aWdodCIpOworICAgICAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLmJyYWNlczsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1v
ZGVsLkJyYWNlTG9jYXRpb259IGJyYWNlTG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHs/V2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNb2RlbC5CcmFjZUxvY2F0aW9ufQorICAgICAqLworICAgIF9wcmV2
aW91c0JyYWNlSXRlcmF0b3I6IGZ1bmN0aW9uKGJyYWNlTG9jYXRpb24pCisgICAgeworICAgICAg
ICAtLXRoaXMuX21heEJyYWNlSXRlcmF0aW9uczsKKyAgICAgICAgaWYgKCF0aGlzLl9tYXhCcmFj
ZUl0ZXJhdGlvbnMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgYnJh
Y2VJbmRleCA9IGJyYWNlTG9jYXRpb24uYnJhY2VJbmRleDsKKyAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSBicmFjZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisKKyAgICAgICAgLS1icmFjZUluZGV4Owor
ICAgICAgICBpZiAoYnJhY2VJbmRleCA8IDApIHsKKyAgICAgICAgICAgIHZhciBicmFjZXM7Cisg
ICAgICAgICAgICB3aGlsZSgtLWxpbmVOdW1iZXIgPj0gMCkgeworICAgICAgICAgICAgICAgIGJy
YWNlcyA9IHRoaXMuX2JyYWNlUmFuZ2VzKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGlm
ICghYnJhY2VzIHx8ICFicmFjZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgYnJhY2VJbmRleCA9IGJyYWNlcy5sZW5ndGgg
LSAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5CcmFjZUxvY2F0aW9uKGxpbmVOdW1iZXIsIGJyYWNlSW5kZXgpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJh
Y2VMb2NhdGlvbn0gYnJhY2VMb2NhdGlvbgorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1vZGVsLkJyYWNlTG9jYXRpb259CisgICAgICovCisgICAgX25leHRCcmFjZUl0
ZXJhdG9yOiBmdW5jdGlvbihicmFjZUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgLS10aGlzLl9t
YXhCcmFjZUl0ZXJhdGlvbnM7CisgICAgICAgIGlmICghdGhpcy5fbWF4QnJhY2VJdGVyYXRpb25z
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGJyYWNlSW5kZXggPSBi
cmFjZUxvY2F0aW9uLmJyYWNlSW5kZXg7CisgICAgICAgIHZhciBsaW5lTnVtYmVyID0gYnJhY2VM
b2NhdGlvbi5saW5lTnVtYmVyOworCisgICAgICAgIHZhciBicmFjZXMgPSB0aGlzLl9icmFjZVJh
bmdlcyhsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYgKCFicmFjZXMpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICArK2JyYWNlSW5kZXg7CisgICAgICAgIGlmIChicmFjZUluZGV4
ID49IGJyYWNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHdoaWxlICgoYnJhY2VzID0gdGhpcy5f
YnJhY2VSYW5nZXMoKytsaW5lTnVtYmVyKSkgJiYgIWJyYWNlcy5sZW5ndGgpIHt9CisgICAgICAg
ICAgICBpZiAoIWJyYWNlcykKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAg
ICAgICAgYnJhY2VJbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLkJyYWNlTG9jYXRpb24obGluZU51bWJlciwgYnJhY2VJ
bmRleCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNb2RlbC5CcmFjZUxvY2F0aW9ufSBicmFjZUxvY2F0aW9uCisgICAgICogQHJldHVy
biB7P3tzdGFydENvbHVtbjogbnVtYmVyLCBlbmRDb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmlu
Z319CisgICAgICovCisgICAgX3JldHJpZXZlQnJhY2U6IGZ1bmN0aW9uKGJyYWNlTG9jYXRpb24p
CisgICAgeworICAgICAgICBpZiAoYnJhY2VMb2NhdGlvbi5icmFjZUluZGV4IDwgMCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHZhciBhdHRyaWJ1dGUgPSB0aGlzLl90ZXh0
TW9kZWwuZ2V0QXR0cmlidXRlKGJyYWNlTG9jYXRpb24ubGluZU51bWJlciwgImhpZ2hsaWdodCIp
OworICAgICAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgICB2YXIgYnJhY2VzID0gYXR0cmlidXRlLmJyYWNlczsKKyAgICAgICAgaWYgKCFicmFjZXMu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKGJyYWNlTG9j
YXRpb24uYnJhY2VJbmRleCA+PSBicmFjZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisKKyAgICAgICAgcmV0dXJuIGJyYWNlc1ticmFjZUxvY2F0aW9uLmJyYWNlSW5kZXhdOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2VUb2tlbkxlZnQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2VUb2tlblJpZ2h0CisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfbWF0Y2hlczogZnVuY3Rpb24oYnJhY2VUb2tlbkxlZnQs
IGJyYWNlVG9rZW5SaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKGJyYWNlVG9rZW5MZWZ0
ID09PSAiYnJhY2Utc3RhcnQiICYmIGJyYWNlVG9rZW5SaWdodCA9PT0gImJyYWNlLWVuZCIpIHx8
IChicmFjZVRva2VuTGVmdCA9PT0gImJsb2NrLXN0YXJ0IiAmJiBicmFjZVRva2VuUmlnaHQgPT09
ICJibG9jay1lbmQiKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P1dlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VMb2NhdGlvbn0gYnJhY2VMb2NhdGlvbgorICAg
ICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLkJyYWNlTG9jYXRpb259
CisgICAgICovCisgICAgX2ZpbmRMZWZ0UHJldGVuZGVudDogZnVuY3Rpb24oYnJhY2VMb2NhdGlv
bikKKyAgICB7CisgICAgICAgIHZhciBzdGFjayA9IFtdOworICAgICAgICB3aGlsZSAoYnJhY2VM
b2NhdGlvbiA9IHRoaXMuX3ByZXZpb3VzQnJhY2VJdGVyYXRvcihicmFjZUxvY2F0aW9uKSkgewor
ICAgICAgICAgICAgdmFyIGJyYWNlID0gdGhpcy5fcmV0cmlldmVCcmFjZShicmFjZUxvY2F0aW9u
KTsKKyAgICAgICAgICAgIHN0YWNrLnB1c2goYnJhY2UudG9rZW4pOworICAgICAgICAgICAgaWYg
KHN0YWNrLmxlbmd0aCA9PT0gMSAmJiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1zdGFydCIgfHwg
YnJhY2UudG9rZW4gPT09ICJicmFjZS1zdGFydCIpKQorICAgICAgICAgICAgICAgIHJldHVybiBi
cmFjZUxvY2F0aW9uOworICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDEpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbGVmdEJyYWNlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07Cisg
ICAgICAgICAgICAgICAgdmFyIHJpZ2h0QnJhY2UgPSBzdGFja1tzdGFjay5sZW5ndGggLSAyXTsK
KyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWF0Y2hlcyhsZWZ0QnJhY2UsIHJpZ2h0QnJhY2Up
KQorICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2Uoc3RhY2subGVuZ3RoIC0gMiwgMik7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHs/V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5CcmFjZUxv
Y2F0aW9ufSBicmFjZUxvY2F0aW9uCisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTW9kZWwuQnJhY2VMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBfZmluZFJpZ2h0UHJldGVu
ZGVudDogZnVuY3Rpb24oYnJhY2VMb2NhdGlvbikKKyAgICB7CisgICAgICAgIGlmICghYnJhY2VM
b2NhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHZhciBzdGFjayA9
IFtdOworICAgICAgICB3aGlsZSAoYnJhY2VMb2NhdGlvbiA9IHRoaXMuX25leHRCcmFjZUl0ZXJh
dG9yKGJyYWNlTG9jYXRpb24pKSB7CisgICAgICAgICAgICB2YXIgYnJhY2UgPSB0aGlzLl9yZXRy
aWV2ZUJyYWNlKGJyYWNlTG9jYXRpb24pOworICAgICAgICAgICAgc3RhY2sucHVzaChicmFjZS50
b2tlbik7CisgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID09PSAxICYmIChicmFjZS50b2tl
biA9PT0gImJsb2NrLWVuZCIgfHwgYnJhY2UudG9rZW4gPT09ICJicmFjZS1lbmQiKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYnJhY2VMb2NhdGlvbjsKKyAgICAgICAgICAgIHdoaWxlIChzdGFj
ay5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgdmFyIGxlZnRCcmFjZSA9IHN0YWNrW3N0
YWNrLmxlbmd0aCAtIDJdOworICAgICAgICAgICAgICAgIHZhciByaWdodEJyYWNlID0gc3RhY2tb
c3RhY2subGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hdGNoZXMobGVm
dEJyYWNlLCByaWdodEJyYWNlKSkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suc3BsaWNlKHN0
YWNrLmxlbmd0aCAtIDIsIDIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1i
ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uCisgICAgICogQHJldHVybiB7P1dlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBfY2xv
c2VzdEJyYWNlVG9Qb3NpdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uKQorICAgIHsK
KyAgICAgICAgdmFyIGJyYWNlcyA9IHRoaXMuX2JyYWNlUmFuZ2VzKGxpbmVOdW1iZXIpOworICAg
ICAgICBpZiAoIWJyYWNlcykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGZ1
bmN0aW9uIGNvbXBhcmF0b3IodmFsdWUsIHJhbmdlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgLSByYW5nZS5lbmRDb2x1bW47CisgICAgICAgIH0KKworICAgICAgICB2YXIg
YnJhY2VJbmRleCA9IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlv
bihjb2x1bW4sIGJyYWNlcywgY29tcGFyYXRvcik7CisgICAgICAgIHZhciBicmFjZUxvY2F0aW9u
ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VMb2NhdGlvbihsaW5lTnVt
YmVyLCBicmFjZUluZGV4KTsKKworICAgICAgICByZXR1cm4gYnJhY2VMb2NhdGlvbjsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gY29sdW1uCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1heEJyYWNlSXRl
cmF0aW9ucworICAgICAqLworICAgIGVuY2xvc2luZ0JyYWNlczogZnVuY3Rpb24obGluZU51bWJl
ciwgY29sdW1uLCBtYXhCcmFjZUl0ZXJhdGlvbnMpCisgICAgeworICAgICAgICB2YXIgYnJhY2VM
b2NhdGlvbiA9IHRoaXMuX2Nsb3Nlc3RCcmFjZVRvUG9zaXRpb24obGluZU51bWJlciwgY29sdW1u
KTsKKworICAgICAgICBpZiAoIWJyYWNlTG9jYXRpb24pCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKworICAgICAgICB0aGlzLl9tYXhCcmFjZUl0ZXJhdGlvbnMgPSBtYXhCcmFjZUl0ZXJhdGlv
bnMgfHwgTnVtYmVyLk1BWF9WQUxVRTsKKworICAgICAgICB2YXIgYnJhY2UgPSB0aGlzLl9yZXRy
aWV2ZUJyYWNlKGJyYWNlTG9jYXRpb24pOworICAgICAgICB2YXIgYnJhY2VDb250YWluc1Bvc2l0
aW9uID0gYnJhY2UgJiYgYnJhY2Uuc3RhcnRDb2x1bW4gPj0gY29sdW1uICYmIGJyYWNlLmVuZENv
bHVtbiA8PSBjb2x1bW47CisgICAgICAgIHZhciBsZWZ0QnJhY2VMb2NhdGlvbjsKKyAgICAgICAg
aWYgKGJyYWNlICYmIGJyYWNlLnN0YXJ0Q29sdW1uID49IGNvbHVtbiAmJiBicmFjZS5lbmRDb2x1
bW4gPD0gY29sdW1uICYmIChicmFjZS50b2tlbiA9PT0gImJyYWNlLXN0YXJ0IiB8fCBicmFjZS50
b2tlbiA9PT0gImJsb2NrLXN0YXJ0IikpCisgICAgICAgICAgICBsZWZ0QnJhY2VMb2NhdGlvbiA9
IGJyYWNlTG9jYXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlZnRCcmFjZUxvY2F0
aW9uID0gdGhpcy5fZmluZExlZnRQcmV0ZW5kZW50KGJyYWNlTG9jYXRpb24pOworCisgICAgICAg
IHZhciByaWdodEJyYWNlTG9jYXRpb247CisgICAgICAgIGlmIChicmFjZSAmJiAoYnJhY2UudG9r
ZW4gPT09ICJicmFjZS1lbmQiIHx8IGJyYWNlLnRva2VuID09PSAiYmxvY2stZW5kIikpCisgICAg
ICAgICAgICByaWdodEJyYWNlTG9jYXRpb24gPSBicmFjZUxvY2F0aW9uOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByaWdodEJyYWNlTG9jYXRpb24gPSB0aGlzLl9maW5kUmlnaHRQcmV0ZW5k
ZW50KCFicmFjZSB8fCBjb2x1bW4gPCBicmFjZS5lbmRDb2x1bW4gPyB0aGlzLl9wcmV2aW91c0Jy
YWNlSXRlcmF0b3IoYnJhY2VMb2NhdGlvbikgOiBicmFjZUxvY2F0aW9uKTsKKworICAgICAgICBp
ZiAoIWxlZnRCcmFjZUxvY2F0aW9uIHx8ICFyaWdodEJyYWNlTG9jYXRpb24pCisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgbGVmdEJyYWNlID0gdGhpcy5fcmV0cmlldmVC
cmFjZShsZWZ0QnJhY2VMb2NhdGlvbik7CisgICAgICAgIHZhciByaWdodEJyYWNlID0gdGhpcy5f
cmV0cmlldmVCcmFjZShyaWdodEJyYWNlTG9jYXRpb24pOworCisgICAgICAgIGlmICghdGhpcy5f
bWF0Y2hlcyhsZWZ0QnJhY2UudG9rZW4sIHJpZ2h0QnJhY2UudG9rZW4pKQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGxlZnRCcmFjZTog
eworICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxlZnRCcmFjZUxvY2F0aW9uLmxpbmVOdW1i
ZXIsCisgICAgICAgICAgICAgICAgY29sdW1uOiBsZWZ0QnJhY2Uuc3RhcnRDb2x1bW4KKyAgICAg
ICAgICAgIH0sCisKKyAgICAgICAgICAgIHJpZ2h0QnJhY2U6IHsKKyAgICAgICAgICAgICAgICBs
aW5lTnVtYmVyOiByaWdodEJyYWNlTG9jYXRpb24ubGluZU51bWJlciwKKyAgICAgICAgICAgICAg
ICBjb2x1bW46IHJpZ2h0QnJhY2Uuc3RhcnRDb2x1bW4KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICB9LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC90ZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
dGV4dEVkaXRvci5jc3MKaW5kZXggMzQ3NDVjNzc5ODJmYWE5Yjg5Njg3Mjk4ZmQ3YmY0YTZjMDZl
ZTQ1ZS4uOTAxMjRlYzllZDU1MWFmZTFlYzZjNzczM2RhZGNhNDZiODllZTdmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCkBAIC00
Miw2ICs0MiwxMCBAQAogICAgIGJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAorLnRleHQtZWRpdG9y
LWJyYWNlLW1hdGNoIHsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Cit9CisK
IC50ZXh0LWVkaXRvci1jb250ZW50cyAuaW5uZXItY29udGFpbmVyIHsKICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CiAgICAgdG9wOiAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFiNGVkZjhiOWFkNTg2MDhkYWQ4NWQ5YjI3
OWI2ZGNiYTY3YTAyYjYuLjhmMWQ0NTY0ZDY3NmE2OTUxOGFhNjExNDdkMDI5ZTUzODkyZWZmMGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0wNSAgQW5kcmV5IEx1c2huaWtvdiAgPGx1
c2huaWtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0
IG1hdGNoaW5nIGJyYWNlcyBpbiBEVEUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDg2OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IGJyYWNlIG1hdGNoaW5n
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNo
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL2JyYWNl
LW1hdGNoZXIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMDUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgUlRD
UGVlckNvbm5lY3Rpb25zIHN0cmVhbSBhY2Nlc3NvcnMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVj
aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNl
LW1hdGNoZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFj
ZS1tYXRjaGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2YzMmU1MTEyN2I3MzhjOWU4YjI3
OWU4MmE1OTkwY2VkMTA3ZDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgxIEBACitU
aGlzIHRlc3QgY2hlY2tzIGhpZ2hsaWdodGVyIGNvcnJlY3RuZXNzLgorCitmdW5jdGlvbiBiYXIo
KSB7CisgICAgLy8gY29tbWVudCBoZXJlCisgICAgdmFyIGEsIGIsIGMsIGQ7CisgICAgdmFyIGEg
PSAoKDEgKyAyKSAqICgzICsgNCkpOworICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgICAgICBpZiAoYSA8IGIgJiYgYyA+IGQpIHsKKyAgICAgICAgfQorICAgIH0KK30KK0N1
cnNvciBhdCBsaW5lICMwID4+PmZ1bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDAgKGNoYXIgaXMg
ImYiKQorZW5jbG9zaW5nIGJyYWNlczogbnVsbAorCitDdXJzb3IgYXQgbGluZSAjMCA+Pj5mdW5j
dGlvbiBiYXIoKSB7PDw8IGNvbHVtbiAxMiAoY2hhciBpcyAiKCIpCitlbmNsb3NpbmcgYnJhY2Vz
OiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjEyfSwicmlnaHRCcmFjZSI6
eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjEzfX0KKworQ3Vyc29yIGF0IGxpbmUgIzAgPj4+ZnVu
Y3Rpb24gYmFyKCkgezw8PCBjb2x1bW4gMTMgKGNoYXIgaXMgIikiKQorZW5jbG9zaW5nIGJyYWNl
czogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxMn0sInJpZ2h0QnJhY2Ui
OnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxM319CisKK0N1cnNvciBhdCBsaW5lICMwID4+PmZ1
bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDE0IChjaGFyIGlzICIgIikKK2VuY2xvc2luZyBicmFj
ZXM6IG51bGwKKworQ3Vyc29yIGF0IGxpbmUgIzAgPj4+ZnVuY3Rpb24gYmFyKCkgezw8PCBjb2x1
bW4gMTUgKGNoYXIgaXMgInsiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGlu
ZU51bWJlciI6MCwiY29sdW1uIjoxNX0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29s
dW1uIjowfX0KKworQ3Vyc29yIGF0IGxpbmUgIzIgPj4+ICAgIHZhciBhLCBiLCBjLCBkOzw8PCBj
b2x1bW4gNSAoY2hhciBpcyAiYSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJs
aW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1fSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo4LCJj
b2x1bW4iOjB9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAq
ICgzICsgNCkpOzw8PCBjb2x1bW4gMTIgKGNoYXIgaXMgIigiKQorZW5jbG9zaW5nIGJyYWNlczog
eyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxMn0sInJpZ2h0QnJhY2UiOnsi
bGluZU51bWJlciI6MywiY29sdW1uIjozMH19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2
YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAxMyAoY2hhciBpcyAiKCIpCitl
bmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEz
fSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjE5fX0KKworQ3Vyc29yIGF0
IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDE0
IChjaGFyIGlzICIxIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1i
ZXIiOjMsImNvbHVtbiI6MTN9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6
MTl9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsg
NCkpOzw8PCBjb2x1bW4gMTUgKGNoYXIgaXMgIiAiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0
QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxM30sInJpZ2h0QnJhY2UiOnsibGluZU51
bWJlciI6MywiY29sdW1uIjoxOX19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9
ICgoMSArIDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAyMiAoY2hhciBpcyAiICIpCitlbmNsb3Np
bmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEyfSwicmln
aHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjMwfX0KKworQ3Vyc29yIGF0IGxpbmUg
IzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDI0IChjaGFy
IGlzICIzIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMs
ImNvbHVtbiI6MjN9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6Mjl9fQor
CitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8
PCBjb2x1bW4gMjkgKGNoYXIgaXMgIikiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2Ui
OnsibGluZU51bWJlciI6MywiY29sdW1uIjoyM30sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6
MywiY29sdW1uIjoyOX19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSAr
IDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAzMCAoY2hhciBpcyAiKSIpCitlbmNsb3NpbmcgYnJh
Y2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEyfSwicmlnaHRCcmFj
ZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjMwfX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+
ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDMxIChjaGFyIGlzICI7
IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVt
biI6MTV9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjgsImNvbHVtbiI6MH19CisKK0N1cnNv
ciBhdCBsaW5lICM0ID4+PiAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHs8PDwgY29s
dW1uIDE5IChjaGFyIGlzICJpIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7Imxp
bmVOdW1iZXIiOjQsImNvbHVtbiI6N30sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6NCwiY29s
dW1uIjozMX19CisKK0N1cnNvciBhdCBsaW5lICM0ID4+PiAgICBmb3IodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpIHs8PDwgY29sdW1uIDMyIChjaGFyIGlzICIgIikKK2VuY2xvc2luZyBicmFjZXM6
IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTV9LCJyaWdodEJyYWNlIjp7
ImxpbmVOdW1iZXIiOjgsImNvbHVtbiI6MH19CisKK0N1cnNvciBhdCBsaW5lICM0ID4+PiAgICBm
b3IodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHs8PDwgY29sdW1uIDMzIChjaGFyIGlzICJ7IikK
K2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjQsImNvbHVtbiI6
MzN9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjcsImNvbHVtbiI6NH19CisKK0N1cnNvciBh
dCBsaW5lICM1ID4+PiAgICAgICAgaWYgKGEgPCBiICYmIGMgPiBkKSB7PDw8IGNvbHVtbiAyMCAo
Y2hhciBpcyAiICIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVy
Ijo1LCJjb2x1bW4iOjExfSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo1LCJjb2x1bW4iOjI2
fX0KKworQ3Vyc29yIGF0IGxpbmUgIzUgPj4+ICAgICAgICBpZiAoYSA8IGIgJiYgYyA+IGQpIHs8
PDwgY29sdW1uIDI4IChjaGFyIGlzICJ7IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNl
Ijp7ImxpbmVOdW1iZXIiOjUsImNvbHVtbiI6Mjh9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIi
OjYsImNvbHVtbiI6OH19CisKK0N1cnNvciBhdCBsaW5lICM2ID4+PiAgICAgICAgfTw8PCBjb2x1
bW4gOCAoY2hhciBpcyAifSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5l
TnVtYmVyIjo1LCJjb2x1bW4iOjI4fSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo2LCJjb2x1
bW4iOjh9fQorCitDdXJzb3IgYXQgbGluZSAjNyA+Pj4gICAgfTw8PCBjb2x1bW4gNCAoY2hhciBp
cyAifSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo0LCJj
b2x1bW4iOjMzfSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo3LCJjb2x1bW4iOjR9fQorCitD
dXJzb3IgYXQgbGluZSAjOCA+Pj59PDw8IGNvbHVtbiAwIChjaGFyIGlzICJ9IikKK2VuY2xvc2lu
ZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTV9LCJyaWdo
dEJyYWNlIjp7ImxpbmVOdW1iZXIiOjgsImNvbHVtbiI6MH19CisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNoZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODk2OTI1
YTNlMGI5MjU4MDk3NzFhYzIzMTc1OTkxYTBjYzFhYjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0bWwKQEAgLTAsMCArMSw3
MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZWRpdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CitmdW5jdGlv
biBiYXIoKSB7CisgICAgLy8gY29tbWVudCBoZXJlCisgICAgdmFyIGEsIGIsIGMsIGQ7CisgICAg
dmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOworICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICBpZiAoYSA8IGIgJiYgYyA+IGQpIHsKKyAgICAgICAgfQorICAgIH0K
K30KKworCisgICAgdmFyIHRleHRFZGl0b3IgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRlc3RFZGl0
b3IoKTsKKyAgICB0ZXh0RWRpdG9yLm92ZXJyaWRlVmlld3BvcnRGb3JUZXN0KDAsIHVuZGVmaW5l
ZCwgMyk7CisgICAgdGV4dEVkaXRvci5taW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAg
IHRleHRFZGl0b3Iuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgIHRleHRFZGl0b3Iuc2V0VGV4dChi
YXIudG9TdHJpbmcoKSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodGV4dEVkaXRvci50
ZXh0KCkpOworCisgICAgdmFyIGJyYWNlSGlnaGxpZ2h0ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNb2RlbC5CcmFjZU1hdGNoZXIodGV4dEVkaXRvci5fdGV4dE1vZGVsKTsKKyAgICBm
dW5jdGlvbiB0ZXN0QW5kRHVtcChsaW5lTnVtYmVyLCBjb2x1bW4pCisgICAgeworICAgICAgICB2
YXIgbGluZSA9IHRleHRFZGl0b3IuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOworICAgICAg
ICB2YXIgdGV4dCA9ICJDdXJzb3IgYXQgbGluZSAjIiArIChsaW5lTnVtYmVyKSArICIgPj4+IiAr
IGxpbmUgKyAiPDw8IGNvbHVtbiAiICsgY29sdW1uICsgIiAoY2hhciBpcyBcIiIgKyBsaW5lLmNo
YXJBdChjb2x1bW4pICsgIlwiKSI7CisgICAgICAgIHRleHQgKz0gIlxuZW5jbG9zaW5nIGJyYWNl
czogIiArIEpTT04uc3RyaW5naWZ5KGJyYWNlSGlnaGxpZ2h0ZXIuZW5jbG9zaW5nQnJhY2VzKGxp
bmVOdW1iZXIsIGNvbHVtbikpOworICAgICAgICB0ZXh0ICs9ICJcbiI7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KHRleHQpOworICAgIH0KKworICAgIHRlc3RBbmREdW1wKDAsIDAp
OworICAgIHRlc3RBbmREdW1wKDAsIDEyKTsKKyAgICB0ZXN0QW5kRHVtcCgwLCAxMyk7CisgICAg
dGVzdEFuZER1bXAoMCwgMTQpOworICAgIHRlc3RBbmREdW1wKDAsIDE1KTsKKyAgICB0ZXN0QW5k
RHVtcCgyLCA1KTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAxMik7CisgICAgdGVzdEFuZER1bXAoMywg
MTMpOworICAgIHRlc3RBbmREdW1wKDMsIDE0KTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAxNSk7Cisg
ICAgdGVzdEFuZER1bXAoMywgMjIpOworICAgIHRlc3RBbmREdW1wKDMsIDI0KTsKKyAgICB0ZXN0
QW5kRHVtcCgzLCAyOSk7CisgICAgdGVzdEFuZER1bXAoMywgMzApOworICAgIHRlc3RBbmREdW1w
KDMsIDMxKTsKKyAgICB0ZXN0QW5kRHVtcCg0LCAxOSk7CisgICAgdGVzdEFuZER1bXAoNCwgMzIp
OworICAgIHRlc3RBbmREdW1wKDQsIDMzKTsKKyAgICB0ZXN0QW5kRHVtcCg1LCAyMCk7CisgICAg
dGVzdEFuZER1bXAoNSwgMjgpOworICAgIHRlc3RBbmREdW1wKDYsIDgpOworICAgIHRlc3RBbmRE
dW1wKDcsIDQpOworICAgIHRlc3RBbmREdW1wKDgsIDApOworCisgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPgorVGhpcyB0ZXN0IGNoZWNrcyBoaWdobGlnaHRlciBjb3JyZWN0bmVz
cy4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186783</attachid>
            <date>2013-02-06 01:20:50 -0800</date>
            <delta_ts>2013-02-06 04:47:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108697-20130206131726.patch</filename>
            <type>text/plain</type>
            <size>32374</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3YmQ4YmNiMDA5NTgy
ODM4ZjMzZDRlZDdmMTJmNTQ0MjRkYmQ1Ny4uMDliNTAzMWQ1OWNkZWE5ZDQyMjA0ZjVjYTQyYWZi
MzJjNGM0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTA2ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgbWF0Y2hpbmcgYnJhY2VzIGluIERURS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODY5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBCcmFjZU1hdGNoZXIg
Y2xhc3Mgd2hpY2ggZm9yIGdpdmVuIHBvc2l0aW9uIGluIHRleHRNb2RlbAorICAgICAgICB3aWxs
IHJlc3BvbmQgd2l0aCBlbmNsb3NpbmcgYnJhY2UgcGFpciBmb3IgdGhhdCBwb3NpdGlvbi4KKyAg
ICAgICAgTWFrZSB1c2Ugb2YgdGhpcyBjbGFzcyBpbiBEZWZhdWx0VGV4dEVkaXRvciBieSBoYW5k
bGluZworICAgICAgICBzZWxlY3Rpb25DaGFuZ2UgZXZlbnQuIE1ha2UgdXNlIG9mIHRoaXMgY2xh
c3MgaW4gIl9jbG9zaW5nQmxvY2tPZmZzZXQiCisgICAgICAgIG1ldGhvZCBvZiBUZXh0RWRpdG9y
TWFpblBhbmVsIGFzIHRoaXMgbWV0aG9kIGltcGxlbWVudHMgc2ltaWxhcgorICAgICAgICBmdW5j
dGlvbmFsaXR5LgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1h
dGNoZXIuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVk
aXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlE
b21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fY2xvc2luZ0Jsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0Q29udHJv
bGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhp
Z2hsaWdodENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVNlbGVjdGlvbkNoYW5nZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnByb3RvdHlwZS5faGlnaGxp
Z2h0TGluZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNr
ZXRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLmVuZHNXaXRo
QnJhY2tldFJlZ2V4Lik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9y
LmNzczoKKyAgICAgICAgKC50ZXh0LWVkaXRvci1icmFjZS1tYXRjaCk6CisKIDIwMTMtMDItMDUg
IEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgTGludXggQVNBTiBidWlsZCBmaXggZm9yIHIxNDE3ODMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCAz
MGEzMzY0MjMxZDgwM2IzODQyZmQ4YTA3YmUzYmI3NzhhZjVkMTA0Li5kOTdiMWEyZWI2MTE2ZWVm
Y2MzMDA5MzdhMGRkYzhhZTI5Zjc2NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTEzODQsNiArMTM4
NCw4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdh
dGUsIHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsCiAgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3Jp
cHRvcnMgPSBbXTsKIAogICAgIHRoaXMuX3Rva2VuSGlnaGxpZ2h0ZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwuVG9rZW5IaWdobGlnaHRlcih0aGlzLCB0ZXh0TW9kZWwp
OworICAgIHRoaXMuX2JyYWNlTWF0Y2hlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1v
ZGVsLkJyYWNlTWF0Y2hlcih0ZXh0TW9kZWwpOworICAgIHRoaXMuX2JyYWNlSGlnaGxpZ2h0ZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250
cm9sbGVyKHRoaXMsIHRleHRNb2RlbCwgdGhpcy5fYnJhY2VNYXRjaGVyKTsKIAogICAgIHRoaXMu
X2ZyZWVDYWNoZWRFbGVtZW50cygpOwogICAgIHRoaXMuYnVpbGRDaHVua3MoKTsKQEAgLTIzOTQs
NyArMjM5Niw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBVbmluZGVudCBhZnRlciBibG9jawogICAgICAgICBpZiAoZWRpdElu
Zm8udGV4dCA9PT0gIn0iICYmIGVkaXRJbmZvLnJhbmdlLmlzRW1wdHkoKSAmJiBzZWxlY3Rpb24u
aXNFbXB0eSgpICYmICF0aGlzLl90ZXh0TW9kZWwubGluZShlZGl0SW5mby5yYW5nZS5lbmRMaW5l
KS50cmltKCkpIHsKLSAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9jbG9zaW5nQmxvY2tP
ZmZzZXQoZWRpdEluZm8ucmFuZ2UsIHNlbGVjdGlvbik7CisgICAgICAgICAgICB2YXIgb2Zmc2V0
ID0gdGhpcy5fY2xvc2luZ0Jsb2NrT2Zmc2V0KGVkaXRJbmZvLnJhbmdlKTsKICAgICAgICAgICAg
IGlmIChvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgICAgIGVkaXRJbmZvLnJhbmdlLnN0YXJ0
Q29sdW1uID0gb2Zmc2V0OwogICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zdGFydENvbHVtbiA9
IG9mZnNldCArIDE7CkBAIC0yNDg0LDMwICsyNDg2LDE1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlRleHRSYW5nZX0gb2xkUmFuZ2UKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5UZXh0UmFuZ2V9IHNlbGVjdGlvbgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8K
LSAgICBfY2xvc2luZ0Jsb2NrT2Zmc2V0OiBmdW5jdGlvbihvbGRSYW5nZSwgc2VsZWN0aW9uKQor
ICAgIF9jbG9zaW5nQmxvY2tPZmZzZXQ6IGZ1bmN0aW9uKG9sZFJhbmdlKQogICAgIHsKLSAgICAg
ICAgdmFyIG5lc3RpbmdMZXZlbCA9IDE7Ci0gICAgICAgIGZvciAodmFyIGkgPSBvbGRSYW5nZS5l
bmRMaW5lOyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IHRoaXMu
X3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUoaSwgImhpZ2hsaWdodCIpOwotICAgICAgICAgICAgaWYg
KCFhdHRyaWJ1dGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIg
cmFuZ2VzID0gYXR0cmlidXRlLnJhbmdlczsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSByYW5n
ZXMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHsKLSAgICAgICAgICAgICAgICB2YXIgdG9rZW4g
PSByYW5nZXNbal0udG9rZW47Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSAiYmxvY2st
c3RhcnQiKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKC0tbmVzdGluZ0xldmVsKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gdGhpcy5fdGV4dE1vZGVs
LmxpbmUoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZUNvbnRlbnQubGVu
Z3RoIC0gbGluZUNvbnRlbnQudHJpbUxlZnQoKS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSAiYmxv
Y2stZW5kIikKLSAgICAgICAgICAgICAgICAgICAgKytuZXN0aW5nTGV2ZWw7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB2YXIgbGVmdEJyYWNl
ID0gdGhpcy5fYnJhY2VNYXRjaGVyLmZpbmRMZWZ0UHJldGVuZGVudChvbGRSYW5nZS5zdGFydExp
bmUsIG9sZFJhbmdlLnN0YXJ0Q29sdW1uKTsKKyAgICAgICAgaWYgKCFsZWZ0QnJhY2UgfHwgbGVm
dEJyYWNlLnRva2VuICE9PSAiYmxvY2stc3RhcnQiKQorICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICB2YXIgbGluZUNvbnRlbnQgPSB0aGlzLl90ZXh0TW9kZWwubGluZShsZWZ0QnJhY2Uu
bGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBsaW5lQ29udGVudC5sZW5ndGggLSBsaW5lQ29u
dGVudC50cmltTGVmdCgpLmxlbmd0aDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yNjczLDYgKzI2
NjAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9sYXN0U2VsZWN0aW9uID0gdGV4dFJhbmdlOwogCiAgICAgICAgIHRo
aXMuX3Rva2VuSGlnaGxpZ2h0ZXIuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHRleHRSYW5nZSk7Cisg
ICAgICAgIHRoaXMuX2JyYWNlSGlnaGxpZ2h0ZXIuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHRleHRS
YW5nZSk7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNlbGVjdGlvbkNoYW5nZWQodGV4dFJhbmdl
KTsKICAgICB9LAogCkBAIC0zMzQ1LDQgKzMzMzMsNjEgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRU
ZXh0RWRpdG9yLldvcmRNb3ZlbWVudENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIH0KIH0K
IAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWx9IHRleHRFZGl0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbH0gdGV4dE1vZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9k
ZWwuQnJhY2VNYXRjaGVyfSBicmFjZU1hdGNoZXIKKyAqLworV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250cm9sbGVyID0gZnVuY3Rpb24odGV4dEVkaXRv
ciwgdGV4dE1vZGVsLCBicmFjZU1hdGNoZXIpCit7CisgICAgdGhpcy5fdGV4dEVkaXRvciA9IHRl
eHRFZGl0b3I7CisgICAgdGhpcy5fdGV4dE1vZGVsID0gdGV4dE1vZGVsOworICAgIHRoaXMuX2Jy
YWNlTWF0Y2hlciA9IGJyYWNlTWF0Y2hlcjsKKyAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9y
cyA9IFtdOworfQorCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhpZ2hs
aWdodENvbnRyb2xsZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlRleHRSYW5nZX0gc2VsZWN0aW9uUmFuZ2UKKyAgICAgKi8KKyAgICBoYW5kbGVT
ZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uKHNlbGVjdGlvblJhbmdlKQorICAgIHsKKyAgICAgICAg
aWYgKCFzZWxlY3Rpb25SYW5nZSB8fCAhc2VsZWN0aW9uUmFuZ2UuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICB0aGlzLl9yZW1vdmVIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZFJhbmdlICYmIHRoaXMuX2hp
Z2hsaWdodGVkUmFuZ2UuY29tcGFyZVRvKHNlbGVjdGlvblJhbmdlKSA9PT0gMCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZW1vdmVIaWdobGlnaHQoKTsKKyAgICAgICAg
dmFyIGxpbmVOdW1iZXIgPSBzZWxlY3Rpb25SYW5nZS5zdGFydExpbmU7CisgICAgICAgIHZhciBj
b2x1bW4gPSBzZWxlY3Rpb25SYW5nZS5zdGFydENvbHVtbjsKKyAgICAgICAgdmFyIGxpbmUgPSB0
aGlzLl90ZXh0TW9kZWwubGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYgKGNvbHVtbiA+IDAg
JiYgL1spfV0vLnRlc3QobGluZS5jaGFyQXQoY29sdW1uIC0gMSkpKQorICAgICAgICAgICAgLS1j
b2x1bW47CisKKyAgICAgICAgdmFyIGVuY2xvc2luZ0JyYWNlcyA9IHRoaXMuX2JyYWNlTWF0Y2hl
ci5lbmNsb3NpbmdCcmFjZXMobGluZU51bWJlciwgY29sdW1uKTsKKyAgICAgICAgaWYgKCFlbmNs
b3NpbmdCcmFjZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faGlnaGxp
Z2h0ZWRSYW5nZSA9IHNlbGVjdGlvblJhbmdlOworICAgICAgICB0aGlzLl9oaWdobGlnaHREZXNj
cmlwdG9ycy5wdXNoKHRoaXMuX3RleHRFZGl0b3IuaGlnaGxpZ2h0UmFuZ2UoV2ViSW5zcGVjdG9y
LlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oZW5jbG9zaW5nQnJhY2VzLmxlZnRCcmFjZS5s
aW5lTnVtYmVyLCBlbmNsb3NpbmdCcmFjZXMubGVmdEJyYWNlLmNvbHVtbiksICJ0ZXh0LWVkaXRv
ci1icmFjZS1tYXRjaCIpKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMucHVz
aCh0aGlzLl90ZXh0RWRpdG9yLmhpZ2hsaWdodFJhbmdlKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
Y3JlYXRlRnJvbUxvY2F0aW9uKGVuY2xvc2luZ0JyYWNlcy5yaWdodEJyYWNlLmxpbmVOdW1iZXIs
IGVuY2xvc2luZ0JyYWNlcy5yaWdodEJyYWNlLmNvbHVtbiksICJ0ZXh0LWVkaXRvci1icmFjZS1t
YXRjaCIpKTsKKyAgICB9LAorCisgICAgX3JlbW92ZUhpZ2hsaWdodDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9ycy5sZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2hpZ2hs
aWdodERlc2NyaXB0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci5yZW1vdmVIaWdobGlnaHQodGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnNbaV0pOworCisgICAg
ICAgIHRoaXMuX2hpZ2hsaWdodERlc2NyaXB0b3JzID0gW107CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9oaWdobGlnaHRlZFJhbmdlOworICAgIH0KK30KKwogV2ViSW5zcGVjdG9yLmRlYnVnRGVmYXVs
dFRleHRFZGl0b3IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGV4dEVkaXRvckhpZ2hsaWdodGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKaW5kZXggYjIzMWRhYjZi
OGY4YmMwZjgxODg1YmQyMjM1M2MzOWRkNTJlMTdiYi4uNjgwYWY2YjU2NWM4OTUyM2YwNjM2OTg4
ZjRjZDYxZmFmM2QxNDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKQEAgLTE4NSwxNSArMTg1
LDI0IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IGxpbmUuCiAgICAgICAgICAgICAgICAgc3Rh
dGUucmFuZ2VzID0gc3RhdGUucmFuZ2VzIHx8IFtdOworICAgICAgICAgICAgICAgIHN0YXRlLmJy
YWNlcyA9IHN0YXRlLmJyYWNlcyB8fCBbXTsKICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICAgICAgIHZhciBuZXdDb2x1bW4gPSB0aGlzLl90b2tlbml6ZXIubmV4dFRva2VuKGxh
c3RIaWdobGlnaHRlZENvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlblR5cGUg
PSB0aGlzLl90b2tlbml6ZXIudG9rZW5UeXBlOwotICAgICAgICAgICAgICAgICAgICBpZiAodG9r
ZW5UeXBlICYmIGxhc3RIaWdobGlnaHRlZENvbHVtbiA8IHRoaXMuX2hpZ2hsaWdodExpbmVMaW1p
dCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnJhbmdlcy5wdXNoKHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydENvbHVtbjogbGFzdEhpZ2hsaWdodGVkQ29sdW1uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0gMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW5UeXBlCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuVHlwZSAmJiBsYXN0
SGlnaGxpZ2h0ZWRDb2x1bW4gPCB0aGlzLl9oaWdobGlnaHRMaW5lTGltaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0b2tlblR5cGUgPT09ICJicmFjZS1zdGFydCIgfHwgdG9rZW5U
eXBlID09PSAiYnJhY2UtZW5kIiB8fCB0b2tlblR5cGUgPT09ICJibG9jay1zdGFydCIgfHwgdG9r
ZW5UeXBlID09PSAiYmxvY2stZW5kIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5icmFjZXMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29s
dW1uOiBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9rZW46IHRva2VuVHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLnJhbmdlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
cnRDb2x1bW46IGxhc3RIaWdobGlnaHRlZENvbHVtbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5kQ29sdW1uOiBuZXdDb2x1bW4gLSAxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbjogdG9rZW5UeXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbGFzdEhpZ2hs
aWdodGVkQ29sdW1uID0gbmV3Q29sdW1uOwogICAgICAgICAgICAgICAgICAgICBpZiAoKyt0b2tl
bnNDb3VudCA+IHRoaXMuX2hpZ2hsaWdodENodW5rTGltaXQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yTW9kZWwuanMKaW5kZXggNmQ3M2M3MjNiOTNjZGFkOWQ4NWI3NzQxNWYwMGVm
ZjU4NjgxYjkwZC4uYjFjNjc5ODhlMzQ2OWY4ZmYwOGRhYzNkN2I0MDE3ZmMwZTRiMmEyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9k
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9y
TW9kZWwuanMKQEAgLTY1NiwzICs2NTYsMTU4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9k
ZWwucHJvdG90eXBlID0gewogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZQogfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1vZGVsfSB0ZXh0TW9kZWwKKyAqLworV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5CcmFjZU1hdGNoZXIgPSBmdW5jdGlvbih0ZXh0TW9kZWwpCit7CisgICAgdGhpcy5f
dGV4dE1vZGVsID0gdGV4dE1vZGVsOworfQorCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVs
LkJyYWNlTWF0Y2hlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48e3N0YXJ0Q29sdW1uOiBudW1i
ZXIsIGVuZENvbHVtbjogbnVtYmVyLCB0b2tlbjogc3RyaW5nfT59CisgICAgICovCisgICAgX2Jy
YWNlUmFuZ2VzOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKGxpbmVO
dW1iZXIgPj0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQgfHwgbGluZU51bWJlciA8IDApCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgYXR0cmlidXRlID0gdGhpcy5f
dGV4dE1vZGVsLmdldEF0dHJpYnV0ZShsaW5lTnVtYmVyLCAiaGlnaGxpZ2h0Iik7CisgICAgICAg
IGlmICghYXR0cmlidXRlKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUuYnJhY2VzOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2VUb2tlbkxlZnQKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gYnJhY2VUb2tlblJpZ2h0CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8K
KyAgICBfbWF0Y2hlczogZnVuY3Rpb24oYnJhY2VUb2tlbkxlZnQsIGJyYWNlVG9rZW5SaWdodCkK
KyAgICB7CisgICAgICAgIHJldHVybiAoKGJyYWNlVG9rZW5MZWZ0ID09PSAiYnJhY2Utc3RhcnQi
ICYmIGJyYWNlVG9rZW5SaWdodCA9PT0gImJyYWNlLWVuZCIpIHx8IChicmFjZVRva2VuTGVmdCA9
PT0gImJsb2NrLXN0YXJ0IiAmJiBicmFjZVRva2VuUmlnaHQgPT09ICJibG9jay1lbmQiKSk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4QnJh
Y2VJdGVyYXRpb24KKyAgICAgKiBAcmV0dXJuIHs/e2xpbmVOdW1iZXI6IG51bWJlciwgY29sdW1u
OiBudW1iZXIsIHRva2VuOiBzdHJpbmd9fQorICAgICAqLworICAgIGZpbmRMZWZ0UHJldGVuZGVu
dDogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBtYXhCcmFjZUl0ZXJhdGlvbikKKyAgICB7
CisgICAgICAgIHZhciBicmFjZXMgPSB0aGlzLl9icmFjZVJhbmdlcyhsaW5lTnVtYmVyKTsKKyAg
ICAgICAgaWYgKCFicmFjZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB2
YXIgYnJhY2VJbmRleCA9IGJyYWNlcy5sZW5ndGggLSAxOworICAgICAgICB3aGlsZSAoYnJhY2VJ
bmRleCA+PSAwICYmIGJyYWNlc1ticmFjZUluZGV4XS5zdGFydENvbHVtbiA+IGNvbHVtbikKKyAg
ICAgICAgICAgIC0tYnJhY2VJbmRleDsKKworICAgICAgICB2YXIgYnJhY2UgPSBicmFjZUluZGV4
ID49IDAgPyBicmFjZXNbYnJhY2VJbmRleF0gOiBudWxsOworICAgICAgICBpZiAoYnJhY2UgJiYg
YnJhY2Uuc3RhcnRDb2x1bW4gPT09IGNvbHVtbiAmJiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1l
bmQiIHx8IGJyYWNlLnRva2VuID09PSAiYnJhY2UtZW5kIikpCisgICAgICAgICAgICAtLWJyYWNl
SW5kZXg7CisKKyAgICAgICAgdmFyIHN0YWNrID0gW107CisgICAgICAgIG1heEJyYWNlSXRlcmF0
aW9uID0gbWF4QnJhY2VJdGVyYXRpb24gfHwgTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAgICAgd2hp
bGUgKC0tbWF4QnJhY2VJdGVyYXRpb24pIHsKKyAgICAgICAgICAgIGlmIChicmFjZUluZGV4IDwg
MCkgeworICAgICAgICAgICAgICAgIHdoaWxlKChicmFjZXMgPSB0aGlzLl9icmFjZVJhbmdlcygt
LWxpbmVOdW1iZXIpKSAmJiAhYnJhY2VzLmxlbmd0aCkge307CisgICAgICAgICAgICAgICAgaWYg
KCFicmFjZXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAg
ICAgIGJyYWNlSW5kZXggPSBicmFjZXMubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyYWNlID0gYnJhY2VzW2JyYWNlSW5kZXhdOworICAgICAgICAgICAgaWYgKGJyYWNl
LnRva2VuID09PSAiYmxvY2stZW5kIiB8fCBicmFjZS50b2tlbiA9PT0gImJyYWNlLWVuZCIpCisg
ICAgICAgICAgICAgICAgc3RhY2sucHVzaChicmFjZS50b2tlbik7CisgICAgICAgICAgICBlbHNl
IGlmIChzdGFjay5sZW5ndGggPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAg
ICAgY29sdW1uOiBicmFjZS5zdGFydENvbHVtbiwKKyAgICAgICAgICAgICAgICAgICAgdG9rZW46
IGJyYWNlLnRva2VuCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCF0
aGlzLl9tYXRjaGVzKGJyYWNlLnRva2VuLCBzdGFjay5wb3AoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisKKyAgICAgICAgICAgIC0tYnJhY2VJbmRleDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uCisgICAgICogQHBh
cmFtIHtudW1iZXI9fSBtYXhCcmFjZUl0ZXJhdGlvbgorICAgICAqIEByZXR1cm4gez97bGluZU51
bWJlcjogbnVtYmVyLCBjb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmluZ319CisgICAgICovCisg
ICAgZmluZFJpZ2h0UHJldGVuZGVudDogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBtYXhC
cmFjZUl0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIHZhciBicmFjZXMgPSB0aGlzLl9icmFjZVJh
bmdlcyhsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYgKCFicmFjZXMpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICB2YXIgYnJhY2VJbmRleCA9IDA7CisgICAgICAgIHdoaWxlIChi
cmFjZUluZGV4IDwgYnJhY2VzLmxlbmd0aCAmJiBicmFjZXNbYnJhY2VJbmRleF0uc3RhcnRDb2x1
bW4gPCBjb2x1bW4pCisgICAgICAgICAgICArK2JyYWNlSW5kZXg7CisKKyAgICAgICAgdmFyIGJy
YWNlID0gYnJhY2VJbmRleCA8IGJyYWNlcy5sZW5ndGggPyBicmFjZXNbYnJhY2VJbmRleF0gOiBu
dWxsOworICAgICAgICBpZiAoYnJhY2UgJiYgYnJhY2Uuc3RhcnRDb2x1bW4gPT09IGNvbHVtbiAm
JiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1zdGFydCIgfHwgYnJhY2UudG9rZW4gPT09ICJicmFj
ZS1zdGFydCIpKQorICAgICAgICAgICAgKyticmFjZUluZGV4OworCisgICAgICAgIHZhciBzdGFj
ayA9IFtdOworICAgICAgICBtYXhCcmFjZUl0ZXJhdGlvbiA9IG1heEJyYWNlSXRlcmF0aW9uIHx8
IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHdoaWxlICgtLW1heEJyYWNlSXRlcmF0aW9uKSB7
CisgICAgICAgICAgICBpZiAoYnJhY2VJbmRleCA+PSBicmFjZXMubGVuZ3RoKSB7CisgICAgICAg
ICAgICAgICAgd2hpbGUgKChicmFjZXMgPSB0aGlzLl9icmFjZVJhbmdlcygrK2xpbmVOdW1iZXIp
KSAmJiAhYnJhY2VzLmxlbmd0aCkge307CisgICAgICAgICAgICAgICAgaWYgKCFicmFjZXMpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIGJyYWNlSW5k
ZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJhY2UgPSBicmFjZXNbYnJhY2VJ
bmRleF07CisgICAgICAgICAgICBpZiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1zdGFydCIgfHwg
YnJhY2UudG9rZW4gPT09ICJicmFjZS1zdGFydCIpCisgICAgICAgICAgICAgICAgc3RhY2sucHVz
aChicmFjZS50b2tlbik7CisgICAgICAgICAgICBlbHNlIGlmIChzdGFjay5sZW5ndGggPT09IDAp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJl
cjogbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBicmFjZS5zdGFydENv
bHVtbiwKKyAgICAgICAgICAgICAgICAgICAgdG9rZW46IGJyYWNlLnRva2VuCisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl9tYXRjaGVzKHN0YWNrLnBvcCgp
LCBicmFjZS50b2tlbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAg
ICArK2JyYWNlSW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGNvbHVtbgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4QnJhY2VJdGVy
YXRpb24KKyAgICAgKiBAcmV0dXJuIHs/e2xlZnRCcmFjZToge2xpbmVOdW1iZXI6IG51bWJlciwg
Y29sdW1uOiBudW1iZXIsIHRva2VuOiBzdHJpbmd9LCByaWdodEJyYWNlOiB7bGluZU51bWJlcjog
bnVtYmVyLCBjb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmluZ319fQorICAgICAqLworICAgIGVu
Y2xvc2luZ0JyYWNlczogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBtYXhCcmFjZUl0ZXJh
dGlvbikKKyAgICB7CisgICAgICAgIHZhciBsZWZ0QnJhY2VMb2NhdGlvbiA9IHRoaXMuZmluZExl
ZnRQcmV0ZW5kZW50KGxpbmVOdW1iZXIsIGNvbHVtbiwgbWF4QnJhY2VJdGVyYXRpb24pOworCisg
ICAgICAgIGlmICghbGVmdEJyYWNlTG9jYXRpb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICB2YXIgcmlnaHRCcmFjZUxvY2F0aW9uID0gdGhpcy5maW5kUmlnaHRQcmV0ZW5k
ZW50KGxpbmVOdW1iZXIsIGNvbHVtbiwgbWF4QnJhY2VJdGVyYXRpb24pOworCisgICAgICAgIGlm
ICghcmlnaHRCcmFjZUxvY2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAg
ICAgaWYgKCF0aGlzLl9tYXRjaGVzKGxlZnRCcmFjZUxvY2F0aW9uLnRva2VuLCByaWdodEJyYWNl
TG9jYXRpb24udG9rZW4pKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIGxlZnRCcmFjZTogbGVmdEJyYWNlTG9jYXRpb24sCisgICAgICAg
ICAgICByaWdodEJyYWNlOiByaWdodEJyYWNlTG9jYXRpb24KKyAgICAgICAgfTsKKyAgICB9LAor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRp
dG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5j
c3MKaW5kZXggMzQ3NDVjNzc5ODJmYWE5Yjg5Njg3Mjk4ZmQ3YmY0YTZjMDZlZTQ1ZS4uOTAxMjRl
YzllZDU1MWFmZTFlYzZjNzczM2RhZGNhNDZiODllZTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCkBAIC00Miw2ICs0MiwxMCBA
QAogICAgIGJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAorLnRleHQtZWRpdG9yLWJyYWNlLW1hdGNo
IHsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Cit9CisKIC50ZXh0LWVkaXRv
ci1jb250ZW50cyAuaW5uZXItY29udGFpbmVyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAg
ICAgdG9wOiAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGFiNGVkZjhiOWFkNTg2MDhkYWQ4NWQ5YjI3OWI2ZGNiYTY3YTAy
YjYuLjc5YmEwZmM1OWM3YjgyNTdmMGM1MDI5ZTY3ZWFjODdlODQ3NmEwZWUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMy0wMi0wNiAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IG1hdGNoaW5nIGJy
YWNlcyBpbiBEVEUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDg2OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IGJyYWNlIG1hdGNoaW5nIGZ1bmN0aW9uYWxp
dHkuIEZpeCBzb21lCisgICAgICAgIGxheW91dCB0ZXN0IGV4cGVjdGF0aW9ucyBhcyB0aGUgcGF0
Y2ggcmVtb3ZlcyBicmFjZXMgZnJvbSBoaWdobGlnaHQKKyAgICAgICAgcmFuZ2VzLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxvbmctbGluZS1leHBl
Y3RlZC50eHQ6CisKIDIwMTMtMDItMDUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2ds
ZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgUlRDUGVlckNvbm5lY3Rp
b25zIHN0cmVhbSBhY2Nlc3NvcnMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNoZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2I5OTMwYzA2MTdlYjJjMWZkMmJkNjRlN2VkMmFmNWYw
ZTFhYWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9i
cmFjZS1tYXRjaGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgxIEBACitUaGlzIHRlc3QgY2hl
Y2tzIGhpZ2hsaWdodGVyIGNvcnJlY3RuZXNzLgorCitmdW5jdGlvbiBiYXIoKSB7CisgICAgLy8g
Y29tbWVudCBoZXJlCisgICAgdmFyIGEsIGIsIGMsIGQ7CisgICAgdmFyIGEgPSAoKDEgKyAyKSAq
ICgzICsgNCkpOworICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICBp
ZiAoYSA8IGIgJiYgYyA+IGQpIHsKKyAgICAgICAgfQorICAgIH0KK30KK0N1cnNvciBhdCBsaW5l
ICMwID4+PmZ1bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDAgKGNoYXIgaXMgImYiKQorZW5jbG9z
aW5nIGJyYWNlczogbnVsbAorCitDdXJzb3IgYXQgbGluZSAjMCA+Pj5mdW5jdGlvbiBiYXIoKSB7
PDw8IGNvbHVtbiAxMiAoY2hhciBpcyAiKCIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFj
ZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjEyLCJ0b2tlbiI6ImJyYWNlLXN0YXJ0In0sInJp
Z2h0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxMywidG9rZW4iOiJicmFjZS1lbmQi
fX0KKworQ3Vyc29yIGF0IGxpbmUgIzAgPj4+ZnVuY3Rpb24gYmFyKCkgezw8PCBjb2x1bW4gMTMg
KGNoYXIgaXMgIikiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJl
ciI6MCwiY29sdW1uIjoxMiwidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7Imxp
bmVOdW1iZXIiOjAsImNvbHVtbiI6MTMsInRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBh
dCBsaW5lICMwID4+PmZ1bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDE0IChjaGFyIGlzICIgIikK
K2VuY2xvc2luZyBicmFjZXM6IG51bGwKKworQ3Vyc29yIGF0IGxpbmUgIzAgPj4+ZnVuY3Rpb24g
YmFyKCkgezw8PCBjb2x1bW4gMTUgKGNoYXIgaXMgInsiKQorZW5jbG9zaW5nIGJyYWNlczogeyJs
ZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxNSwidG9rZW4iOiJibG9jay1zdGFy
dCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjgsImNvbHVtbiI6MCwidG9rZW4iOiJibG9j
ay1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzIgPj4+ICAgIHZhciBhLCBiLCBjLCBkOzw8PCBj
b2x1bW4gNSAoY2hhciBpcyAiYSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJs
aW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1LCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJh
Y2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowLCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitD
dXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBj
b2x1bW4gMTIgKGNoYXIgaXMgIigiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsi
bGluZU51bWJlciI6MywiY29sdW1uIjoxMiwidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJy
YWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MzAsInRva2VuIjoiYnJhY2UtZW5kIn19CisK
K0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7PDw8
IGNvbHVtbiAxMyAoY2hhciBpcyAiKCIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6
eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEzLCJ0b2tlbiI6ImJyYWNlLXN0YXJ0In0sInJpZ2h0
QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxOSwidG9rZW4iOiJicmFjZS1lbmQifX0K
KworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8
PDwgY29sdW1uIDE0IChjaGFyIGlzICIxIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNl
Ijp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTMsInRva2VuIjoiYnJhY2Utc3RhcnQifSwicmln
aHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjE5LCJ0b2tlbiI6ImJyYWNlLWVuZCJ9
fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkp
Ozw8PCBjb2x1bW4gMTUgKGNoYXIgaXMgIiAiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJh
Y2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxMywidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJy
aWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTksInRva2VuIjoiYnJhY2UtZW5k
In19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0
KSk7PDw8IGNvbHVtbiAyMiAoY2hhciBpcyAiICIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRC
cmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEyLCJ0b2tlbiI6ImJyYWNlLXN0YXJ0In0s
InJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjozMCwidG9rZW4iOiJicmFjZS1l
bmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyAr
IDQpKTs8PDwgY29sdW1uIDI0IChjaGFyIGlzICIzIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVm
dEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MjMsInRva2VuIjoiYnJhY2Utc3RhcnQi
fSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjI5LCJ0b2tlbiI6ImJyYWNl
LWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgz
ICsgNCkpOzw8PCBjb2x1bW4gMjkgKGNoYXIgaXMgIikiKQorZW5jbG9zaW5nIGJyYWNlczogeyJs
ZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoyMywidG9rZW4iOiJicmFjZS1zdGFy
dCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MjksInRva2VuIjoiYnJh
Y2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICog
KDMgKyA0KSk7PDw8IGNvbHVtbiAzMCAoY2hhciBpcyAiKSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7
ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEyLCJ0b2tlbiI6ImJyYWNlLXN0
YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjozMCwidG9rZW4iOiJi
cmFjZS1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikg
KiAoMyArIDQpKTs8PDwgY29sdW1uIDMxIChjaGFyIGlzICI7IikKK2VuY2xvc2luZyBicmFjZXM6
IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTUsInRva2VuIjoiYmxvY2st
c3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo4LCJjb2x1bW4iOjAsInRva2VuIjoi
YmxvY2stZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICM0ID4+PiAgICBmb3IodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHs8PDwgY29sdW1uIDE5IChjaGFyIGlzICJpIikKK2VuY2xvc2luZyBicmFj
ZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjQsImNvbHVtbiI6NywidG9rZW4iOiJicmFj
ZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjQsImNvbHVtbiI6MzEsInRva2Vu
IjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICM0ID4+PiAgICBmb3IodmFyIGkgPSAw
OyBpIDwgMTAwOyArK2kpIHs8PDwgY29sdW1uIDMyIChjaGFyIGlzICIgIikKK2VuY2xvc2luZyBi
cmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTUsInRva2VuIjoi
YmxvY2stc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo4LCJjb2x1bW4iOjAsInRv
a2VuIjoiYmxvY2stZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICM0ID4+PiAgICBmb3IodmFyIGkg
PSAwOyBpIDwgMTAwOyArK2kpIHs8PDwgY29sdW1uIDMzIChjaGFyIGlzICJ7IikKK2VuY2xvc2lu
ZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjQsImNvbHVtbiI6MzMsInRva2Vu
IjoiYmxvY2stc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo3LCJjb2x1bW4iOjQs
InRva2VuIjoiYmxvY2stZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICM1ID4+PiAgICAgICAgaWYg
KGEgPCBiICYmIGMgPiBkKSB7PDw8IGNvbHVtbiAyMCAoY2hhciBpcyAiICIpCitlbmNsb3Npbmcg
YnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo1LCJjb2x1bW4iOjExLCJ0b2tlbiI6
ImJyYWNlLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6NSwiY29sdW1uIjoyNiwi
dG9rZW4iOiJicmFjZS1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzUgPj4+ICAgICAgICBpZiAo
YSA8IGIgJiYgYyA+IGQpIHs8PDwgY29sdW1uIDI4IChjaGFyIGlzICJ7IikKK2VuY2xvc2luZyBi
cmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjUsImNvbHVtbiI6MjgsInRva2VuIjoi
YmxvY2stc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo2LCJjb2x1bW4iOjgsInRv
a2VuIjoiYmxvY2stZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICM2ID4+PiAgICAgICAgfTw8PCBj
b2x1bW4gOCAoY2hhciBpcyAifSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJs
aW5lTnVtYmVyIjo1LCJjb2x1bW4iOjI4LCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJh
Y2UiOnsibGluZU51bWJlciI6NiwiY29sdW1uIjo4LCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitD
dXJzb3IgYXQgbGluZSAjNyA+Pj4gICAgfTw8PCBjb2x1bW4gNCAoY2hhciBpcyAifSIpCitlbmNs
b3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo0LCJjb2x1bW4iOjMzLCJ0
b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6NywiY29sdW1u
Ijo0LCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjOCA+Pj59PDw8IGNv
bHVtbiAwIChjaGFyIGlzICJ9IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7Imxp
bmVOdW1iZXIiOjAsImNvbHVtbiI6MTUsInRva2VuIjoiYmxvY2stc3RhcnQifSwicmlnaHRCcmFj
ZSI6eyJsaW5lTnVtYmVyIjo4LCJjb2x1bW4iOjAsInRva2VuIjoiYmxvY2stZW5kIn19CisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1hdGNoZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jODk2OTI1YTNlMGI5MjU4MDk3NzFhYzIzMTc1OTkxYTBjYzFhYjQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0
bWwKQEAgLTAsMCArMSw3MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iZWRpdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVz
dCgpCit7CitmdW5jdGlvbiBiYXIoKSB7CisgICAgLy8gY29tbWVudCBoZXJlCisgICAgdmFyIGEs
IGIsIGMsIGQ7CisgICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOworICAgIGZvcih2YXIg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICBpZiAoYSA8IGIgJiYgYyA+IGQpIHsKKyAg
ICAgICAgfQorICAgIH0KK30KKworCisgICAgdmFyIHRleHRFZGl0b3IgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZVRlc3RFZGl0b3IoKTsKKyAgICB0ZXh0RWRpdG9yLm92ZXJyaWRlVmlld3BvcnRGb3JU
ZXN0KDAsIHVuZGVmaW5lZCwgMyk7CisgICAgdGV4dEVkaXRvci5taW1lVHlwZSA9ICJ0ZXh0L2ph
dmFzY3JpcHQiOworICAgIHRleHRFZGl0b3Iuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgIHRleHRF
ZGl0b3Iuc2V0VGV4dChiYXIudG9TdHJpbmcoKSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQodGV4dEVkaXRvci50ZXh0KCkpOworCisgICAgdmFyIGJyYWNlSGlnaGxpZ2h0ZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5CcmFjZU1hdGNoZXIodGV4dEVkaXRvci5fdGV4
dE1vZGVsKTsKKyAgICBmdW5jdGlvbiB0ZXN0QW5kRHVtcChsaW5lTnVtYmVyLCBjb2x1bW4pCisg
ICAgeworICAgICAgICB2YXIgbGluZSA9IHRleHRFZGl0b3IuX3RleHRNb2RlbC5saW5lKGxpbmVO
dW1iZXIpOworICAgICAgICB2YXIgdGV4dCA9ICJDdXJzb3IgYXQgbGluZSAjIiArIChsaW5lTnVt
YmVyKSArICIgPj4+IiArIGxpbmUgKyAiPDw8IGNvbHVtbiAiICsgY29sdW1uICsgIiAoY2hhciBp
cyBcIiIgKyBsaW5lLmNoYXJBdChjb2x1bW4pICsgIlwiKSI7CisgICAgICAgIHRleHQgKz0gIlxu
ZW5jbG9zaW5nIGJyYWNlczogIiArIEpTT04uc3RyaW5naWZ5KGJyYWNlSGlnaGxpZ2h0ZXIuZW5j
bG9zaW5nQnJhY2VzKGxpbmVOdW1iZXIsIGNvbHVtbikpOworICAgICAgICB0ZXh0ICs9ICJcbiI7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHQpOworICAgIH0KKworICAgIHRl
c3RBbmREdW1wKDAsIDApOworICAgIHRlc3RBbmREdW1wKDAsIDEyKTsKKyAgICB0ZXN0QW5kRHVt
cCgwLCAxMyk7CisgICAgdGVzdEFuZER1bXAoMCwgMTQpOworICAgIHRlc3RBbmREdW1wKDAsIDE1
KTsKKyAgICB0ZXN0QW5kRHVtcCgyLCA1KTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAxMik7CisgICAg
dGVzdEFuZER1bXAoMywgMTMpOworICAgIHRlc3RBbmREdW1wKDMsIDE0KTsKKyAgICB0ZXN0QW5k
RHVtcCgzLCAxNSk7CisgICAgdGVzdEFuZER1bXAoMywgMjIpOworICAgIHRlc3RBbmREdW1wKDMs
IDI0KTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAyOSk7CisgICAgdGVzdEFuZER1bXAoMywgMzApOwor
ICAgIHRlc3RBbmREdW1wKDMsIDMxKTsKKyAgICB0ZXN0QW5kRHVtcCg0LCAxOSk7CisgICAgdGVz
dEFuZER1bXAoNCwgMzIpOworICAgIHRlc3RBbmREdW1wKDQsIDMzKTsKKyAgICB0ZXN0QW5kRHVt
cCg1LCAyMCk7CisgICAgdGVzdEFuZER1bXAoNSwgMjgpOworICAgIHRlc3RBbmREdW1wKDYsIDgp
OworICAgIHRlc3RBbmREdW1wKDcsIDQpOworICAgIHRlc3RBbmREdW1wKDgsIDApOworCisgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGhpcyB0ZXN0IGNoZWNrcyBoaWdobGln
aHRlciBjb3JyZWN0bmVzcy4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhw
ZWN0ZWQudHh0CmluZGV4IGMxOWFkNjNkYjg2MDc3NGEyMTNjNTMzNmFlMGMxMTM5ZWQ3NjJhZTEu
LmE2ZjE0ODlmOGI1NTBkMTgzODYwMTBlNWZiYTJlZDNlMTA5OTA4M2EgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy1l
eHBlY3RlZC50eHQKQEAgLTkxLDcgKzkxLDcgQEAgQWZ0ZXIgaGlnaGxpZ2h0aW5nIHVwIHRvIHRo
ZSBlbmQKIDE1IDogICogbGluZSAjNiA6IGphdmFzY3JpcHQtaWRlbnRbMy03XSBqYXZhc2NyaXB0
LW51bWJlcls5LTEwXQogMTYgOiAgKiBsaW5lICM3IDogamF2YXNjcmlwdC1pZGVudFszLTddIGph
dmFzY3JpcHQtbnVtYmVyWzktMTBdCiAxNyA6ICAqIGxpbmUgIzggOiBqYXZhc2NyaXB0LWlkZW50
WzMtN10gamF2YXNjcmlwdC1udW1iZXJbOS0xMF0KLTE4IDogICogdmFyIGEgPSBuZXcgQSgpOyAv
LyovIDogamF2YXNjcmlwdC1rZXl3b3JkWzMtNl0gamF2YXNjcmlwdC1pZGVudFs3LThdIGphdmFz
Y3JpcHQta2V5d29yZFsxMS0xNF0gamF2YXNjcmlwdC1pZGVudFsxNS0xNl0gYnJhY2Utc3RhcnRb
MTYtMTddIGJyYWNlLWVuZFsxNy0xOF0gamF2YXNjcmlwdC1jb21tZW50WzIwLTI0XQorMTggOiAg
KiB2YXIgYSA9IG5ldyBBKCk7IC8vKi8gOiBqYXZhc2NyaXB0LWtleXdvcmRbMy02XSBqYXZhc2Ny
aXB0LWlkZW50WzctOF0gamF2YXNjcmlwdC1rZXl3b3JkWzExLTE0XSBqYXZhc2NyaXB0LWlkZW50
WzE1LTE2XSBqYXZhc2NyaXB0LWNvbW1lbnRbMjAtMjRdCiAxOSA6IHNvbWUgdGV4dCA6IGphdmFz
Y3JpcHQtaWRlbnRbMC00XSBqYXZhc2NyaXB0LWlkZW50WzUtOV0KIDIwIDogIDoKIApAQCAtMTEz
LDcgKzExMyw3IEBAIEFmdGVyIGNoYW5naW5nIHRoZSBmaXJzdCBsaW5lLCBhbmQgdXBkYXRpbmcg
dGhlIGhpZ2hsaWdodHMgZm9yIHRoZSBmaXJzdCA1IGxpbmVzCiAxNSA6ICAqIGxpbmUgIzYgOiBq
YXZhc2NyaXB0LWlkZW50WzMtN10gamF2YXNjcmlwdC1udW1iZXJbOS0xMF0KIDE2IDogICogbGlu
ZSAjNyA6IGphdmFzY3JpcHQtaWRlbnRbMy03XSBqYXZhc2NyaXB0LW51bWJlcls5LTEwXQogMTcg
OiAgKiBsaW5lICM4IDogamF2YXNjcmlwdC1pZGVudFszLTddIGphdmFzY3JpcHQtbnVtYmVyWzkt
MTBdCi0xOCA6ICAqIHZhciBhID0gbmV3IEEoKTsgLy8qLyA6IGphdmFzY3JpcHQta2V5d29yZFsz
LTZdIGphdmFzY3JpcHQtaWRlbnRbNy04XSBqYXZhc2NyaXB0LWtleXdvcmRbMTEtMTRdIGphdmFz
Y3JpcHQtaWRlbnRbMTUtMTZdIGJyYWNlLXN0YXJ0WzE2LTE3XSBicmFjZS1lbmRbMTctMThdIGph
dmFzY3JpcHQtY29tbWVudFsyMC0yNF0KKzE4IDogICogdmFyIGEgPSBuZXcgQSgpOyAvLyovIDog
amF2YXNjcmlwdC1rZXl3b3JkWzMtNl0gamF2YXNjcmlwdC1pZGVudFs3LThdIGphdmFzY3JpcHQt
a2V5d29yZFsxMS0xNF0gamF2YXNjcmlwdC1pZGVudFsxNS0xNl0gamF2YXNjcmlwdC1jb21tZW50
WzIwLTI0XQogMTkgOiBzb21lIHRleHQgOiBqYXZhc2NyaXB0LWlkZW50WzAtNF0gamF2YXNjcmlw
dC1pZGVudFs1LTldCiAyMCA6ICA6CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3ItbG9uZy1saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItbG9uZy1saW5lLWV4cGVjdGVkLnR4dAppbmRl
eCAwMDQwODVjNzIxNjM0YWJjZmVkZmUwMGM5YTRjNjNiOTJhMWRmZWE2Li42YTA2Njk3Yzg4MGZm
ZTBhM2IxNjZiMDcwMzRhYTE3MjRkNmZjMmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxvbmctbGluZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1sb25nLWxpbmUtZXhwZWN0ZWQu
dHh0CkBAIC0yLDUgKzIsNSBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGV4dCBlZGl0b3IgZG9l
c24ndCBwYWludCBoaWdobGlnaHQgZm9yIHRvbyBsb25nIGxpbmVzLgogCiAKIDxkaXYgY2xhc3M9
ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgotPGRpdiBjbGFzcz0id2Via2l0LWxpbmUt
Y29udGVudCI+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiPi8qIFNUQVJU
ICovPC9zcGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5d29yZCI+dGhpczwv
c3Bhbj4uPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWlkZW50Ij5maWVsZDwvc3Bhbj4g
PSA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIj4iZm9vIjwvc3Bhbj47IDxz
cGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Ij4vKiBjb21tZW50ICovPC9zcGFu
PiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5d29yZCI+ZnVuY3Rpb248L3NwYW4+
IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1pZGVudCI+YmFyPC9zcGFuPjxzcGFuIGNs
YXNzPSJ3ZWJraXQtYnJhY2Utc3RhcnQiPig8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC1icmFj
ZS1lbmQiPik8L3NwYW4+IDxzcGFuIGNsYXNzPSJ3ZWJraXQtYmxvY2stc3RhcnQiPns8L3NwYW4+
IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxz
cGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIj5udWxsPC9zcGFuPjsgPHNwYW4g
Y2xhc3M9IndlYmtpdC1ibG9jay1lbmQiPn08L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZh
c2NyaXB0LWtleXdvcmQiPnRoaXM8L3NwYW4+LjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlw
dC1pZGVudCI+ZmllbGQ8L3NwYW4+ID0gPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LXN0
cmluZyI+ImZvbyI8L3NwYW4+OyA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtY29tbWVu
dCI+LyogY29tbWVudCAqLzwvc3Bhbj4gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRo
aXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBu
dWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsg
cmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24g
YmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBm
dW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21t
ZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7
IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQg
PSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhp
cy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51
bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyBy
ZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBi
YXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1
bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1l
bnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsg
LyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9
ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlz
LmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVs
bDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJl
dHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJh
cigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVu
Y3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVu
dCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAv
KiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0g
ImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMu
ZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxs
OyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0
dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFy
KCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5j
dGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50
ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8q
IGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAi
Zm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5m
aWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7
IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1
cm4gbnVsbDsgfS8qIEZJTklTSCAqLzwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxp
bmUtY29udGVudCI+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiPi8qIFNU
QVJUICovPC9zcGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5d29yZCI+dGhp
czwvc3Bhbj4uPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWlkZW50Ij5maWVsZDwvc3Bh
bj4gPSA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIj4iZm9vIjwvc3Bhbj47
IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Ij4vKiBjb21tZW50ICovPC9z
cGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5d29yZCI+ZnVuY3Rpb248L3Nw
YW4+IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1pZGVudCI+YmFyPC9zcGFuPigpIHsg
PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNw
YW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQiPm51bGw8L3NwYW4+OyB9PHNwYW4g
Y2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQiPnRoaXM8L3NwYW4+LjxzcGFuIGNsYXNz
PSJ3ZWJraXQtamF2YXNjcmlwdC1pZGVudCI+ZmllbGQ8L3NwYW4+ID0gPHNwYW4gY2xhc3M9Indl
YmtpdC1qYXZhc2NyaXB0LXN0cmluZyI+ImZvbyI8L3NwYW4+OyA8c3BhbiBjbGFzcz0id2Via2l0
LWphdmFzY3JpcHQtY29tbWVudCI+LyogY29tbWVudCAqLzwvc3Bhbj4gZnVuY3Rpb24gYmFyKCkg
eyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlv
biBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICov
IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNv
bW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9v
IjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVs
ZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10
aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4g
bnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7
IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9u
IGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8g
ZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29t
bWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28i
OyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxk
ID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRo
aXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBu
dWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsg
cmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24g
YmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBm
dW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21t
ZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7
IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQg
PSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhp
cy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51
bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyBy
ZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBi
YXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1
bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1l
bnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsg
LyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9
ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlz
LmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVs
bDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJl
dHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJh
cigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVu
Y3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfS8qIEZJTklTSCAqLzwvZGl2PjwvZGl2PgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186830</attachid>
            <date>2013-02-06 04:47:53 -0800</date>
            <delta_ts>2013-02-06 07:42:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108697-20130206164429.patch</filename>
            <type>text/plain</type>
            <size>32399</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3YmQ4YmNiMDA5NTgy
ODM4ZjMzZDRlZDdmMTJmNTQ0MjRkYmQ1Ny4uMDliNTAzMWQ1OWNkZWE5ZDQyMjA0ZjVjYTQyYWZi
MzJjNGM0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTA2ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgbWF0Y2hpbmcgYnJhY2VzIGluIERURS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODY5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBCcmFjZU1hdGNoZXIg
Y2xhc3Mgd2hpY2ggZm9yIGdpdmVuIHBvc2l0aW9uIGluIHRleHRNb2RlbAorICAgICAgICB3aWxs
IHJlc3BvbmQgd2l0aCBlbmNsb3NpbmcgYnJhY2UgcGFpciBmb3IgdGhhdCBwb3NpdGlvbi4KKyAg
ICAgICAgTWFrZSB1c2Ugb2YgdGhpcyBjbGFzcyBpbiBEZWZhdWx0VGV4dEVkaXRvciBieSBoYW5k
bGluZworICAgICAgICBzZWxlY3Rpb25DaGFuZ2UgZXZlbnQuIE1ha2UgdXNlIG9mIHRoaXMgY2xh
c3MgaW4gIl9jbG9zaW5nQmxvY2tPZmZzZXQiCisgICAgICAgIG1ldGhvZCBvZiBUZXh0RWRpdG9y
TWFpblBhbmVsIGFzIHRoaXMgbWV0aG9kIGltcGxlbWVudHMgc2ltaWxhcgorICAgICAgICBmdW5j
dGlvbmFsaXR5LgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1h
dGNoZXIuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVk
aXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlE
b21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fY2xvc2luZ0Jsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0Q29udHJv
bGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhp
Z2hsaWdodENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVNlbGVjdGlvbkNoYW5nZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnByb3RvdHlwZS5faGlnaGxp
Z2h0TGluZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNr
ZXRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLmVuZHNXaXRo
QnJhY2tldFJlZ2V4Lik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9y
LmNzczoKKyAgICAgICAgKC50ZXh0LWVkaXRvci1icmFjZS1tYXRjaCk6CisKIDIwMTMtMDItMDUg
IEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgTGludXggQVNBTiBidWlsZCBmaXggZm9yIHIxNDE3ODMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCAz
MGEzMzY0MjMxZDgwM2IzODQyZmQ4YTA3YmUzYmI3NzhhZjVkMTA0Li5iNDRhOGE5ZWZmZjNjOWM5
ZjNmYWUzZWRmNWRkMDFlNzA2NDdmN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTEzODQsNiArMTM4
NCw4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdh
dGUsIHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsCiAgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3Jp
cHRvcnMgPSBbXTsKIAogICAgIHRoaXMuX3Rva2VuSGlnaGxpZ2h0ZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwuVG9rZW5IaWdobGlnaHRlcih0aGlzLCB0ZXh0TW9kZWwp
OworICAgIHRoaXMuX2JyYWNlTWF0Y2hlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1v
ZGVsLkJyYWNlTWF0Y2hlcih0ZXh0TW9kZWwpOworICAgIHRoaXMuX2JyYWNlSGlnaGxpZ2h0ZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250
cm9sbGVyKHRoaXMsIHRleHRNb2RlbCwgdGhpcy5fYnJhY2VNYXRjaGVyKTsKIAogICAgIHRoaXMu
X2ZyZWVDYWNoZWRFbGVtZW50cygpOwogICAgIHRoaXMuYnVpbGRDaHVua3MoKTsKQEAgLTIzOTQs
NyArMjM5Niw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBVbmluZGVudCBhZnRlciBibG9jawogICAgICAgICBpZiAoZWRpdElu
Zm8udGV4dCA9PT0gIn0iICYmIGVkaXRJbmZvLnJhbmdlLmlzRW1wdHkoKSAmJiBzZWxlY3Rpb24u
aXNFbXB0eSgpICYmICF0aGlzLl90ZXh0TW9kZWwubGluZShlZGl0SW5mby5yYW5nZS5lbmRMaW5l
KS50cmltKCkpIHsKLSAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9jbG9zaW5nQmxvY2tP
ZmZzZXQoZWRpdEluZm8ucmFuZ2UsIHNlbGVjdGlvbik7CisgICAgICAgICAgICB2YXIgb2Zmc2V0
ID0gdGhpcy5fY2xvc2luZ0Jsb2NrT2Zmc2V0KGVkaXRJbmZvLnJhbmdlKTsKICAgICAgICAgICAg
IGlmIChvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgICAgIGVkaXRJbmZvLnJhbmdlLnN0YXJ0
Q29sdW1uID0gb2Zmc2V0OwogICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zdGFydENvbHVtbiA9
IG9mZnNldCArIDE7CkBAIC0yNDg0LDMwICsyNDg2LDE1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlRleHRSYW5nZX0gb2xkUmFuZ2UKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5UZXh0UmFuZ2V9IHNlbGVjdGlvbgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8K
LSAgICBfY2xvc2luZ0Jsb2NrT2Zmc2V0OiBmdW5jdGlvbihvbGRSYW5nZSwgc2VsZWN0aW9uKQor
ICAgIF9jbG9zaW5nQmxvY2tPZmZzZXQ6IGZ1bmN0aW9uKG9sZFJhbmdlKQogICAgIHsKLSAgICAg
ICAgdmFyIG5lc3RpbmdMZXZlbCA9IDE7Ci0gICAgICAgIGZvciAodmFyIGkgPSBvbGRSYW5nZS5l
bmRMaW5lOyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IHRoaXMu
X3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUoaSwgImhpZ2hsaWdodCIpOwotICAgICAgICAgICAgaWYg
KCFhdHRyaWJ1dGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIg
cmFuZ2VzID0gYXR0cmlidXRlLnJhbmdlczsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSByYW5n
ZXMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHsKLSAgICAgICAgICAgICAgICB2YXIgdG9rZW4g
PSByYW5nZXNbal0udG9rZW47Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSAiYmxvY2st
c3RhcnQiKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKC0tbmVzdGluZ0xldmVsKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gdGhpcy5fdGV4dE1vZGVs
LmxpbmUoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZUNvbnRlbnQubGVu
Z3RoIC0gbGluZUNvbnRlbnQudHJpbUxlZnQoKS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSAiYmxv
Y2stZW5kIikKLSAgICAgICAgICAgICAgICAgICAgKytuZXN0aW5nTGV2ZWw7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB2YXIgbGVmdEJyYWNl
ID0gdGhpcy5fYnJhY2VNYXRjaGVyLmZpbmRMZWZ0Q2FuZGlkYXRlKG9sZFJhbmdlLnN0YXJ0TGlu
ZSwgb2xkUmFuZ2Uuc3RhcnRDb2x1bW4pOworICAgICAgICBpZiAoIWxlZnRCcmFjZSB8fCBsZWZ0
QnJhY2UudG9rZW4gIT09ICJibG9jay1zdGFydCIpCisgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIHZhciBsaW5lQ29udGVudCA9IHRoaXMuX3RleHRNb2RlbC5saW5lKGxlZnRCcmFjZS5s
aW5lTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50Lmxlbmd0aCAtIGxpbmVDb250
ZW50LnRyaW1MZWZ0KCkubGVuZ3RoOwogICAgIH0sCiAKICAgICAvKioKQEAgLTI2NzMsNiArMjY2
MCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSB0ZXh0UmFuZ2U7CiAKICAgICAgICAgdGhp
cy5fdG9rZW5IaWdobGlnaHRlci5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UodGV4dFJhbmdlKTsKKyAg
ICAgICAgdGhpcy5fYnJhY2VIaWdobGlnaHRlci5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UodGV4dFJh
bmdlKTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2VsZWN0aW9uQ2hhbmdlZCh0ZXh0UmFuZ2Up
OwogICAgIH0sCiAKQEAgLTMzNDUsNCArMzMzMyw2MSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRl
eHRFZGl0b3IuV29yZE1vdmVtZW50Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgfQogfQog
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbH0gdGV4dEVkaXRvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1vZGVsfSB0ZXh0TW9kZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2Rl
bC5CcmFjZU1hdGNoZXJ9IGJyYWNlTWF0Y2hlcgorICovCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5CcmFjZUhpZ2hsaWdodENvbnRyb2xsZXIgPSBmdW5jdGlvbih0ZXh0RWRpdG9y
LCB0ZXh0TW9kZWwsIGJyYWNlTWF0Y2hlcikKK3sKKyAgICB0aGlzLl90ZXh0RWRpdG9yID0gdGV4
dEVkaXRvcjsKKyAgICB0aGlzLl90ZXh0TW9kZWwgPSB0ZXh0TW9kZWw7CisgICAgdGhpcy5fYnJh
Y2VNYXRjaGVyID0gYnJhY2VNYXRjaGVyOworICAgIHRoaXMuX2hpZ2hsaWdodERlc2NyaXB0b3Jz
ID0gW107Cit9CisKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxp
Z2h0Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlfSBzZWxlY3Rpb25SYW5nZQorICAgICAqLworICAgIGhhbmRsZVNl
bGVjdGlvbkNoYW5nZTogZnVuY3Rpb24oc2VsZWN0aW9uUmFuZ2UpCisgICAgeworICAgICAgICBp
ZiAoIXNlbGVjdGlvblJhbmdlIHx8ICFzZWxlY3Rpb25SYW5nZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3JlbW92ZUhpZ2hsaWdodCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2hpZ2hsaWdodGVkUmFuZ2UgJiYgdGhpcy5faGln
aGxpZ2h0ZWRSYW5nZS5jb21wYXJlVG8oc2VsZWN0aW9uUmFuZ2UpID09PSAwKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3JlbW92ZUhpZ2hsaWdodCgpOworICAgICAgICB2
YXIgbGluZU51bWJlciA9IHNlbGVjdGlvblJhbmdlLnN0YXJ0TGluZTsKKyAgICAgICAgdmFyIGNv
bHVtbiA9IHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29sdW1uOworICAgICAgICB2YXIgbGluZSA9IHRo
aXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOworICAgICAgICBpZiAoY29sdW1uID4gMCAm
JiAvWyl9XS8udGVzdChsaW5lLmNoYXJBdChjb2x1bW4gLSAxKSkpCisgICAgICAgICAgICAtLWNv
bHVtbjsKKworICAgICAgICB2YXIgZW5jbG9zaW5nQnJhY2VzID0gdGhpcy5fYnJhY2VNYXRjaGVy
LmVuY2xvc2luZ0JyYWNlcyhsaW5lTnVtYmVyLCBjb2x1bW4pOworICAgICAgICBpZiAoIWVuY2xv
c2luZ0JyYWNlcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9oaWdobGln
aHRlZFJhbmdlID0gc2VsZWN0aW9uUmFuZ2U7CisgICAgICAgIHRoaXMuX2hpZ2hsaWdodERlc2Ny
aXB0b3JzLnB1c2godGhpcy5fdGV4dEVkaXRvci5oaWdobGlnaHRSYW5nZShXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbihlbmNsb3NpbmdCcmFjZXMubGVmdEJyYWNlLmxp
bmVOdW1iZXIsIGVuY2xvc2luZ0JyYWNlcy5sZWZ0QnJhY2UuY29sdW1uKSwgInRleHQtZWRpdG9y
LWJyYWNlLW1hdGNoIikpOworICAgICAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9ycy5wdXNo
KHRoaXMuX3RleHRFZGl0b3IuaGlnaGxpZ2h0UmFuZ2UoV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5j
cmVhdGVGcm9tTG9jYXRpb24oZW5jbG9zaW5nQnJhY2VzLnJpZ2h0QnJhY2UubGluZU51bWJlciwg
ZW5jbG9zaW5nQnJhY2VzLnJpZ2h0QnJhY2UuY29sdW1uKSwgInRleHQtZWRpdG9yLWJyYWNlLW1h
dGNoIikpOworICAgIH0sCisKKyAgICBfcmVtb3ZlSGlnaGxpZ2h0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodERlc2NyaXB0b3JzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faGlnaGxp
Z2h0RGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
LnJlbW92ZUhpZ2hsaWdodCh0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9yc1tpXSk7CisKKyAgICAg
ICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgZGVsZXRlIHRoaXMu
X2hpZ2hsaWdodGVkUmFuZ2U7CisgICAgfQorfQorCiBXZWJJbnNwZWN0b3IuZGVidWdEZWZhdWx0
VGV4dEVkaXRvciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5qcwppbmRleCBiMjMxZGFiNmI4
ZjhiYzBmODE4ODViZDIyMzUzYzM5ZGQ1MmUxN2JiLi5iZTI1MWZlZjI5NjFiYTY5N2NjM2FlNmRh
NzFkN2VjYTZiOGE1YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5qcwpAQCAtMTg1LDE1ICsxODUs
MjUgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgICAgICAgICAvLyBIaWdobGlnaHQgbGluZS4KICAgICAgICAgICAgICAgICBzdGF0
ZS5yYW5nZXMgPSBzdGF0ZS5yYW5nZXMgfHwgW107CisgICAgICAgICAgICAgICAgc3RhdGUuYnJh
Y2VzID0gc3RhdGUuYnJhY2VzIHx8IFtdOwogICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgICAgICAgICAgdmFyIG5ld0NvbHVtbiA9IHRoaXMuX3Rva2VuaXplci5uZXh0VG9rZW4obGFz
dEhpZ2hsaWdodGVkQ29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHRva2VuVHlwZSA9
IHRoaXMuX3Rva2VuaXplci50b2tlblR5cGU7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0b2tl
blR5cGUgJiYgbGFzdEhpZ2hsaWdodGVkQ29sdW1uIDwgdGhpcy5faGlnaGxpZ2h0TGluZUxpbWl0
KQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucmFuZ2VzLnB1c2goewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uOiBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sdW1uOiBuZXdDb2x1bW4gLSAxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiB0b2tlblR5cGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5UeXBlICYmIGxhc3RI
aWdobGlnaHRlZENvbHVtbiA8IHRoaXMuX2hpZ2hsaWdodExpbmVMaW1pdCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRva2VuVHlwZSA9PT0gImJyYWNlLXN0YXJ0IiB8fCB0b2tlblR5
cGUgPT09ICJicmFjZS1lbmQiIHx8IHRva2VuVHlwZSA9PT0gImJsb2NrLXN0YXJ0IiB8fCB0b2tl
blR5cGUgPT09ICJibG9jay1lbmQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUuYnJhY2VzLnB1c2goeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENv
bHVtbjogbGFzdEhpZ2hsaWdodGVkQ29sdW1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmRDb2x1bW46IG5ld0NvbHVtbiAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuOiB0b2tlblR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUucmFuZ2VzLnB1c2goeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFydENvbHVtbjogbGFzdEhpZ2hsaWdodGVkQ29sdW1uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmRDb2x1bW46IG5ld0NvbHVtbiAtIDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRva2VuOiB0b2tlblR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4gPSBuZXdDb2x1bW47
CiAgICAgICAgICAgICAgICAgICAgIGlmICgrK3Rva2Vuc0NvdW50ID4gdGhpcy5faGlnaGxpZ2h0
Q2h1bmtMaW1pdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcwppbmRl
eCA2ZDczYzcyM2I5M2NkYWQ5ZDg1Yjc3NDE1ZjAwZWZmNTg2ODFiOTBkLi4xNmQwYWU1YjZkMGRm
NDBlZjQ0NDcxYjU3NTk1YWM5MTQ0MzkxM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcwpAQCAtNjU2LDMgKzY1Niwx
NTYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCiB9CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWx9IHRleHRN
b2RlbAorICovCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLkJyYWNlTWF0Y2hlciA9IGZ1
bmN0aW9uKHRleHRNb2RlbCkKK3sKKyAgICB0aGlzLl90ZXh0TW9kZWwgPSB0ZXh0TW9kZWw7Cit9
CisKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VNYXRjaGVyLnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBy
ZXR1cm4ge0FycmF5Ljx7c3RhcnRDb2x1bW46IG51bWJlciwgZW5kQ29sdW1uOiBudW1iZXIsIHRv
a2VuOiBzdHJpbmd9Pn0KKyAgICAgKi8KKyAgICBfYnJhY2VSYW5nZXM6IGZ1bmN0aW9uKGxpbmVO
dW1iZXIpCisgICAgeworICAgICAgICBpZiAobGluZU51bWJlciA+PSB0aGlzLl90ZXh0TW9kZWwu
bGluZXNDb3VudCB8fCBsaW5lTnVtYmVyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
CisgICAgICAgIHZhciBhdHRyaWJ1dGUgPSB0aGlzLl90ZXh0TW9kZWwuZ2V0QXR0cmlidXRlKGxp
bmVOdW1iZXIsICJoaWdobGlnaHQiKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGUpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZS5icmFjZXM7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBi
cmFjZVRva2VuTGVmdAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBicmFjZVRva2VuUmlnaHQKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9tYXRjaGVzOiBmdW5jdGlvbihi
cmFjZVRva2VuTGVmdCwgYnJhY2VUb2tlblJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgo
YnJhY2VUb2tlbkxlZnQgPT09ICJicmFjZS1zdGFydCIgJiYgYnJhY2VUb2tlblJpZ2h0ID09PSAi
YnJhY2UtZW5kIikgfHwgKGJyYWNlVG9rZW5MZWZ0ID09PSAiYmxvY2stc3RhcnQiICYmIGJyYWNl
VG9rZW5SaWdodCA9PT0gImJsb2NrLWVuZCIpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1u
CisgICAgICogQHBhcmFtIHtudW1iZXI9fSBtYXhCcmFjZUl0ZXJhdGlvbgorICAgICAqIEByZXR1
cm4gez97bGluZU51bWJlcjogbnVtYmVyLCBjb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmluZ319
CisgICAgICovCisgICAgZmluZExlZnRDYW5kaWRhdGU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNv
bHVtbiwgbWF4QnJhY2VJdGVyYXRpb24pCisgICAgeworICAgICAgICB2YXIgYnJhY2VzID0gdGhp
cy5fYnJhY2VSYW5nZXMobGluZU51bWJlcik7CisgICAgICAgIGlmICghYnJhY2VzKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGJyYWNlSW5kZXggPSBicmFjZXMubGVu
Z3RoIC0gMTsKKyAgICAgICAgd2hpbGUgKGJyYWNlSW5kZXggPj0gMCAmJiBicmFjZXNbYnJhY2VJ
bmRleF0uc3RhcnRDb2x1bW4gPiBjb2x1bW4pCisgICAgICAgICAgICAtLWJyYWNlSW5kZXg7CisK
KyAgICAgICAgdmFyIGJyYWNlID0gYnJhY2VJbmRleCA+PSAwID8gYnJhY2VzW2JyYWNlSW5kZXhd
IDogbnVsbDsKKyAgICAgICAgaWYgKGJyYWNlICYmIGJyYWNlLnN0YXJ0Q29sdW1uID09PSBjb2x1
bW4gJiYgKGJyYWNlLnRva2VuID09PSAiYmxvY2stZW5kIiB8fCBicmFjZS50b2tlbiA9PT0gImJy
YWNlLWVuZCIpKQorICAgICAgICAgICAgLS1icmFjZUluZGV4OworCisgICAgICAgIHZhciBzdGFj
ayA9IFtdOworICAgICAgICBtYXhCcmFjZUl0ZXJhdGlvbiA9IG1heEJyYWNlSXRlcmF0aW9uIHx8
IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHdoaWxlICgtLW1heEJyYWNlSXRlcmF0aW9uKSB7
CisgICAgICAgICAgICBpZiAoYnJhY2VJbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICB3aGls
ZSAoKGJyYWNlcyA9IHRoaXMuX2JyYWNlUmFuZ2VzKC0tbGluZU51bWJlcikpICYmICFicmFjZXMu
bGVuZ3RoKSB7fTsKKyAgICAgICAgICAgICAgICBpZiAoIWJyYWNlcykKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgYnJhY2VJbmRleCA9IGJyYWNlcy5s
ZW5ndGggLSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJhY2UgPSBicmFjZXNbYnJh
Y2VJbmRleF07CisgICAgICAgICAgICBpZiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1lbmQiIHx8
IGJyYWNlLnRva2VuID09PSAiYnJhY2UtZW5kIikKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNo
KGJyYWNlLnRva2VuKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkK
KyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGJyYWNlLnN0YXJ0Q29s
dW1uLAorICAgICAgICAgICAgICAgICAgICB0b2tlbjogYnJhY2UudG9rZW4KKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuX21hdGNoZXMoYnJhY2UudG9rZW4s
IHN0YWNrLnBvcCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAg
ICAgLS1icmFjZUluZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBjb2x1bW4KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG1heEJyYWNlSXRl
cmF0aW9uCisgICAgICogQHJldHVybiB7P3tsaW5lTnVtYmVyOiBudW1iZXIsIGNvbHVtbjogbnVt
YmVyLCB0b2tlbjogc3RyaW5nfX0KKyAgICAgKi8KKyAgICBmaW5kUmlnaHRDYW5kaWRhdGU6IGZ1
bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbiwgbWF4QnJhY2VJdGVyYXRpb24pCisgICAgeworICAg
ICAgICB2YXIgYnJhY2VzID0gdGhpcy5fYnJhY2VSYW5nZXMobGluZU51bWJlcik7CisgICAgICAg
IGlmICghYnJhY2VzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGJy
YWNlSW5kZXggPSAwOworICAgICAgICB3aGlsZSAoYnJhY2VJbmRleCA8IGJyYWNlcy5sZW5ndGgg
JiYgYnJhY2VzW2JyYWNlSW5kZXhdLnN0YXJ0Q29sdW1uIDwgY29sdW1uKQorICAgICAgICAgICAg
KyticmFjZUluZGV4OworCisgICAgICAgIHZhciBicmFjZSA9IGJyYWNlSW5kZXggPCBicmFjZXMu
bGVuZ3RoID8gYnJhY2VzW2JyYWNlSW5kZXhdIDogbnVsbDsKKyAgICAgICAgaWYgKGJyYWNlICYm
IGJyYWNlLnN0YXJ0Q29sdW1uID09PSBjb2x1bW4gJiYgKGJyYWNlLnRva2VuID09PSAiYmxvY2st
c3RhcnQiIHx8IGJyYWNlLnRva2VuID09PSAiYnJhY2Utc3RhcnQiKSkKKyAgICAgICAgICAgICsr
YnJhY2VJbmRleDsKKworICAgICAgICB2YXIgc3RhY2sgPSBbXTsKKyAgICAgICAgbWF4QnJhY2VJ
dGVyYXRpb24gPSBtYXhCcmFjZUl0ZXJhdGlvbiB8fCBOdW1iZXIuTUFYX1ZBTFVFOworICAgICAg
ICB3aGlsZSAoLS1tYXhCcmFjZUl0ZXJhdGlvbikgeworICAgICAgICAgICAgaWYgKGJyYWNlSW5k
ZXggPj0gYnJhY2VzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHdoaWxlICgoYnJhY2VzID0g
dGhpcy5fYnJhY2VSYW5nZXMoKytsaW5lTnVtYmVyKSkgJiYgIWJyYWNlcy5sZW5ndGgpIHt9Owor
ICAgICAgICAgICAgICAgIGlmICghYnJhY2VzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgICAgICAgICBicmFjZUluZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyYWNlID0gYnJhY2VzW2JyYWNlSW5kZXhdOworICAgICAgICAgICAgaWYgKGJy
YWNlLnRva2VuID09PSAiYmxvY2stc3RhcnQiIHx8IGJyYWNlLnRva2VuID09PSAiYnJhY2Utc3Rh
cnQiKQorICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYnJhY2UudG9rZW4pOworICAgICAgICAg
ICAgZWxzZSBpZiAoc3RhY2subGVuZ3RoID09PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCisgICAgICAgICAg
ICAgICAgICAgIGNvbHVtbjogYnJhY2Uuc3RhcnRDb2x1bW4sCisgICAgICAgICAgICAgICAgICAg
IHRva2VuOiBicmFjZS50b2tlbgorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICBlbHNl
IGlmICghdGhpcy5fbWF0Y2hlcyhzdGFjay5wb3AoKSwgYnJhY2UudG9rZW4pKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgKyticmFjZUluZGV4OworICAgICAgICB9
CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW4KKyAgICAg
KiBAcGFyYW0ge251bWJlcj19IG1heEJyYWNlSXRlcmF0aW9uCisgICAgICogQHJldHVybiB7P3ts
ZWZ0QnJhY2U6IHtsaW5lTnVtYmVyOiBudW1iZXIsIGNvbHVtbjogbnVtYmVyLCB0b2tlbjogc3Ry
aW5nfSwgcmlnaHRCcmFjZToge2xpbmVOdW1iZXI6IG51bWJlciwgY29sdW1uOiBudW1iZXIsIHRv
a2VuOiBzdHJpbmd9fX0KKyAgICAgKi8KKyAgICBlbmNsb3NpbmdCcmFjZXM6IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIGNvbHVtbiwgbWF4QnJhY2VJdGVyYXRpb24pCisgICAgeworICAgICAgICB2YXIg
bGVmdEJyYWNlTG9jYXRpb24gPSB0aGlzLmZpbmRMZWZ0Q2FuZGlkYXRlKGxpbmVOdW1iZXIsIGNv
bHVtbiwgbWF4QnJhY2VJdGVyYXRpb24pOworICAgICAgICBpZiAoIWxlZnRCcmFjZUxvY2F0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIHJpZ2h0QnJhY2VMb2Nh
dGlvbiA9IHRoaXMuZmluZFJpZ2h0Q2FuZGlkYXRlKGxpbmVOdW1iZXIsIGNvbHVtbiwgbWF4QnJh
Y2VJdGVyYXRpb24pOworICAgICAgICBpZiAoIXJpZ2h0QnJhY2VMb2NhdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmICghdGhpcy5fbWF0Y2hlcyhsZWZ0QnJhY2VM
b2NhdGlvbi50b2tlbiwgcmlnaHRCcmFjZUxvY2F0aW9uLnRva2VuKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBsZWZ0QnJhY2U6IGxl
ZnRCcmFjZUxvY2F0aW9uLAorICAgICAgICAgICAgcmlnaHRCcmFjZTogcmlnaHRCcmFjZUxvY2F0
aW9uCisgICAgICAgIH07CisgICAgfSwKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCmluZGV4IDM0NzQ1Yzc3OTgyZmFhOWI4OTY4NzI5
OGZkN2JmNGE2YzA2ZWU0NWUuLjkwMTI0ZWM5ZWQ1NTFhZmUxZWM2Yzc3MzNkYWRjYTQ2Yjg5ZWU3
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVk
aXRvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRp
dG9yLmNzcwpAQCAtNDIsNiArNDIsMTAgQEAKICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiB9CiAK
Ky50ZXh0LWVkaXRvci1icmFjZS1tYXRjaCB7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk
IGJsYWNrOworfQorCiAudGV4dC1lZGl0b3ItY29udGVudHMgLmlubmVyLWNvbnRhaW5lciB7CiAg
ICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYjRlZGY4YjlhZDU4
NjA4ZGFkODVkOWIyNzliNmRjYmE2N2EwMmI2Li43OWJhMGZjNTljN2I4MjU3ZjBjNTAyOWU2N2Vh
Yzg3ZTg0NzZhMGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDItMDYgIEFuZHJleSBM
dXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGhpZ2hsaWdodCBtYXRjaGluZyBicmFjZXMgaW4gRFRFLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Njk3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGxheW91dCB0ZXN0IHRvIHZlcmlmeSBi
cmFjZSBtYXRjaGluZyBmdW5jdGlvbmFsaXR5LiBGaXggc29tZQorICAgICAgICBsYXlvdXQgdGVz
dCBleHBlY3RhdGlvbnMgYXMgdGhlIHBhdGNoIHJlbW92ZXMgYnJhY2VzIGZyb20gaGlnaGxpZ2h0
CisgICAgICAgIHJhbmdlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0
Y2hlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3IvYnJh
Y2UtbWF0Y2hlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL2hpZ2hs
aWdodGVyLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci90
ZXh0LWVkaXRvci1sb25nLWxpbmUtZXhwZWN0ZWQudHh0OgorCiAyMDEzLTAyLTA1ICBUb21teSBX
aWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQ
STogVXBkYXRlIFJUQ1BlZXJDb25uZWN0aW9ucyBzdHJlYW0gYWNjZXNzb3JzIHRvIG1hdGNoIHRo
ZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci9icmFjZS1tYXRjaGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvYnJhY2UtbWF0Y2hlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNiOTkzMGMw
NjE3ZWIyYzFmZDJiZDY0ZTdlZDJhZjVmMGUxYWFlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4MSBAQAorVGhpcyB0ZXN0IGNoZWNrcyBoaWdobGlnaHRlciBjb3JyZWN0bmVzcy4KKwor
ZnVuY3Rpb24gYmFyKCkgeworICAgIC8vIGNvbW1lbnQgaGVyZQorICAgIHZhciBhLCBiLCBjLCBk
OworICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTsKKyAgICBmb3IodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgaWYgKGEgPCBiICYmIGMgPiBkKSB7CisgICAgICAgIH0K
KyAgICB9Cit9CitDdXJzb3IgYXQgbGluZSAjMCA+Pj5mdW5jdGlvbiBiYXIoKSB7PDw8IGNvbHVt
biAwIChjaGFyIGlzICJmIikKK2VuY2xvc2luZyBicmFjZXM6IG51bGwKKworQ3Vyc29yIGF0IGxp
bmUgIzAgPj4+ZnVuY3Rpb24gYmFyKCkgezw8PCBjb2x1bW4gMTIgKGNoYXIgaXMgIigiKQorZW5j
bG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxMiwi
dG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVt
biI6MTMsInRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMwID4+PmZ1bmN0
aW9uIGJhcigpIHs8PDwgY29sdW1uIDEzIChjaGFyIGlzICIpIikKK2VuY2xvc2luZyBicmFjZXM6
IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTIsInRva2VuIjoiYnJhY2Ut
c3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjEzLCJ0b2tlbiI6
ImJyYWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMCA+Pj5mdW5jdGlvbiBiYXIoKSB7PDw8
IGNvbHVtbiAxNCAoY2hhciBpcyAiICIpCitlbmNsb3NpbmcgYnJhY2VzOiBudWxsCisKK0N1cnNv
ciBhdCBsaW5lICMwID4+PmZ1bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDE1IChjaGFyIGlzICJ7
IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVt
biI6MTUsInRva2VuIjoiYmxvY2stc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo4
LCJjb2x1bW4iOjAsInRva2VuIjoiYmxvY2stZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMyID4+
PiAgICB2YXIgYSwgYiwgYywgZDs8PDwgY29sdW1uIDUgKGNoYXIgaXMgImEiKQorZW5jbG9zaW5n
IGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxNSwidG9rZW4i
OiJibG9jay1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjgsImNvbHVtbiI6MCwi
dG9rZW4iOiJibG9jay1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0g
KCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDEyIChjaGFyIGlzICIoIikKK2VuY2xvc2lu
ZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTIsInRva2Vu
IjoiYnJhY2Utc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjMw
LCJ0b2tlbiI6ImJyYWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEg
PSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBjb2x1bW4gMTMgKGNoYXIgaXMgIigiKQorZW5jbG9z
aW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxMywidG9r
ZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6
MTksInRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIg
YSA9ICgoMSArIDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAxNCAoY2hhciBpcyAiMSIpCitlbmNs
b3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEzLCJ0
b2tlbiI6ImJyYWNlLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1u
IjoxOSwidG9rZW4iOiJicmFjZS1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZh
ciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDE1IChjaGFyIGlzICIgIikKK2Vu
Y2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTMs
InRva2VuIjoiYnJhY2Utc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1
bW4iOjE5LCJ0b2tlbiI6ImJyYWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAg
dmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBjb2x1bW4gMjIgKGNoYXIgaXMgIiAiKQor
ZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjox
MiwidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNv
bHVtbiI6MzAsInRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAg
ICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAyNCAoY2hhciBpcyAiMyIp
CitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4i
OjIzLCJ0b2tlbiI6ImJyYWNlLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6Mywi
Y29sdW1uIjoyOSwidG9rZW4iOiJicmFjZS1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+
ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwgY29sdW1uIDI5IChjaGFyIGlzICIp
IikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVt
biI6MjMsInRva2VuIjoiYnJhY2Utc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjoz
LCJjb2x1bW4iOjI5LCJ0b2tlbiI6ImJyYWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+
Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8PCBjb2x1bW4gMzAgKGNoYXIgaXMg
IikiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29s
dW1uIjoxMiwidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIi
OjMsImNvbHVtbiI6MzAsInRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMz
ID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7PDw8IGNvbHVtbiAzMSAoY2hhciBp
cyAiOyIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJj
b2x1bW4iOjE1LCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJl
ciI6OCwiY29sdW1uIjowLCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAj
NCA+Pj4gICAgZm9yKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7PDw8IGNvbHVtbiAxOSAoY2hh
ciBpcyAiaSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo0
LCJjb2x1bW4iOjcsInRva2VuIjoiYnJhY2Utc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVt
YmVyIjo0LCJjb2x1bW4iOjMxLCJ0b2tlbiI6ImJyYWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGlu
ZSAjNCA+Pj4gICAgZm9yKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7PDw8IGNvbHVtbiAzMiAo
Y2hhciBpcyAiICIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVy
IjowLCJjb2x1bW4iOjE1LCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGlu
ZU51bWJlciI6OCwiY29sdW1uIjowLCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQg
bGluZSAjNCA+Pj4gICAgZm9yKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7PDw8IGNvbHVtbiAz
MyAoY2hhciBpcyAieyIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVt
YmVyIjo0LCJjb2x1bW4iOjMzLCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsi
bGluZU51bWJlciI6NywiY29sdW1uIjo0LCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3Ig
YXQgbGluZSAjNSA+Pj4gICAgICAgIGlmIChhIDwgYiAmJiBjID4gZCkgezw8PCBjb2x1bW4gMjAg
KGNoYXIgaXMgIiAiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJl
ciI6NSwiY29sdW1uIjoxMSwidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7Imxp
bmVOdW1iZXIiOjUsImNvbHVtbiI6MjYsInRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBh
dCBsaW5lICM1ID4+PiAgICAgICAgaWYgKGEgPCBiICYmIGMgPiBkKSB7PDw8IGNvbHVtbiAyOCAo
Y2hhciBpcyAieyIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVy
Ijo1LCJjb2x1bW4iOjI4LCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGlu
ZU51bWJlciI6NiwiY29sdW1uIjo4LCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQg
bGluZSAjNiA+Pj4gICAgICAgIH08PDwgY29sdW1uIDggKGNoYXIgaXMgIn0iKQorZW5jbG9zaW5n
IGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6NSwiY29sdW1uIjoyOCwidG9rZW4i
OiJibG9jay1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjYsImNvbHVtbiI6OCwi
dG9rZW4iOiJibG9jay1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzcgPj4+ICAgIH08PDwgY29s
dW1uIDQgKGNoYXIgaXMgIn0iKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGlu
ZU51bWJlciI6NCwiY29sdW1uIjozMywidG9rZW4iOiJibG9jay1zdGFydCJ9LCJyaWdodEJyYWNl
Ijp7ImxpbmVOdW1iZXIiOjcsImNvbHVtbiI6NCwidG9rZW4iOiJibG9jay1lbmQifX0KKworQ3Vy
c29yIGF0IGxpbmUgIzggPj4+fTw8PCBjb2x1bW4gMCAoY2hhciBpcyAifSIpCitlbmNsb3Npbmcg
YnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1LCJ0b2tlbiI6
ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowLCJ0
b2tlbiI6ImJsb2NrLWVuZCJ9fQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci9icmFjZS1tYXRjaGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg5NjkyNWEzZTBiOTI1ODA5NzcxYWMy
MzE3NTk5MWEwY2MxYWI0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImVkaXRvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworZnVuY3Rpb24gYmFyKCkgeworICAgIC8v
IGNvbW1lbnQgaGVyZQorICAgIHZhciBhLCBiLCBjLCBkOworICAgIHZhciBhID0gKCgxICsgMikg
KiAoMyArIDQpKTsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAg
aWYgKGEgPCBiICYmIGMgPiBkKSB7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworICAgIHZhciB0
ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVUZXN0RWRpdG9yKCk7CisgICAgdGV4dEVk
aXRvci5vdmVycmlkZVZpZXdwb3J0Rm9yVGVzdCgwLCB1bmRlZmluZWQsIDMpOworICAgIHRleHRF
ZGl0b3IubWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICB0ZXh0RWRpdG9yLnNldFJl
YWRPbmx5KGZhbHNlKTsKKyAgICB0ZXh0RWRpdG9yLnNldFRleHQoYmFyLnRvU3RyaW5nKCkpOwor
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IudGV4dCgpKTsKKworICAgIHZh
ciBicmFjZUhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJh
Y2VNYXRjaGVyKHRleHRFZGl0b3IuX3RleHRNb2RlbCk7CisgICAgZnVuY3Rpb24gdGVzdEFuZER1
bXAobGluZU51bWJlciwgY29sdW1uKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmUgPSB0ZXh0RWRp
dG9yLl90ZXh0TW9kZWwubGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIHRleHQgPSAiQ3Vy
c29yIGF0IGxpbmUgIyIgKyAobGluZU51bWJlcikgKyAiID4+PiIgKyBsaW5lICsgIjw8PCBjb2x1
bW4gIiArIGNvbHVtbiArICIgKGNoYXIgaXMgXCIiICsgbGluZS5jaGFyQXQoY29sdW1uKSArICJc
IikiOworICAgICAgICB0ZXh0ICs9ICJcbmVuY2xvc2luZyBicmFjZXM6ICIgKyBKU09OLnN0cmlu
Z2lmeShicmFjZUhpZ2hsaWdodGVyLmVuY2xvc2luZ0JyYWNlcyhsaW5lTnVtYmVyLCBjb2x1bW4p
KTsKKyAgICAgICAgdGV4dCArPSAiXG4iOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCh0ZXh0KTsKKyAgICB9CisKKyAgICB0ZXN0QW5kRHVtcCgwLCAwKTsKKyAgICB0ZXN0QW5kRHVt
cCgwLCAxMik7CisgICAgdGVzdEFuZER1bXAoMCwgMTMpOworICAgIHRlc3RBbmREdW1wKDAsIDE0
KTsKKyAgICB0ZXN0QW5kRHVtcCgwLCAxNSk7CisgICAgdGVzdEFuZER1bXAoMiwgNSk7CisgICAg
dGVzdEFuZER1bXAoMywgMTIpOworICAgIHRlc3RBbmREdW1wKDMsIDEzKTsKKyAgICB0ZXN0QW5k
RHVtcCgzLCAxNCk7CisgICAgdGVzdEFuZER1bXAoMywgMTUpOworICAgIHRlc3RBbmREdW1wKDMs
IDIyKTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAyNCk7CisgICAgdGVzdEFuZER1bXAoMywgMjkpOwor
ICAgIHRlc3RBbmREdW1wKDMsIDMwKTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAzMSk7CisgICAgdGVz
dEFuZER1bXAoNCwgMTkpOworICAgIHRlc3RBbmREdW1wKDQsIDMyKTsKKyAgICB0ZXN0QW5kRHVt
cCg0LCAzMyk7CisgICAgdGVzdEFuZER1bXAoNSwgMjApOworICAgIHRlc3RBbmREdW1wKDUsIDI4
KTsKKyAgICB0ZXN0QW5kRHVtcCg2LCA4KTsKKyAgICB0ZXN0QW5kRHVtcCg3LCA0KTsKKyAgICB0
ZXN0QW5kRHVtcCg4LCAwKTsKKworICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4K
K1RoaXMgdGVzdCBjaGVja3MgaGlnaGxpZ2h0ZXIgY29ycmVjdG5lc3MuCis8L3A+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGln
aGxpZ2h0ZXItYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0
b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBjMTlhZDYzZGI4NjA3NzRh
MjEzYzUzMzZhZTBjMTEzOWVkNzYyYWUxLi5hNmYxNDg5ZjhiNTUwZDE4Mzg2MDEwZTVmYmEyZWQz
ZTEwOTkwODNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hs
aWdodGVyLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vk
aXRvci9oaWdobGlnaHRlci1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC05MSw3ICs5MSw3IEBAIEFm
dGVyIGhpZ2hsaWdodGluZyB1cCB0byB0aGUgZW5kCiAxNSA6ICAqIGxpbmUgIzYgOiBqYXZhc2Ny
aXB0LWlkZW50WzMtN10gamF2YXNjcmlwdC1udW1iZXJbOS0xMF0KIDE2IDogICogbGluZSAjNyA6
IGphdmFzY3JpcHQtaWRlbnRbMy03XSBqYXZhc2NyaXB0LW51bWJlcls5LTEwXQogMTcgOiAgKiBs
aW5lICM4IDogamF2YXNjcmlwdC1pZGVudFszLTddIGphdmFzY3JpcHQtbnVtYmVyWzktMTBdCi0x
OCA6ICAqIHZhciBhID0gbmV3IEEoKTsgLy8qLyA6IGphdmFzY3JpcHQta2V5d29yZFszLTZdIGph
dmFzY3JpcHQtaWRlbnRbNy04XSBqYXZhc2NyaXB0LWtleXdvcmRbMTEtMTRdIGphdmFzY3JpcHQt
aWRlbnRbMTUtMTZdIGJyYWNlLXN0YXJ0WzE2LTE3XSBicmFjZS1lbmRbMTctMThdIGphdmFzY3Jp
cHQtY29tbWVudFsyMC0yNF0KKzE4IDogICogdmFyIGEgPSBuZXcgQSgpOyAvLyovIDogamF2YXNj
cmlwdC1rZXl3b3JkWzMtNl0gamF2YXNjcmlwdC1pZGVudFs3LThdIGphdmFzY3JpcHQta2V5d29y
ZFsxMS0xNF0gamF2YXNjcmlwdC1pZGVudFsxNS0xNl0gamF2YXNjcmlwdC1jb21tZW50WzIwLTI0
XQogMTkgOiBzb21lIHRleHQgOiBqYXZhc2NyaXB0LWlkZW50WzAtNF0gamF2YXNjcmlwdC1pZGVu
dFs1LTldCiAyMCA6ICA6CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBBZnRlciBjaGFuZ2luZyB0aGUg
Zmlyc3QgbGluZSwgYW5kIHVwZGF0aW5nIHRoZSBoaWdobGlnaHRzIGZvciB0aGUgZmlyc3QgNSBs
aW5lcwogMTUgOiAgKiBsaW5lICM2IDogamF2YXNjcmlwdC1pZGVudFszLTddIGphdmFzY3JpcHQt
bnVtYmVyWzktMTBdCiAxNiA6ICAqIGxpbmUgIzcgOiBqYXZhc2NyaXB0LWlkZW50WzMtN10gamF2
YXNjcmlwdC1udW1iZXJbOS0xMF0KIDE3IDogICogbGluZSAjOCA6IGphdmFzY3JpcHQtaWRlbnRb
My03XSBqYXZhc2NyaXB0LW51bWJlcls5LTEwXQotMTggOiAgKiB2YXIgYSA9IG5ldyBBKCk7IC8v
Ki8gOiBqYXZhc2NyaXB0LWtleXdvcmRbMy02XSBqYXZhc2NyaXB0LWlkZW50WzctOF0gamF2YXNj
cmlwdC1rZXl3b3JkWzExLTE0XSBqYXZhc2NyaXB0LWlkZW50WzE1LTE2XSBicmFjZS1zdGFydFsx
Ni0xN10gYnJhY2UtZW5kWzE3LTE4XSBqYXZhc2NyaXB0LWNvbW1lbnRbMjAtMjRdCisxOCA6ICAq
IHZhciBhID0gbmV3IEEoKTsgLy8qLyA6IGphdmFzY3JpcHQta2V5d29yZFszLTZdIGphdmFzY3Jp
cHQtaWRlbnRbNy04XSBqYXZhc2NyaXB0LWtleXdvcmRbMTEtMTRdIGphdmFzY3JpcHQtaWRlbnRb
MTUtMTZdIGphdmFzY3JpcHQtY29tbWVudFsyMC0yNF0KIDE5IDogc29tZSB0ZXh0IDogamF2YXNj
cmlwdC1pZGVudFswLTRdIGphdmFzY3JpcHQtaWRlbnRbNS05XQogMjAgOiAgOgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxvbmctbGluZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxv
bmctbGluZS1leHBlY3RlZC50eHQKaW5kZXggMDA0MDg1YzcyMTYzNGFiY2ZlZGZlMDBjOWE0YzYz
YjkyYTFkZmVhNi4uNmEwNjY5N2M4ODBmZmUwYTNiMTY2YjA3MDM0YWExNzI0ZDZmYzJkNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1sb25nLWxp
bmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1l
ZGl0b3ItbG9uZy1saW5lLWV4cGVjdGVkLnR4dApAQCAtMiw1ICsyLDUgQEAgVGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IHRleHQgZWRpdG9yIGRvZXNuJ3QgcGFpbnQgaGlnaGxpZ2h0IGZvciB0b28gbG9u
ZyBsaW5lcy4KIAogCiA8ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIiIHRhYmluZGV4PSIwIj4K
LTxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2
YXNjcmlwdC1jb21tZW50Ij4vKiBTVEFSVCAqLzwvc3Bhbj4gPHNwYW4gY2xhc3M9IndlYmtpdC1q
YXZhc2NyaXB0LWtleXdvcmQiPnRoaXM8L3NwYW4+LjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNj
cmlwdC1pZGVudCI+ZmllbGQ8L3NwYW4+ID0gPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0
LXN0cmluZyI+ImZvbyI8L3NwYW4+OyA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtY29t
bWVudCI+LyogY29tbWVudCAqLzwvc3Bhbj4gPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0
LWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQt
aWRlbnQiPmJhcjwvc3Bhbj48c3BhbiBjbGFzcz0id2Via2l0LWJyYWNlLXN0YXJ0Ij4oPC9zcGFu
PjxzcGFuIGNsYXNzPSJ3ZWJraXQtYnJhY2UtZW5kIj4pPC9zcGFuPiA8c3BhbiBjbGFzcz0id2Vi
a2l0LWJsb2NrLXN0YXJ0Ij57PC9zcGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQt
a2V5d29yZCI+cmV0dXJuPC9zcGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5
d29yZCI+bnVsbDwvc3Bhbj47IDxzcGFuIGNsYXNzPSJ3ZWJraXQtYmxvY2stZW5kIj59PC9zcGFu
PjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIj50aGlzPC9zcGFuPi48c3Bh
biBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtaWRlbnQiPmZpZWxkPC9zcGFuPiA9IDxzcGFuIGNs
YXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciPiJmb28iPC9zcGFuPjsgPHNwYW4gY2xhc3M9
IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiPi8qIGNvbW1lbnQgKi88L3NwYW4+IGZ1bmN0aW9u
IGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8g
ZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29t
bWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28i
OyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxk
ID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRo
aXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBu
dWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsg
cmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24g
YmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBm
dW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21t
ZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7
IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQg
PSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhp
cy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51
bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyBy
ZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBi
YXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1
bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1l
bnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsg
LyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9
ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlz
LmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVs
bDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJl
dHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJh
cigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVu
Y3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVu
dCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAv
KiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0g
ImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMu
ZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxs
OyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0
dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFy
KCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5j
dGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50
ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH0vKiBGSU5JU0ggKi88L2Rpdj48L2Rp
dj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPjxzcGFuIGNsYXNzPSJ3ZWJraXQt
amF2YXNjcmlwdC1jb21tZW50Ij4vKiBTVEFSVCAqLzwvc3Bhbj4gPHNwYW4gY2xhc3M9IndlYmtp
dC1qYXZhc2NyaXB0LWtleXdvcmQiPnRoaXM8L3NwYW4+LjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2
YXNjcmlwdC1pZGVudCI+ZmllbGQ8L3NwYW4+ID0gPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2Ny
aXB0LXN0cmluZyI+ImZvbyI8L3NwYW4+OyA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQt
Y29tbWVudCI+LyogY29tbWVudCAqLzwvc3Bhbj4gPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2Ny
aXB0LWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3Jp
cHQtaWRlbnQiPmJhcjwvc3Bhbj4oKSB7IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1r
ZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3
b3JkIj5udWxsPC9zcGFuPjsgfTxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3Jk
Ij50aGlzPC9zcGFuPi48c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtaWRlbnQiPmZpZWxk
PC9zcGFuPiA9IDxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciPiJmb28iPC9z
cGFuPjsgPHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiPi8qIGNvbW1lbnQg
Ki88L3NwYW4+IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZv
byI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmll
bGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9
dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJu
IG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkg
eyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlv
biBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICov
IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNv
bW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9v
IjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVs
ZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10
aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4g
bnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7
IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9u
IGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8g
ZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29t
bWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28i
OyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxk
ID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRo
aXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBu
dWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsg
cmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24g
YmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBm
dW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21t
ZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7
IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQg
PSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhp
cy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51
bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyBy
ZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBi
YXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1
bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1l
bnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsg
LyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9
ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH0vKiBG
SU5JU0ggKi88L2Rpdj48L2Rpdj4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186853</attachid>
            <date>2013-02-06 07:43:03 -0800</date>
            <delta_ts>2013-02-07 03:52:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108697-20130206193939.patch</filename>
            <type>text/plain</type>
            <size>34181</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uMmY5MTk4ODM5YzExODBhYWI3MTFhZGU2NTUyN2E0
YzMzY2M0ZjM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTA2ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgbWF0Y2hpbmcgYnJhY2VzIGluIERURS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODY5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBCcmFjZU1hdGNoZXIg
Y2xhc3Mgd2hpY2ggZm9yIGdpdmVuIHBvc2l0aW9uIGluIHRleHRNb2RlbAorICAgICAgICB3aWxs
IHJlc3BvbmQgd2l0aCBlbmNsb3NpbmcgYnJhY2UgcGFpciBmb3IgdGhhdCBwb3NpdGlvbi4KKyAg
ICAgICAgTWFrZSB1c2Ugb2YgdGhpcyBjbGFzcyBpbiBEZWZhdWx0VGV4dEVkaXRvciBieSBoYW5k
bGluZworICAgICAgICBzZWxlY3Rpb25DaGFuZ2UgZXZlbnQuIE1ha2UgdXNlIG9mIHRoaXMgY2xh
c3MgaW4gIl9jbG9zaW5nQmxvY2tPZmZzZXQiCisgICAgICAgIG1ldGhvZCBvZiBUZXh0RWRpdG9y
TWFpblBhbmVsIGFzIHRoaXMgbWV0aG9kIGltcGxlbWVudHMgc2ltaWxhcgorICAgICAgICBmdW5j
dGlvbmFsaXR5LgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3IvZWRpdG9yL2JyYWNlLW1h
dGNoZXIuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVk
aXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlE
b21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fY2xvc2luZ0Jsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0Q29udHJv
bGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhp
Z2hsaWdodENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVNlbGVjdGlvbkNoYW5nZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnByb3RvdHlwZS5faGlnaGxp
Z2h0TGluZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNr
ZXRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLmVuZHNXaXRo
QnJhY2tldFJlZ2V4Lik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9y
LmNzczoKKyAgICAgICAgKC50ZXh0LWVkaXRvci1icmFjZS1tYXRjaCk6CisKIDIwMTMtMDItMDYg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIEds
eXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHNh
bWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IDY2OTE0MjlhMjZkMTU2NzY1YjQ1YjA5ZDJkZWU3
MGE1ZDFiZTk2ODEuLjA1YjhlMWIxZmRmNThhZTgzODkzNDI1YzU1YTlhZjY1YTVhZWJmZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRF
ZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0
VGV4dEVkaXRvci5qcwpAQCAtMTM2OSw2ICsxMzY5LDggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4dE1vZGVsLCB1cmwsIHN5bmNTY3Jv
bGwKICAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9ycyA9IFtdOwogCiAgICAgdGhpcy5fdG9r
ZW5IaWdobGlnaHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5Ub2tl
bkhpZ2hsaWdodGVyKHRoaXMsIHRleHRNb2RlbCk7CisgICAgdGhpcy5fYnJhY2VNYXRjaGVyID0g
bmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VNYXRjaGVyKHRleHRNb2RlbCk7
CisgICAgdGhpcy5fYnJhY2VIaWdobGlnaHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5CcmFjZUhpZ2hsaWdodENvbnRyb2xsZXIodGhpcywgdGV4dE1vZGVsLCB0aGlz
Ll9icmFjZU1hdGNoZXIpOwogCiAgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAgICAg
dGhpcy5idWlsZENodW5rcygpOwpAQCAtMjQwMSw3ICsyNDAzLDcgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFVuaW5kZW50IGFm
dGVyIGJsb2NrCiAgICAgICAgIGlmIChlZGl0SW5mby50ZXh0ID09PSAifSIgJiYgZWRpdEluZm8u
cmFuZ2UuaXNFbXB0eSgpICYmIHNlbGVjdGlvbi5pc0VtcHR5KCkgJiYgIXRoaXMuX3RleHRNb2Rl
bC5saW5lKGVkaXRJbmZvLnJhbmdlLmVuZExpbmUpLnRyaW0oKSkgewotICAgICAgICAgICAgdmFy
IG9mZnNldCA9IHRoaXMuX2Nsb3NpbmdCbG9ja09mZnNldChlZGl0SW5mby5yYW5nZSwgc2VsZWN0
aW9uKTsKKyAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9jbG9zaW5nQmxvY2tPZmZzZXQo
ZWRpdEluZm8ucmFuZ2UpOwogICAgICAgICAgICAgaWYgKG9mZnNldCA+PSAwKSB7CiAgICAgICAg
ICAgICAgICAgZWRpdEluZm8ucmFuZ2Uuc3RhcnRDb2x1bW4gPSBvZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uLnN0YXJ0Q29sdW1uID0gb2Zmc2V0ICsgMTsKQEAgLTI0OTEsMzAgKzI0
OTMsMTUgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSBvbGRSYW5n
ZQotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gc2VsZWN0aW9uCiAgICAg
ICogQHJldHVybiB7bnVtYmVyfQogICAgICAqLwotICAgIF9jbG9zaW5nQmxvY2tPZmZzZXQ6IGZ1
bmN0aW9uKG9sZFJhbmdlLCBzZWxlY3Rpb24pCisgICAgX2Nsb3NpbmdCbG9ja09mZnNldDogZnVu
Y3Rpb24ob2xkUmFuZ2UpCiAgICAgewotICAgICAgICB2YXIgbmVzdGluZ0xldmVsID0gMTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IG9sZFJhbmdlLmVuZExpbmU7IGkgPj0gMDsgLS1pKSB7Ci0gICAg
ICAgICAgICB2YXIgYXR0cmlidXRlID0gdGhpcy5fdGV4dE1vZGVsLmdldEF0dHJpYnV0ZShpLCAi
aGlnaGxpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIHZhciByYW5nZXMgPSBhdHRyaWJ1dGUucmFuZ2VzOwot
ICAgICAgICAgICAgZm9yICh2YXIgaiA9IHJhbmdlcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkg
ewotICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHJhbmdlc1tqXS50b2tlbjsKLSAgICAgICAg
ICAgICAgICBpZiAodG9rZW4gPT09ICJibG9jay1zdGFydCIpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCEoLS1uZXN0aW5nTGV2ZWwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIg
bGluZUNvbnRlbnQgPSB0aGlzLl90ZXh0TW9kZWwubGluZShpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsaW5lQ29udGVudC5sZW5ndGggLSBsaW5lQ29udGVudC50cmltTGVmdCgp
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAodG9rZW4gPT09ICJibG9jay1lbmQiKQotICAgICAgICAgICAgICAgICAg
ICArK25lc3RpbmdMZXZlbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gLTE7CisgICAgICAgIHZhciBsZWZ0QnJhY2UgPSB0aGlzLl9icmFjZU1hdGNoZXIuZmluZExl
ZnRDYW5kaWRhdGUob2xkUmFuZ2Uuc3RhcnRMaW5lLCBvbGRSYW5nZS5zdGFydENvbHVtbik7Cisg
ICAgICAgIGlmICghbGVmdEJyYWNlIHx8IGxlZnRCcmFjZS50b2tlbiAhPT0gImJsb2NrLXN0YXJ0
IikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gdGhp
cy5fdGV4dE1vZGVsLmxpbmUobGVmdEJyYWNlLmxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4g
bGluZUNvbnRlbnQubGVuZ3RoIC0gbGluZUNvbnRlbnQudHJpbUxlZnQoKS5sZW5ndGg7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtMjY4MCw2ICsyNjY3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGlv
biA9IHRleHRSYW5nZTsKIAogICAgICAgICB0aGlzLl90b2tlbkhpZ2hsaWdodGVyLmhhbmRsZVNl
bGVjdGlvbkNoYW5nZSh0ZXh0UmFuZ2UpOworICAgICAgICB0aGlzLl9icmFjZUhpZ2hsaWdodGVy
LmhhbmRsZVNlbGVjdGlvbkNoYW5nZSh0ZXh0UmFuZ2UpOwogICAgICAgICB0aGlzLl9kZWxlZ2F0
ZS5zZWxlY3Rpb25DaGFuZ2VkKHRleHRSYW5nZSk7CiAgICAgfSwKIApAQCAtMzM1OSw0ICszMzQ3
LDYxIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5Xb3JkTW92ZW1lbnRDb250cm9s
bGVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsfSB0ZXh0RWRpdG9yCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWx9IHRleHRNb2RlbAorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLkJyYWNlTWF0Y2hlcn0gYnJhY2VNYXRjaGVy
CisgKi8KK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLkJyYWNlSGlnaGxpZ2h0Q29u
dHJvbGxlciA9IGZ1bmN0aW9uKHRleHRFZGl0b3IsIHRleHRNb2RlbCwgYnJhY2VNYXRjaGVyKQor
eworICAgIHRoaXMuX3RleHRFZGl0b3IgPSB0ZXh0RWRpdG9yOworICAgIHRoaXMuX3RleHRNb2Rl
bCA9IHRleHRNb2RlbDsKKyAgICB0aGlzLl9icmFjZU1hdGNoZXIgPSBicmFjZU1hdGNoZXI7Cisg
ICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMgPSBbXTsKK30KKworV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwuQnJhY2VIaWdobGlnaHRDb250cm9sbGVyLnByb3RvdHlwZSA9IHsK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHNlbGVjdGlv
blJhbmdlCisgICAgICovCisgICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbihzZWxl
Y3Rpb25SYW5nZSkKKyAgICB7CisgICAgICAgIGlmICghc2VsZWN0aW9uUmFuZ2UgfHwgIXNlbGVj
dGlvblJhbmdlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdGhpcy5fcmVtb3ZlSGlnaGxpZ2h0
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5f
aGlnaGxpZ2h0ZWRSYW5nZSAmJiB0aGlzLl9oaWdobGlnaHRlZFJhbmdlLmNvbXBhcmVUbyhzZWxl
Y3Rpb25SYW5nZSkgPT09IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
cmVtb3ZlSGlnaGxpZ2h0KCk7CisgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc2VsZWN0aW9uUmFu
Z2Uuc3RhcnRMaW5lOworICAgICAgICB2YXIgY29sdW1uID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRD
b2x1bW47CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJl
cik7CisgICAgICAgIGlmIChjb2x1bW4gPiAwICYmIC9bKX1dLy50ZXN0KGxpbmUuY2hhckF0KGNv
bHVtbiAtIDEpKSkKKyAgICAgICAgICAgIC0tY29sdW1uOworCisgICAgICAgIHZhciBlbmNsb3Np
bmdCcmFjZXMgPSB0aGlzLl9icmFjZU1hdGNoZXIuZW5jbG9zaW5nQnJhY2VzKGxpbmVOdW1iZXIs
IGNvbHVtbik7CisgICAgICAgIGlmICghZW5jbG9zaW5nQnJhY2VzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZTsK
KyAgICAgICAgdGhpcy5faGlnaGxpZ2h0RGVzY3JpcHRvcnMucHVzaCh0aGlzLl90ZXh0RWRpdG9y
LmhpZ2hsaWdodFJhbmdlKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9u
KGVuY2xvc2luZ0JyYWNlcy5sZWZ0QnJhY2UubGluZU51bWJlciwgZW5jbG9zaW5nQnJhY2VzLmxl
ZnRCcmFjZS5jb2x1bW4pLCAidGV4dC1lZGl0b3ItYnJhY2UtbWF0Y2giKSk7CisgICAgICAgIHRo
aXMuX2hpZ2hsaWdodERlc2NyaXB0b3JzLnB1c2godGhpcy5fdGV4dEVkaXRvci5oaWdobGlnaHRS
YW5nZShXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbihlbmNsb3NpbmdC
cmFjZXMucmlnaHRCcmFjZS5saW5lTnVtYmVyLCBlbmNsb3NpbmdCcmFjZXMucmlnaHRCcmFjZS5j
b2x1bW4pLCAidGV4dC1lZGl0b3ItYnJhY2UtbWF0Y2giKSk7CisgICAgfSwKKworICAgIF9yZW1v
dmVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5faGlnaGxp
Z2h0RGVzY3JpcHRvcnMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZv
cih2YXIgaSA9IDA7IGkgPCB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVtb3ZlSGlnaGxpZ2h0KHRoaXMuX2hpZ2hs
aWdodERlc2NyaXB0b3JzW2ldKTsKKworICAgICAgICB0aGlzLl9oaWdobGlnaHREZXNjcmlwdG9y
cyA9IFtdOworICAgICAgICBkZWxldGUgdGhpcy5faGlnaGxpZ2h0ZWRSYW5nZTsKKyAgICB9Cit9
CisKIFdlYkluc3BlY3Rvci5kZWJ1Z0RlZmF1bHRUZXh0RWRpdG9yID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGln
aHRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvckhp
Z2hsaWdodGVyLmpzCmluZGV4IGIyMzFkYWI2YjhmOGJjMGY4MTg4NWJkMjIzNTNjMzlkZDUyZTE3
YmIuLmJlMjUxZmVmMjk2MWJhNjk3Y2MzYWU2ZGE3MWQ3ZWNhNmI4YTVhOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvckhpZ2hsaWdodGVy
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvckhp
Z2hsaWdodGVyLmpzCkBAIC0xODUsMTUgKzE4NSwyNSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ckhpZ2hsaWdodGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgICAgIC8vIEhpZ2hsaWdo
dCBsaW5lLgogICAgICAgICAgICAgICAgIHN0YXRlLnJhbmdlcyA9IHN0YXRlLnJhbmdlcyB8fCBb
XTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5icmFjZXMgPSBzdGF0ZS5icmFjZXMgfHwgW107CiAg
ICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Q29sdW1uID0g
dGhpcy5fdG9rZW5pemVyLm5leHRUb2tlbihsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4pOwogICAgICAg
ICAgICAgICAgICAgICB2YXIgdG9rZW5UeXBlID0gdGhpcy5fdG9rZW5pemVyLnRva2VuVHlwZTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuVHlwZSAmJiBsYXN0SGlnaGxpZ2h0ZWRDb2x1
bW4gPCB0aGlzLl9oaWdobGlnaHRMaW5lTGltaXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZS5yYW5nZXMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDb2x1
bW46IGxhc3RIaWdobGlnaHRlZENvbHVtbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmRDb2x1bW46IG5ld0NvbHVtbiAtIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW46IHRva2VuVHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0b2tlblR5cGUgJiYgbGFzdEhpZ2hsaWdodGVkQ29sdW1uIDwgdGhpcy5faGln
aGxpZ2h0TGluZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5UeXBl
ID09PSAiYnJhY2Utc3RhcnQiIHx8IHRva2VuVHlwZSA9PT0gImJyYWNlLWVuZCIgfHwgdG9rZW5U
eXBlID09PSAiYmxvY2stc3RhcnQiIHx8IHRva2VuVHlwZSA9PT0gImJsb2NrLWVuZCIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5icmFjZXMucHVzaCh7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uOiBsYXN0SGlnaGxpZ2h0ZWRDb2x1bW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0g
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRva2VuVHlwZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5yYW5nZXMucHVzaCh7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uOiBsYXN0SGlnaGxpZ2h0
ZWRDb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENvbHVtbjogbmV3
Q29sdW1uIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRva2Vu
VHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGxhc3RI
aWdobGlnaHRlZENvbHVtbiA9IG5ld0NvbHVtbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCsr
dG9rZW5zQ291bnQgPiB0aGlzLl9oaWdobGlnaHRDaHVua0xpbWl0KQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCmluZGV4IDZkNzNjNzIzYjkzY2RhZDlkODViNzc0MTVm
MDBlZmY1ODY4MWI5MGQuLjE2ZDBhZTViNmQwZGY0MGVmNDQ0NzFiNTc1OTVhYzkxNDQzOTEzYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRv
ck1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVk
aXRvck1vZGVsLmpzCkBAIC02NTYsMyArNjU2LDE1NiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGUKIH0KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNb2RlbH0gdGV4dE1vZGVsCisgKi8KK1dlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTW9kZWwuQnJhY2VNYXRjaGVyID0gZnVuY3Rpb24odGV4dE1vZGVsKQoreworICAgIHRo
aXMuX3RleHRNb2RlbCA9IHRleHRNb2RlbDsKK30KKworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
b2RlbC5CcmFjZU1hdGNoZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHJldHVybiB7QXJyYXkuPHtzdGFydENvbHVtbjog
bnVtYmVyLCBlbmRDb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmluZ30+fQorICAgICAqLworICAg
IF9icmFjZVJhbmdlczogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIGlmIChs
aW5lTnVtYmVyID49IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50IHx8IGxpbmVOdW1iZXIgPCAw
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IHRo
aXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImhpZ2hsaWdodCIpOworICAg
ICAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICBl
bHNlCisgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLmJyYWNlczsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGJyYWNlVG9rZW5MZWZ0CisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGJyYWNlVG9rZW5SaWdodAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAg
ICovCisgICAgX21hdGNoZXM6IGZ1bmN0aW9uKGJyYWNlVG9rZW5MZWZ0LCBicmFjZVRva2VuUmln
aHQpCisgICAgeworICAgICAgICByZXR1cm4gKChicmFjZVRva2VuTGVmdCA9PT0gImJyYWNlLXN0
YXJ0IiAmJiBicmFjZVRva2VuUmlnaHQgPT09ICJicmFjZS1lbmQiKSB8fCAoYnJhY2VUb2tlbkxl
ZnQgPT09ICJibG9jay1zdGFydCIgJiYgYnJhY2VUb2tlblJpZ2h0ID09PSAiYmxvY2stZW5kIikp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW4KKyAgICAgKiBAcGFyYW0ge251bWJlcj19IG1h
eEJyYWNlSXRlcmF0aW9uCisgICAgICogQHJldHVybiB7P3tsaW5lTnVtYmVyOiBudW1iZXIsIGNv
bHVtbjogbnVtYmVyLCB0b2tlbjogc3RyaW5nfX0KKyAgICAgKi8KKyAgICBmaW5kTGVmdENhbmRp
ZGF0ZTogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBtYXhCcmFjZUl0ZXJhdGlvbikKKyAg
ICB7CisgICAgICAgIHZhciBicmFjZXMgPSB0aGlzLl9icmFjZVJhbmdlcyhsaW5lTnVtYmVyKTsK
KyAgICAgICAgaWYgKCFicmFjZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAg
ICB2YXIgYnJhY2VJbmRleCA9IGJyYWNlcy5sZW5ndGggLSAxOworICAgICAgICB3aGlsZSAoYnJh
Y2VJbmRleCA+PSAwICYmIGJyYWNlc1ticmFjZUluZGV4XS5zdGFydENvbHVtbiA+IGNvbHVtbikK
KyAgICAgICAgICAgIC0tYnJhY2VJbmRleDsKKworICAgICAgICB2YXIgYnJhY2UgPSBicmFjZUlu
ZGV4ID49IDAgPyBicmFjZXNbYnJhY2VJbmRleF0gOiBudWxsOworICAgICAgICBpZiAoYnJhY2Ug
JiYgYnJhY2Uuc3RhcnRDb2x1bW4gPT09IGNvbHVtbiAmJiAoYnJhY2UudG9rZW4gPT09ICJibG9j
ay1lbmQiIHx8IGJyYWNlLnRva2VuID09PSAiYnJhY2UtZW5kIikpCisgICAgICAgICAgICAtLWJy
YWNlSW5kZXg7CisKKyAgICAgICAgdmFyIHN0YWNrID0gW107CisgICAgICAgIG1heEJyYWNlSXRl
cmF0aW9uID0gbWF4QnJhY2VJdGVyYXRpb24gfHwgTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAgICAg
d2hpbGUgKC0tbWF4QnJhY2VJdGVyYXRpb24pIHsKKyAgICAgICAgICAgIGlmIChicmFjZUluZGV4
IDwgMCkgeworICAgICAgICAgICAgICAgIHdoaWxlICgoYnJhY2VzID0gdGhpcy5fYnJhY2VSYW5n
ZXMoLS1saW5lTnVtYmVyKSkgJiYgIWJyYWNlcy5sZW5ndGgpIHt9OworICAgICAgICAgICAgICAg
IGlmICghYnJhY2VzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
ICAgICAgICBicmFjZUluZGV4ID0gYnJhY2VzLmxlbmd0aCAtIDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmFjZSA9IGJyYWNlc1ticmFjZUluZGV4XTsKKyAgICAgICAgICAgIGlmIChi
cmFjZS50b2tlbiA9PT0gImJsb2NrLWVuZCIgfHwgYnJhY2UudG9rZW4gPT09ICJicmFjZS1lbmQi
KQorICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYnJhY2UudG9rZW4pOworICAgICAgICAgICAg
ZWxzZSBpZiAoc3RhY2subGVuZ3RoID09PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAg
ICAgICAgIGNvbHVtbjogYnJhY2Uuc3RhcnRDb2x1bW4sCisgICAgICAgICAgICAgICAgICAgIHRv
a2VuOiBicmFjZS50b2tlbgorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICBlbHNlIGlm
ICghdGhpcy5fbWF0Y2hlcyhicmFjZS50b2tlbiwgc3RhY2sucG9wKCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworCisgICAgICAgICAgICAtLWJyYWNlSW5kZXg7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbgorICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0gbWF4QnJhY2VJdGVyYXRpb24KKyAgICAgKiBAcmV0dXJuIHs/e2xp
bmVOdW1iZXI6IG51bWJlciwgY29sdW1uOiBudW1iZXIsIHRva2VuOiBzdHJpbmd9fQorICAgICAq
LworICAgIGZpbmRSaWdodENhbmRpZGF0ZTogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBt
YXhCcmFjZUl0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIHZhciBicmFjZXMgPSB0aGlzLl9icmFj
ZVJhbmdlcyhsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYgKCFicmFjZXMpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgYnJhY2VJbmRleCA9IDA7CisgICAgICAgIHdoaWxl
IChicmFjZUluZGV4IDwgYnJhY2VzLmxlbmd0aCAmJiBicmFjZXNbYnJhY2VJbmRleF0uc3RhcnRD
b2x1bW4gPCBjb2x1bW4pCisgICAgICAgICAgICArK2JyYWNlSW5kZXg7CisKKyAgICAgICAgdmFy
IGJyYWNlID0gYnJhY2VJbmRleCA8IGJyYWNlcy5sZW5ndGggPyBicmFjZXNbYnJhY2VJbmRleF0g
OiBudWxsOworICAgICAgICBpZiAoYnJhY2UgJiYgYnJhY2Uuc3RhcnRDb2x1bW4gPT09IGNvbHVt
biAmJiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1zdGFydCIgfHwgYnJhY2UudG9rZW4gPT09ICJi
cmFjZS1zdGFydCIpKQorICAgICAgICAgICAgKyticmFjZUluZGV4OworCisgICAgICAgIHZhciBz
dGFjayA9IFtdOworICAgICAgICBtYXhCcmFjZUl0ZXJhdGlvbiA9IG1heEJyYWNlSXRlcmF0aW9u
IHx8IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHdoaWxlICgtLW1heEJyYWNlSXRlcmF0aW9u
KSB7CisgICAgICAgICAgICBpZiAoYnJhY2VJbmRleCA+PSBicmFjZXMubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgd2hpbGUgKChicmFjZXMgPSB0aGlzLl9icmFjZVJhbmdlcygrK2xpbmVOdW1i
ZXIpKSAmJiAhYnJhY2VzLmxlbmd0aCkge307CisgICAgICAgICAgICAgICAgaWYgKCFicmFjZXMp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIGJyYWNl
SW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJhY2UgPSBicmFjZXNbYnJh
Y2VJbmRleF07CisgICAgICAgICAgICBpZiAoYnJhY2UudG9rZW4gPT09ICJibG9jay1zdGFydCIg
fHwgYnJhY2UudG9rZW4gPT09ICJicmFjZS1zdGFydCIpCisgICAgICAgICAgICAgICAgc3RhY2su
cHVzaChicmFjZS50b2tlbik7CisgICAgICAgICAgICBlbHNlIGlmIChzdGFjay5sZW5ndGggPT09
IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgbGluZU51
bWJlcjogbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBicmFjZS5zdGFy
dENvbHVtbiwKKyAgICAgICAgICAgICAgICAgICAgdG9rZW46IGJyYWNlLnRva2VuCisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl9tYXRjaGVzKHN0YWNrLnBv
cCgpLCBicmFjZS50b2tlbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAg
ICAgICArK2JyYWNlSW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGNvbHVtbgorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4QnJhY2VJ
dGVyYXRpb24KKyAgICAgKiBAcmV0dXJuIHs/e2xlZnRCcmFjZToge2xpbmVOdW1iZXI6IG51bWJl
ciwgY29sdW1uOiBudW1iZXIsIHRva2VuOiBzdHJpbmd9LCByaWdodEJyYWNlOiB7bGluZU51bWJl
cjogbnVtYmVyLCBjb2x1bW46IG51bWJlciwgdG9rZW46IHN0cmluZ319fQorICAgICAqLworICAg
IGVuY2xvc2luZ0JyYWNlczogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBtYXhCcmFjZUl0
ZXJhdGlvbikKKyAgICB7CisgICAgICAgIHZhciBsZWZ0QnJhY2VMb2NhdGlvbiA9IHRoaXMuZmlu
ZExlZnRDYW5kaWRhdGUobGluZU51bWJlciwgY29sdW1uLCBtYXhCcmFjZUl0ZXJhdGlvbik7Cisg
ICAgICAgIGlmICghbGVmdEJyYWNlTG9jYXRpb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICB2YXIgcmlnaHRCcmFjZUxvY2F0aW9uID0gdGhpcy5maW5kUmlnaHRDYW5kaWRh
dGUobGluZU51bWJlciwgY29sdW1uLCBtYXhCcmFjZUl0ZXJhdGlvbik7CisgICAgICAgIGlmICgh
cmlnaHRCcmFjZUxvY2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAg
aWYgKCF0aGlzLl9tYXRjaGVzKGxlZnRCcmFjZUxvY2F0aW9uLnRva2VuLCByaWdodEJyYWNlTG9j
YXRpb24udG9rZW4pKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgIGxlZnRCcmFjZTogbGVmdEJyYWNlTG9jYXRpb24sCisgICAgICAgICAg
ICByaWdodEJyYWNlOiByaWdodEJyYWNlTG9jYXRpb24KKyAgICAgICAgfTsKKyAgICB9LAorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9y
LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MK
aW5kZXggMzQ3NDVjNzc5ODJmYWE5Yjg5Njg3Mjk4ZmQ3YmY0YTZjMDZlZTQ1ZS4uOTAxMjRlYzll
ZDU1MWFmZTFlYzZjNzczM2RhZGNhNDZiODllZTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCkBAIC00Miw2ICs0MiwxMCBAQAog
ICAgIGJvcmRlci1yYWRpdXM6IDNweDsKIH0KIAorLnRleHQtZWRpdG9yLWJyYWNlLW1hdGNoIHsK
KyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Cit9CisKIC50ZXh0LWVkaXRvci1j
b250ZW50cyAuaW5uZXItY29udGFpbmVyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAg
dG9wOiAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDZhMGU4Y2JhMzhiYmVmNmUxMmJhMDliMjYyMTY3MTk1NTNiYWJkYTku
LmQ3NGI2MTRlYzhjNjNjZTVmYTNkYmMwYzUyMGQxNjIwZDU1NDYzMGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMy0wMi0wNiAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IG1hdGNoaW5nIGJyYWNl
cyBpbiBEVEUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDg2OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IGJyYWNlIG1hdGNoaW5nIGZ1bmN0aW9uYWxpdHku
IEZpeCBzb21lCisgICAgICAgIGxheW91dCB0ZXN0IGV4cGVjdGF0aW9ucyBhcyB0aGUgcGF0Y2gg
cmVtb3ZlcyBicmFjZXMgZnJvbSBoaWdobGlnaHQKKyAgICAgICAgcmFuZ2VzLgorCisgICAgICAg
ICogaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxvbmctbGluZS1leHBlY3Rl
ZC50eHQ6CisKIDIwMTMtMDItMDYgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtXSzJdIE5ldyB0ZXN0cyBpbnRyb2R1Y2VkIGluIHIxMDA4OTUgZmFpbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNiOTkzMGMwNjE3ZWIyYzFmZDJiZDY0ZTdlZDJhZjVm
MGUxYWFlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3Iv
YnJhY2UtbWF0Y2hlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4MSBAQAorVGhpcyB0ZXN0IGNo
ZWNrcyBoaWdobGlnaHRlciBjb3JyZWN0bmVzcy4KKworZnVuY3Rpb24gYmFyKCkgeworICAgIC8v
IGNvbW1lbnQgaGVyZQorICAgIHZhciBhLCBiLCBjLCBkOworICAgIHZhciBhID0gKCgxICsgMikg
KiAoMyArIDQpKTsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAg
aWYgKGEgPCBiICYmIGMgPiBkKSB7CisgICAgICAgIH0KKyAgICB9Cit9CitDdXJzb3IgYXQgbGlu
ZSAjMCA+Pj5mdW5jdGlvbiBiYXIoKSB7PDw8IGNvbHVtbiAwIChjaGFyIGlzICJmIikKK2VuY2xv
c2luZyBicmFjZXM6IG51bGwKKworQ3Vyc29yIGF0IGxpbmUgIzAgPj4+ZnVuY3Rpb24gYmFyKCkg
ezw8PCBjb2x1bW4gMTIgKGNoYXIgaXMgIigiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJh
Y2UiOnsibGluZU51bWJlciI6MCwiY29sdW1uIjoxMiwidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJy
aWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTMsInRva2VuIjoiYnJhY2UtZW5k
In19CisKK0N1cnNvciBhdCBsaW5lICMwID4+PmZ1bmN0aW9uIGJhcigpIHs8PDwgY29sdW1uIDEz
IChjaGFyIGlzICIpIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7ImxpbmVOdW1i
ZXIiOjAsImNvbHVtbiI6MTIsInRva2VuIjoiYnJhY2Utc3RhcnQifSwicmlnaHRCcmFjZSI6eyJs
aW5lTnVtYmVyIjowLCJjb2x1bW4iOjEzLCJ0b2tlbiI6ImJyYWNlLWVuZCJ9fQorCitDdXJzb3Ig
YXQgbGluZSAjMCA+Pj5mdW5jdGlvbiBiYXIoKSB7PDw8IGNvbHVtbiAxNCAoY2hhciBpcyAiICIp
CitlbmNsb3NpbmcgYnJhY2VzOiBudWxsCisKK0N1cnNvciBhdCBsaW5lICMwID4+PmZ1bmN0aW9u
IGJhcigpIHs8PDwgY29sdW1uIDE1IChjaGFyIGlzICJ7IikKK2VuY2xvc2luZyBicmFjZXM6IHsi
bGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjAsImNvbHVtbiI6MTUsInRva2VuIjoiYmxvY2stc3Rh
cnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo4LCJjb2x1bW4iOjAsInRva2VuIjoiYmxv
Y2stZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMyID4+PiAgICB2YXIgYSwgYiwgYywgZDs8PDwg
Y29sdW1uIDUgKGNoYXIgaXMgImEiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsi
bGluZU51bWJlciI6MCwiY29sdW1uIjoxNSwidG9rZW4iOiJibG9jay1zdGFydCJ9LCJyaWdodEJy
YWNlIjp7ImxpbmVOdW1iZXIiOjgsImNvbHVtbiI6MCwidG9rZW4iOiJibG9jay1lbmQifX0KKwor
Q3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTs8PDwg
Y29sdW1uIDEyIChjaGFyIGlzICIoIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJyYWNlIjp7
ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTIsInRva2VuIjoiYnJhY2Utc3RhcnQifSwicmlnaHRC
cmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjMwLCJ0b2tlbiI6ImJyYWNlLWVuZCJ9fQor
CitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsgNCkpOzw8
PCBjb2x1bW4gMTMgKGNoYXIgaXMgIigiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2Ui
OnsibGluZU51bWJlciI6MywiY29sdW1uIjoxMywidG9rZW4iOiJicmFjZS1zdGFydCJ9LCJyaWdo
dEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTksInRva2VuIjoiYnJhY2UtZW5kIn19
CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICogKDMgKyA0KSk7
PDw8IGNvbHVtbiAxNCAoY2hhciBpcyAiMSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFj
ZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjEzLCJ0b2tlbiI6ImJyYWNlLXN0YXJ0In0sInJp
Z2h0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxOSwidG9rZW4iOiJicmFjZS1lbmQi
fX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQp
KTs8PDwgY29sdW1uIDE1IChjaGFyIGlzICIgIikKK2VuY2xvc2luZyBicmFjZXM6IHsibGVmdEJy
YWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MTMsInRva2VuIjoiYnJhY2Utc3RhcnQifSwi
cmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjE5LCJ0b2tlbiI6ImJyYWNlLWVu
ZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAqICgzICsg
NCkpOzw8PCBjb2x1bW4gMjIgKGNoYXIgaXMgIiAiKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0
QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxMiwidG9rZW4iOiJicmFjZS1zdGFydCJ9
LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MzAsInRva2VuIjoiYnJhY2Ut
ZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIpICogKDMg
KyA0KSk7PDw8IGNvbHVtbiAyNCAoY2hhciBpcyAiMyIpCitlbmNsb3NpbmcgYnJhY2VzOiB7Imxl
ZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjIzLCJ0b2tlbiI6ImJyYWNlLXN0YXJ0
In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoyOSwidG9rZW4iOiJicmFj
ZS1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzMgPj4+ICAgIHZhciBhID0gKCgxICsgMikgKiAo
MyArIDQpKTs8PDwgY29sdW1uIDI5IChjaGFyIGlzICIpIikKK2VuY2xvc2luZyBicmFjZXM6IHsi
bGVmdEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MjMsInRva2VuIjoiYnJhY2Utc3Rh
cnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjozLCJjb2x1bW4iOjI5LCJ0b2tlbiI6ImJy
YWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjMyA+Pj4gICAgdmFyIGEgPSAoKDEgKyAyKSAq
ICgzICsgNCkpOzw8PCBjb2x1bW4gMzAgKGNoYXIgaXMgIikiKQorZW5jbG9zaW5nIGJyYWNlczog
eyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6MywiY29sdW1uIjoxMiwidG9rZW4iOiJicmFjZS1z
dGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjMsImNvbHVtbiI6MzAsInRva2VuIjoi
YnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICMzID4+PiAgICB2YXIgYSA9ICgoMSArIDIp
ICogKDMgKyA0KSk7PDw8IGNvbHVtbiAzMSAoY2hhciBpcyAiOyIpCitlbmNsb3NpbmcgYnJhY2Vz
OiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1LCJ0b2tlbiI6ImJsb2Nr
LXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowLCJ0b2tlbiI6
ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjNCA+Pj4gICAgZm9yKHZhciBpID0gMDsg
aSA8IDEwMDsgKytpKSB7PDw8IGNvbHVtbiAxOSAoY2hhciBpcyAiaSIpCitlbmNsb3NpbmcgYnJh
Y2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo0LCJjb2x1bW4iOjcsInRva2VuIjoiYnJh
Y2Utc3RhcnQifSwicmlnaHRCcmFjZSI6eyJsaW5lTnVtYmVyIjo0LCJjb2x1bW4iOjMxLCJ0b2tl
biI6ImJyYWNlLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjNCA+Pj4gICAgZm9yKHZhciBpID0g
MDsgaSA8IDEwMDsgKytpKSB7PDw8IGNvbHVtbiAzMiAoY2hhciBpcyAiICIpCitlbmNsb3Npbmcg
YnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1LCJ0b2tlbiI6
ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowLCJ0
b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjNCA+Pj4gICAgZm9yKHZhciBp
ID0gMDsgaSA8IDEwMDsgKytpKSB7PDw8IGNvbHVtbiAzMyAoY2hhciBpcyAieyIpCitlbmNsb3Np
bmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo0LCJjb2x1bW4iOjMzLCJ0b2tl
biI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6NywiY29sdW1uIjo0
LCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjNSA+Pj4gICAgICAgIGlm
IChhIDwgYiAmJiBjID4gZCkgezw8PCBjb2x1bW4gMjAgKGNoYXIgaXMgIiAiKQorZW5jbG9zaW5n
IGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6NSwiY29sdW1uIjoxMSwidG9rZW4i
OiJicmFjZS1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjUsImNvbHVtbiI6MjYs
InRva2VuIjoiYnJhY2UtZW5kIn19CisKK0N1cnNvciBhdCBsaW5lICM1ID4+PiAgICAgICAgaWYg
KGEgPCBiICYmIGMgPiBkKSB7PDw8IGNvbHVtbiAyOCAoY2hhciBpcyAieyIpCitlbmNsb3Npbmcg
YnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJsaW5lTnVtYmVyIjo1LCJjb2x1bW4iOjI4LCJ0b2tlbiI6
ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJhY2UiOnsibGluZU51bWJlciI6NiwiY29sdW1uIjo4LCJ0
b2tlbiI6ImJsb2NrLWVuZCJ9fQorCitDdXJzb3IgYXQgbGluZSAjNiA+Pj4gICAgICAgIH08PDwg
Y29sdW1uIDggKGNoYXIgaXMgIn0iKQorZW5jbG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsi
bGluZU51bWJlciI6NSwiY29sdW1uIjoyOCwidG9rZW4iOiJibG9jay1zdGFydCJ9LCJyaWdodEJy
YWNlIjp7ImxpbmVOdW1iZXIiOjYsImNvbHVtbiI6OCwidG9rZW4iOiJibG9jay1lbmQifX0KKwor
Q3Vyc29yIGF0IGxpbmUgIzcgPj4+ICAgIH08PDwgY29sdW1uIDQgKGNoYXIgaXMgIn0iKQorZW5j
bG9zaW5nIGJyYWNlczogeyJsZWZ0QnJhY2UiOnsibGluZU51bWJlciI6NCwiY29sdW1uIjozMywi
dG9rZW4iOiJibG9jay1zdGFydCJ9LCJyaWdodEJyYWNlIjp7ImxpbmVOdW1iZXIiOjcsImNvbHVt
biI6NCwidG9rZW4iOiJibG9jay1lbmQifX0KKworQ3Vyc29yIGF0IGxpbmUgIzggPj4+fTw8PCBj
b2x1bW4gMCAoY2hhciBpcyAifSIpCitlbmNsb3NpbmcgYnJhY2VzOiB7ImxlZnRCcmFjZSI6eyJs
aW5lTnVtYmVyIjowLCJjb2x1bW4iOjE1LCJ0b2tlbiI6ImJsb2NrLXN0YXJ0In0sInJpZ2h0QnJh
Y2UiOnsibGluZU51bWJlciI6OCwiY29sdW1uIjowLCJ0b2tlbiI6ImJsb2NrLWVuZCJ9fQorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9icmFjZS1tYXRjaGVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzg5NjkyNWEzZTBiOTI1ODA5NzcxYWMyMzE3NTk5MWEwY2MxYWI0NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvYnJhY2UtbWF0Y2hlci5o
dG1sCkBAIC0wLDAgKzEsNzMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9ImVkaXRvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworZnVuY3Rpb24gYmFyKCkgeworICAgIC8vIGNvbW1lbnQgaGVyZQorICAgIHZhciBh
LCBiLCBjLCBkOworICAgIHZhciBhID0gKCgxICsgMikgKiAoMyArIDQpKTsKKyAgICBmb3IodmFy
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgaWYgKGEgPCBiICYmIGMgPiBkKSB7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKKworICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVUZXN0RWRpdG9yKCk7CisgICAgdGV4dEVkaXRvci5vdmVycmlkZVZpZXdwb3J0Rm9y
VGVzdCgwLCB1bmRlZmluZWQsIDMpOworICAgIHRleHRFZGl0b3IubWltZVR5cGUgPSAidGV4dC9q
YXZhc2NyaXB0IjsKKyAgICB0ZXh0RWRpdG9yLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICB0ZXh0
RWRpdG9yLnNldFRleHQoYmFyLnRvU3RyaW5nKCkpOworICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHRleHRFZGl0b3IudGV4dCgpKTsKKworICAgIHZhciBicmFjZUhpZ2hsaWdodGVyID0gbmV3
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwuQnJhY2VNYXRjaGVyKHRleHRFZGl0b3IuX3Rl
eHRNb2RlbCk7CisgICAgZnVuY3Rpb24gdGVzdEFuZER1bXAobGluZU51bWJlciwgY29sdW1uKQor
ICAgIHsKKyAgICAgICAgdmFyIGxpbmUgPSB0ZXh0RWRpdG9yLl90ZXh0TW9kZWwubGluZShsaW5l
TnVtYmVyKTsKKyAgICAgICAgdmFyIHRleHQgPSAiQ3Vyc29yIGF0IGxpbmUgIyIgKyAobGluZU51
bWJlcikgKyAiID4+PiIgKyBsaW5lICsgIjw8PCBjb2x1bW4gIiArIGNvbHVtbiArICIgKGNoYXIg
aXMgXCIiICsgbGluZS5jaGFyQXQoY29sdW1uKSArICJcIikiOworICAgICAgICB0ZXh0ICs9ICJc
bmVuY2xvc2luZyBicmFjZXM6ICIgKyBKU09OLnN0cmluZ2lmeShicmFjZUhpZ2hsaWdodGVyLmVu
Y2xvc2luZ0JyYWNlcyhsaW5lTnVtYmVyLCBjb2x1bW4pKTsKKyAgICAgICAgdGV4dCArPSAiXG4i
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0KTsKKyAgICB9CisKKyAgICB0
ZXN0QW5kRHVtcCgwLCAwKTsKKyAgICB0ZXN0QW5kRHVtcCgwLCAxMik7CisgICAgdGVzdEFuZER1
bXAoMCwgMTMpOworICAgIHRlc3RBbmREdW1wKDAsIDE0KTsKKyAgICB0ZXN0QW5kRHVtcCgwLCAx
NSk7CisgICAgdGVzdEFuZER1bXAoMiwgNSk7CisgICAgdGVzdEFuZER1bXAoMywgMTIpOworICAg
IHRlc3RBbmREdW1wKDMsIDEzKTsKKyAgICB0ZXN0QW5kRHVtcCgzLCAxNCk7CisgICAgdGVzdEFu
ZER1bXAoMywgMTUpOworICAgIHRlc3RBbmREdW1wKDMsIDIyKTsKKyAgICB0ZXN0QW5kRHVtcCgz
LCAyNCk7CisgICAgdGVzdEFuZER1bXAoMywgMjkpOworICAgIHRlc3RBbmREdW1wKDMsIDMwKTsK
KyAgICB0ZXN0QW5kRHVtcCgzLCAzMSk7CisgICAgdGVzdEFuZER1bXAoNCwgMTkpOworICAgIHRl
c3RBbmREdW1wKDQsIDMyKTsKKyAgICB0ZXN0QW5kRHVtcCg0LCAzMyk7CisgICAgdGVzdEFuZER1
bXAoNSwgMjApOworICAgIHRlc3RBbmREdW1wKDUsIDI4KTsKKyAgICB0ZXN0QW5kRHVtcCg2LCA4
KTsKKyAgICB0ZXN0QW5kRHVtcCg3LCA0KTsKKyAgICB0ZXN0QW5kRHVtcCg4LCAwKTsKKworICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1RoaXMgdGVzdCBjaGVja3MgaGlnaGxp
Z2h0ZXIgY29ycmVjdG5lc3MuCis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLWV4
cGVjdGVkLnR4dAppbmRleCBiNjYzNGZjYzdkZjI0YWUzZjE5ZmRiNTc5OWY3NzFmZjVjZjU2ODMx
Li44ZTY3MTlkNmIxNDZiMzA3ODkxNTA3NGE3MjU5MDI2ZTdkZWJlY2U5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CkBAIC05MSw3ICs5MSw3IEBAIEFmdGVyIGhpZ2hsaWdodGluZyB1cCB0byB0
aGUgZW5kCiAxNSA6ICAqIGxpbmUgIzYgOiB3aGl0ZXNwYWNlWzAtMV0gd2hpdGVzcGFjZVsyLTNd
IGphdmFzY3JpcHQtaWRlbnRbMy03XSB3aGl0ZXNwYWNlWzctOF0gamF2YXNjcmlwdC1udW1iZXJb
OS0xMF0KIDE2IDogICogbGluZSAjNyA6IHdoaXRlc3BhY2VbMC0xXSB3aGl0ZXNwYWNlWzItM10g
amF2YXNjcmlwdC1pZGVudFszLTddIHdoaXRlc3BhY2VbNy04XSBqYXZhc2NyaXB0LW51bWJlcls5
LTEwXQogMTcgOiAgKiBsaW5lICM4IDogd2hpdGVzcGFjZVswLTFdIHdoaXRlc3BhY2VbMi0zXSBq
YXZhc2NyaXB0LWlkZW50WzMtN10gd2hpdGVzcGFjZVs3LThdIGphdmFzY3JpcHQtbnVtYmVyWzkt
MTBdCi0xOCA6ICAqIHZhciBhID0gbmV3IEEoKTsgLy8qLyA6IHdoaXRlc3BhY2VbMC0xXSB3aGl0
ZXNwYWNlWzItM10gamF2YXNjcmlwdC1rZXl3b3JkWzMtNl0gd2hpdGVzcGFjZVs2LTddIGphdmFz
Y3JpcHQtaWRlbnRbNy04XSB3aGl0ZXNwYWNlWzgtOV0gd2hpdGVzcGFjZVsxMC0xMV0gamF2YXNj
cmlwdC1rZXl3b3JkWzExLTE0XSB3aGl0ZXNwYWNlWzE0LTE1XSBqYXZhc2NyaXB0LWlkZW50WzE1
LTE2XSBicmFjZS1zdGFydFsxNi0xN10gYnJhY2UtZW5kWzE3LTE4XSB3aGl0ZXNwYWNlWzE5LTIw
XSBqYXZhc2NyaXB0LWNvbW1lbnRbMjAtMjRdCisxOCA6ICAqIHZhciBhID0gbmV3IEEoKTsgLy8q
LyA6IHdoaXRlc3BhY2VbMC0xXSB3aGl0ZXNwYWNlWzItM10gamF2YXNjcmlwdC1rZXl3b3JkWzMt
Nl0gd2hpdGVzcGFjZVs2LTddIGphdmFzY3JpcHQtaWRlbnRbNy04XSB3aGl0ZXNwYWNlWzgtOV0g
d2hpdGVzcGFjZVsxMC0xMV0gamF2YXNjcmlwdC1rZXl3b3JkWzExLTE0XSB3aGl0ZXNwYWNlWzE0
LTE1XSBqYXZhc2NyaXB0LWlkZW50WzE1LTE2XSB3aGl0ZXNwYWNlWzE5LTIwXSBqYXZhc2NyaXB0
LWNvbW1lbnRbMjAtMjRdCiAxOSA6IHNvbWUgdGV4dCA6IGphdmFzY3JpcHQtaWRlbnRbMC00XSB3
aGl0ZXNwYWNlWzQtNV0gamF2YXNjcmlwdC1pZGVudFs1LTldCiAyMCA6ICA6CiAKQEAgLTExMyw3
ICsxMTMsNyBAQCBBZnRlciBjaGFuZ2luZyB0aGUgZmlyc3QgbGluZSwgYW5kIHVwZGF0aW5nIHRo
ZSBoaWdobGlnaHRzIGZvciB0aGUgZmlyc3QgNSBsaW5lcwogMTUgOiAgKiBsaW5lICM2IDogd2hp
dGVzcGFjZVswLTFdIHdoaXRlc3BhY2VbMi0zXSBqYXZhc2NyaXB0LWlkZW50WzMtN10gd2hpdGVz
cGFjZVs3LThdIGphdmFzY3JpcHQtbnVtYmVyWzktMTBdCiAxNiA6ICAqIGxpbmUgIzcgOiB3aGl0
ZXNwYWNlWzAtMV0gd2hpdGVzcGFjZVsyLTNdIGphdmFzY3JpcHQtaWRlbnRbMy03XSB3aGl0ZXNw
YWNlWzctOF0gamF2YXNjcmlwdC1udW1iZXJbOS0xMF0KIDE3IDogICogbGluZSAjOCA6IHdoaXRl
c3BhY2VbMC0xXSB3aGl0ZXNwYWNlWzItM10gamF2YXNjcmlwdC1pZGVudFszLTddIHdoaXRlc3Bh
Y2VbNy04XSBqYXZhc2NyaXB0LW51bWJlcls5LTEwXQotMTggOiAgKiB2YXIgYSA9IG5ldyBBKCk7
IC8vKi8gOiB3aGl0ZXNwYWNlWzAtMV0gd2hpdGVzcGFjZVsyLTNdIGphdmFzY3JpcHQta2V5d29y
ZFszLTZdIHdoaXRlc3BhY2VbNi03XSBqYXZhc2NyaXB0LWlkZW50WzctOF0gd2hpdGVzcGFjZVs4
LTldIHdoaXRlc3BhY2VbMTAtMTFdIGphdmFzY3JpcHQta2V5d29yZFsxMS0xNF0gd2hpdGVzcGFj
ZVsxNC0xNV0gamF2YXNjcmlwdC1pZGVudFsxNS0xNl0gYnJhY2Utc3RhcnRbMTYtMTddIGJyYWNl
LWVuZFsxNy0xOF0gd2hpdGVzcGFjZVsxOS0yMF0gamF2YXNjcmlwdC1jb21tZW50WzIwLTI0XQor
MTggOiAgKiB2YXIgYSA9IG5ldyBBKCk7IC8vKi8gOiB3aGl0ZXNwYWNlWzAtMV0gd2hpdGVzcGFj
ZVsyLTNdIGphdmFzY3JpcHQta2V5d29yZFszLTZdIHdoaXRlc3BhY2VbNi03XSBqYXZhc2NyaXB0
LWlkZW50WzctOF0gd2hpdGVzcGFjZVs4LTldIHdoaXRlc3BhY2VbMTAtMTFdIGphdmFzY3JpcHQt
a2V5d29yZFsxMS0xNF0gd2hpdGVzcGFjZVsxNC0xNV0gamF2YXNjcmlwdC1pZGVudFsxNS0xNl0g
d2hpdGVzcGFjZVsxOS0yMF0gamF2YXNjcmlwdC1jb21tZW50WzIwLTI0XQogMTkgOiBzb21lIHRl
eHQgOiBqYXZhc2NyaXB0LWlkZW50WzAtNF0gd2hpdGVzcGFjZVs0LTVdIGphdmFzY3JpcHQtaWRl
bnRbNS05XQogMjAgOiAgOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRp
dG9yL3RleHQtZWRpdG9yLWxvbmctbGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxvbmctbGluZS1leHBlY3RlZC50eHQKaW5kZXggOGRj
ZDg5MTExNDI5YTI2ZTBmN2VjNzg5NTI4M2UzNmY4NmIzMmZiMS4uOGY5MzZiOGU2OGQyNDAzMTg0
MDZmZWRlZTZiODM1MTY3MmVkZjI3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1sb25nLWxpbmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItbG9uZy1saW5lLWV4cGVjdGVkLnR4dApA
QCAtMiw1ICsyLDUgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRleHQgZWRpdG9yIGRvZXNuJ3Qg
cGFpbnQgaGlnaGxpZ2h0IGZvciB0b28gbG9uZyBsaW5lcy4KIAogCiA8ZGl2IGNsYXNzPSJpbm5l
ci1jb250YWluZXIiIHRhYmluZGV4PSIwIj4KLTxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRl
bnQiPjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Ij4vKiBTVEFSVCAqLzwv
c3Bhbj48c3BhbiBjbGFzcz0id2Via2l0LXdoaXRlc3BhY2UiPiA8L3NwYW4+PHNwYW4gY2xhc3M9
IndlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQiPnRoaXM8L3NwYW4+LjxzcGFuIGNsYXNzPSJ3ZWJr
aXQtamF2YXNjcmlwdC1pZGVudCI+ZmllbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC13aGl0
ZXNwYWNlIj4gPC9zcGFuPj08c3BhbiBjbGFzcz0id2Via2l0LXdoaXRlc3BhY2UiPiA8L3NwYW4+
PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyI+ImZvbyI8L3NwYW4+OzxzcGFu
IGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj48c3BhbiBjbGFzcz0id2Via2l0LWph
dmFzY3JpcHQtY29tbWVudCI+LyogY29tbWVudCAqLzwvc3Bhbj48c3BhbiBjbGFzcz0id2Via2l0
LXdoaXRlc3BhY2UiPiA8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWtleXdv
cmQiPmZ1bmN0aW9uPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bh
bj48c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtaWRlbnQiPmJhcjwvc3Bhbj48c3BhbiBj
bGFzcz0id2Via2l0LWJyYWNlLXN0YXJ0Ij4oPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtYnJh
Y2UtZW5kIj4pPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj48
c3BhbiBjbGFzcz0id2Via2l0LWJsb2NrLXN0YXJ0Ij57PC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJr
aXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj48c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5
d29yZCI+cmV0dXJuPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bh
bj48c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQta2V5d29yZCI+bnVsbDwvc3Bhbj47PHNw
YW4gY2xhc3M9IndlYmtpdC13aGl0ZXNwYWNlIj4gPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQt
YmxvY2stZW5kIj59PC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3Jk
Ij50aGlzPC9zcGFuPi48c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtaWRlbnQiPmZpZWxk
PC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj49PHNwYW4gY2xh
c3M9IndlYmtpdC13aGl0ZXNwYWNlIj4gPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNj
cmlwdC1zdHJpbmciPiJmb28iPC9zcGFuPjs8c3BhbiBjbGFzcz0id2Via2l0LXdoaXRlc3BhY2Ui
PiA8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiPi8qIGNvbW1l
bnQgKi88L3NwYW4+IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0g
ImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMu
ZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxs
OyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0
dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFy
KCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5j
dGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50
ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8q
IGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAi
Zm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5m
aWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7
IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1
cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIo
KSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0
aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQg
Ki8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyog
Y29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJm
b28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZp
ZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsg
fXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVy
biBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigp
IHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rp
b24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAq
LyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBj
b21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZv
byI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmll
bGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9
dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJu
IG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkg
eyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlv
biBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICov
IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNv
bW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9v
IjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVs
ZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH0v
KiBGSU5JU0ggKi88L2Rpdj48L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQi
PjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Ij4vKiBTVEFSVCAqLzwvc3Bh
bj48c3BhbiBjbGFzcz0id2Via2l0LXdoaXRlc3BhY2UiPiA8L3NwYW4+PHNwYW4gY2xhc3M9Indl
YmtpdC1qYXZhc2NyaXB0LWtleXdvcmQiPnRoaXM8L3NwYW4+LjxzcGFuIGNsYXNzPSJ3ZWJraXQt
amF2YXNjcmlwdC1pZGVudCI+ZmllbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC13aGl0ZXNw
YWNlIj4gPC9zcGFuPj08c3BhbiBjbGFzcz0id2Via2l0LXdoaXRlc3BhY2UiPiA8L3NwYW4+PHNw
YW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyI+ImZvbyI8L3NwYW4+OzxzcGFuIGNs
YXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj48c3BhbiBjbGFzcz0id2Via2l0LWphdmFz
Y3JpcHQtY29tbWVudCI+LyogY29tbWVudCAqLzwvc3Bhbj48c3BhbiBjbGFzcz0id2Via2l0LXdo
aXRlc3BhY2UiPiA8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQi
PmZ1bmN0aW9uPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj48
c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQtaWRlbnQiPmJhcjwvc3Bhbj4oKTxzcGFuIGNs
YXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bhbj57PHNwYW4gY2xhc3M9IndlYmtpdC13aGl0
ZXNwYWNlIj4gPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIj5y
ZXR1cm48L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC13aGl0ZXNwYWNlIj4gPC9zcGFuPjxzcGFu
IGNsYXNzPSJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIj5udWxsPC9zcGFuPjs8c3BhbiBjbGFz
cz0id2Via2l0LXdoaXRlc3BhY2UiPiA8L3NwYW4+fTxzcGFuIGNsYXNzPSJ3ZWJraXQtamF2YXNj
cmlwdC1rZXl3b3JkIj50aGlzPC9zcGFuPi48c3BhbiBjbGFzcz0id2Via2l0LWphdmFzY3JpcHQt
aWRlbnQiPmZpZWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJ3ZWJraXQtd2hpdGVzcGFjZSI+IDwvc3Bh
bj49PHNwYW4gY2xhc3M9IndlYmtpdC13aGl0ZXNwYWNlIj4gPC9zcGFuPjxzcGFuIGNsYXNzPSJ3
ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciPiJmb28iPC9zcGFuPjs8c3BhbiBjbGFzcz0id2Via2l0
LXdoaXRlc3BhY2UiPiA8L3NwYW4+PHNwYW4gY2xhc3M9IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1l
bnQiPi8qIGNvbW1lbnQgKi88L3NwYW4+IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10
aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4g
bnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7
IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9u
IGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8g
ZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29t
bWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28i
OyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxk
ID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRo
aXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBu
dWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsg
cmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24g
YmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBm
dW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21t
ZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7
IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQg
PSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhp
cy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51
bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyBy
ZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBi
YXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1
bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1l
bnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsg
LyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9
ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlz
LmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVs
bDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJl
dHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJh
cigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0gImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVu
Y3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMuZmllbGQgPSAiZm9vIjsgLyogY29tbWVu
dCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxsOyB9dGhpcy5maWVsZCA9ICJmb28iOyAv
KiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIG51bGw7IH10aGlzLmZpZWxkID0g
ImZvbyI7IC8qIGNvbW1lbnQgKi8gZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gbnVsbDsgfXRoaXMu
ZmllbGQgPSAiZm9vIjsgLyogY29tbWVudCAqLyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBudWxs
OyB9dGhpcy5maWVsZCA9ICJmb28iOyAvKiBjb21tZW50ICovIGZ1bmN0aW9uIGJhcigpIHsgcmV0
dXJuIG51bGw7IH0vKiBGSU5JU0ggKi88L2Rpdj48L2Rpdj4KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>