<?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>112362</bug_id>
          
          <creation_ts>2013-03-14 10:36:33 -0700</creation_ts>
          <short_desc>Move setAsynchronousSpellCheckingEnabled to internals.settings</short_desc>
          <delta_ts>2013-03-18 14:50:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>108370</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Rouslan Solomakhin">rouslan+webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>roger_fong</cc>
    
    <cc>rouslan+webkit</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>855304</commentid>
    <comment_count>0</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-14 10:36:33 -0700</bug_when>
    <thetext>Move setAsynchronousSpellCheckingEnabled to internals.settings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855314</commentid>
    <comment_count>1</comment_count>
      <attachid>193148</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-14 10:45:23 -0700</bug_when>
    <thetext>Created attachment 193148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855317</commentid>
    <comment_count>2</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-14 10:47:34 -0700</bug_when>
    <thetext>Tony: This is the move of setAsynchronousSpellCheckingEnabled to internals.settings that you requested in https://bugs.webkit.org/show_bug.cgi?id=108370#c15.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855323</commentid>
    <comment_count>3</comment_count>
      <attachid>193148</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-14 10:55:15 -0700</bug_when>
    <thetext>Comment on attachment 193148
Patch

Let&apos;s wait for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855325</commentid>
    <comment_count>4</comment_count>
      <attachid>193148</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-14 10:58:24 -0700</bug_when>
    <thetext>Comment on attachment 193148
Patch

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

&gt; Source/WebCore/testing/InternalSettings.cpp:78
&gt; +    , m_originalUnifiedSpellCheckerEnabled(settings-&gt;unifiedTextCheckerEnabled())
&gt; +    , m_originalAsynchronousSpellCheckingEnabled(settings-&gt;asynchronousSpellCheckingEnabled())

You don&apos;t need to add this.  The generated code from Settings.in already does the backup/restore for you.

&gt; Source/WebCore/testing/InternalSettings.cpp:117
&gt; +    settings-&gt;setUnifiedTextCheckerEnabled(m_originalUnifiedSpellCheckerEnabled);
&gt; +    settings-&gt;setAsynchronousSpellCheckingEnabled(m_originalAsynchronousSpellCheckingEnabled);

You should be able to delete this too.

&gt; Source/WebCore/testing/InternalSettings.h:64
&gt;          bool m_originalUnifiedSpellCheckerEnabled;
&gt; +        bool m_originalAsynchronousSpellCheckingEnabled;

And be able to delete these too.

&gt; LayoutTests/editing/spelling/grammar-markers-hidpi.html:30
&gt; +        if (window.internals)
&gt; +            internals.settings.setAsynchronousSpellCheckingEnabled(false);

Is this trying to reset the value?  The test harness should do that automatically and we shouldn&apos;t need this code.  Can you try removing this and seeing if tests that run afterwards fail?

&gt; LayoutTests/editing/spelling/grammar-markers.html:27
&gt; +        if (window.internals)
&gt; +            internals.settings.setAsynchronousSpellCheckingEnabled(false);

Ditto.

&gt; LayoutTests/editing/spelling/grammar-paste.html:52
&gt; +    internals.settings.setAsynchronousSpellCheckingEnabled(false);

Ditto.

&gt; LayoutTests/editing/spelling/script-tests/spellcheck-paste.js:43
&gt; +    internals.settings.setAsynchronousSpellCheckingEnabled(false);

Ditto.

&gt; LayoutTests/editing/spelling/spellcheck-async-mutation.html:82
&gt; +    if (window.internals) {
&gt;          internals.settings.setUnifiedTextCheckerEnabled(false);
&gt; +        internals.settings.setAsynchronousSpellCheckingEnabled(false);
&gt; +    }

You should be able to remove this whole block.

&gt; LayoutTests/editing/spelling/spellcheck-async.html:63
&gt; +    if (window.internals) {
&gt;          internals.settings.setUnifiedTextCheckerEnabled(false);
&gt; +        internals.settings.setAsynchronousSpellCheckingEnabled(false);
&gt; +    }

You should be able to remove this whole block.

&gt; LayoutTests/editing/spelling/spellcheck-paste-disabled.html:54
&gt; +    internals.settings.setAsynchronousSpellCheckingEnabled(false);

Remove.

&gt; LayoutTests/editing/spelling/spellcheck-queue.html:84
&gt; +    if (window.internals)
&gt; +        internals.settings.setAsynchronousSpellCheckingEnabled(false);

Remove.

&gt; LayoutTests/editing/spelling/spellcheck-sequencenum.html:81
&gt; +    if (window.internals) {
&gt; +        internals.settings.setAsynchronousSpellCheckingEnabled(false);

Remove.

&gt; LayoutTests/editing/spelling/spelling-marker-description.html:15
&gt; +    internals.settings.setAsynchronousSpellCheckingEnabled(false);

Remove.

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:40
&gt; +    internals.settings.setAsynchronousSpellCheckingEnabled(false);

Remove.

&gt; LayoutTests/platform/chromium/editing/spelling/move-cursor-to-misspelled-word.html:21
&gt; +internals.settings.setAsynchronousSpellCheckingEnabled(false);

Remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855353</commentid>
    <comment_count>5</comment_count>
      <attachid>193159</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-14 11:29:51 -0700</bug_when>
    <thetext>Created attachment 193159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855356</commentid>
    <comment_count>6</comment_count>
      <attachid>193159</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-14 11:31:28 -0700</bug_when>
    <thetext>Comment on attachment 193159
Patch

Removed unnecessary teardown and setup from InternalSettings.{h,cpp}. Removed unnecessary teardowns from layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855390</commentid>
    <comment_count>7</comment_count>
      <attachid>193159</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-14 12:00:25 -0700</bug_when>
    <thetext>Comment on attachment 193159
Patch

Deleting code is awesome.  Let&apos;s let the cq run the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856130</commentid>
    <comment_count>8</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 11:27:01 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 193159 [details])
&gt; Deleting code is awesome.  Let&apos;s let the cq run the tests.

EWS bots are all green. Should we flip the CQ bit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856133</commentid>
    <comment_count>9</comment_count>
      <attachid>193159</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-15 11:28:38 -0700</bug_when>
    <thetext>Comment on attachment 193159
Patch

Yes, thanks for reminding me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856138</commentid>
    <comment_count>10</comment_count>
      <attachid>193159</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 11:32:12 -0700</bug_when>
    <thetext>Comment on attachment 193159
Patch

Rejecting attachment 193159 from commit-queue.

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

Last 500 characters of output:
.html
patching file LayoutTests/editing/spelling/spellcheck-sequencenum.html
patching file LayoutTests/editing/spelling/spelling-marker-description.html
patching file LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html
patching file LayoutTests/platform/chromium/editing/spelling/move-cursor-to-misspelled-word.html

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

Full output: http://webkit-commit-queue.appspot.com/results/17186271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856160</commentid>
    <comment_count>11</comment_count>
      <attachid>193344</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 11:58:26 -0700</bug_when>
    <thetext>Created attachment 193344
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856163</commentid>
    <comment_count>12</comment_count>
      <attachid>193344</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 11:59:20 -0700</bug_when>
    <thetext>Comment on attachment 193344
Patch for landing

Attempting to merge, please do not flip the cq bit yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856169</commentid>
    <comment_count>13</comment_count>
      <attachid>193347</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 12:05:08 -0700</bug_when>
    <thetext>Created attachment 193347
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856174</commentid>
    <comment_count>14</comment_count>
      <attachid>193347</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 12:09:09 -0700</bug_when>
    <thetext>Comment on attachment 193347
Patch for landing

This patch is merged correctly and should be okay to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856177</commentid>
    <comment_count>15</comment_count>
      <attachid>193347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 12:12:07 -0700</bug_when>
    <thetext>Comment on attachment 193347
Patch for landing

Rejecting attachment 193347 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 193347, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-commit-queue.appspot.com/results/17217240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856179</commentid>
    <comment_count>16</comment_count>
      <attachid>193347</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-15 12:13:56 -0700</bug_when>
    <thetext>Comment on attachment 193347
Patch for landing

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

&gt; LayoutTests/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

You need to update this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856209</commentid>
    <comment_count>17</comment_count>
      <attachid>193356</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 13:00:23 -0700</bug_when>
    <thetext>Created attachment 193356
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856210</commentid>
    <comment_count>18</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-15 13:00:51 -0700</bug_when>
    <thetext>Good catch, thank you. I&apos;ve updated the reviewer line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856287</commentid>
    <comment_count>19</comment_count>
      <attachid>193356</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 14:30:54 -0700</bug_when>
    <thetext>Comment on attachment 193356
Patch for landing

Clearing flags on attachment: 193356

Committed r145940: &lt;http://trac.webkit.org/changeset/145940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856288</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 14:31:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857540</commentid>
    <comment_count>21</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-03-18 14:15:59 -0700</bug_when>
    <thetext>This caused three editing/spellchecker failures on windows:
http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r146097%20(33689)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857586</commentid>
    <comment_count>22</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-03-18 14:50:26 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; This caused three editing/spellchecker failures on windows:
&gt; http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r146097%20(33689)/results.html

Would we need to rollout this change?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193148</attachid>
            <date>2013-03-14 10:45:23 -0700</date>
            <delta_ts>2013-03-14 11:29:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112362-20130314104119.patch</filename>
            <type>text/plain</type>
            <size>35657</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QxYTdmOGQ4YmY1YWFl
NWNhMTMxZjRhM2RlYzE1ZTcxNjQwNGZjZS4uYWNlOWRlMzA0ZjlhYjUwYTBlMTg1NjNkMWIzZmI0
YTVhZTViYzMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAzLTE0ICBSb3Vz
bGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBCYWNrdXAg
YW5kIHJlc3RvcmUgdW5pZmllZCB0ZXh0Y2hlY2tlciBhbmQgYXN5bmMgc3BlbGxjaGVja2luZyBz
ZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QmFja3VwIGFuZCByZXN0b3JlIHRoZSBzZXR0aW5ncyB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
IGFuZCBhc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZAorICAgICAgICB0byBhdm9pZCBs
ZWFraW5nIHNldHRpbmdzIGJldHdlZW4gbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGlu
Z3M6OkJhY2t1cDo6QmFja3VwKTogQmFja3VwIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQgYW5k
IGFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIHNldHRpbmdzLgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOiBSZXN0b3JlIHVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQgYW5kIGFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
IHNldHRpbmdzLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAg
ICAoQmFja3VwKTogQWRkIGEgYm9vbGVhbiB0byBrZWVwIHRyYWNrIG9mIHRoZSBvcmlnaW5hbCBh
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCBzZXR0aW5nLgorCiAyMDEzLTAzLTE0ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBtb2RlIHRv
IFJlc291cmNlTG9hZGVyIHRoYXQgdGFrZXMgU2hhcmVkQnVmZmVycyBpbnN0ZWFkIG9mIHJhdyBw
b2ludGVycyBhbmQgbGVuZ3Rocy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCmluZGV4IGMzZjkwZDVkMjFmZDAyNGZjMDQyODg1ZWM2MDE0YTg0OTBmZmUzYjQu
LmQzOTAxN2UxNDQ1MDlmMzliODZmOTUyYmMxMDI4ZDg4M2I1ZTdhMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtNzQsNiArNzQsOCBAQCBJbnRl
cm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBt
X29yaWdpbmFsU3R5bGVTY29wZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRF
bmFibGVkKCkpCiAjZW5kaWYKICAgICAsIG1fb3JpZ2luYWxFZGl0aW5nQmVoYXZpb3Ioc2V0dGlu
Z3MtPmVkaXRpbmdCZWhhdmlvclR5cGUoKSkKKyAgICAsIG1fb3JpZ2luYWxVbmlmaWVkU3BlbGxD
aGVja2VyRW5hYmxlZChzZXR0aW5ncy0+dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKQorICAg
ICwgbV9vcmlnaW5hbEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHNldHRpbmdzLT5h
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQogI2lmIEVOQUJMRShURVhUX0FVVE9T
SVpJTkcpCiAgICAgLCBtX29yaWdpbmFsVGV4dEF1dG9zaXppbmdFbmFibGVkKHNldHRpbmdzLT50
ZXh0QXV0b3NpemluZ0VuYWJsZWQoKSkKICAgICAsIG1fb3JpZ2luYWxUZXh0QXV0b3NpemluZ1dp
bmRvd1NpemVPdmVycmlkZShzZXR0aW5ncy0+dGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJp
ZGUoKSkKQEAgLTExMSw2ICsxMTMsOCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6
cmVzdG9yZVRvKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQobV9vcmlnaW5hbFN0eWxlU2NvcGVkKTsKICNlbmRpZgog
ICAgIHNldHRpbmdzLT5zZXRFZGl0aW5nQmVoYXZpb3JUeXBlKG1fb3JpZ2luYWxFZGl0aW5nQmVo
YXZpb3IpOworICAgIHNldHRpbmdzLT5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fb3Jp
Z2luYWxVbmlmaWVkU3BlbGxDaGVja2VyRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKG1fb3JpZ2luYWxBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCk7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBzZXR0aW5n
cy0+c2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKG1fb3JpZ2luYWxUZXh0QXV0b3NpemluZ0VuYWJs
ZWQpOwogICAgIHNldHRpbmdzLT5zZXRUZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZSht
X29yaWdpbmFsVGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCA1NDliMGZhNDVmYTQwYjI2ZGM4NDhh
NTJhMjVhYTc4YTE3M2EyYzQ4Li4wMzdmZTYzMjQyNmQyMjM1YjQ4ZGVmYWU0ZWRjN2E4Y2YxMWRh
ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjEs
NiArNjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgRWRpdGluZ0JlaGF2aW9yVHlwZSBt
X29yaWdpbmFsRWRpdGluZ0JlaGF2aW9yOwogICAgICAgICBib29sIG1fb3JpZ2luYWxVbmlmaWVk
U3BlbGxDaGVja2VyRW5hYmxlZDsKKyAgICAgICAgYm9vbCBtX29yaWdpbmFsQXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQ7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAg
ICAgYm9vbCBtX29yaWdpbmFsVGV4dEF1dG9zaXppbmdFbmFibGVkOwogICAgICAgICBJbnRTaXpl
IG1fb3JpZ2luYWxUZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZDkyMDE1NGY5YjdjYmQw
M2FjZDE1NTJhZGU3YTE5Y2ZkODRlZDRkLi5mYjNlMGZmMjJlMmEwOTExNjFmMTgwZmZkY2FkYzYx
ZjY4Zjc2ZWExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTMtMDMtMTQgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJv
dXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQgdG8gaW50ZXJuYWxzLnNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIzNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQgZnJvbSB0ZXN0IHJ1bm5lcnMuIFRoZSBzZXR0aW5nIGlzIG5vdworICAg
ICAgICBpbiBpbnRlcm5hbHMuc2V0dGluZ3MsIHNvIGFsbCBwb3J0cyBjYW4gc2hhcmUgaXQuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDogUmVtb3ZlIHNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVz
dFJ1bm5lckJsYWNrQmVycnkuY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwv
VGVzdFJ1bm5lckVmbC5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0
ay5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhv
ZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbTogUmVtb3Zl
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVy
V2luLmNwcDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0
aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6IFJlbW92
ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKwogMjAxMy0w
My0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBEaXNhYmxlIERSVCBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IDdkM2U4NWUwMDc0M2MyNGUxMjdhZDJjMWVmYmE2NjM0YzY3ZGVkMzYuLjhkM2M5
ZWVlZmMxZThmZjgyNmFkNWQ5OTYxYWFlNWRhYmM0MmY2MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCkBAIC0xNTQzLDE2ICsxNTQzLDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U08KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRp
YyBKU1ZhbHVlUmVmIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwg
MSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAg
VGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRz
WzBdKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBz
dGF0aWMgSlNWYWx1ZVJlZiBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIxNTYs
NyArMjE0Niw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9u
cygpCiAgICAgICAgIHsgInNldFdpbmRvd0lzS2V5Iiwgc2V0V2luZG93SXNLZXlDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgc2V0
SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldFhTU0F1ZGl0b3JFbmFibGVkIiwgc2V0WFNTQXVkaXRvckVuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAotICAgICAgICB7ICJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIsIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2hvd1dlYkluc3BlY3RvciIsIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgc2ltdWxh
dGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InRlc3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmgKaW5kZXggNGYzNzBjMzM5YzdjZmE5OGU4OWYzNDAwMjkyMzdiMWI0ODU0
ZjFkYi4uYmQ1ZTU1ZDRlZjViMjE1MzVjNDAzM2I1M2UyN2Q5NzM2MTgyYjNhNSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMjkxLDcgKzI5MSw2IEBAIHB1YmxpYzoKICAgICBib29s
IGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uOyB9CiAKICAgICB2b2lkIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCk7Ci0g
ICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAgICB2
b2lkIHNob3dXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CiAg
ICAgdm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBKU1N0cmluZ1JlZiBz
Y3JpcHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0
UnVubmVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rl
c3RSdW5uZXJCbGFja0JlcnJ5LmNwcAppbmRleCA2NDVhZTc5Njg4MWYzYTQxZjBiYzk3Mzc4Mzky
OTIwOWU0MzcwNWRjLi5hYWIzNmZkZGZhNGE1ZDA5NTM4MzczNTBlMGJhZmQ2YzE0ZmU0NzRkIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFj
a0JlcnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5u
ZXJCbGFja0JlcnJ5LmNwcApAQCAtNTgzLDExICs1ODMsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmRl
bGV0ZUFsbExvY2FsU3RvcmFnZSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBU
ZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRp
bmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCkt
PnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDk3NTRlMmQ0YzQ0NjdjMjU4MDI1
N2JjZDQ1YTViM2IyNjUxNmEzNzguLjM1Y2NmZjljYzkyNjBmMWZhNzgxYTMzMzFiODQwMDYzYzY5
MTYzMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMjcsNyArMjI3LDYgQEAgVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcihUZXN0SW50ZXJmYWNlcyogaW50ZXJmYWNlcykKICAgICBiaW5kTWV0
aG9kKCJzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMiLCAmVGVzdFJ1bm5lcjo6c2V0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKTsKICAgICBiaW5kTWV0aG9kKCJvdmVycmlkZVByZWZl
cmVuY2UiLCAmVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTsKICAgICBiaW5kTWV0aG9k
KCJzZXRQbHVnaW5zRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7Ci0g
ICAgYmluZE1ldGhvZCgic2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiLCAmVGVz
dFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOwogICAgIGJpbmRN
ZXRob2QoInNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFRvdWNoRHJh
Z0Ryb3BFbmFibGVkKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kaWZ5IHRoZSBzdGF0ZSBv
ZiB0aGUgVGVzdFJ1bm5lci4KQEAgLTE2ODYsMTUgKzE2ODUsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgewotICAgICAgICBtX2RlbGVnYXRlLT5w
cmVmZXJlbmNlcygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IGNwcFZhcmlh
bnRUb0Jvb2woYXJndW1lbnRzWzBdKTsKLSAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVmZXJl
bmNlcygpOwotICAgIH0KLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQogdm9pZCBUZXN0UnVu
bmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4g
MCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCAyNWU3
ZmU4NDU4OWI3ZDgxNzFmYzYxOWIwOTU4OWNkMTE5MTYwOGIxLi5mYzUyNGYxODI3ZDE4ZTk3YWEy
NTJjYjYyZTg0Zjc4MDA1NDc4YzBkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zMDksOSArMzA5
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBFbmFibGUgb3IgZGlzYWJsZSBwbHVnaW5zLgogICAgIHZv
aWQgc2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogCi0gICAgLy8gQ2hhbmdlcyBhc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBmbGFnIG9uIHRo
ZSBzZXR0aW5ncy4KLSAgICB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIHZvaWQgc2V0VG91
Y2hEcmFnRHJvcEVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
CiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1
bm5lckVmbC5jcHAKaW5kZXggZTY1YjVhMjU5ZTJjMTI1ZGEyN2NjOTAwMWNlN2I0MThmMzYwOTNk
NS4uNzkxZWMwOWMxY2VlZTAyODY0OGFkZjhiZjJhNTU1ZWI0YmI1ODQ4ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApAQCAtNjg5LDExICs2ODksNiBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KGJyb3dzZXIt
Pm1haW5WaWV3KCksIGVuYWJsZWQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBld2tfdmll
d19pbnNwZWN0b3Jfc2hvdyhicm93c2VyLT5tYWluVmlldygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAppbmRleCA0MmNlNjcyNmQ4ODNlOTM3ZWVhNWJlOGMw
ZjY0YmQyZTA3ZjFjOGM0Li5mNzk2Yjc0NDg0MDg1M2FiZDM2NGFmZGQ4ZmJiYTM3Yjc1OWMzNDlk
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBAIC03ODks
MTEgKzc4OSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChi
b29sIGVuYWJsZWQpCiAgICAgZ19vYmplY3Rfc2V0KHdlYlNldHRpbmdzLCAiZW5hYmxlLWRldmVs
b3Blci1leHRyYXMiLCBlbmFibGVkLCBOVUxMKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkK
IHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2Vi
X3ZpZXcobWFpbkZyYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KaW5kZXggYjIzMjZhMjZiMzQ5YTA4M2JhNzk4YThjN2I5NWFkYTlkZjA1ZTM2Ni4uZDZkMzQz
NjM5MmQ3MzNjMDQ1NzA0Y2ZkMDRhZDMzNTA1ZmFkMjcwZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTc5MiwxMSArNzkyLDYgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbW1ttYWlu
RnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6ZW5h
YmxlZF07CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVm
ZXJlbmNlc10gc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6ZW5hYmxlZF07Ci19
Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCiB7CiAgICAgW1tbbWFpbkZy
YW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2hvdzpuaWxdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggZGM0MTdhYjYxYjk4OGI3YzFlYmYzOWY2ZDJlYzgwYzBi
N2NjYzI3NS4uN2QyM2Y4ODM1ZjQxZDYxMzVjYjc3Nzk0NjJmNzU2MjU2MDUxZjZiMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBAIC00MjksMTEgKzQyOSw2IEBA
IHZvaWQgVGVzdFJ1bm5lclF0OjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNl
dHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBlbmFibGVkKTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyUXQ6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotfQotCiB2b2lkIFRlc3RSdW5uZXJRdDo6c2hv
d1dlYkluc3BlY3RvcigpCiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0
QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CkBA
IC0xMTg2LDEwICsxMTgxLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJhc2VJ
ZGxlSW50ZXJ2YWwoZG91YmxlKQogewogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBmbGFnKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuaAppbmRleCAxM2Y2YTY4ZmFlNjA3NTAyNzVlMWZmZTZiODE4OGU3Yzgy
MjFmMTc3Li5mNmI5OWVmNzdmNDkxMzE5NmVmYzE2M2JmMDk0NDg0MDRjYzdmOWFjIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaApAQCAtMTQ0LDcgKzE0NCw2IEBAIHB1Ymxp
YyBRX1NMT1RTOgogICAgIFFTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgUVN0cmluZyYgaG9z
dCk7CiAgICAgdm9pZCBkdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0IHsgfQogICAgIHZvaWQgc2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2hvd1dlYkluc3BlY3RvcigpOwog
ICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IobG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggNjY0OGMzZWUxNWRkNGE1NmVlMGI0
NWIyMWUwODdmYTg2NDRlNjlmMi4uNTkyMWNiMWM1NzY2YTUxNmUxOWNjZTJhYjhlZTkwN2I1NjBm
Y2MxMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4u
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAt
OTc4LDExICs5NzgsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldERldmVsb3BlckV4dHJhc0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBDT01QdHI8
SVdlYlZpZXc+IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9U
ZXN0UnVubmVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNw
cAppbmRleCA0NzUzYzI5Y2E1NGY2YWVlMWE5ZGNhOTEzZDliNTFlZDUwMWE5YTFlLi5jMTBlZWY4
OWY5ZTJkNjZkMzBlMTlkNjhhMTk4MjU5MTRiMTE4M2UzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L1Rlc3RSdW5uZXJXeC5jcHAKQEAgLTQ2MCwxMSArNDYwLDYgQEAgdm9pZCBUZXN0UnVubmVy
OjphYm9ydE1vZGFsKCkKIHsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cy4KLX0KLQogYm9vbCBUZXN0UnVubmVyOjpmaW5kU3RyaW5nKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1N0cmluZ1JlZiB0YXJnZXQsIEpTT2JqZWN0UmVmIG9wdGlvbnNBcnJheSkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjA4MzBmMDNjMWQxYWJjMTEwZTkzM2NhMGY4YjRh
OWY0OTZkM2NmNC4uNmYwMDNmODkwMTkxMGM3MDY2NzE2ZWQ2NTBmMGM0MWMyMGJkZGMzZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAzLTE0ICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3Vz
bGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkIHRvIGludGVybmFscy5zZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBhbGwgdGVzdHMgZnJvbSB1c2luZyB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCisgICAg
ICAgIHRvIHVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCkuCisKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFy
a2Vycy1oaWRwaS5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxs
aW5nL2dyYW1tYXItbWFya2Vycy5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RS
dW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qczogVXNlIGludGVybmFscy5zZXR0
aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9m
IHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5q
czogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LWFzeW5jLW11dGF0aW9uLmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbDogVXNlIGludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0
ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWw6IFVz
ZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0
ZS1kaXNhYmxlZC5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsY2hlY2stcXVldWUuaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXNlcXVlbmNlbnVtLmh0bWw6IFVzZSBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVh
ZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wp
LgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9u
Lmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRp
bmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sOiBVc2UgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQg
b2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29y
LXRvLW1pc3NwZWxsZWQtd29yZC5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKwogMjAxMy0wMy0xNCAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2
aWV3ZWQ6IGNocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLWhpZHBpLmh0bWwKaW5kZXgg
MTAxMTllY2NkZjkwNGNhZDcwNTM5MTE1NDhlMWFjOGJiYTU5NTI4YS4uNDczZTM5MTMzZWM5Zjhm
MzQwZjAzZGMyOWE1YWNmNDAwOWRjNDg5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFya2Vycy1oaWRwaS5odG1sCkBAIC01LDEwICs1LDEx
IEBACiA8ZGl2IGlkPSJzb3VyY2UiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3BlbGxjaGVjaz0i
ZmFsc2UiPllvdSBoYXMgdGhlIHJpZ2h0LjwvZGl2PgogPGRpdiBpZD0idGFyZ2V0IiBjb250ZW50
ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiPjwvZGl2PgogPHNjcmlwdD4KK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KHRydWUpOwogICAgIHRlc3RSdW5uZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgdHJpYWwoKTsKICAgICB9KTsKQEAgLTI1LDEwICsyNiwxMCBAQCB2YXIg
cmV0cnkgPSAxMDsKIGZ1bmN0aW9uIHRyaWFsKCkgewogICAgIHZhciBoYXNNYXJrZXIgPSBpbnRl
cm5hbHMuaGFzR3JhbW1hck1hcmtlcih0YXJnZXQsIDQsIDMpOwogICAgIGlmIChoYXNNYXJrZXIg
fHwgLS1yZXRyeSA9PSAwKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChm
YWxzZSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB3aW5k
b3cuc2V0VGltZW91dCh0cmlhbCwgMTApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvZ3JhbW1hci1tYXJrZXJzLmh0bWwKaW5kZXggMmE5MTg4OGFiNzZlZWNiNTIzNzFhOGUx
ZDBhODk3YjNlNjQyYjdjMy4uYjcwNzJjODdhNDQ3NzAyYzk4NmI2NGU2ZTA0N2NjYWNlZjk4NWYz
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtl
cnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFya2Vy
cy5odG1sCkBAIC04LDggKzgsOSBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUp
OwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1
ZSk7CiB9CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAKIHZhciBzb3VyY2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291cmNlJyk7CiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKQEAgLTIyLDEwICsyMywxMCBAQCB2YXIgcmV0cnkg
PSAxMDsKIGZ1bmN0aW9uIHRyaWFsKCkgewogICAgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMu
aGFzR3JhbW1hck1hcmtlcih0YXJnZXQsIDQsIDMpOwogICAgIGlmIChoYXNNYXJrZXIgfHwgLS1y
ZXRyeSA9PSAwKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB3aW5kb3cuc2V0
VGltZW91dCh0cmlhbCwgMTApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9ncmFtbWFyLXBhc3RlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dy
YW1tYXItcGFzdGUuaHRtbAppbmRleCA3OGRkY2E3YzkxMDFhZTFjMjhiMTU1MjNlY2NiODZkZmZl
YTBmNWVjLi4wNTk1MjEzNjE5M2NkOThjMDExYjRlOWQ2MDRjZjliNTk5OTY2NzQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRtbApAQCAtNDks
NyArNDksNyBAQCBmdW5jdGlvbiBkb25lKCkKICAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1l
b3V0KG5leHQsIDApOwogICAgIHRlc3RSb290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAKLSAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsK
KyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoZmFsc2UpOwogICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCkBAIC0xMzYsOSAr
MTM2LDggQEAgZnVuY3Rpb24gcGFzdGVBbmRWZXJpZnkoc291cmNlLCBkZXN0LCBleHBlY3RlZE1h
cmtlZCkKICAgICB0cmlhbCgpOwogfTsKIAotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
dGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKLX0K
K2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogdGVzdHMucHVzaChmdW5jdGlvbigp
IHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZVBsYWluLCB0ZXN0RWRpdGFibGUsIFsiaGFzIl0p
OyB9KTsKIHRlc3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3RlQW5kVmVyaWZ5KHRlc3RTb3VyY2VE
ZWNvcmF0ZWQsIHRlc3RFZGl0YWJsZSwgWyJhIl0pOyB9KTsgLy8gQ2hlY2tzIG9ubHkgJ2EnLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5q
cyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvcmVzb3VyY2VzL3V0aWwuanMKaW5kZXgg
Y2Y4MDMzNDE4ODQzY2YyMGM2NjcxZTdjODQ5MDdiNzA3MmQ0OTUyMC4uZTNiZjA2NDk2YTFlNjY4
NzliOTk4ZTlkMzEyMmU5M2ZiYmZkZGE2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzCkBAIC0yMCwxNSArMjAsMTUgQEAgZnVuY3Rpb24gdmVy
aWZ5U3BlbGxUZXN0KG5yZXRyeSkKIAogZnVuY3Rpb24gaW5pdFNwZWxsVGVzdCh0ZXN0RWxlbWVu
dElkLCB0ZXN0VGV4dCwgdGVzdEZ1bmN0aW9uKQogewotICAgIGlmICghd2luZG93LmludGVybmFs
cyB8fCAhd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy50ZXN0UnVubmVyLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKSB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8
ICF3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBsb2coIkZBSUwgSW5jb21wbGV0ZSB0ZXN0
IGVudmlyb25tZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdGVzdEZ1bmN0aW9u
Q2FsbGJhY2sgPSB0ZXN0RnVuY3Rpb247CiAgICAganNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAg
dGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAg
ICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKICAgICB0ZXN0
UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVl
KTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0
cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RWRpdGluZ0JlaGF2aW9yKCJ3aW4iKTsK
ICAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0RWxlbWVu
dElkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsY2hlY2stcGFzdGUuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nj
cmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzCmluZGV4IGYzMDlhODc4NDgyYmE3OGYxM2U0
MzdiYWMxNjVjYmNmZGNjZGZhYWEuLmFiMzI3MjY5OGQ4YjFhMjcwMWVhMjAyOGM2YzdiN2U2NTEx
ZjdmNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsY2hlY2stcGFzdGUuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcwpAQCAtNDAsNyArNDAsNyBAQCBmdW5j
dGlvbiBkb25lKCkKICAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwog
ICAgIHRlc3RSb290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAKLSAgICB0ZXN0UnVubmVyLnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwogICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCkBAIC05NCw4ICs5NCw4IEBAIGZ1bmN0aW9u
IHBhc3RlQW5kVmVyaWZ5KHNvdXJjZSwgZGVzdCwgZXhwZWN0ZWRNYXJrZWQpCiAgICAgdHJpYWwo
KTsKIH07CiAKLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKHRydWUpOwogCiB0ZXN0cy5wdXNoKGZ1bmN0aW9uKCkgeyBwYXN0ZUFuZFZlcmlmeSh0ZXN0
U291cmNlUGxhaW4sIHRlc3RJbnB1dCwgW1swLCAyXV0pOyB9KTsKIHRlc3RzLnB1c2goZnVuY3Rp
b24oKSB7IHBhc3RlQW5kVmVyaWZ5KHRlc3RTb3VyY2VEZWNvcmF0ZWQsIHRlc3RJbnB1dCwgW1sw
LCAyXV0pOyB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxjaGVjay1hc3luYy1tdXRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGNoZWNrLWFzeW5jLW11dGF0aW9uLmh0bWwKaW5kZXggNGIwODJlMmM1MzMwNmIyYWM3
ZDZiZjQwZDM3MGI3OWQ3NDU5NmM5Ny4uNTI1MjI0NTViMTRmODhhOGRiZWU0NDJhNzc3ZTk4NGQw
NmY2MzhiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLWFzeW5jLW11dGF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGNoZWNrLWFzeW5jLW11dGF0aW9uLmh0bWwKQEAgLTMwLDEzICszMCwxMyBAQCBkZXNj
cmlwdGlvbigKIAogdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KHRydWUpOwotfQogCi1pZiAod2luZG93LmludGVybmFscykKK2lmICh3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKHRydWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKHRydWUpOworfQogCiB2YXIgc291cmNlSWRzID0gWydzb3VyY2UnXTsKIHZhciBk
ZXN0RWxlbXMgPSBbJ3RleHRhcmVhJywgJ2lucHV0JywgJ2NvbnRlbnRlZGl0YWJsZSddOwpAQCAt
NzYsMTMgKzc2LDEzIEBAIGZ1bmN0aW9uIGRvVGVzdElmQW55KCkgewogICAgIHJlbW92ZUFsbENo
aWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKSk7CiAgICAgcmVtb3Zl
QWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vdmUtdGFyZ2V0JykpOwogCi0g
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAg
ICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFs
c2UpOworICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoZmFsc2UpOworICAgIH0KIAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGZhbHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0KIH0KIAogdmFyIHJlcXVlc3RJZDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUu
aHRtbAppbmRleCA2ZGY4NTBmM2JiMTM4OGExNzUzMDg5MDQ5YTUyY2VlZjQyNTFiYTNjLi5jNzhm
OWUwODJkZTlhNDM3ZjE2NDY1YjgxNmZmMDMzMzJiMzQ1NTU1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92
ZS1mcmFtZS5odG1sCkBAIC01LDcgKzUsNyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0
cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwKaW5kZXggMDIzODNjODBmNjdiOWNkZDViYWNiYTUz
YTNmMjg2N2Q5NDRkZjYzNC4uMzU0NDUyYmRlMWFkYTliYjg2Zjc0MGVmMGM5ZTQ2NWMxMzI5NWFk
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFz
eW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFz
eW5jLmh0bWwKQEAgLTIyLDEyICsyMiwxMyBAQCBkZXNjcmlwdGlvbigiVGVzdCBmb3IgVW5pZmll
ZCBTcGVsbCBDaGVja2VyICYgQXN5bmMgU3BlbGwgQ2hlY2tlci4iKTsKIAogaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCitpZiAod2lu
ZG93LmludGVybmFscykgeworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5p
ZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKK30KIAogdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKIGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVu
KG5vZGUpIHsKQEAgLTU2LDEzICs1NywxMyBAQCBmdW5jdGlvbiBkb1Rlc3RJZkFueSgpIHsKIAog
ICAgIC8vIE5vIG1vcmUgdGVzdHMuCiAgICAgcmVtb3ZlQ2hpbGRyZW4oY29udGFpbmVyKTsKLSAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICBpZiAod2luZG93LmludGVybmFscykgewogICAg
ICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxz
ZSk7CisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChmYWxzZSk7CisgICAgfQogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
ZmFsc2UpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgfQogfQogCiBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZUVsZW1lbnQo
aWQpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVj
ay1wYXN0ZS1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGNoZWNrLXBhc3RlLWRpc2FibGVkLmh0bWwKaW5kZXggOTFlMjQ5YmQxZDZhZjc3NDBhMWJlMjUw
NjJjYThiZGJhYzc2N2EzNi4uYTY5MTYyY2ZkZjFlNzIwY2FkNmU4NzZjZDA4OWEzNzM1NjRhMGE0
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBh
c3RlLWRpc2FibGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGNoZWNrLXBhc3RlLWRpc2FibGVkLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAgc2hvdWxkQmVUcnVl
KCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7CiB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oc3JjTm9kZSk7CiBkb2N1bWVudC5leGVj
Q29tbWFuZCgnQ29weScpOwogCi10ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOworaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiB2YXIgZHN0Tm9kZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkc3QnKTsKIGRzdE5vZGUuZm9jdXMoKTsKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rp
b24gdmVyaWZ5TWFya2VyKCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdUaGUgZGVzdGluYXRpb24g
bm9kZSBzaG91bGQgbm90IGhhdmUgYSBtYXJrZXIuJyk7CiAgICAgZWxzZQogICAgICAgICB0ZXN0
UGFzc2VkKCdUaGUgZGVzdGluYXRpb24gbm9kZSBkb2VzIG5vdCBoYXZlIGFueSBtYXJrZXJzLicp
OwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFs
c2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZChmYWxzZSk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiB3aW5kb3cuc2V0VGltZW91
dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVyaW9kKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1xdWV1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWwKaW5kZXggYzcxZTNkNTg3ZDgwNTQxZjFh
NmY2ZWZkYjg1ZmY4YmMyOTEwY2M1OS4uMTgyYWM2MThjMTNlYjJjZjE4NjAwNjg0OTI5YTBiODVm
MzkzYzg1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXF1ZXVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXF1ZXVlLmh0bWwKQEAgLTEwLDEwICsxMCwxMCBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9u
KCdGb3IgQnVnIDcyOTM5OiBBc3luY2hyb25vdXMgU3BlbGxDaGVja2VyIHNob3VsZCBjb25zaWRl
ciBtdWx0aXBsZSByZXF1ZXN0cy4nKTsKIAotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAg
dGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKLX0K
K2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogdmFyIHRlc3RSb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZSh0ZXN0
Um9vdCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKQEAgLTgwLDEwICs4MCwxMCBAQCBmdW5j
dGlvbiB2ZXJpZnlJZkFueSgpCiAgICAgfQogCiAgICAgdGVzdFJvb3Quc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9CiB9CiAKIGZ1bmN0aW9u
IGZpbmRGaXJzdFRleHROb2RlKG5vZGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1zZXF1ZW5jZW51bS5odG1sCmluZGV4IDQ1NDNmZDVhZjkz
MDg4OWM5ZjdkMjk4NjBlOGRmNjgxNDZiNGU4NjkuLjUyZDk1MTYzZjRhZjNkNjJhYmJhZTYyMzUx
N2QzYThkY2E5ZmYzYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxjaGVjay1zZXF1ZW5jZW51bS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxjaGVjay1zZXF1ZW5jZW51bS5odG1sCkBAIC0xMCw5ICsxMCw5IEBACiA8c2Ny
aXB0PgogZGVzY3JpcHRpb24oJ0ZvciBCdWcgNzM1MTE6IEludGVybmFscyBzaG91bGQgaGF2ZSBh
IG1ldGhvZCB0byByZXR1cm4gdGhlIG1heCBzZXF1ZW5jZSBudW1iZXIgb2Ygc3BlbGxjaGVjayBy
ZXF1ZXN0LicpOwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKK2lmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CiAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHRlc3RSdW5uZXIu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogfQog
CiB2YXIgdGVzdFJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTc3LDgg
Kzc3LDggQEAgZnVuY3Rpb24gdmVyaWZ5SWZBbnkoKQogICAgIH0KIAogICAgIHRlc3RSb290LnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2Up
OworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1kZXNjcmlwdGlvbi5odG1sCmluZGV4IDNi
MmM1NTZhZmU5ZjcyNmYwODdhNGFiZGZiZWVmNmM0YTdlNDc2NTMuLjkyMzFlMGJlMjZlZTk5ZTMy
ZDExZTQxY2Y0M2U5NWJhODg0MTZkYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItZGVzY3JpcHRpb24uaHRtbApAQCAt
MTIsNyArMTIsNyBAQAogCiBmdW5jdGlvbiBkb25lKCkKIHsKLSAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwogICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKICAg
ICBmaW5pc2hKU1Rlc3QoKQogfQpAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsK
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5p
ZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogICAgIHZhciBzZWwg
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVs
ZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sCmluZGV4IDU5YWRhNWRhODNiMGNlNjBlOWEyMzk3Y2U5
MzViNDQ1ODVjM2ViYTAuLjkzMTNiYWRiYzJmMGUzNmM1ZWI1MDBmYzYzNjg5ZjkyZDUyYmM3ZDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sCkBA
IC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIGluc2VydFRleHQodGV4dCkgewogc2hvdWxkQmVUcnVl
KCdpbnNlcnRUZXh0KCJ6Iik7IGluc2VydFRleHQoInoiKTsgaW5zZXJ0VGV4dCgiICIpOyBpbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7CiAKIGRlYnVnKCdFbmFi
bGUgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcsIGRlbGV0ZSB0d28gY2hhcmFjdGVycywgYW5k
IGluc2VydCBhIHNwYWNlJyk7Ci10ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOworaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKHRydWUpOwogaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0
Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CiAKIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJh
Y2t3YXJkIik7CkBAIC0zNyw3ICszNyw3IEBAIGZ1bmN0aW9uIHZlcmlmeU1hcmtlcigpIHsKICAg
ICB9CiAgICAgc2hvdWxkQmVGYWxzZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCAwLCAxKScpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKGZhbHNlKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQog
d2luZG93LnNldFRpbWVvdXQodmVyaWZ5TWFya2VyLCAxKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tbWlz
c3BlbGxlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5n
L3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLW1pc3NwZWxsZWQtd29yZC5odG1sCmluZGV4IDYwZmMw
MmVkZjMxNGZlZDU1YjUyNDM0OTBhYWVlMzBkZWVjZDc0YzguLjk2MTE3M2YxYWZmM2YxYjE1YWEw
ZTkxZTNiNGNjMmUyMTQyYTljZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tbWlzc3BlbGxlZC13b3JkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9t
b3ZlLWN1cnNvci10by1taXNzcGVsbGVkLXdvcmQuaHRtbApAQCAtMTAsNyArMTAsNyBAQCBkZXNj
cmlwdGlvbignVGVzdCBpZiBDaHJvbWUgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBhIG1pc3NwZWxs
ZWQgbWFya2VyIHdoZW4gbW92aQogICAgICAgICAgICAgJ1RvIHRlc3QgbWFudWFsbHksIHR5cGUg
YSBtaXNzcGVsbGVkIHdvcmQgInp6ICIgYW5kIHR5cGUgYSBsZWZ0LWFycm93IGtleSB0byBtb3Zl
IHRoZSBjdXJzb3Igb24gaXQuJyArCiAgICAgICAgICAgICAnVGhpcyB0ZXN0IHN1Y2NlZWRzIHdo
ZW4gInp6IiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4nKTsKIAotdGVzdFJ1bm5lci5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIHZhciBub2RlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NyYycpOwogbm9kZS5mb2N1cygpOwogZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKQEAgLTE4LDcgKzE4LDcgQEAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7CiB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkubW9kaWZ5KCdtb3ZlJywgJ2JhY2t3YXJkJywgJ2NoYXJhY3RlcicpOwogc2hvdWxkQmVUcnVl
KCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7Ci10ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKK2ludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiA8
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193159</attachid>
            <date>2013-03-14 11:29:51 -0700</date>
            <delta_ts>2013-03-15 11:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112362-20130314112547.patch</filename>
            <type>text/plain</type>
            <size>33539</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QxYTdmOGQ4YmY1YWFl
NWNhMTMxZjRhM2RlYzE1ZTcxNjQwNGZjZS4uYjhlYmZlYjFhNzNjOGM0Zjc1OTcwZmZiYjcwYzA5
Y2VlYmYxYjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTE0ICBSb3Vz
bGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIHVuaWZpZWQgdGV4dGNoZWNrZXIgdmFyaWFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB2YXJpYWJsZSBtX29yaWdpbmFsVW5pZmll
ZFNwZWxsQ2hlY2tlckVuYWJsZWQgaXMgbmV2ZXIgdXNlZC4gVGhlIGdlbmVyYXRlZAorICAgICAg
ICBjb2RlIGZyb20gU2V0dGluZ3MuaW4gYWxyZWFkeSBiYWNrcyB1cCBhbmQgcmVzdG9yZXMgdW5p
ZmllZCB0ZXh0Y2hlY2tlciBzZXR0aW5nLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmg6IFJlbW92ZSB1bnVzdWVkIG1fb3JpZ2luYWxVbmlmaWVkU3BlbGxDaGVja2VyRW5h
YmxlZCB2YXJpYWJsZS4KKwogMjAxMy0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIGEgbW9kZSB0byBSZXNvdXJjZUxvYWRlciB0aGF0IHRha2Vz
IFNoYXJlZEJ1ZmZlcnMgaW5zdGVhZCBvZiByYXcgcG9pbnRlcnMgYW5kIGxlbmd0aHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IDU0OWIwZmE0NWZhNDBi
MjZkYzg0OGE1MmEyNWFhNzhhMTczYTJjNDguLjE4NzQyZTI0YWI5ZjMzMDg1OWYzYzc2MTM5YTk3
ZDdmZTNiMWU3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5o
CkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX29yaWdpbmFsU3R5bGVT
Y29wZWQ7CiAjZW5kaWYKICAgICAgICAgRWRpdGluZ0JlaGF2aW9yVHlwZSBtX29yaWdpbmFsRWRp
dGluZ0JlaGF2aW9yOwotICAgICAgICBib29sIG1fb3JpZ2luYWxVbmlmaWVkU3BlbGxDaGVja2Vy
RW5hYmxlZDsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICAgICBib29sIG1fb3Jp
Z2luYWxUZXh0QXV0b3NpemluZ0VuYWJsZWQ7CiAgICAgICAgIEludFNpemUgbV9vcmlnaW5hbFRl
eHRBdXRvc2l6aW5nV2luZG93U2l6ZU92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkOTIwMTU0ZjliN2NiZDAzYWNkMTU1MmFkZTdh
MTljZmQ4NGVkNGQuLmQ4MGQyMjkyMTdjYzhkZGZjOGU1ZTEyZjc5OTFhNGRlYjcxNjhlY2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAxMy0wMy0xNCAgUm91c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkIGZyb20gdGVzdCBydW5uZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTIzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQg
ZnJvbSB0ZXN0IHJ1bm5lcnMuIFRoZSBzZXR0aW5nIGlzIG5vdworICAgICAgICBpbiBpbnRlcm5h
bHMuc2V0dGluZ3MsIHNvIGFsbCBwb3J0cyBjYW4gc2hhcmUgaXQuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9k
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVy
cnkuY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBtZXRo
b2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
IG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmg6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5j
cHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6IFJlbW92ZSBz
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbTogUmVtb3ZlIHNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3F0L1Rlc3RSdW5uZXJRdC5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVy
UXQuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9k
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDogUmVtb3Zl
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKwogMjAxMy0wMy0xNCAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBEaXNhYmxl
IERSVCBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDdkM2U4
NWUwMDc0M2MyNGUxMjdhZDJjMWVmYmE2NjM0YzY3ZGVkMzYuLjhkM2M5ZWVlZmMxZThmZjgyNmFk
NWQ5OTYxYWFlNWRhYmM0MmY2MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBA
IC0xNTQzLDE2ICsxNTQzLDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0U3RvcFByb3Zpc2lvbmFs
RnJhbWVMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU08KICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgVGVzdFJ1bm5lciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIxNTYsNyArMjE0Niw2IEBAIEpT
U3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsg
InNldFdpbmRvd0lzS2V5Iiwgc2V0V2luZG93SXNLZXlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgc2V0SmF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFhTU0F1ZGl0b3JF
bmFibGVkIiwgc2V0WFNTQXVkaXRvckVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7
ICJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIsIHNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2hvd1dlYklu
c3BlY3RvciIsIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
aW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgc2ltdWxhdGVMZWdhY3lXZWJOb3Rp
ZmljYXRpb25DbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRlc3RPbnNjcmVlbiIs
IHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgK
aW5kZXggNGYzNzBjMzM5YzdjZmE5OGU4OWYzNDAwMjkyMzdiMWI0ODU0ZjFkYi4uYmQ1ZTU1ZDRl
ZjViMjE1MzVjNDAzM2I1M2UyN2Q5NzM2MTgyYjNhNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaApAQCAtMjkxLDcgKzI5MSw2IEBAIHB1YmxpYzoKICAgICBib29sIGdlb2xvY2F0aW9uUGVy
bWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKICAg
ICB2b2lkIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAgICB2b2lkIHNob3dXZWJJbnNw
ZWN0b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgdm9pZCBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBKU1N0cmluZ1JlZiBzY3JpcHQpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJy
eS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0Jl
cnJ5LmNwcAppbmRleCA2NDVhZTc5Njg4MWYzYTQxZjBiYzk3Mzc4MzkyOTIwOWU0MzcwNWRjLi5h
YWIzNmZkZGZhNGE1ZDA5NTM4MzczNTBlMGJhZmQ2YzE0ZmU0NzRkIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNw
cApAQCAtNTgzLDExICs1ODMsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmRlbGV0ZUFsbExvY2FsU3Rv
cmFnZSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KIGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6
bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoQmxhY2tCZXJyeTo6
V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDk3NTRlMmQ0YzQ0NjdjMjU4MDI1N2JjZDQ1YTViM2IyNjUx
NmEzNzguLjM1Y2NmZjljYzkyNjBmMWZhNzgxYTMzMzFiODQwMDYzYzY5MTYzMDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwCkBAIC0yMjcsNyArMjI3LDYgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cihUZXN0SW50ZXJmYWNlcyogaW50ZXJmYWNlcykKICAgICBiaW5kTWV0aG9kKCJzZXRBbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHMiLCAmVGVzdFJ1bm5lcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzKTsKICAgICBiaW5kTWV0aG9kKCJvdmVycmlkZVByZWZlcmVuY2UiLCAmVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQbHVnaW5zRW5h
YmxlZCIsICZUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7Ci0gICAgYmluZE1ldGhvZCgi
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNldFRvdWNo
RHJhZ0Ryb3BFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKTsK
IAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kaWZ5IHRoZSBzdGF0ZSBvZiB0aGUgVGVzdFJ1bm5l
ci4KQEAgLTE2ODYsMTUgKzE2ODUsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFi
bGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJl
c3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3Vt
ZW50c1swXS5pc0Jvb2woKSkgewotICAgICAgICBtX2RlbGVnYXRlLT5wcmVmZXJlbmNlcygpLT5h
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2woYXJndW1l
bnRzWzBdKTsKLSAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVmZXJlbmNlcygpOwotICAgIH0K
LSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRUb3VjaERy
YWdEcm9wRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNb
MF0uaXNCb29sKCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCAyNWU3ZmU4NDU4OWI3ZDgxNzFm
YzYxOWIwOTU4OWNkMTE5MTYwOGIxLi5mYzUyNGYxODI3ZDE4ZTk3YWEyNTJjYjYyZTg0Zjc4MDA1
NDc4YzBkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zMDksOSArMzA5LDYgQEAgcHJpdmF0ZToK
ICAgICAvLyBFbmFibGUgb3IgZGlzYWJsZSBwbHVnaW5zLgogICAgIHZvaWQgc2V0UGx1Z2luc0Vu
YWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0gICAgLy8gQ2hh
bmdlcyBhc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBmbGFnIG9uIHRoZSBzZXR0aW5ncy4KLSAg
ICB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIHZvaWQgc2V0VG91Y2hEcmFnRHJvcEVuYWJs
ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5l
ckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5k
ZXggZTY1YjVhMjU5ZTJjMTI1ZGEyN2NjOTAwMWNlN2I0MThmMzYwOTNkNS4uNzkxZWMwOWMxY2Vl
ZTAyODY0OGFkZjhiZjJhNTU1ZWI0YmI1ODQ4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9UZXN0UnVubmVyRWZsLmNwcApAQCAtNjg5LDExICs2ODksNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KGJyb3dzZXItPm1haW5WaWV3KCksIGVu
YWJsZWQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBUZXN0
UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBld2tfdmlld19pbnNwZWN0b3Jfc2hv
dyhicm93c2VyLT5tYWluVmlldygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVu
bmVyR3RrLmNwcAppbmRleCA0MmNlNjcyNmQ4ODNlOTM3ZWVhNWJlOGMwZjY0YmQyZTA3ZjFjOGM0
Li5mNzk2Yjc0NDg0MDg1M2FiZDM2NGFmZGQ4ZmJiYTM3Yjc1OWMzNDlkIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBAIC03ODksMTEgKzc4OSw2IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sIGVuYWJsZWQpCiAg
ICAgZ19vYmplY3Rfc2V0KHdlYlNldHRpbmdzLCAiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiLCBl
bmFibGVkLCBOVUxMKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1l
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggYjIzMjZh
MjZiMzQ5YTA4M2JhNzk4YThjN2I5NWFkYTlkZjA1ZTM2Ni4uZDZkMzQzNjM5MmQ3MzNjMDQ1NzA0
Y2ZkMDRhZDMzNTA1ZmFkMjcwZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KQEAgLTc5MiwxMSArNzkyLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10g
cHJlZmVyZW5jZXNdIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKLXZv
aWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBl
bmFibGVkKQotewotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6ZW5hYmxlZF07Ci19Ci0KIHZvaWQgVGVzdFJ1
bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCiB7CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIGlu
c3BlY3Rvcl0gc2hvdzpuaWxdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHAKaW5kZXggZGM0MTdhYjYxYjk4OGI3YzFlYmYzOWY2ZDJlYzgwYzBiN2NjYzI3NS4uN2QyM2Y4
ODM1ZjQxZDYxMzVjYjc3Nzk0NjJmNzU2MjU2MDUxZjZiMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBAIC00MjksMTEgKzQyOSw2IEBAIHZvaWQgVGVzdFJ1bm5l
clF0OjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX2RydC0+
d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9w
ZXJFeHRyYXNFbmFibGVkLCBlbmFibGVkKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyUXQ6OnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgotfQotCiB2b2lkIFRlc3RSdW5uZXJRdDo6c2hvd1dlYkluc3BlY3Rvcigp
CiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJT
ZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CkBAIC0xMTg2LDEwICsxMTgx
LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91
YmxlKQogewogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVu
YWJsZWQoYm9vbCBmbGFnKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
aAppbmRleCAxM2Y2YTY4ZmFlNjA3NTAyNzVlMWZmZTZiODE4OGU3YzgyMjFmMTc3Li5mNmI5OWVm
NzdmNDkxMzE5NmVmYzE2M2JmMDk0NDg0MDRjYzdmOWFjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuaApAQCAtMTQ0LDcgKzE0NCw2IEBAIHB1YmxpYyBRX1NMT1RTOgogICAg
IFFTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgUVN0cmluZyYgaG9zdCk7CiAgICAgdm9pZCBk
dW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0IHsgfQogICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGJvb2wpOwogICAgIHZvaWQgc2hvd1dlYkluc3BlY3RvcigpOwogICAgIHZvaWQgY2xvc2VX
ZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxs
SWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHAKaW5kZXggNjY0OGMzZWUxNWRkNGE1NmVlMGI0NWIyMWUwODdmYTg2NDRl
NjlmMi4uNTkyMWNiMWM1NzY2YTUxNmUxOWNjZTJhYjhlZTkwN2I1NjBmY2MxMSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAtOTc4LDExICs5NzgsNiBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogICAgIHByZWZzUHJpdmF0ZS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChlbmFibGVkKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0KLQogdm9pZCBUZXN0
UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZp
ZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcAppbmRleCA0NzUzYzI5
Y2E1NGY2YWVlMWE5ZGNhOTEzZDliNTFlZDUwMWE5YTFlLi5jMTBlZWY4OWY5ZTJkNjZkMzBlMTlk
NjhhMTk4MjU5MTRiMTE4M2UzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9U
ZXN0UnVubmVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJX
eC5jcHAKQEAgLTQ2MCwxMSArNDYwLDYgQEAgdm9pZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkK
IHsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0KLQogYm9vbCBU
ZXN0UnVubmVyOjpmaW5kU3RyaW5nKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiB0
YXJnZXQsIEpTT2JqZWN0UmVmIG9wdGlvbnNBcnJheSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNjA4MzBmMDNjMWQxYWJjMTEwZTkzM2NhMGY4YjRhOWY0OTZkM2NmNC4uMTdl
NmUyOGE0NmRjNGQzOTA0MjY0MWVkNDViNTNjZjdkZTRhYmJmZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEzLTAzLTE0ICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBNb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIHRv
IGludGVybmFscy5zZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2hhbmdlZCB0aGUgdGVzdHMgZnJvbSB1c2luZyB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCisgICAgICAgIHdpdGggcG9ydC1z
cGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgdG8gdXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKQorICAgICAgICB3aXRoIG9uZSBjb21t
b24gaW1wbGVtZW50YXRpb24sIHNpbWlsYXIgdG8gaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQoYm9vbCkuCisgICAgICAgIENoYW5nZWQgdGhlIHRlc3RzIHRv
IG5vdCByZXNldCB0aGVzZSBzZXR0aW5ncyB3aGVuIHRoZXkgZmluaXNoLCBiZWNhdXNlIHRoZSB0
ZXN0IGhhcm5lc3MgcmVzZXRzCisgICAgICAgIHRoZSBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5Lgor
CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbDog
VXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtl
cnMuaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9ncmFt
bWFyLXBhc3RlLmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvcmVzb3VyY2VzL3V0aWwuanM6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcv
c3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanM6IFVzZSBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVh
ZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wp
LgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1tdXRhdGlvbi5o
dG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVy
LnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2Yg
dGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZGlzYWJsZWQuaHRtbDog
VXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1
ZXVlLmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxjaGVjay1zZXF1ZW5jZW51bS5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1kZXNjcmlwdGlvbi5odG1sOiBVc2UgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGlu
c3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChi
b29sKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0
ZS1taXNzcGVsbGVkLXdvcmQuaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1taXNzcGVsbGVkLXdv
cmQuaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisKIDIwMTMtMDMtMTQgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBjaHJvbWl1bSBl
eHBlY3RhdGlvbnMgdXBkYXRlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvZ3JhbW1hci1tYXJrZXJzLWhpZHBpLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL2dyYW1tYXItbWFya2Vycy1oaWRwaS5odG1sCmluZGV4IDEwMTE5ZWNjZGY5MDRjYWQ3
MDUzOTExNTQ4ZTFhYzhiYmE1OTUyOGEuLjA4NDZhMmY1YzkxYjJhNmQwZDI3NTA4MzNlMzA1MTFl
YjQ5YjllMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1h
ci1tYXJrZXJzLWhpZHBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9n
cmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbApAQCAtNSwxMCArNSwxMSBAQAogPGRpdiBpZD0ic291
cmNlIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj5Zb3UgaGFzIHRo
ZSByaWdodC48L2Rpdj4KIDxkaXYgaWQ9InRhcmdldCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBz
cGVsbGNoZWNrPSJ0cnVlIj48L2Rpdj4KIDxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykK
KyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQodHJ1ZSk7CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAgICB0ZXN0
UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHRy
aWFsKCk7CiAgICAgfSk7CkBAIC0yNSwxMCArMjYsOCBAQCB2YXIgcmV0cnkgPSAxMDsKIGZ1bmN0
aW9uIHRyaWFsKCkgewogICAgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMuaGFzR3JhbW1hck1h
cmtlcih0YXJnZXQsIDQsIDMpOwogICAgIGlmIChoYXNNYXJrZXIgfHwgLS1yZXRyeSA9PSAwKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd2luZG93LnNldFRpbWVv
dXQodHJpYWwsIDEwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
Z3JhbW1hci1tYXJrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1t
YXItbWFya2Vycy5odG1sCmluZGV4IDJhOTE4ODhhYjc2ZWVjYjUyMzcxYThlMWQwYTg5N2IzZTY0
MmI3YzMuLmUwODJiZjY4MWE2NjYzY2RhMjVjNWZhNDMzOGQ3NDI0MTI1NTcyZDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMuaHRtbApAQCAt
OCw4ICs4LDkgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgICB0ZXN0
UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogfQoraWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiB2YXIgc291cmNlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NvdXJjZScpOwogd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENo
aWxkcmVuKHNvdXJjZSk7CkBAIC0yMiwxMCArMjMsOCBAQCB2YXIgcmV0cnkgPSAxMDsKIGZ1bmN0
aW9uIHRyaWFsKCkgewogICAgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMuaGFzR3JhbW1hck1h
cmtlcih0YXJnZXQsIDQsIDMpOwogICAgIGlmIChoYXNNYXJrZXIgfHwgLS1yZXRyeSA9PSAwKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd2luZG93LnNldFRpbWVv
dXQodHJpYWwsIDEwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
Z3JhbW1hci1wYXN0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFy
LXBhc3RlLmh0bWwKaW5kZXggNzhkZGNhN2M5MTAxYWUxYzI4YjE1NTIzZWNjYjg2ZGZmZWEwZjVl
Yy4uYTdjMjNhZDQ0YWNiMzczYzI1YTVhMzM5ZTdkMjg2OTllMWY2OGEwZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWwKQEAgLTQ4LDggKzQ4
LDYgQEAgZnVuY3Rpb24gZG9uZSgpCiAgICAgaWYgKG5leHQpCiAgICAgICAgIHJldHVybiB3aW5k
b3cuc2V0VGltZW91dChuZXh0LCAwKTsKICAgICB0ZXN0Um9vdC5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOwotCi0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChmYWxzZSk7CiAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKQEAgLTEzNiw5ICsx
MzQsOCBAQCBmdW5jdGlvbiBwYXN0ZUFuZFZlcmlmeShzb3VyY2UsIGRlc3QsIGV4cGVjdGVkTWFy
a2VkKQogICAgIHRyaWFsKCk7CiB9OwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwotfQor
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiB0ZXN0cy5wdXNoKGZ1bmN0aW9uKCkg
eyBwYXN0ZUFuZFZlcmlmeSh0ZXN0U291cmNlUGxhaW4sIHRlc3RFZGl0YWJsZSwgWyJoYXMiXSk7
IH0pOwogdGVzdHMucHVzaChmdW5jdGlvbigpIHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZURl
Y29yYXRlZCwgdGVzdEVkaXRhYmxlLCBbImEiXSk7IH0pOyAvLyBDaGVja3Mgb25seSAnYScuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpz
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCBj
ZjgwMzM0MTg4NDNjZjIwYzY2NzFlN2M4NDkwN2I3MDcyZDQ5NTIwLi5lM2JmMDY0OTZhMWU2Njg3
OWI5OThlOWQzMTIyZTkzZmJiZmRkYTZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvcmVzb3VyY2VzL3V0aWwuanMKQEAgLTIwLDE1ICsyMCwxNSBAQCBmdW5jdGlvbiB2ZXJp
ZnlTcGVsbFRlc3QobnJldHJ5KQogCiBmdW5jdGlvbiBpbml0U3BlbGxUZXN0KHRlc3RFbGVtZW50
SWQsIHRlc3RUZXh0LCB0ZXN0RnVuY3Rpb24pCiB7Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
IHx8ICF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LnRlc3RSdW5uZXIuc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwg
IXdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIGxvZygiRkFJTCBJbmNvbXBsZXRlIHRlc3Qg
ZW52aXJvbm1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB0ZXN0RnVuY3Rpb25D
YWxsYmFjayA9IHRlc3RGdW5jdGlvbjsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogICAg
IHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOwogICAgIHRlc3RS
dW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUp
OwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRy
dWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRFZGl0aW5nQmVoYXZpb3IoIndpbiIpOwog
ICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RFbGVtZW50
SWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVz
dHMvc3BlbGxjaGVjay1wYXN0ZS5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2Ny
aXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMKaW5kZXggZjMwOWE4Nzg0ODJiYTc4ZjEzZTQz
N2JhYzE2NWNiY2ZkY2NkZmFhYS4uNWQ0OGVkMGY2ZjU4YmFiYjliZDc3MzJlM2RlNDczZTMzNzU0
MzA0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVz
dHMvc3BlbGxjaGVjay1wYXN0ZS5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzCkBAIC0zOSw4ICszOSw2IEBAIGZ1bmN0
aW9uIGRvbmUoKQogICAgIGlmIChuZXh0KQogICAgICAgICByZXR1cm4gd2luZG93LnNldFRpbWVv
dXQobmV4dCwgMCk7CiAgICAgdGVzdFJvb3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLQotICAg
IHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwog
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCkBAIC05NCw4ICs5Miw4IEBAIGZ1bmN0
aW9uIHBhc3RlQW5kVmVyaWZ5KHNvdXJjZSwgZGVzdCwgZXhwZWN0ZWRNYXJrZWQpCiAgICAgdHJp
YWwoKTsKIH07CiAKLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKHRydWUpOwogCiB0ZXN0cy5wdXNoKGZ1bmN0aW9uKCkgeyBwYXN0ZUFuZFZlcmlmeSh0
ZXN0U291cmNlUGxhaW4sIHRlc3RJbnB1dCwgW1swLCAyXV0pOyB9KTsKIHRlc3RzLnB1c2goZnVu
Y3Rpb24oKSB7IHBhc3RlQW5kVmVyaWZ5KHRlc3RTb3VyY2VEZWNvcmF0ZWQsIHRlc3RJbnB1dCwg
W1swLCAyXV0pOyB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxjaGVjay1hc3luYy1tdXRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGNoZWNrLWFzeW5jLW11dGF0aW9uLmh0bWwKaW5kZXggNGIwODJlMmM1MzMwNmIy
YWM3ZDZiZjQwZDM3MGI3OWQ3NDU5NmM5Ny4uNmYyYzBkODhmYTI1NzgwYzFjZGFjNzhlOTA4MDQz
ZjdiMmYwNWU3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGNoZWNrLWFzeW5jLW11dGF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGNoZWNrLWFzeW5jLW11dGF0aW9uLmh0bWwKQEAgLTMwLDEzICszMCwxMyBAQCBk
ZXNjcmlwdGlvbigKIAogdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi1pZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKHRydWUpOwotfQogCi1pZiAod2luZG93LmludGVybmFscykKK2lmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENo
ZWNrZXJFbmFibGVkKHRydWUpOworfQogCiB2YXIgc291cmNlSWRzID0gWydzb3VyY2UnXTsKIHZh
ciBkZXN0RWxlbXMgPSBbJ3RleHRhcmVhJywgJ2lucHV0JywgJ2NvbnRlbnRlZGl0YWJsZSddOwpA
QCAtNzYsMTMgKzc2LDggQEAgZnVuY3Rpb24gZG9UZXN0SWZBbnkoKSB7CiAgICAgcmVtb3ZlQWxs
Q2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpKTsKICAgICByZW1v
dmVBbGxDaGlsZHJlbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW92ZS10YXJnZXQnKSk7CiAK
LSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoZmFsc2UpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfQogfQogCiB2YXIgcmVxdWVzdElkOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92
ZS1mcmFtZS5odG1sCmluZGV4IDZkZjg1MGYzYmIxMzg4YTE3NTMwODkwNDlhNTJjZWVmNDI1MWJh
M2MuLmM3OGY5ZTA4MmRlOWE0MzdmMTY0NjViODE2ZmYwMzMzMmIzNDU1NTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJh
bWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5
bmMtcmVtb3ZlLWZyYW1lLmh0bWwKQEAgLTUsNyArNSw3IEBACiBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKHRydWUpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbAppbmRleCAwMjM4M2M4MGY2N2I5Y2Rk
NWJhY2JhNTNhM2YyODY3ZDk0NGRmNjM0Li40MDg3ZThmNGVkNmNmYzBjZDdmY2EyYWMwMjY1YzZj
MzdkM2QwN2M5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stYXN5bmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stYXN5bmMuaHRtbApAQCAtMjIsMTIgKzIyLDEzIEBAIGRlc2NyaXB0aW9uKCJUZXN0IGZv
ciBVbmlmaWVkIFNwZWxsIENoZWNrZXIgJiBBc3luYyBTcGVsbCBDaGVja2VyLiIpOwogCiBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi1pZiAod2luZG93LmludGVybmFscykK
K2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworfQogCiB2YXIgY29udGFpbmVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwogZnVuY3Rpb24gcmVtb3Zl
Q2hpbGRyZW4obm9kZSkgewpAQCAtNTYsMTMgKzU3LDggQEAgZnVuY3Rpb24gZG9UZXN0SWZBbnko
KSB7CiAKICAgICAvLyBObyBtb3JlIHRlc3RzLgogICAgIHJlbW92ZUNoaWxkcmVuKGNvbnRhaW5l
cik7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKLQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0KIH0KIAogZnVuY3Rpb24gY3JlYXRlRWRp
dGFibGVFbGVtZW50KGlkKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsY2hlY2stcGFzdGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1kaXNhYmxlZC5odG1sCmluZGV4IDkxZTI0OWJkMWQ2
YWY3NzQwYTFiZTI1MDYyY2E4YmRiYWM3NjdhMzYuLjg5ZmViOGZmNzYyOThjMzYzMmIwNzdlMDZi
NzI2MDRkMWZjMTYxMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxjaGVjay1wYXN0ZS1kaXNhYmxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1kaXNhYmxlZC5odG1sCkBAIC0zMSw3ICszMSw3IEBA
IHNob3VsZEJlVHJ1ZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAy
KScpOwogd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENoaWxkcmVuKHNyY05vZGUpOwog
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0NvcHknKTsKIAotdGVzdFJ1bm5lci5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogdmFyIGRzdE5vZGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZHN0Jyk7CiBkc3ROb2RlLmZvY3VzKCk7CkBAIC01MSw3ICs1
MSw2IEBAIGZ1bmN0aW9uIHZlcmlmeU1hcmtlcigpIHsKICAgICAgICAgdGVzdEZhaWxlZCgnVGhl
IGRlc3RpbmF0aW9uIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGEgbWFya2VyLicpOwogICAgIGVsc2UK
ICAgICAgICAgdGVzdFBhc3NlZCgnVGhlIGRlc3RpbmF0aW9uIG5vZGUgZG9lcyBub3QgaGF2ZSBh
bnkgbWFya2Vycy4nKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGZhbHNlKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIHdpbmRvdy5zZXRUaW1l
b3V0KHZlcmlmeU1hcmtlciwgc2xlZXBQZXJpb2QpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcXVldWUuaHRtbAppbmRleCBjNzFlM2Q1ODdkODA1NDFm
MWE2ZjZlZmRiODVmZjhiYzI5MTBjYzU5Li5iNzIwNWFlMGFkMGFmMDQzODZkYzA3ZDZjOTJjNGI5
YjFkNzMxMGYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcXVldWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcXVldWUuaHRtbApAQCAtMTAsMTAgKzEwLDEwIEBACiA8c2NyaXB0PgogZGVzY3JpcHRp
b24oJ0ZvciBCdWcgNzI5Mzk6IEFzeW5jaHJvbm91cyBTcGVsbENoZWNrZXIgc2hvdWxkIGNvbnNp
ZGVyIG11bHRpcGxlIHJlcXVlc3RzLicpOwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwot
fQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiB2YXIgdGVzdFJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHRl
c3RSb290LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwpAQCAtODAsMTAgKzgwLDggQEAgZnVu
Y3Rpb24gdmVyaWZ5SWZBbnkoKQogICAgIH0KIAogICAgIHRlc3RSb290LnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5u
ZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fQogfQogCiBmdW5jdGlvbiBmaW5kRmlyc3RUZXh0Tm9kZShub2RlKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXNlcXVlbmNlbnVtLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbApp
bmRleCA0NTQzZmQ1YWY5MzA4ODljOWY3ZDI5ODYwZThkZjY4MTQ2YjRlODY5Li4wZDBlNjc3MDgw
MTQ0ZDZlNGJjZTBiZDFmNDQzNzZjZjgwNGQ3ZTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbApAQCAtMTAs
OSArMTAsOSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCdGb3IgQnVnIDczNTExOiBJbnRlcm5h
bHMgc2hvdWxkIGhhdmUgYSBtZXRob2QgdG8gcmV0dXJuIHRoZSBtYXggc2VxdWVuY2UgbnVtYmVy
IG9mIHNwZWxsY2hlY2sgcmVxdWVzdC4nKTsKIAotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Citp
ZiAod2luZG93LmludGVybmFscykgewogICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUp
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCh0cnVlKTsKIH0KIAogdmFyIHRlc3RSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CkBAIC03NywxMCArNzcsNyBAQCBmdW5jdGlvbiB2ZXJpZnlJZkFueSgpCiAgICAgfQog
CiAgICAgdGVzdFJvb3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KKyAgICBm
aW5pc2hKU1Rlc3QoKTsKIH0KIAogZnVuY3Rpb24gY29weUFuZFBhc3RlKHNvdXJjZSwgZGVzdCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vy
LWRlc2NyaXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LW1hcmtlci1kZXNjcmlwdGlvbi5odG1sCmluZGV4IDNiMmM1NTZhZmU5ZjcyNmYwODdhNGFiZGZi
ZWVmNmM0YTdlNDc2NTMuLjYyNjRjNTVkNWRlMTViYWE5Y2IwNTA5NTZmNjJjZWNiYjhlMDMyMjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vy
LWRlc2NyaXB0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1tYXJrZXItZGVzY3JpcHRpb24uaHRtbApAQCAtMTAsMTcgKzEwLDEwIEBACiAKIDxzY3Jp
cHQ+CiAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRV
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKQotfQot
CiBmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQogewogICAgIGlmICghbnJldHJ5KSB7Ci0gICAgICAg
ZG9uZSgpOworICAgICAgIGZpbmlzaEpTVGVzdCgpCiAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzcsNyArMzAsNyBAQCBmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQogICAgIGlmIChtYXJrZWRU
ZXh0ICE9IG51bGwpIHsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0
IiwgIndlbGxjb21lIik7CiAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VyRGVz
Y3JpcHRpb24iLCAid2VsY29tZSIpOwotICAgICAgICBkb25lKCk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOwogICAgIH0KIAogICAgIC8vIFdhaXQgdW50aWwgdGhlIGFzeW5jIHNwZWxsY2hlY2tp
bmcgaXMgZG9uZS4KQEAgLTQ4LDcgKzQxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CiAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0
Q2hlY2tlckVuYWJsZWQodHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAKICAgICB2YXIgc2VsID0gd2luZG93
LmdldFNlbGVjdGlvbigpOwogICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkZXN0aW5hdGlvbiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNz
cGVsbGVkLXdvcmQuaHRtbAppbmRleCA1OWFkYTVkYTgzYjBjZTYwZTlhMjM5N2NlOTM1YjQ0NTg1
YzNlYmEwLi4xZTM2ZjFhYjlmNzFlZTMyNjgyY2Q2ZTFkNjBkNDg4NTlhZWRlMzVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0
ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbApAQCAtMjEsNyAr
MjEsNyBAQCBmdW5jdGlvbiBpbnNlcnRUZXh0KHRleHQpIHsKIHNob3VsZEJlVHJ1ZSgnaW5zZXJ0
VGV4dCgieiIpOyBpbnNlcnRUZXh0KCJ6Iik7IGluc2VydFRleHQoIiAiKTsgaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKScpOwogCiBkZWJ1ZygnRW5hYmxlIGFzeW5j
aHJvbm91cyBzcGVsbGNoZWNraW5nLCBkZWxldGUgdHdvIGNoYXJhY3RlcnMsIGFuZCBpbnNlcnQg
YSBzcGFjZScpOwotdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKHRydWUpOwogCiB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIp
OwpAQCAtMzYsOCArMzYsNiBAQCBmdW5jdGlvbiB2ZXJpZnlNYXJrZXIoKSB7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgc2hvdWxkQmVGYWxzZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCAwLCAxKScpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIHdp
bmRvdy5zZXRUaW1lb3V0KHZlcmlmeU1hcmtlciwgMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLW1pc3Nw
ZWxsZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9tb3ZlLWN1cnNvci10by1taXNzcGVsbGVkLXdvcmQuaHRtbAppbmRleCA2MGZjMDJl
ZGYzMTRmZWQ1NWI1MjQzNDkwYWFlZTMwZGVlY2Q3NGM4Li4zMWQ3ZDU4ZmVkZGJmY2Y1NDkwOTZh
Nzc2NmFhM2RiYjVhM2E0MDg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLW1pc3NwZWxsZWQtd29yZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvbW92
ZS1jdXJzb3ItdG8tbWlzc3BlbGxlZC13b3JkLmh0bWwKQEAgLTEwLDcgKzEwLDcgQEAgZGVzY3Jp
cHRpb24oJ1Rlc3QgaWYgQ2hyb21lIFdlYktpdCBkb2VzIG5vdCByZW1vdmUgYSBtaXNzcGVsbGVk
IG1hcmtlciB3aGVuIG1vdmkKICAgICAgICAgICAgICdUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlIGEg
bWlzc3BlbGxlZCB3b3JkICJ6eiAiIGFuZCB0eXBlIGEgbGVmdC1hcnJvdyBrZXkgdG8gbW92ZSB0
aGUgY3Vyc29yIG9uIGl0LicgKwogICAgICAgICAgICAgJ1RoaXMgdGVzdCBzdWNjZWVkcyB3aGVu
ICJ6eiIgaXMgbWFya2VkIGFzIG1pc3NwZWxsZWQuJyk7CiAKLXRlc3RSdW5uZXIuc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiB2YXIgbm9kZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzcmMnKTsKIG5vZGUuZm9jdXMoKTsKIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CkBAIC0xOCw3ICsxOCw2IEBAIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CiBkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAnICcpOwogd2luZG93LmdldFNlbGVjdGlvbigp
Lm1vZGlmeSgnbW92ZScsICdiYWNrd2FyZCcsICdjaGFyYWN0ZXInKTsKIHNob3VsZEJlVHJ1ZSgn
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKScpOwotdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiA8L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193344</attachid>
            <date>2013-03-15 11:58:26 -0700</date>
            <delta_ts>2013-03-15 12:05:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112362-20130315115421.patch</filename>
            <type>text/plain</type>
            <size>30024</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJiMzZjYzZmOTQ4ODll
YTNlZTljMjM5NzM0Nzg2N2NiZjg1Y2ExYS4uZWJjODQwYmE1YTkyY2E3MTIxMzUxMmMyZmU1Zjll
NzRiMmMwYzg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTE0ICBSb3Vz
bGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIHVuaWZpZWQgdGV4dGNoZWNrZXIgdmFyaWFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGhlIHZhcmlhYmxlIG1fb3JpZ2luYWxVbmlmaWVkU3Bl
bGxDaGVja2VyRW5hYmxlZCBpcyBuZXZlciB1c2VkLiBUaGUgZ2VuZXJhdGVkCisgICAgICAgIGNv
ZGUgZnJvbSBTZXR0aW5ncy5pbiBhbHJlYWR5IGJhY2tzIHVwIGFuZCByZXN0b3JlcyB1bmlmaWVk
IHRleHRjaGVja2VyIHNldHRpbmcuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaDogUmVtb3ZlIHVudXN1ZWQgbV9vcmlnaW5hbFVuaWZpZWRTcGVsbENoZWNrZXJFbmFibGVk
IHZhcmlhYmxlLgorCiAyMDEzLTAzLTE1ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbVjhdIFN0b3JlIG1haW4gd29ybGQgYW5kIG5vbi1tYWluIHdvcmxk
IHRlbXBsYXRlcyBzZXBhcmF0ZWx5LgpAQCAtMTkyNCw2ICsxOTM2LDcgQEAKICAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlQ2VsbDo6bGF5b3V0KToKIAorCiAyMDEzLTAzLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBtb2RlIHRvIFJlc291cmNlTG9hZGVyIHRoYXQg
dGFrZXMgU2hhcmVkQnVmZmVycyBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBhbmQgbGVuZ3Rocy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggNTQ5YjBmYTQ1
ZmE0MGIyNmRjODQ4YTUyYTI1YWE3OGExNzNhMmM0OC4uMTg3NDJlMjRhYjlmMzMwODU5ZjNjNzYx
MzlhOTdkN2ZlM2IxZTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogICAgICAgICBib29sIG1fb3JpZ2luYWxT
dHlsZVNjb3BlZDsKICNlbmRpZgogICAgICAgICBFZGl0aW5nQmVoYXZpb3JUeXBlIG1fb3JpZ2lu
YWxFZGl0aW5nQmVoYXZpb3I7Ci0gICAgICAgIGJvb2wgbV9vcmlnaW5hbFVuaWZpZWRTcGVsbENo
ZWNrZXJFbmFibGVkOwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgIGJvb2wg
bV9vcmlnaW5hbFRleHRBdXRvc2l6aW5nRW5hYmxlZDsKICAgICAgICAgSW50U2l6ZSBtX29yaWdp
bmFsVGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTYxMmI0OTdjZWI2NmU3ZTgxMWFjNmM1
Yzc5ODJmNWZkZWIyNTVlOC4uNmI0MDY3ZjFlNmJjZjZjMWU4YzEzNjA4N2Y0OWVlZWI5ODBlMjlk
YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDEzLTAzLTE0ICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQgZnJvbSB0ZXN0IHJ1bm5lcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hh
bmcuCisKKyAgICAgICAgUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
IGZyb20gdGVzdCBydW5uZXJzLiBUaGUgc2V0dGluZyBpcyBub3cKKyAgICAgICAgaW4gaW50ZXJu
YWxzLnNldHRpbmdzLCBzbyBhbGwgcG9ydHMgY2FuIHNoYXJlIGl0LgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmg6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhv
ZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0Jl
cnJ5LmNwcDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0
aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
KSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFJ1bm5lci5oOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoKSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwu
Y3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBtZXRob2Qu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOiBSZW1vdmUg
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBtZXRob2QuCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06IFJlbW92ZSBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5l
clF0Lmg6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhv
ZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6IFJlbW92
ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBtZXRob2QuCisKIDIwMTMtMDMtMTUgIFplbm8gQWxi
aXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgc2ltcGxlIGdl
dHRlcnMgYW5kIHNldHRlcnMgZnJvbSBUZXN0UnVubmVyUXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHAKaW5kZXggZGFlY2NhZmU2ZGRlNWFlY2FmM2U0YTRjZjA2YmQ2MmY3YmUzODQ2NS4u
NzY4NGFkMWMzNjk5OWFjNzI2ZTA2OTlhNDdjNjg5NjExYWZkMDUwYyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTE1MjMsMTYgKzE1MjMsNiBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTTwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAot
c3RhdGljIEpTVmFsdWVSZWYgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0K
LSAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1
bWVudHNbMF0pKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19
Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAt
MjEzNCw3ICsyMTI0LDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVu
Y3Rpb25zKCkKICAgICAgICAgeyAic2V0V2luZG93SXNLZXkiLCBzZXRXaW5kb3dJc0tleUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQi
LCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0WFNTQXVkaXRvckVuYWJsZWQiLCBzZXRYU1NBdWRpdG9yRW5hYmxlZENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCi0gICAgICAgIHsgInNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
Iiwgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzaG93V2ViSW5zcGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2siLCBz
aW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAidGVzdE9uc2NyZWVuIiwgdGVzdE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCAxN2ZiNDA4ZGI5Zjg4NDAwMjVmNmFiOTE3NDdiY2E4
ZTc0YjM5YWZkLi5mMjNhYjEyMGQ3Y2I1ODFiM2Q1ZGQwNDVlMzkzYmU5OTM4Mjc1NTk2IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0yODksNyArMjg5LDYgQEAgcHVibGljOgogICAg
IGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb247IH0KIAogICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29s
KTsKLSAgICB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwog
ICAgIHZvaWQgc2hvd1dlYkluc3BlY3RvcigpOwogICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3Io
KTsKICAgICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5n
UmVmIHNjcmlwdCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IGJkMmYwMzQ1NzU4ZjAzYWZhMTk2MjVh
NDM0NDJiNjRmZDQ2ODJkNTAuLjBiMmQ1OGYxN2I5MDQ0Nzg0M2E3YThjMWNkNWYwN2IyZjc2NWJm
N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5l
ckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVz
dFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC01NzIsMTEgKzU3Miw2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6ZGVsZXRlQWxsTG9jYWxTdG9yYWdlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogaW50IFRlc3RSdW5uZXI6Om51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKIHsKICAgICByZXR1cm4gRHVt
cFJlbmRlclRyZWVTdXBwb3J0OjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0cyhCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFu
Y2UoKS0+cGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXggNDBmYjQ1NmJhZmY2YTNh
YTU3OGE2N2I0ZWI2ZDY4ZTMxN2ZhMWZhNS4uNTZmZmZkNzUzNTEwNzM4MjZkNzQ4Y2FjZjFhOWQz
MWQ2Y2UzZjE2NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTIyNSw3ICsyMjUsNiBAQCBU
ZXN0UnVubmVyOjpUZXN0UnVubmVyKFRlc3RJbnRlcmZhY2VzKiBpbnRlcmZhY2VzKQogICAgIGJp
bmRNZXRob2QoInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsICZUZXN0UnVubmVyOjpz
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpOwogICAgIGJpbmRNZXRob2QoIm92ZXJyaWRl
UHJlZmVyZW5jZSIsICZUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOwogICAgIGJpbmRN
ZXRob2QoInNldFBsdWdpbnNFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVk
KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIs
ICZUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk7CiAgICAg
YmluZE1ldGhvZCgic2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0VG91
Y2hEcmFnRHJvcEVuYWJsZWQpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtb2RpZnkgdGhlIHN0
YXRlIG9mIHRoZSBUZXN0UnVubmVyLgpAQCAtMTY1NCwxNSArMTY1Myw2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRz
LnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAgICAgIG1fZGVsZWdh
dGUtPnByZWZlcmVuY2VzKCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkID0gY3Bw
VmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pOwotICAgICAgICBtX2RlbGVnYXRlLT5hcHBseVBy
ZWZlcmVuY2VzKCk7Ci0gICAgfQotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCiB2b2lkIFRl
c3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4
IDFiMGM2ZDQ5MWRkYjUyZmM4ODE0NjBhZDk5OTk3OTMyODlkOGZkYzIuLjAyMjkxZjliMmJmNWQ4
Yjk1ZjA1ZjZlOTJhOGE3Yjg0ZjE2MTA3YWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTMwMiw5
ICszMDIsNiBAQCBwcml2YXRlOgogICAgIC8vIEVuYWJsZSBvciBkaXNhYmxlIHBsdWdpbnMuCiAg
ICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAKLSAgICAvLyBDaGFuZ2VzIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5nIGZsYWcg
b24gdGhlIHNldHRpbmdzLgotICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAgICAgdm9pZCBz
ZXRUb3VjaERyYWdEcm9wRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9U
ZXN0UnVubmVyRWZsLmNwcAppbmRleCBhOTlhM2I1ZWRjNzY4N2I0MmY0MjEyODg5NWRhOGRhN2Yz
NWMxZTdhLi5hNDNhZTA2N2M3MjZjMjdlMTgzNjcxYjI1YTczNTVmZGIzZjJmMDI5IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC02NzksMTEgKzY3OSw2
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sIGVuYWJs
ZWQpCiAgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoYnJv
d3Nlci0+bWFpblZpZXcoKSwgZW5hYmxlZCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAgIGV3
a192aWV3X2luc3BlY3Rvcl9zaG93KGJyb3dzZXItPm1haW5WaWV3KCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IGNkMTA0NGQwZDIzMzFlMmE0YTFl
Yzc3ZThkNDJmOTcyN2ZhYWRhNjYuLmJmZjAxMTVhZjFiYjE1N2QzYmMwNWUyOGZhNTVmZGQ4Yzkx
YWNhZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3Rr
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAg
LTc3OSwxMSArNzc5LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBnX29iamVjdF9zZXQod2ViU2V0dGluZ3MsICJlbmFibGUt
ZGV2ZWxvcGVyLWV4dHJhcyIsIGVuYWJsZWQsIE5VTEwpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0
b3IoKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF93ZWJfdmlldyhtYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQppbmRleCBiMzFjOWFkNzI3YjJlNjZmN2ZlN2I1Y2ExZDY4ZGJiNGU0N2JmZTY5Li5m
NDEwYzc1NWQyMmEzOTFkMmM2YTk1OTAyOGJiYmU5NDQxZjA1ZWEyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNzgyLDExICs3ODIsNiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZDplbmFibGVkXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDplbmFibGVk
XTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gaW5zcGVjdG9yXSBzaG93Om5pbF07CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAppbmRleCAxOGQwZDdhYzUxY2VlOTdiZWJiZjhhOTA1ODA3
YzNkOGUzYzkwZjA4Li4xZGRmOWM1MWM0MDk4NjJlZGM0MDAxYzNlZjZiYThmMWU5YmMyZWM4IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKQEAgLTQyMSwxMSArNDIx
LDYgQEAgdm9pZCBUZXN0UnVubmVyUXQ6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShR
V2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIGVuYWJsZWQpOwogfQogCi12b2lk
IFRlc3RSdW5uZXJRdDo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkK
LXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIHZvaWQgVGVzdFJ1bm5lclF0
OjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygp
LT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVl
KTsKQEAgLTExNjgsMTAgKzExNjMsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0b3JhZ2VEYXRh
YmFzZUlkbGVJbnRlcnZhbChkb3VibGUpCiB7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsKLX0KLQogdm9pZCBUZXN0UnVu
bmVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGZsYWcpCiB7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4IDRlM2NkOTlkODU0YWMyMzk5M2I4NDk2N2YwYjhk
MDQwMDI2MmIxYTYuLjk2YTYxMTE1YTVmNTliN2ZmNmZhMWUxMGYyZDk5OTFlOTZlMWZhNDQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0xMjgsNyArMTI4LDYgQEAg
cHVibGljIFFfU0xPVFM6CiAgICAgUVN0cmluZyBkZWNvZGVIb3N0TmFtZShjb25zdCBRU3RyaW5n
JiBob3N0KTsKICAgICB2b2lkIGR1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3QgeyB9CiAgICAgdm9p
ZCBzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzaG93V2ViSW5zcGVjdG9y
KCk7CiAgICAgdm9pZCBjbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHZvaWQgZXZhbHVhdGVJbldl
Ykluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCBkZDRkODczMWRmZWU0ODNk
ZmUwZTliODcxNTJmYTY0M2M2ZGEwYzc5Li5kNWI5ODEwNzI2ZDgzYzU4Zjg0NGRlMzFjNTYzZDY2
ODA1NmZiNzBhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5l
cldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
CkBAIC05NTIsMTEgKzk1Miw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgcHJlZnNQcml2YXRlLT5zZXREZXZlbG9wZXJFeHRy
YXNFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAgIENP
TVB0cjxJV2ViVmlldz4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVy
V3guY3BwCmluZGV4IGY0YmI5NGEwZTNkMjk2Y2FmN2MwODZjMWRmYzk3N2JjYzY2ZTY5OTQuLmJi
OGQ3MWE2ZjJhNDFkYzc0YWY1MDU2ZmFiNmExNzRjMzAyOWNmN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtNDUwLDExICs0NTAsNiBAQCB2b2lkIFRlc3RS
dW5uZXI6OmFib3J0TW9kYWwoKQogewogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzLgotfQotCiBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTU3RyaW5nUmVmIHRhcmdldCwgSlNPYmplY3RSZWYgb3B0aW9uc0FycmF5KQogewog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLWhpZHBpLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL2dyYW1tYXItbWFya2Vycy1oaWRwaS5odG1sCmluZGV4IDEwMTE5ZWNjZGY5MDRj
YWQ3MDUzOTExNTQ4ZTFhYzhiYmE1OTUyOGEuLjA4NDZhMmY1YzkxYjJhNmQwZDI3NTA4MzNlMzA1
MTFlYjQ5YjllMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3Jh
bW1hci1tYXJrZXJzLWhpZHBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbApAQCAtNSwxMCArNSwxMSBAQAogPGRpdiBpZD0i
c291cmNlIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj5Zb3UgaGFz
IHRoZSByaWdodC48L2Rpdj4KIDxkaXYgaWQ9InRhcmdldCIgY29udGVudGVkaXRhYmxlPSJ0cnVl
IiBzcGVsbGNoZWNrPSJ0cnVlIj48L2Rpdj4KIDxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFs
cykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQodHJ1ZSk7CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gICAgdGVz
dFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAgICB0
ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
IHRyaWFsKCk7CiAgICAgfSk7CkBAIC0yNSwxMCArMjYsOCBAQCB2YXIgcmV0cnkgPSAxMDsKIGZ1
bmN0aW9uIHRyaWFsKCkgewogICAgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMuaGFzR3JhbW1h
ck1hcmtlcih0YXJnZXQsIDQsIDMpOwogICAgIGlmIChoYXNNYXJrZXIgfHwgLS1yZXRyeSA9PSAw
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd2luZG93LnNldFRp
bWVvdXQodHJpYWwsIDEwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvZ3JhbW1hci1tYXJrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dy
YW1tYXItbWFya2Vycy5odG1sCmluZGV4IDJhOTE4ODhhYjc2ZWVjYjUyMzcxYThlMWQwYTg5N2Iz
ZTY0MmI3YzMuLmUwODJiZjY4MWE2NjYzY2RhMjVjNWZhNDMzOGQ3NDI0MTI1NTcyZDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMuaHRtbApA
QCAtOCw4ICs4LDkgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogfQor
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiB2YXIgc291cmNlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NvdXJjZScpOwogd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFs
bENoaWxkcmVuKHNvdXJjZSk7CkBAIC0yMiwxMCArMjMsOCBAQCB2YXIgcmV0cnkgPSAxMDsKIGZ1
bmN0aW9uIHRyaWFsKCkgewogICAgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMuaGFzR3JhbW1h
ck1hcmtlcih0YXJnZXQsIDQsIDMpOwogICAgIGlmIChoYXNNYXJrZXIgfHwgLS1yZXRyeSA9PSAw
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd2luZG93LnNldFRp
bWVvdXQodHJpYWwsIDEwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvZ3JhbW1hci1wYXN0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFt
bWFyLXBhc3RlLmh0bWwKaW5kZXggNzhkZGNhN2M5MTAxYWUxYzI4YjE1NTIzZWNjYjg2ZGZmZWEw
ZjVlYy4uYTdjMjNhZDQ0YWNiMzczYzI1YTVhMzM5ZTdkMjg2OTllMWY2OGEwZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWwKQEAgLTQ4LDgg
KzQ4LDYgQEAgZnVuY3Rpb24gZG9uZSgpCiAgICAgaWYgKG5leHQpCiAgICAgICAgIHJldHVybiB3
aW5kb3cuc2V0VGltZW91dChuZXh0LCAwKTsKICAgICB0ZXN0Um9vdC5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwotCi0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChmYWxzZSk7CiAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKQEAgLTEzNiw5
ICsxMzQsOCBAQCBmdW5jdGlvbiBwYXN0ZUFuZFZlcmlmeShzb3VyY2UsIGRlc3QsIGV4cGVjdGVk
TWFya2VkKQogICAgIHRyaWFsKCk7CiB9OwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwot
fQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiB0ZXN0cy5wdXNoKGZ1bmN0aW9u
KCkgeyBwYXN0ZUFuZFZlcmlmeSh0ZXN0U291cmNlUGxhaW4sIHRlc3RFZGl0YWJsZSwgWyJoYXMi
XSk7IH0pOwogdGVzdHMucHVzaChmdW5jdGlvbigpIHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJj
ZURlY29yYXRlZCwgdGVzdEVkaXRhYmxlLCBbImEiXSk7IH0pOyAvLyBDaGVja3Mgb25seSAnYScu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGls
LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwppbmRl
eCAwOTRhNTNiMjg5Njg4ZDgyZGU0ZGU3MzY3YTljOTQzMzRmNTYyNDk0Li5iYzE1ZTBlYjk2OTYw
Y2I2NWFhNmY1ZWZiMGIxNGFkOTQxZmI0NGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvcmVzb3VyY2VzL3V0aWwuanMKQEAgLTIwLDEzICsyMCwxMyBAQCBmdW5jdGlvbiB2
ZXJpZnlTcGVsbFRlc3QobnJldHJ5KQogCiBmdW5jdGlvbiBpbml0U3BlbGxUZXN0KHRlc3RFbGVt
ZW50SWQsIHRlc3RUZXh0LCB0ZXN0RnVuY3Rpb24pCiB7Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzIHx8ICF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LnRlc3RSdW5uZXIuc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMg
fHwgIXdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIGxvZygiRkFJTCBJbmNvbXBsZXRlIHRl
c3QgZW52aXJvbm1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB0ZXN0RnVuY3Rp
b25DYWxsYmFjayA9IHRlc3RGdW5jdGlvbjsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKHRydWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKGZhbHNlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRl
eHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzCmluZGV4IGYz
MDlhODc4NDgyYmE3OGYxM2U0MzdiYWMxNjVjYmNmZGNjZGZhYWEuLjVkNDhlZDBmNmY1OGJhYmI5
YmQ3NzMyZTNkZTQ3M2UzMzc1NDMwNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcwpAQCAt
MzksOCArMzksNiBAQCBmdW5jdGlvbiBkb25lKCkKICAgICBpZiAobmV4dCkKICAgICAgICAgcmV0
dXJuIHdpbmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwogICAgIHRlc3RSb290LnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7Ci0KLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGZhbHNlKTsKICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIApAQCAt
OTQsOCArOTIsOCBAQCBmdW5jdGlvbiBwYXN0ZUFuZFZlcmlmeShzb3VyY2UsIGRlc3QsIGV4cGVj
dGVkTWFya2VkKQogICAgIHRyaWFsKCk7CiB9OwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsK
K2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogdGVzdHMucHVzaChmdW5jdGlvbigp
IHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZVBsYWluLCB0ZXN0SW5wdXQsIFtbMCwgMl1dKTsg
fSk7CiB0ZXN0cy5wdXNoKGZ1bmN0aW9uKCkgeyBwYXN0ZUFuZFZlcmlmeSh0ZXN0U291cmNlRGVj
b3JhdGVkLCB0ZXN0SW5wdXQsIFtbMCwgMl1dKTsgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtbXV0YXRpb24uaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1tdXRhdGlvbi5odG1sCmlu
ZGV4IDRiMDgyZTJjNTMzMDZiMmFjN2Q2YmY0MGQzNzBiNzlkNzQ1OTZjOTcuLjZmMmMwZDg4ZmEy
NTc4MGMxY2RhYzc4ZTkwODA0M2Y3YjJmMDVlN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1tdXRhdGlvbi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1tdXRhdGlvbi5odG1sCkBA
IC0zMCwxMyArMzAsMTMgQEAgZGVzY3JpcHRpb24oCiAKIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKIAotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKLX0KIAotaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CitpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKK30KIAogdmFyIHNvdXJjZUlk
cyA9IFsnc291cmNlJ107CiB2YXIgZGVzdEVsZW1zID0gWyd0ZXh0YXJlYScsICdpbnB1dCcsICdj
b250ZW50ZWRpdGFibGUnXTsKQEAgLTc2LDEzICs3Niw4IEBAIGZ1bmN0aW9uIGRvVGVzdElmQW55
KCkgewogICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKSk7CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J21vdmUtdGFyZ2V0JykpOwogCi0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKLQot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KIH0KIAogdmFyIHJlcXVlc3RJ
ZDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1h
c3luYy1yZW1vdmUtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbAppbmRleCA2ZGY4NTBmM2JiMTM4OGExNzUz
MDg5MDQ5YTUyY2VlZjQyNTFiYTNjLi5jNzhmOWUwODJkZTlhNDM3ZjE2NDY1YjgxNmZmMDMzMzJi
MzQ1NTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1sCkBAIC01LDcgKzUsNyBAQAog
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwKaW5k
ZXggMDIzODNjODBmNjdiOWNkZDViYWNiYTUzYTNmMjg2N2Q5NDRkZjYzNC4uNDA4N2U4ZjRlZDZj
ZmMwY2Q3ZmNhMmFjMDI2NWM2YzM3ZDNkMDdjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwKQEAgLTIyLDEyICsyMiwxMyBAQCBk
ZXNjcmlwdGlvbigiVGVzdCBmb3IgVW5pZmllZCBTcGVsbCBDaGVja2VyICYgQXN5bmMgU3BlbGwg
Q2hlY2tlci4iKTsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAotaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCitpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsK
K30KIAogdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KTsKIGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuKG5vZGUpIHsKQEAgLTU2LDEzICs1Nyw4IEBAIGZ1
bmN0aW9uIGRvVGVzdElmQW55KCkgewogCiAgICAgLy8gTm8gbW9yZSB0ZXN0cy4KICAgICByZW1v
dmVDaGlsZHJlbihjb250YWluZXIpOwotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7
Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9CiB9CiAK
IGZ1bmN0aW9uIGNyZWF0ZUVkaXRhYmxlRWxlbWVudChpZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWRpc2FibGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZGlzYWJsZWQuaHRt
bAppbmRleCA5MWUyNDliZDFkNmFmNzc0MGExYmUyNTA2MmNhOGJkYmFjNzY3YTM2Li44OWZlYjhm
Zjc2Mjk4YzM2MzJiMDc3ZTA2YjcyNjA0ZDFmYzE2MTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZGlzYWJsZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZGlzYWJsZWQuaHRt
bApAQCAtMzEsNyArMzEsNyBAQCBzaG91bGRCZVRydWUoJ2ludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcihkb2N1bWVudCwgMCwgMiknKTsKIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxD
aGlsZHJlbihzcmNOb2RlKTsKIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdDb3B5Jyk7CiAKLXRlc3RS
dW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAK
IHZhciBkc3ROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RzdCcpOwogZHN0Tm9kZS5m
b2N1cygpOwpAQCAtNTEsNyArNTEsNiBAQCBmdW5jdGlvbiB2ZXJpZnlNYXJrZXIoKSB7CiAgICAg
ICAgIHRlc3RGYWlsZWQoJ1RoZSBkZXN0aW5hdGlvbiBub2RlIHNob3VsZCBub3QgaGF2ZSBhIG1h
cmtlci4nKTsKICAgICBlbHNlCiAgICAgICAgIHRlc3RQYXNzZWQoJ1RoZSBkZXN0aW5hdGlvbiBu
b2RlIGRvZXMgbm90IGhhdmUgYW55IG1hcmtlcnMuJyk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgZmluaXNoSlNUZXN0KCk7
CiB9CiB3aW5kb3cuc2V0VGltZW91dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVyaW9kKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1xdWV1ZS5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWwKaW5k
ZXggYzcxZTNkNTg3ZDgwNTQxZjFhNmY2ZWZkYjg1ZmY4YmMyOTEwY2M1OS4uYjcyMDVhZTBhZDBh
ZjA0Mzg2ZGMwN2Q2YzkyYzRiOWIxZDczMTBmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWwKQEAgLTEwLDEwICsxMCwxMCBAQAog
PHNjcmlwdD4KIGRlc2NyaXB0aW9uKCdGb3IgQnVnIDcyOTM5OiBBc3luY2hyb25vdXMgU3BlbGxD
aGVja2VyIHNob3VsZCBjb25zaWRlciBtdWx0aXBsZSByZXF1ZXN0cy4nKTsKIAotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCh0cnVlKTsKLX0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAog
dmFyIHRlc3RSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiBkb2N1bWVudC5i
b2R5Lmluc2VydEJlZm9yZSh0ZXN0Um9vdCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKQEAg
LTgwLDEwICs4MCw4IEBAIGZ1bmN0aW9uIHZlcmlmeUlmQW55KCkKICAgICB9CiAKICAgICB0ZXN0
Um9vdC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGZhbHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0KIH0KIAogZnVuY3Rpb24gZmluZEZpcnN0VGV4dE5vZGUobm9k
ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1z
ZXF1ZW5jZW51bS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LXNlcXVlbmNlbnVtLmh0bWwKaW5kZXggNDU0M2ZkNWFmOTMwODg5YzlmN2QyOTg2MGU4ZGY2ODE0
NmI0ZTg2OS4uMGQwZTY3NzA4MDE0NGQ2ZTRiY2UwYmQxZjQ0Mzc2Y2Y4MDRkN2U2MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXNlcXVlbmNlbnVt
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXNlcXVl
bmNlbnVtLmh0bWwKQEAgLTEwLDkgKzEwLDkgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignRm9y
IEJ1ZyA3MzUxMTogSW50ZXJuYWxzIHNob3VsZCBoYXZlIGEgbWV0aG9kIHRvIHJldHVybiB0aGUg
bWF4IHNlcXVlbmNlIG51bWJlciBvZiBzcGVsbGNoZWNrIHJlcXVlc3QuJyk7CiAKLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiB9CiAKIHZhciB0ZXN0Um9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNzcsMTAgKzc3LDcgQEAgZnVuY3Rpb24gdmVy
aWZ5SWZBbnkoKQogICAgIH0KIAogICAgIHRlc3RSb290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9CisgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKIGZ1bmN0aW9uIGNvcHlBbmRQ
YXN0ZShzb3VyY2UsIGRlc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLW1hcmtlci1kZXNjcmlwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItZGVzY3JpcHRpb24uaHRtbAppbmRleCAzYjJjNTU2
YWZlOWY3MjZmMDg3YTRhYmRmYmVlZjZjNGE3ZTQ3NjUzLi42MjY0YzU1ZDVkZTE1YmFhOWNiMDUw
OTU2ZjYyY2VjYmI4ZTAzMjI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLW1hcmtlci1kZXNjcmlwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9uLmh0bWwKQEAgLTEwLDE3
ICsxMCwxMCBAQAogCiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICB0ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKLSAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7Ci0gICAg
ZmluaXNoSlNUZXN0KCkKLX0KLQogZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKIHsKICAgICBpZiAo
IW5yZXRyeSkgewotICAgICAgIGRvbmUoKTsKKyAgICAgICBmaW5pc2hKU1Rlc3QoKQogICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTM3LDcgKzMwLDcgQEAgZnVuY3Rpb24gdmVyaWZ5KG5yZXRy
eSkKICAgICBpZiAobWFya2VkVGV4dCAhPSBudWxsKSB7CiAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygibWFya2VkVGV4dCIsICJ3ZWxsY29tZSIpOwogICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIm1hcmtlckRlc2NyaXB0aW9uIiwgIndlbGNvbWUiKTsKLSAgICAgICAgZG9uZSgp
OworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9CiAKICAgICAvLyBXYWl0IHVudGlsIHRo
ZSBhc3luYyBzcGVsbGNoZWNraW5nIGlzIGRvbmUuCkBAIC00OCw3ICs0MSw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogewogICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOwotICAgIHRlc3RSdW5uZXIu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogCiAg
ICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICB2YXIgZGVzdGluYXRpb24g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3Nw
ZWxsZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwKaW5kZXggNTlhZGE1ZGE4M2IwY2U2
MGU5YTIzOTdjZTkzNWI0NDU4NWMzZWJhMC4uMWUzNmYxYWI5ZjcxZWUzMjY4MmNkNmUxZDYwZDQ4
ODU5YWVkZTM1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13
b3JkLmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAgZnVuY3Rpb24gaW5zZXJ0VGV4dCh0ZXh0KSB7CiBz
aG91bGRCZVRydWUoJ2luc2VydFRleHQoInoiKTsgaW5zZXJ0VGV4dCgieiIpOyBpbnNlcnRUZXh0
KCIgIik7IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMiknKTsKIAog
ZGVidWcoJ0VuYWJsZSBhc3luY2hyb25vdXMgc3BlbGxjaGVja2luZywgZGVsZXRlIHR3byBjaGFy
YWN0ZXJzLCBhbmQgaW5zZXJ0IGEgc3BhY2UnKTsKLXRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKIAogdGVzdFJ1bm5lci5leGVjQ29tbWFu
ZCgiRGVsZXRlQmFja3dhcmQiKTsKQEAgLTM2LDggKzM2LDYgQEAgZnVuY3Rpb24gdmVyaWZ5TWFy
a2VyKCkgewogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNob3VsZEJlRmFsc2UoJ2ludGVy
bmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMSknKTsKLSAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7Ci0gICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgZmlu
aXNoSlNUZXN0KCk7CiB9CiB3aW5kb3cuc2V0VGltZW91dCh2ZXJpZnlNYXJrZXIsIDEpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9t
b3ZlLWN1cnNvci10by1taXNzcGVsbGVkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tbWlzc3BlbGxlZC13b3Jk
Lmh0bWwKaW5kZXggNjBmYzAyZWRmMzE0ZmVkNTViNTI0MzQ5MGFhZWUzMGRlZWNkNzRjOC4uMzFk
N2Q1OGZlZGRiZmNmNTQ5MDk2YTc3NjZhYTNkYmI1YTNhNDA4NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1t
aXNzcGVsbGVkLXdvcmQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLW1pc3NwZWxsZWQtd29yZC5odG1sCkBAIC0x
MCw3ICsxMCw3IEBAIGRlc2NyaXB0aW9uKCdUZXN0IGlmIENocm9tZSBXZWJLaXQgZG9lcyBub3Qg
cmVtb3ZlIGEgbWlzc3BlbGxlZCBtYXJrZXIgd2hlbiBtb3ZpCiAgICAgICAgICAgICAnVG8gdGVz
dCBtYW51YWxseSwgdHlwZSBhIG1pc3NwZWxsZWQgd29yZCAienogIiBhbmQgdHlwZSBhIGxlZnQt
YXJyb3cga2V5IHRvIG1vdmUgdGhlIGN1cnNvciBvbiBpdC4nICsKICAgICAgICAgICAgICdUaGlz
IHRlc3Qgc3VjY2VlZHMgd2hlbiAienoiIGlzIG1hcmtlZCBhcyBtaXNzcGVsbGVkLicpOwogCi10
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUp
OwogdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3JjJyk7CiBub2RlLmZvY3Vz
KCk7CiBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOwpAQCAt
MTgsNyArMTgsNiBAQCBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAn
eicpOwogZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJyAnKTsKIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ21vdmUnLCAnYmFja3dhcmQnLCAnY2hhcmFjdGVy
Jyk7CiBzaG91bGRCZVRydWUoJ2ludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwg
MCwgMiknKTsKLXRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
ZmFsc2UpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193347</attachid>
            <date>2013-03-15 12:05:08 -0700</date>
            <delta_ts>2013-03-15 13:00:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112362-20130315120103.patch</filename>
            <type>text/plain</type>
            <size>33467</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJiMzZjYzZmOTQ4ODll
YTNlZTljMjM5NzM0Nzg2N2NiZjg1Y2ExYS4uMjBmZDVkMmVmYjA4NTY0MmY1ZmQyNjBjMTMyODI2
ZmUyNGIyNDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTE0ICBSb3Vz
bGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIHVuaWZpZWQgdGV4dGNoZWNrZXIgdmFyaWFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGhlIHZhcmlhYmxlIG1fb3JpZ2luYWxVbmlmaWVkU3Bl
bGxDaGVja2VyRW5hYmxlZCBpcyBuZXZlciB1c2VkLiBUaGUgZ2VuZXJhdGVkCisgICAgICAgIGNv
ZGUgZnJvbSBTZXR0aW5ncy5pbiBhbHJlYWR5IGJhY2tzIHVwIGFuZCByZXN0b3JlcyB1bmlmaWVk
IHRleHRjaGVja2VyIHNldHRpbmcuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaDogUmVtb3ZlIHVudXN1ZWQgbV9vcmlnaW5hbFVuaWZpZWRTcGVsbENoZWNrZXJFbmFibGVk
IHZhcmlhYmxlLgorCiAyMDEzLTAzLTE1ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbVjhdIFN0b3JlIG1haW4gd29ybGQgYW5kIG5vbi1tYWluIHdvcmxk
IHRlbXBsYXRlcyBzZXBhcmF0ZWx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaAppbmRleCA1NDliMGZhNDVmYTQwYjI2ZGM4NDhhNTJhMjVhYTc4YTE3M2EyYzQ4Li4x
ODc0MmUyNGFiOWYzMzA4NTlmM2M3NjEzOWE5N2Q3ZmUzYjFlNzI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIGJvb2wgbV9vcmlnaW5hbFN0eWxlU2NvcGVkOwogI2VuZGlmCiAgICAgICAgIEVkaXRp
bmdCZWhhdmlvclR5cGUgbV9vcmlnaW5hbEVkaXRpbmdCZWhhdmlvcjsKLSAgICAgICAgYm9vbCBt
X29yaWdpbmFsVW5pZmllZFNwZWxsQ2hlY2tlckVuYWJsZWQ7CiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKICAgICAgICAgYm9vbCBtX29yaWdpbmFsVGV4dEF1dG9zaXppbmdFbmFibGVkOwog
ICAgICAgICBJbnRTaXplIG1fb3JpZ2luYWxUZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBl
NjEyYjQ5N2NlYjY2ZTdlODExYWM2YzVjNzk4MmY1ZmRlYjI1NWU4Li42YjQwNjdmMWU2YmNmNmMx
ZThjMTM2MDg3ZjQ5ZWVlYjk4MGUyOWRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTMtMDMtMTQgIFJvdXNsYW4g
U29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCBmcm9tIHRlc3QgcnVubmVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBSZW1vdmUgc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgZnJvbSB0ZXN0IHJ1bm5lcnMuIFRoZSBzZXR0aW5nIGlz
IG5vdworICAgICAgICBpbiBpbnRlcm5hbHMuc2V0dGluZ3MsIHNvIGFsbCBwb3J0cyBjYW4gc2hh
cmUgaXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDogUmVtb3Zl
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6IFJlbW92ZSBzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bTogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHA6IFJlbW92ZSBzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9U
ZXN0UnVubmVyV2luLmNwcDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5j
cHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4K
KwogMjAxMy0wMy0xNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIFJlbW92ZSBzaW1wbGUgZ2V0dGVycyBhbmQgc2V0dGVycyBmcm9tIFRlc3RSdW5uZXJR
dApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBkYWVjY2FmZTZkZGU1YWVjYWYz
ZTRhNGNmMDZiZDYyZjdiZTM4NDY1Li43Njg0YWQxYzM2OTk5YWM3MjZlMDY5OWE0N2M2ODk2MTFh
ZmQwNTBjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTUyMywxNiArMTUy
Myw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
LXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAg
ICBjb250cm9sbGVyLT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgc2hvd1dlYkluc3Bl
Y3RvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBUZXN0UnVu
bmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMTM0LDcgKzIxMjQsNiBAQCBKU1N0YXRpY0Z1bmN0aW9u
KiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRXaW5kb3dJc0tl
eSIsIHNldFdpbmRvd0lzS2V5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNj
cmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRYU1NBdWRpdG9yRW5hYmxlZCIsIHNldFhT
U0F1ZGl0b3JFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAic2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiLCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93
V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2ltdWxhdGVMZWdhY3lX
ZWJOb3RpZmljYXRpb25DbGljayIsIHNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2tD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXN0T25zY3JlZW4iLCB0ZXN0T25zY3JlZW5D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDE3ZmI0MDhk
YjlmODg0MDAyNWY2YWI5MTc0N2JjYThlNzRiMzlhZmQuLmYyM2FiMTIwZDdjYjU4MWIzZDVkZDA0
NWUzOTNiZTk5MzgyNzU1OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTI4OSw3
ICsyODksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25z
dCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCiAgICAgdm9pZCBzZXREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzaG93V2ViSW5zcGVjdG9yKCk7CiAgICAg
dm9pZCBjbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXgg
YmQyZjAzNDU3NThmMDNhZmExOTYyNWE0MzQ0MmI2NGZkNDY4MmQ1MC4uMGIyZDU4ZjE3YjkwNDQ3
ODQzYTdhOGMxY2Q1ZjA3YjJmNzY1YmY3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTU3MiwxMSAr
NTcyLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpkZWxldGVBbGxMb2NhbFN0b3JhZ2UoKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBp
bnQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6Om51bWJlck9mUGVuZGlu
Z0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cAppbmRleCA0MGZiNDU2YmFmZjZhM2FhNTc4YTY3YjRlYjZkNjhlMzE3ZmExZmE1Li41NmZmZmQ3
NTM1MTA3MzgyNmQ3NDhjYWNmMWE5ZDMxZDZjZTNmMTY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cApAQCAtMjI1LDcgKzIyNSw2IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoVGVzdEludGVyZmFj
ZXMqIGludGVyZmFjZXMpCiAgICAgYmluZE1ldGhvZCgic2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzIiwgJlRlc3RSdW5uZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk7CiAg
ICAgYmluZE1ldGhvZCgib3ZlcnJpZGVQcmVmZXJlbmNlIiwgJlRlc3RSdW5uZXI6Om92ZXJyaWRl
UHJlZmVyZW5jZSk7CiAgICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmVGVzdFJ1
bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQpOwotICAgIGJpbmRNZXRob2QoInNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRUb3VjaERyYWdEcm9wRW5hYmxl
ZCIsICZUZXN0UnVubmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk7CiAKICAgICAvLyBUaGUg
Zm9sbG93aW5nIG1vZGlmeSB0aGUgc3RhdGUgb2YgdGhlIFRlc3RSdW5uZXIuCkBAIC0xNjU0LDE1
ICsxNjUzLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwo
KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29s
KCkpIHsKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cHJlZmVyZW5jZXMoKS0+YXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50c1swXSk7Ci0gICAg
ICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5z
ZXROdWxsKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsK
ICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmgKaW5kZXggMWIwYzZkNDkxZGRiNTJmYzg4MTQ2MGFkOTk5OTc5MzI4
OWQ4ZmRjMi4uMDIyOTFmOWIyYmY1ZDhiOTVmMDVmNmU5MmE4YTdiODRmMTYxMDdhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaApAQCAtMzAyLDkgKzMwMiw2IEBAIHByaXZhdGU6CiAgICAgLy8gRW5hYmxl
IG9yIGRpc2FibGUgcGx1Z2lucy4KICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIENoYW5nZXMgYXN5bmNocm9u
b3VzIHNwZWxsY2hlY2tpbmcgZmxhZyBvbiB0aGUgc2V0dGluZ3MuCi0gICAgdm9pZCBzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KICAgICB2b2lkIHNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IGE5OWEzYjVlZGM3
Njg3YjQyZjQyMTI4ODk1ZGE4ZGE3ZjM1YzFlN2EuLmE0M2FlMDY3YzcyNmMyN2UxODM2NzFiMjVh
NzM1NWZkYjNmMmYwMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0
UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVm
bC5jcHAKQEAgLTY3OSwxMSArNjc5LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9k
ZXZlbG9wZXJfZXh0cmFzX3NldChicm93c2VyLT5tYWluVmlldygpLCBlbmFibGVkKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dl
Ykluc3BlY3RvcigpCiB7CiAgICAgZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3coYnJvd3Nlci0+bWFp
blZpZXcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5l
ckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5k
ZXggY2QxMDQ0ZDBkMjMzMWUyYTRhMWVjNzdlOGQ0MmY5NzI3ZmFhZGE2Ni4uYmZmMDExNWFmMWJi
MTU3ZDNiYzA1ZTI4ZmE1NWZkZDhjOTFhY2FmYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcApAQCAtNzc5LDExICs3NzksNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGdfb2JqZWN0X3Nl
dCh3ZWJTZXR0aW5ncywgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgZW5hYmxlZCwgTlVMTCk7
CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoYm9vbCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIHZvaWQgVGVz
dFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGIzMWM5YWQ3MjdiMmU2NmY3ZmU3
YjVjYTFkNjhkYmI0ZTQ3YmZlNjkuLmY0MTBjNzU1ZDIyYTM5MWQyYzZhOTU5MDI4YmJiZTk0NDFm
MDVlYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC03
ODIsMTEgKzc4Miw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBz
ZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkOmVuYWJsZWRdOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAg
ICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkOmVuYWJsZWRdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJ
bnNwZWN0b3IoKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNob3c6
bmlsXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IDE4ZDBk
N2FjNTFjZWU5N2JlYmJmOGE5MDU4MDdjM2Q4ZTNjOTBmMDguLjFkZGY5YzUxYzQwOTg2MmVkYzQw
MDFjM2VmNmJhOGYxZTliYzJlYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L1Rlc3RSdW5uZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5l
clF0LmNwcApAQCAtNDIxLDExICs0MjEsNiBAQCB2b2lkIFRlc3RSdW5uZXJRdDo6c2V0RGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0
dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCwgZW5hYmxlZCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
LX0KLQogdm9pZCBUZXN0UnVubmVyUXQ6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAgIG1fZHJ0
LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVs
b3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOwpAQCAtMTE2OCwxMCArMTE2Myw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkKIHsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KQotewotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZmxh
ZykKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJR
dC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKaW5kZXggNGUzY2Q5
OWQ4NTRhYzIzOTkzYjg0OTY3ZjBiOGQwNDAwMjYyYjFhNi4uOTZhNjExMTVhNWY1OWI3ZmY2ZmEx
ZTEwZjJkOTk5MWU5NmUxZmE0NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGVzdFJ1bm5lclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0
LmgKQEAgLTEyOCw3ICsxMjgsNiBAQCBwdWJsaWMgUV9TTE9UUzoKICAgICBRU3RyaW5nIGRlY29k
ZUhvc3ROYW1lKGNvbnN0IFFTdHJpbmcmIGhvc3QpOwogICAgIHZvaWQgZHVtcFNlbGVjdGlvblJl
Y3QoKSBjb25zdCB7IH0KICAgICB2b2lkIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCk7
Ci0gICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAg
ICB2b2lkIHNob3dXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7
CiAgICAgdm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3Ry
aW5nJiBzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RS
dW5uZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
CmluZGV4IGRkNGQ4NzMxZGZlZTQ4M2RmZTBlOWI4NzE1MmZhNjQzYzZkYTBjNzkuLmQ1Yjk4MTA3
MjZkODNjNThmODQ0ZGUzMWM1NjNkNjY4MDU2ZmI3MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTk1MiwxMSArOTUyLDYgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBwcmVmc1By
aXZhdGUtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dl
Ykluc3BlY3RvcigpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKaW5kZXggZjRiYjk0YTBlM2QyOTZjYWY3YzA4
NmMxZGZjOTc3YmNjNjZlNjk5NC4uYmI4ZDcxYTZmMmE0MWRjNzRhZjUwNTZmYWI2YTE3NGMzMDI5
Y2Y3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCkBAIC00NTAs
MTEgKzQ1MCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWJvcnRNb2RhbCgpCiB7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIGJvb2wgVGVzdFJ1bm5lcjo6Zmlu
ZFN0cmluZyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdGFyZ2V0LCBKU09iamVj
dFJlZiBvcHRpb25zQXJyYXkpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1
NGJiMzkxZGRhMzU4MzNjNTQzMDdkYWNhMjlkMDNjNzdhNGJmOTUuLmRiNzU1ZmYxMmJmY2U2ODVh
N2NkOGNlZWE3NzVjMDY2N2IxODM3MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0x
NCAgUm91c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCB0byBpbnRlcm5hbHMuc2V0
dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENo
YW5nZWQgdGhlIHRlc3RzIGZyb20gdXNpbmcgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKQorICAgICAgICB3aXRoIHBvcnQtc3BlY2lmaWMgaW1wbGVt
ZW50YXRpb25zIHRvIHVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCkKKyAgICAgICAgd2l0aCBvbmUgY29tbW9uIGltcGxlbWVudGF0
aW9uLCBzaW1pbGFyIHRvIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKGJvb2wpLgorICAgICAgICBDaGFuZ2VkIHRoZSB0ZXN0cyB0byBub3QgcmVzZXQgdGhl
c2Ugc2V0dGluZ3Mgd2hlbiB0aGV5IGZpbmlzaCwgYmVjYXVzZSB0aGUgdGVzdCBoYXJuZXNzIHJl
c2V0cworICAgICAgICB0aGUgc2V0dGluZ3MgYXV0b21hdGljYWxseS4KKworICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLWhpZHBpLmh0bWw6IFVzZSBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVh
ZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wp
LgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLmh0bWw6IFVzZSBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1wYXN0ZS5odG1s
OiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91
dGlsLmpzOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3Njcmlw
dC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtbXV0YXRpb24uaHRtbDogVXNlIGludGVy
bmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBp
bnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92
ZS1mcmFtZS5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stYXN5bmMuaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWRpc2FibGVkLmh0bWw6IFVzZSBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVh
ZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wp
LgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1xdWV1ZS5odG1sOiBVc2Ug
aW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJv
b2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVu
Y2VudW0uaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1tYXJrZXItZGVzY3JpcHRpb24uaHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RS
dW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13
b3JkLmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tbWlzc3BlbGxlZC13b3JkLmh0bWw6IFVzZSBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGJvb2wpLgorCiAyMDEzLTAzLTE1ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCAtLSByZW1vdmUgdGVzdCBleHBlY3RhdGlvbnMg
Zm9yIHRpbWVsaW5lLXJlY2VpdmUtcmVzcG9uc2UtZXZlbnQgYW5kIHJlbW92ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLWhpZHBpLmh0
bWwKaW5kZXggMTAxMTllY2NkZjkwNGNhZDcwNTM5MTE1NDhlMWFjOGJiYTU5NTI4YS4uMDg0NmEy
ZjVjOTFiMmE2ZDBkMjc1MDgzM2UzMDUxMWViNDliOWUyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFya2Vycy1oaWRwaS5odG1sCkBAIC01
LDEwICs1LDExIEBACiA8ZGl2IGlkPSJzb3VyY2UiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3Bl
bGxjaGVjaz0iZmFsc2UiPllvdSBoYXMgdGhlIHJpZ2h0LjwvZGl2PgogPGRpdiBpZD0idGFyZ2V0
IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiPjwvZGl2PgogPHNjcmlw
dD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOwogICAgIHRlc3RSdW5uZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgdHJpYWwoKTsKICAgICB9KTsKQEAgLTI1LDEwICsyNiw4
IEBAIHZhciByZXRyeSA9IDEwOwogZnVuY3Rpb24gdHJpYWwoKSB7CiAgICAgdmFyIGhhc01hcmtl
ciA9IGludGVybmFscy5oYXNHcmFtbWFyTWFya2VyKHRhcmdldCwgNCwgMyk7CiAgICAgaWYgKGhh
c01hcmtlciB8fCAtLXJldHJ5ID09IDApIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGZhbHNlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICB3aW5kb3cuc2V0VGltZW91dCh0cmlhbCwgMTApOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLmh0bWwKaW5kZXggMmE5MTg4OGFi
NzZlZWNiNTIzNzFhOGUxZDBhODk3YjNlNjQyYjdjMy4uZTA4MmJmNjgxYTY2NjNjZGEyNWM1ZmE0
MzM4ZDc0MjQxMjU1NzJkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9ncmFtbWFyLW1hcmtlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L2dyYW1tYXItbWFya2Vycy5odG1sCkBAIC04LDggKzgsOSBAQAogaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KHRydWUpOwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQodHJ1ZSk7CiB9CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAK
IHZhciBzb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291cmNlJyk7CiB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKQEAgLTIyLDEwICsyMyw4
IEBAIHZhciByZXRyeSA9IDEwOwogZnVuY3Rpb24gdHJpYWwoKSB7CiAgICAgdmFyIGhhc01hcmtl
ciA9IGludGVybmFscy5oYXNHcmFtbWFyTWFya2VyKHRhcmdldCwgNCwgMyk7CiAgICAgaWYgKGhh
c01hcmtlciB8fCAtLXJldHJ5ID09IDApIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGZhbHNlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICB3aW5kb3cuc2V0VGltZW91dCh0cmlhbCwgMTApOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRtbAppbmRleCA3OGRkY2E3YzkxMDFh
ZTFjMjhiMTU1MjNlY2NiODZkZmZlYTBmNWVjLi5hN2MyM2FkNDRhY2IzNzNjMjVhNWEzMzllN2Qy
ODY5OWUxZjY4YTBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dy
YW1tYXItcGFzdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1t
YXItcGFzdGUuaHRtbApAQCAtNDgsOCArNDgsNiBAQCBmdW5jdGlvbiBkb25lKCkKICAgICBpZiAo
bmV4dCkKICAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwogICAgIHRl
c3RSb290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0KLSAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIH0KIApAQCAtMTM2LDkgKzEzNCw4IEBAIGZ1bmN0aW9uIHBhc3RlQW5kVmVyaWZ5
KHNvdXJjZSwgZGVzdCwgZXhwZWN0ZWRNYXJrZWQpCiAgICAgdHJpYWwoKTsKIH07CiAKLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQodHJ1ZSk7Ci19CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7
CiAKIHRlc3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3RlQW5kVmVyaWZ5KHRlc3RTb3VyY2VQbGFp
biwgdGVzdEVkaXRhYmxlLCBbImhhcyJdKTsgfSk7CiB0ZXN0cy5wdXNoKGZ1bmN0aW9uKCkgeyBw
YXN0ZUFuZFZlcmlmeSh0ZXN0U291cmNlRGVjb3JhdGVkLCB0ZXN0RWRpdGFibGUsIFsiYSJdKTsg
fSk7IC8vIENoZWNrcyBvbmx5ICdhJy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3Jlc291cmNlcy91dGlsLmpzCmluZGV4IDA5NGE1M2IyODk2ODhkODJkZTRkZTczNjdhOWM5NDMz
NGY1NjI0OTQuLmJjMTVlMGViOTY5NjBjYjY1YWE2ZjVlZmIwYjE0YWQ5NDFmYjQ0YWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvcmVzb3VyY2VzL3V0aWwuanMKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtMjAs
MTMgKzIwLDEzIEBAIGZ1bmN0aW9uIHZlcmlmeVNwZWxsVGVzdChucmV0cnkpCiAKIGZ1bmN0aW9u
IGluaXRTcGVsbFRlc3QodGVzdEVsZW1lbnRJZCwgdGVzdFRleHQsIHRlc3RGdW5jdGlvbikKIHsK
LSAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwgIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5k
b3cudGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCkgeworICAg
IGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAg
bG9nKCJGQUlMIEluY29tcGxldGUgdGVzdCBlbnZpcm9ubWVudCIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIHRlc3RGdW5jdGlvbkNhbGxiYWNrID0gdGVzdEZ1bmN0aW9uOwogICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7CiAgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOwogICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1w
YXN0ZS5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxs
Y2hlY2stcGFzdGUuanMKaW5kZXggZjMwOWE4Nzg0ODJiYTc4ZjEzZTQzN2JhYzE2NWNiY2ZkY2Nk
ZmFhYS4uNWQ0OGVkMGY2ZjU4YmFiYjliZDc3MzJlM2RlNDczZTMzNzU0MzA0NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1w
YXN0ZS5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9z
cGVsbGNoZWNrLXBhc3RlLmpzCkBAIC0zOSw4ICszOSw2IEBAIGZ1bmN0aW9uIGRvbmUoKQogICAg
IGlmIChuZXh0KQogICAgICAgICByZXR1cm4gd2luZG93LnNldFRpbWVvdXQobmV4dCwgMCk7CiAg
ICAgdGVzdFJvb3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLQotICAgIHRlc3RSdW5uZXIuc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwogICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfQogCkBAIC05NCw4ICs5Miw4IEBAIGZ1bmN0aW9uIHBhc3RlQW5kVmVy
aWZ5KHNvdXJjZSwgZGVzdCwgZXhwZWN0ZWRNYXJrZWQpCiAgICAgdHJpYWwoKTsKIH07CiAKLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwog
CiB0ZXN0cy5wdXNoKGZ1bmN0aW9uKCkgeyBwYXN0ZUFuZFZlcmlmeSh0ZXN0U291cmNlUGxhaW4s
IHRlc3RJbnB1dCwgW1swLCAyXV0pOyB9KTsKIHRlc3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3Rl
QW5kVmVyaWZ5KHRlc3RTb3VyY2VEZWNvcmF0ZWQsIHRlc3RJbnB1dCwgW1swLCAyXV0pOyB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3lu
Yy1tdXRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LWFzeW5jLW11dGF0aW9uLmh0bWwKaW5kZXggNGIwODJlMmM1MzMwNmIyYWM3ZDZiZjQwZDM3MGI3
OWQ3NDU5NmM5Ny4uNmYyYzBkODhmYTI1NzgwYzFjZGFjNzhlOTA4MDQzZjdiMmYwNWU3YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLW11
dGF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LWFzeW5jLW11dGF0aW9uLmh0bWwKQEAgLTMwLDEzICszMCwxMyBAQCBkZXNjcmlwdGlvbigKIAog
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwotfQog
Ci1pZiAod2luZG93LmludGVybmFscykKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUp
OwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRy
dWUpOworfQogCiB2YXIgc291cmNlSWRzID0gWydzb3VyY2UnXTsKIHZhciBkZXN0RWxlbXMgPSBb
J3RleHRhcmVhJywgJ2lucHV0JywgJ2NvbnRlbnRlZGl0YWJsZSddOwpAQCAtNzYsMTMgKzc2LDgg
QEAgZnVuY3Rpb24gZG9UZXN0SWZBbnkoKSB7CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpKTsKICAgICByZW1vdmVBbGxDaGlsZHJlbihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW92ZS10YXJnZXQnKSk7CiAKLSAgICBpZiAod2luZG93
LmludGVybmFscykKLSAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQoZmFsc2UpOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2Up
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfQogfQogCiB2YXIgcmVxdWVzdElkOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1sCmlu
ZGV4IDZkZjg1MGYzYmIxMzg4YTE3NTMwODkwNDlhNTJjZWVmNDI1MWJhM2MuLmM3OGY5ZTA4MmRl
OWE0MzdmMTY0NjViODE2ZmYwMzMzMmIzNDU1NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZyYW1l
Lmh0bWwKQEAgLTUsNyArNSw3IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stYXN5bmMuaHRtbAppbmRleCAwMjM4M2M4MGY2N2I5Y2RkNWJhY2JhNTNhM2YyODY3
ZDk0NGRmNjM0Li40MDg3ZThmNGVkNmNmYzBjZDdmY2EyYWMwMjY1YzZjMzdkM2QwN2M5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRt
bApAQCAtMjIsMTIgKzIyLDEzIEBAIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBVbmlmaWVkIFNwZWxs
IENoZWNrZXIgJiBBc3luYyBTcGVsbCBDaGVja2VyLiIpOwogCiBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogfQogCi1pZiAod2luZG93LmludGVybmFscykKK2lmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKHRydWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkKHRydWUpOworfQogCiB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwogZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW4obm9kZSkg
ewpAQCAtNTYsMTMgKzU3LDggQEAgZnVuY3Rpb24gZG9UZXN0SWZBbnkoKSB7CiAKICAgICAvLyBO
byBtb3JlIHRlc3RzLgogICAgIHJlbW92ZUNoaWxkcmVuKGNvbnRhaW5lcik7Ci0gICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZh
bHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgIH0KIH0KIAogZnVuY3Rpb24gY3JlYXRlRWRpdGFibGVFbGVtZW50KGlk
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2st
cGFzdGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxj
aGVjay1wYXN0ZS1kaXNhYmxlZC5odG1sCmluZGV4IDkxZTI0OWJkMWQ2YWY3NzQwYTFiZTI1MDYy
Y2E4YmRiYWM3NjdhMzYuLjg5ZmViOGZmNzYyOThjMzYzMmIwNzdlMDZiNzI2MDRkMWZjMTYxMzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0
ZS1kaXNhYmxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxj
aGVjay1wYXN0ZS1kaXNhYmxlZC5odG1sCkBAIC0zMSw3ICszMSw3IEBAIHNob3VsZEJlVHJ1ZSgn
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKScpOwogd2luZG93Lmdl
dFNlbGVjdGlvbigpLnNlbGVjdEFsbENoaWxkcmVuKHNyY05vZGUpOwogZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ0NvcHknKTsKIAotdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogdmFyIGRzdE5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZHN0Jyk7CiBkc3ROb2RlLmZvY3VzKCk7CkBAIC01MSw3ICs1MSw2IEBAIGZ1bmN0aW9u
IHZlcmlmeU1hcmtlcigpIHsKICAgICAgICAgdGVzdEZhaWxlZCgnVGhlIGRlc3RpbmF0aW9uIG5v
ZGUgc2hvdWxkIG5vdCBoYXZlIGEgbWFya2VyLicpOwogICAgIGVsc2UKICAgICAgICAgdGVzdFBh
c3NlZCgnVGhlIGRlc3RpbmF0aW9uIG5vZGUgZG9lcyBub3QgaGF2ZSBhbnkgbWFya2Vycy4nKTsK
LSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNl
KTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIHdpbmRvdy5zZXRUaW1lb3V0KHZlcmlmeU1hcmtl
ciwgc2xlZXBQZXJpb2QpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stcXVldWUuaHRtbAppbmRleCBjNzFlM2Q1ODdkODA1NDFmMWE2ZjZlZmRiODVmZjhi
YzI5MTBjYzU5Li5iNzIwNWFlMGFkMGFmMDQzODZkYzA3ZDZjOTJjNGI5YjFkNzMxMGYwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcXVldWUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcXVldWUuaHRt
bApAQCAtMTAsMTAgKzEwLDEwIEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oJ0ZvciBCdWcgNzI5
Mzk6IEFzeW5jaHJvbm91cyBTcGVsbENoZWNrZXIgc2hvdWxkIGNvbnNpZGVyIG11bHRpcGxlIHJl
cXVlc3RzLicpOwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwotfQoraWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKHRydWUpOwogCiB2YXIgdGVzdFJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHRlc3RSb290LCBkb2N1bWVu
dC5ib2R5LmZpcnN0Q2hpbGQpOwpAQCAtODAsMTAgKzgwLDggQEAgZnVuY3Rpb24gdmVyaWZ5SWZB
bnkoKQogICAgIH0KIAogICAgIHRlc3RSb290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQogfQogCiBmdW5jdGlv
biBmaW5kRmlyc3RUZXh0Tm9kZShub2RlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGNoZWNrLXNlcXVlbmNlbnVtLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbAppbmRleCA0NTQzZmQ1YWY5
MzA4ODljOWY3ZDI5ODYwZThkZjY4MTQ2YjRlODY5Li4wZDBlNjc3MDgwMTQ0ZDZlNGJjZTBiZDFm
NDQzNzZjZjgwNGQ3ZTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbApAQCAtMTAsOSArMTAsOSBAQAogPHNj
cmlwdD4KIGRlc2NyaXB0aW9uKCdGb3IgQnVnIDczNTExOiBJbnRlcm5hbHMgc2hvdWxkIGhhdmUg
YSBtZXRob2QgdG8gcmV0dXJuIHRoZSBtYXggc2VxdWVuY2UgbnVtYmVyIG9mIHNwZWxsY2hlY2sg
cmVxdWVzdC4nKTsKIAotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CitpZiAod2luZG93LmludGVy
bmFscykgewogICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB0ZXN0UnVubmVy
LnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIH0K
IAogdmFyIHRlc3RSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC03Nywx
MCArNzcsNyBAQCBmdW5jdGlvbiB2ZXJpZnlJZkFueSgpCiAgICAgfQogCiAgICAgdGVzdFJvb3Qu
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxz
ZSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KKyAgICBmaW5pc2hKU1Rlc3QoKTsK
IH0KIAogZnVuY3Rpb24gY29weUFuZFBhc3RlKHNvdXJjZSwgZGVzdCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1kZXNjcmlw
dGlvbi5odG1sCmluZGV4IDNiMmM1NTZhZmU5ZjcyNmYwODdhNGFiZGZiZWVmNmM0YTdlNDc2NTMu
LjYyNjRjNTVkNWRlMTViYWE5Y2IwNTA5NTZmNjJjZWNiYjhlMDMyMjUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItZGVz
Y3JpcHRpb24uaHRtbApAQCAtMTAsMTcgKzEwLDEwIEBACiAKIDxzY3JpcHQ+CiAKLWZ1bmN0aW9u
IGRvbmUoKQotewotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoZmFsc2UpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKGZhbHNlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKQotfQotCiBmdW5jdGlvbiB2ZXJp
ZnkobnJldHJ5KQogewogICAgIGlmICghbnJldHJ5KSB7Ci0gICAgICAgZG9uZSgpOworICAgICAg
IGZpbmlzaEpTVGVzdCgpCiAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzcsNyArMzAsNyBA
QCBmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQogICAgIGlmIChtYXJrZWRUZXh0ICE9IG51bGwpIHsK
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgIndlbGxjb21lIik7
CiAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VyRGVzY3JpcHRpb24iLCAid2Vs
Y29tZSIpOwotICAgICAgICBkb25lKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0K
IAogICAgIC8vIFdhaXQgdW50aWwgdGhlIGFzeW5jIHNwZWxsY2hlY2tpbmcgaXMgZG9uZS4KQEAg
LTQ4LDcgKzQxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CiAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
dHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQodHJ1ZSk7CiAKICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigp
OwogICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5h
dGlvbiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRt
bAppbmRleCA1OWFkYTVkYTgzYjBjZTYwZTlhMjM5N2NlOTM1YjQ0NTg1YzNlYmEwLi4xZTM2ZjFh
YjlmNzFlZTMyNjgyY2Q2ZTFkNjBkNDg4NTlhZWRlMzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdv
cmQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbApAQCAtMjEsNyArMjEsNyBAQCBmdW5jdGlv
biBpbnNlcnRUZXh0KHRleHQpIHsKIHNob3VsZEJlVHJ1ZSgnaW5zZXJ0VGV4dCgieiIpOyBpbnNl
cnRUZXh0KCJ6Iik7IGluc2VydFRleHQoIiAiKTsgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2Vy
KGRvY3VtZW50LCAwLCAyKScpOwogCiBkZWJ1ZygnRW5hYmxlIGFzeW5jaHJvbm91cyBzcGVsbGNo
ZWNraW5nLCBkZWxldGUgdHdvIGNoYXJhY3RlcnMsIGFuZCBpbnNlcnQgYSBzcGFjZScpOwotdGVz
dFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKK2ludGVy
bmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsK
IGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOwog
CiB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIpOwpAQCAtMzYsOCArMzYs
NiBAQCBmdW5jdGlvbiB2ZXJpZnlNYXJrZXIoKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgc2hvdWxkQmVGYWxzZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAw
LCAxKScpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKGZhbHNlKTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGZhbHNlKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIHdpbmRvdy5zZXRUaW1lb3V0
KHZlcmlmeU1hcmtlciwgMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLW1pc3NwZWxsZWQtd29yZC5odG1s
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1
cnNvci10by1taXNzcGVsbGVkLXdvcmQuaHRtbAppbmRleCA2MGZjMDJlZGYzMTRmZWQ1NWI1MjQz
NDkwYWFlZTMwZGVlY2Q3NGM4Li4zMWQ3ZDU4ZmVkZGJmY2Y1NDkwOTZhNzc2NmFhM2RiYjVhM2E0
MDg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL21vdmUtY3Vyc29yLXRvLW1pc3NwZWxsZWQtd29yZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tbWlz
c3BlbGxlZC13b3JkLmh0bWwKQEAgLTEwLDcgKzEwLDcgQEAgZGVzY3JpcHRpb24oJ1Rlc3QgaWYg
Q2hyb21lIFdlYktpdCBkb2VzIG5vdCByZW1vdmUgYSBtaXNzcGVsbGVkIG1hcmtlciB3aGVuIG1v
dmkKICAgICAgICAgICAgICdUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlIGEgbWlzc3BlbGxlZCB3b3Jk
ICJ6eiAiIGFuZCB0eXBlIGEgbGVmdC1hcnJvdyBrZXkgdG8gbW92ZSB0aGUgY3Vyc29yIG9uIGl0
LicgKwogICAgICAgICAgICAgJ1RoaXMgdGVzdCBzdWNjZWVkcyB3aGVuICJ6eiIgaXMgbWFya2Vk
IGFzIG1pc3NwZWxsZWQuJyk7CiAKLXRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQodHJ1ZSk7CitpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiB2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzcmMnKTsKIG5vZGUuZm9jdXMoKTsKIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRU
ZXh0IiwgZmFsc2UsICd6Jyk7CkBAIC0xOCw3ICsxOCw2IEBAIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CiBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0
VGV4dCIsIGZhbHNlLCAnICcpOwogd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnbW92ZScs
ICdiYWNrd2FyZCcsICdjaGFyYWN0ZXInKTsKIHNob3VsZEJlVHJ1ZSgnaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKScpOwotdGVzdFJ1bm5lci5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193356</attachid>
            <date>2013-03-15 13:00:23 -0700</date>
            <delta_ts>2013-03-15 14:30:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112362-20130315125618.patch</filename>
            <type>text/plain</type>
            <size>33463</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJiMzZjYzZmOTQ4ODll
YTNlZTljMjM5NzM0Nzg2N2NiZjg1Y2ExYS4uMjBmZDVkMmVmYjA4NTY0MmY1ZmQyNjBjMTMyODI2
ZmUyNGIyNDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTE0ICBSb3Vz
bGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIHVuaWZpZWQgdGV4dGNoZWNrZXIgdmFyaWFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGhlIHZhcmlhYmxlIG1fb3JpZ2luYWxVbmlmaWVkU3Bl
bGxDaGVja2VyRW5hYmxlZCBpcyBuZXZlciB1c2VkLiBUaGUgZ2VuZXJhdGVkCisgICAgICAgIGNv
ZGUgZnJvbSBTZXR0aW5ncy5pbiBhbHJlYWR5IGJhY2tzIHVwIGFuZCByZXN0b3JlcyB1bmlmaWVk
IHRleHRjaGVja2VyIHNldHRpbmcuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaDogUmVtb3ZlIHVudXN1ZWQgbV9vcmlnaW5hbFVuaWZpZWRTcGVsbENoZWNrZXJFbmFibGVk
IHZhcmlhYmxlLgorCiAyMDEzLTAzLTE1ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbVjhdIFN0b3JlIG1haW4gd29ybGQgYW5kIG5vbi1tYWluIHdvcmxk
IHRlbXBsYXRlcyBzZXBhcmF0ZWx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaAppbmRleCA1NDliMGZhNDVmYTQwYjI2ZGM4NDhhNTJhMjVhYTc4YTE3M2EyYzQ4Li4x
ODc0MmUyNGFiOWYzMzA4NTlmM2M3NjEzOWE5N2Q3ZmUzYjFlNzI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIGJvb2wgbV9vcmlnaW5hbFN0eWxlU2NvcGVkOwogI2VuZGlmCiAgICAgICAgIEVkaXRp
bmdCZWhhdmlvclR5cGUgbV9vcmlnaW5hbEVkaXRpbmdCZWhhdmlvcjsKLSAgICAgICAgYm9vbCBt
X29yaWdpbmFsVW5pZmllZFNwZWxsQ2hlY2tlckVuYWJsZWQ7CiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKICAgICAgICAgYm9vbCBtX29yaWdpbmFsVGV4dEF1dG9zaXppbmdFbmFibGVkOwog
ICAgICAgICBJbnRTaXplIG1fb3JpZ2luYWxUZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBl
NjEyYjQ5N2NlYjY2ZTdlODExYWM2YzVjNzk4MmY1ZmRlYjI1NWU4Li42YjQwNjdmMWU2YmNmNmMx
ZThjMTM2MDg3ZjQ5ZWVlYjk4MGUyOWRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTMtMDMtMTQgIFJvdXNsYW4g
U29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCBmcm9tIHRlc3QgcnVubmVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBSZW1vdmUgc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgZnJvbSB0ZXN0IHJ1bm5lcnMuIFRoZSBzZXR0aW5nIGlz
IG5vdworICAgICAgICBpbiBpbnRlcm5hbHMuc2V0dGluZ3MsIHNvIGFsbCBwb3J0cyBjYW4gc2hh
cmUgaXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDogUmVtb3Zl
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOiBSZW1vdmUgc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6IFJlbW92ZSBzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bTogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHA6IFJlbW92ZSBzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9U
ZXN0UnVubmVyV2luLmNwcDogUmVtb3ZlIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5j
cHA6IFJlbW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG1ldGhvZC4K
KwogMjAxMy0wMy0xNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIFJlbW92ZSBzaW1wbGUgZ2V0dGVycyBhbmQgc2V0dGVycyBmcm9tIFRlc3RSdW5uZXJR
dApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBkYWVjY2FmZTZkZGU1YWVjYWYz
ZTRhNGNmMDZiZDYyZjdiZTM4NDY1Li43Njg0YWQxYzM2OTk5YWM3MjZlMDY5OWE0N2M2ODk2MTFh
ZmQwNTBjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTUyMywxNiArMTUy
Myw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
LXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAg
ICBjb250cm9sbGVyLT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgc2hvd1dlYkluc3Bl
Y3RvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBUZXN0UnVu
bmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMTM0LDcgKzIxMjQsNiBAQCBKU1N0YXRpY0Z1bmN0aW9u
KiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRXaW5kb3dJc0tl
eSIsIHNldFdpbmRvd0lzS2V5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNj
cmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRYU1NBdWRpdG9yRW5hYmxlZCIsIHNldFhT
U0F1ZGl0b3JFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAic2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiLCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93
V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2ltdWxhdGVMZWdhY3lX
ZWJOb3RpZmljYXRpb25DbGljayIsIHNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2tD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXN0T25zY3JlZW4iLCB0ZXN0T25zY3JlZW5D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDE3ZmI0MDhk
YjlmODg0MDAyNWY2YWI5MTc0N2JjYThlNzRiMzlhZmQuLmYyM2FiMTIwZDdjYjU4MWIzZDVkZDA0
NWUzOTNiZTk5MzgyNzU1OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTI4OSw3
ICsyODksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25z
dCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCiAgICAgdm9pZCBzZXREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzaG93V2ViSW5zcGVjdG9yKCk7CiAgICAg
dm9pZCBjbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXgg
YmQyZjAzNDU3NThmMDNhZmExOTYyNWE0MzQ0MmI2NGZkNDY4MmQ1MC4uMGIyZDU4ZjE3YjkwNDQ3
ODQzYTdhOGMxY2Q1ZjA3YjJmNzY1YmY3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTU3MiwxMSAr
NTcyLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpkZWxldGVBbGxMb2NhbFN0b3JhZ2UoKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBp
bnQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6Om51bWJlck9mUGVuZGlu
Z0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cAppbmRleCA0MGZiNDU2YmFmZjZhM2FhNTc4YTY3YjRlYjZkNjhlMzE3ZmExZmE1Li41NmZmZmQ3
NTM1MTA3MzgyNmQ3NDhjYWNmMWE5ZDMxZDZjZTNmMTY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cApAQCAtMjI1LDcgKzIyNSw2IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoVGVzdEludGVyZmFj
ZXMqIGludGVyZmFjZXMpCiAgICAgYmluZE1ldGhvZCgic2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzIiwgJlRlc3RSdW5uZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk7CiAg
ICAgYmluZE1ldGhvZCgib3ZlcnJpZGVQcmVmZXJlbmNlIiwgJlRlc3RSdW5uZXI6Om92ZXJyaWRl
UHJlZmVyZW5jZSk7CiAgICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmVGVzdFJ1
bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQpOwotICAgIGJpbmRNZXRob2QoInNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRUb3VjaERyYWdEcm9wRW5hYmxl
ZCIsICZUZXN0UnVubmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk7CiAKICAgICAvLyBUaGUg
Zm9sbG93aW5nIG1vZGlmeSB0aGUgc3RhdGUgb2YgdGhlIFRlc3RSdW5uZXIuCkBAIC0xNjU0LDE1
ICsxNjUzLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwo
KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29s
KCkpIHsKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cHJlZmVyZW5jZXMoKS0+YXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50c1swXSk7Ci0gICAg
ICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5z
ZXROdWxsKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsK
ICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmgKaW5kZXggMWIwYzZkNDkxZGRiNTJmYzg4MTQ2MGFkOTk5OTc5MzI4
OWQ4ZmRjMi4uMDIyOTFmOWIyYmY1ZDhiOTVmMDVmNmU5MmE4YTdiODRmMTYxMDdhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaApAQCAtMzAyLDkgKzMwMiw2IEBAIHByaXZhdGU6CiAgICAgLy8gRW5hYmxl
IG9yIGRpc2FibGUgcGx1Z2lucy4KICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIENoYW5nZXMgYXN5bmNocm9u
b3VzIHNwZWxsY2hlY2tpbmcgZmxhZyBvbiB0aGUgc2V0dGluZ3MuCi0gICAgdm9pZCBzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KICAgICB2b2lkIHNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IGE5OWEzYjVlZGM3
Njg3YjQyZjQyMTI4ODk1ZGE4ZGE3ZjM1YzFlN2EuLmE0M2FlMDY3YzcyNmMyN2UxODM2NzFiMjVh
NzM1NWZkYjNmMmYwMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0
UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVm
bC5jcHAKQEAgLTY3OSwxMSArNjc5LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9k
ZXZlbG9wZXJfZXh0cmFzX3NldChicm93c2VyLT5tYWluVmlldygpLCBlbmFibGVkKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dl
Ykluc3BlY3RvcigpCiB7CiAgICAgZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3coYnJvd3Nlci0+bWFp
blZpZXcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5l
ckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5k
ZXggY2QxMDQ0ZDBkMjMzMWUyYTRhMWVjNzdlOGQ0MmY5NzI3ZmFhZGE2Ni4uYmZmMDExNWFmMWJi
MTU3ZDNiYzA1ZTI4ZmE1NWZkZDhjOTFhY2FmYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcApAQCAtNzc5LDExICs3NzksNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGdfb2JqZWN0X3Nl
dCh3ZWJTZXR0aW5ncywgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgZW5hYmxlZCwgTlVMTCk7
CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoYm9vbCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIHZvaWQgVGVz
dFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGIzMWM5YWQ3MjdiMmU2NmY3ZmU3
YjVjYTFkNjhkYmI0ZTQ3YmZlNjkuLmY0MTBjNzU1ZDIyYTM5MWQyYzZhOTU5MDI4YmJiZTk0NDFm
MDVlYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC03
ODIsMTEgKzc4Miw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBz
ZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkOmVuYWJsZWRdOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAg
ICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkOmVuYWJsZWRdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJ
bnNwZWN0b3IoKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNob3c6
bmlsXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IDE4ZDBk
N2FjNTFjZWU5N2JlYmJmOGE5MDU4MDdjM2Q4ZTNjOTBmMDguLjFkZGY5YzUxYzQwOTg2MmVkYzQw
MDFjM2VmNmJhOGYxZTliYzJlYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L1Rlc3RSdW5uZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5l
clF0LmNwcApAQCAtNDIxLDExICs0MjEsNiBAQCB2b2lkIFRlc3RSdW5uZXJRdDo6c2V0RGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0
dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCwgZW5hYmxlZCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
LX0KLQogdm9pZCBUZXN0UnVubmVyUXQ6OnNob3dXZWJJbnNwZWN0b3IoKQogewogICAgIG1fZHJ0
LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVs
b3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOwpAQCAtMTE2OCwxMCArMTE2Myw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkKIHsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KQotewotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZmxh
ZykKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJR
dC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKaW5kZXggNGUzY2Q5
OWQ4NTRhYzIzOTkzYjg0OTY3ZjBiOGQwNDAwMjYyYjFhNi4uOTZhNjExMTVhNWY1OWI3ZmY2ZmEx
ZTEwZjJkOTk5MWU5NmUxZmE0NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGVzdFJ1bm5lclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0
LmgKQEAgLTEyOCw3ICsxMjgsNiBAQCBwdWJsaWMgUV9TTE9UUzoKICAgICBRU3RyaW5nIGRlY29k
ZUhvc3ROYW1lKGNvbnN0IFFTdHJpbmcmIGhvc3QpOwogICAgIHZvaWQgZHVtcFNlbGVjdGlvblJl
Y3QoKSBjb25zdCB7IH0KICAgICB2b2lkIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCk7
Ci0gICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAg
ICB2b2lkIHNob3dXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7
CiAgICAgdm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3Ry
aW5nJiBzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RS
dW5uZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
CmluZGV4IGRkNGQ4NzMxZGZlZTQ4M2RmZTBlOWI4NzE1MmZhNjQzYzZkYTBjNzkuLmQ1Yjk4MTA3
MjZkODNjNThmODQ0ZGUzMWM1NjNkNjY4MDU2ZmI3MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTk1MiwxMSArOTUyLDYgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBwcmVmc1By
aXZhdGUtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dl
Ykluc3BlY3RvcigpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKaW5kZXggZjRiYjk0YTBlM2QyOTZjYWY3YzA4
NmMxZGZjOTc3YmNjNjZlNjk5NC4uYmI4ZDcxYTZmMmE0MWRjNzRhZjUwNTZmYWI2YTE3NGMzMDI5
Y2Y3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCkBAIC00NTAs
MTEgKzQ1MCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWJvcnRNb2RhbCgpCiB7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIGJvb2wgVGVzdFJ1bm5lcjo6Zmlu
ZFN0cmluZyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdGFyZ2V0LCBKU09iamVj
dFJlZiBvcHRpb25zQXJyYXkpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1
NGJiMzkxZGRhMzU4MzNjNTQzMDdkYWNhMjlkMDNjNzdhNGJmOTUuLmQwNmQyM2I0ZTgwNWU4N2I2
Zjk3YzhhMjg0MzZhMzU4NmQzZGY3MjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0x
NCAgUm91c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TW92ZSBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCB0byBpbnRlcm5hbHMuc2V0
dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgQ2hhbmdl
ZCB0aGUgdGVzdHMgZnJvbSB1c2luZyB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGJvb2wpCisgICAgICAgIHdpdGggcG9ydC1zcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMgdG8gdXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKQorICAgICAgICB3aXRoIG9uZSBjb21tb24gaW1wbGVtZW50YXRpb24s
IHNpbWlsYXIgdG8gaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQoYm9vbCkuCisgICAgICAgIENoYW5nZWQgdGhlIHRlc3RzIHRvIG5vdCByZXNldCB0aGVzZSBz
ZXR0aW5ncyB3aGVuIHRoZXkgZmluaXNoLCBiZWNhdXNlIHRoZSB0ZXN0IGhhcm5lc3MgcmVzZXRz
CisgICAgICAgIHRoZSBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbDogVXNlIGludGVybmFscy5zZXR0
aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9m
IHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMuaHRtbDogVXNlIGludGVy
bmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBp
bnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWw6IFVz
ZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvcmVzb3VyY2VzL3V0aWwu
anM6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsY2hlY2stcGFzdGUuanM6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1tdXRhdGlvbi5odG1sOiBVc2UgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3Rl
YWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZy
YW1lLmh0bWw6IFVzZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbCkgaW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxjaGVjay1hc3luYy5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZGlzYWJsZWQuaHRtbDogVXNlIGludGVybmFscy5zZXR0
aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBpbnN0ZWFkIG9m
IHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXF1ZXVlLmh0bWw6IFVzZSBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkg
aW5zdGVhZCBvZiB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGJvb2wpLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1zZXF1ZW5jZW51
bS5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLW1hcmtlci1kZXNjcmlwdGlvbi5odG1sOiBVc2UgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGluc3RlYWQgb2YgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQu
aHRtbDogVXNlIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZChib29sKSBpbnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCkuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1taXNzcGVsbGVkLXdvcmQuaHRtbDogVXNlIGludGVy
bmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBp
bnN0ZWFkIG9mIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCkuCisKIDIwMTMtMDMtMTUgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkIC0tIHJlbW92ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Ig
dGltZWxpbmUtcmVjZWl2ZS1yZXNwb25zZS1ldmVudCBhbmQgcmVtb3ZlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFya2Vycy1oaWRwaS5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMtaGlkcGkuaHRtbApp
bmRleCAxMDExOWVjY2RmOTA0Y2FkNzA1MzkxMTU0OGUxYWM4YmJhNTk1MjhhLi4wODQ2YTJmNWM5
MWIyYTZkMGQyNzUwODMzZTMwNTExZWI0OWI5ZTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFya2Vycy1oaWRwaS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1tYXJrZXJzLWhpZHBpLmh0bWwKQEAgLTUsMTAg
KzUsMTEgQEAKIDxkaXYgaWQ9InNvdXJjZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBzcGVsbGNo
ZWNrPSJmYWxzZSI+WW91IGhhcyB0aGUgcmlnaHQuPC9kaXY+CiA8ZGl2IGlkPSJ0YXJnZXQiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3BlbGxjaGVjaz0idHJ1ZSI+PC9kaXY+CiA8c2NyaXB0Pgor
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KHRydWUpOwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQodHJ1ZSk7CiAgICAgdGVzdFJ1bm5lci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZnVu
Y3Rpb24gKCkgewogICAgICAgICB0cmlhbCgpOwogICAgIH0pOwpAQCAtMjUsMTAgKzI2LDggQEAg
dmFyIHJldHJ5ID0gMTA7CiBmdW5jdGlvbiB0cmlhbCgpIHsKICAgICB2YXIgaGFzTWFya2VyID0g
aW50ZXJuYWxzLmhhc0dyYW1tYXJNYXJrZXIodGFyZ2V0LCA0LCAzKTsKICAgICBpZiAoaGFzTWFy
a2VyIHx8IC0tcmV0cnkgPT0gMCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoZmFsc2UpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRyaWFsLCAxMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItbWFya2Vycy5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLW1hcmtlcnMuaHRtbAppbmRleCAyYTkxODg4YWI3NmVl
Y2I1MjM3MWE4ZTFkMGE4OTdiM2U2NDJiN2MzLi5lMDgyYmY2ODFhNjY2M2NkYTI1YzVmYTQzMzhk
NzQyNDEyNTU3MmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dy
YW1tYXItbWFya2Vycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3Jh
bW1hci1tYXJrZXJzLmh0bWwKQEAgLTgsOCArOCw5IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQodHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKIH0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAogdmFy
IHNvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKTsKIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihzb3VyY2UpOwpAQCAtMjIsMTAgKzIzLDggQEAg
dmFyIHJldHJ5ID0gMTA7CiBmdW5jdGlvbiB0cmlhbCgpIHsKICAgICB2YXIgaGFzTWFya2VyID0g
aW50ZXJuYWxzLmhhc0dyYW1tYXJNYXJrZXIodGFyZ2V0LCA0LCAzKTsKICAgICBpZiAoaGFzTWFy
a2VyIHx8IC0tcmV0cnkgPT0gMCkgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoZmFsc2UpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRyaWFsLCAxMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1wYXN0ZS5odG1sCmluZGV4IDc4ZGRjYTdjOTEwMWFlMWMy
OGIxNTUyM2VjY2I4NmRmZmVhMGY1ZWMuLmE3YzIzYWQ0NGFjYjM3M2MyNWE1YTMzOWU3ZDI4Njk5
ZTFmNjhhMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1h
ci1wYXN0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1w
YXN0ZS5odG1sCkBAIC00OCw4ICs0OCw2IEBAIGZ1bmN0aW9uIGRvbmUoKQogICAgIGlmIChuZXh0
KQogICAgICAgICByZXR1cm4gd2luZG93LnNldFRpbWVvdXQobmV4dCwgMCk7CiAgICAgdGVzdFJv
b3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLQotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwogICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCkBAIC0xMzYsOSArMTM0LDggQEAgZnVuY3Rpb24gcGFzdGVBbmRWZXJpZnkoc291
cmNlLCBkZXN0LCBleHBlY3RlZE1hcmtlZCkKICAgICB0cmlhbCgpOwogfTsKIAotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCh0cnVlKTsKLX0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKIAog
dGVzdHMucHVzaChmdW5jdGlvbigpIHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZVBsYWluLCB0
ZXN0RWRpdGFibGUsIFsiaGFzIl0pOyB9KTsKIHRlc3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3Rl
QW5kVmVyaWZ5KHRlc3RTb3VyY2VEZWNvcmF0ZWQsIHRlc3RFZGl0YWJsZSwgWyJhIl0pOyB9KTsg
Ly8gQ2hlY2tzIG9ubHkgJ2EnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvcmVz
b3VyY2VzL3V0aWwuanMKaW5kZXggMDk0YTUzYjI4OTY4OGQ4MmRlNGRlNzM2N2E5Yzk0MzM0ZjU2
MjQ5NC4uYmMxNWUwZWI5Njk2MGNiNjVhYTZmNWVmYjBiMTRhZDk0MWZiNDRhZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcworKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzCkBAIC0yMCwxMyAr
MjAsMTMgQEAgZnVuY3Rpb24gdmVyaWZ5U3BlbGxUZXN0KG5yZXRyeSkKIAogZnVuY3Rpb24gaW5p
dFNwZWxsVGVzdCh0ZXN0RWxlbWVudElkLCB0ZXN0VGV4dCwgdGVzdEZ1bmN0aW9uKQogewotICAg
IGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy50
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKSB7CisgICAgaWYg
KCF3aW5kb3cuaW50ZXJuYWxzIHx8ICF3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBsb2co
IkZBSUwgSW5jb21wbGV0ZSB0ZXN0IGVudmlyb25tZW50Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgdGVzdEZ1bmN0aW9uQ2FsbGJhY2sgPSB0ZXN0RnVuY3Rpb247CiAgICAganNUZXN0
SXNBc3luYyA9IHRydWU7Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CiAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3Rl
LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVj
ay1wYXN0ZS5qcwppbmRleCBmMzA5YTg3ODQ4MmJhNzhmMTNlNDM3YmFjMTY1Y2JjZmRjY2RmYWFh
Li41ZDQ4ZWQwZjZmNThiYWJiOWJkNzczMmUzZGU0NzNlMzM3NTQzMDQ1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3Rl
LmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxs
Y2hlY2stcGFzdGUuanMKQEAgLTM5LDggKzM5LDYgQEAgZnVuY3Rpb24gZG9uZSgpCiAgICAgaWYg
KG5leHQpCiAgICAgICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChuZXh0LCAwKTsKICAgICB0
ZXN0Um9vdC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotCi0gICAgdGVzdFJ1bm5lci5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiB9CiAKQEAgLTk0LDggKzkyLDggQEAgZnVuY3Rpb24gcGFzdGVBbmRWZXJpZnko
c291cmNlLCBkZXN0LCBleHBlY3RlZE1hcmtlZCkKICAgICB0cmlhbCgpOwogfTsKIAotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQodHJ1ZSk7CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAKIHRl
c3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3RlQW5kVmVyaWZ5KHRlc3RTb3VyY2VQbGFpbiwgdGVz
dElucHV0LCBbWzAsIDJdXSk7IH0pOwogdGVzdHMucHVzaChmdW5jdGlvbigpIHsgcGFzdGVBbmRW
ZXJpZnkodGVzdFNvdXJjZURlY29yYXRlZCwgdGVzdElucHV0LCBbWzAsIDJdXSk7IH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLW11
dGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5
bmMtbXV0YXRpb24uaHRtbAppbmRleCA0YjA4MmUyYzUzMzA2YjJhYzdkNmJmNDBkMzcwYjc5ZDc0
NTk2Yzk3Li42ZjJjMGQ4OGZhMjU3ODBjMWNkYWM3OGU5MDgwNDNmN2IyZjA1ZTdhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtbXV0YXRp
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5
bmMtbXV0YXRpb24uaHRtbApAQCAtMzAsMTMgKzMwLDEzIEBAIGRlc2NyaXB0aW9uKAogCiB2YXIg
anNUZXN0SXNBc3luYyA9IHRydWU7CiAKLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RS
dW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7Ci19CiAKLWlm
ICh3aW5kb3cuaW50ZXJuYWxzKQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7
Cit9CiAKIHZhciBzb3VyY2VJZHMgPSBbJ3NvdXJjZSddOwogdmFyIGRlc3RFbGVtcyA9IFsndGV4
dGFyZWEnLCAnaW5wdXQnLCAnY29udGVudGVkaXRhYmxlJ107CkBAIC03NiwxMyArNzYsOCBAQCBm
dW5jdGlvbiBkb1Rlc3RJZkFueSgpIHsKICAgICByZW1vdmVBbGxDaGlsZHJlbihkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykpOwogICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtb3ZlLXRhcmdldCcpKTsKIAotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZChmYWxzZSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAg
dGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
CiB9CiAKIHZhciByZXF1ZXN0SWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWwKaW5kZXgg
NmRmODUwZjNiYjEzODhhMTc1MzA4OTA0OWE1MmNlZWY0MjUxYmEzYy4uYzc4ZjllMDgyZGU5YTQz
N2YxNjQ2NWI4MTZmZjAzMzMyYjM0NTU1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRt
bApAQCAtNSw3ICs1LDcgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRl
c3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRy
dWUpOwogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxj
aGVjay1hc3luYy5odG1sCmluZGV4IDAyMzgzYzgwZjY3YjljZGQ1YmFjYmE1M2EzZjI4NjdkOTQ0
ZGY2MzQuLjQwODdlOGY0ZWQ2Y2ZjMGNkN2ZjYTJhYzAyNjVjNmMzN2QzZDA3YzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1sCkBA
IC0yMiwxMiArMjIsMTMgQEAgZGVzY3JpcHRpb24oIlRlc3QgZm9yIFVuaWZpZWQgU3BlbGwgQ2hl
Y2tlciAmIEFzeW5jIFNwZWxsIENoZWNrZXIuIik7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKLWlmICh3aW5kb3cuaW50ZXJuYWxzKQoraWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQodHJ1ZSk7Cit9CiAKIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJyk7CiBmdW5jdGlvbiByZW1vdmVDaGlsZHJlbihub2RlKSB7CkBA
IC01NiwxMyArNTcsOCBAQCBmdW5jdGlvbiBkb1Rlc3RJZkFueSgpIHsKIAogICAgIC8vIE5vIG1v
cmUgdGVzdHMuCiAgICAgcmVtb3ZlQ2hpbGRyZW4oY29udGFpbmVyKTsKLSAgICBpZiAod2luZG93
LmludGVybmFscykKLSAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQoZmFsc2UpOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2Up
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfQogfQogCiBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZUVsZW1lbnQoaWQpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0
ZS1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LXBhc3RlLWRpc2FibGVkLmh0bWwKaW5kZXggOTFlMjQ5YmQxZDZhZjc3NDBhMWJlMjUwNjJjYThi
ZGJhYzc2N2EzNi4uODlmZWI4ZmY3NjI5OGMzNjMyYjA3N2UwNmI3MjYwNGQxZmMxNjEzMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWRp
c2FibGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LXBhc3RlLWRpc2FibGVkLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAgc2hvdWxkQmVUcnVlKCdpbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7CiB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oc3JjTm9kZSk7CiBkb2N1bWVudC5leGVjQ29tbWFu
ZCgnQ29weScpOwogCi10ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKHRydWUpOworaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOwogCiB2YXIgZHN0Tm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkc3QnKTsKIGRzdE5vZGUuZm9jdXMoKTsKQEAgLTUxLDcgKzUxLDYgQEAgZnVuY3Rpb24gdmVy
aWZ5TWFya2VyKCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdUaGUgZGVzdGluYXRpb24gbm9kZSBz
aG91bGQgbm90IGhhdmUgYSBtYXJrZXIuJyk7CiAgICAgZWxzZQogICAgICAgICB0ZXN0UGFzc2Vk
KCdUaGUgZGVzdGluYXRpb24gbm9kZSBkb2VzIG5vdCBoYXZlIGFueSBtYXJrZXJzLicpOwotICAg
IHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwog
ICAgIGZpbmlzaEpTVGVzdCgpOwogfQogd2luZG93LnNldFRpbWVvdXQodmVyaWZ5TWFya2VyLCBz
bGVlcFBlcmlvZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stcXVldWUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxj
aGVjay1xdWV1ZS5odG1sCmluZGV4IGM3MWUzZDU4N2Q4MDU0MWYxYTZmNmVmZGI4NWZmOGJjMjkx
MGNjNTkuLmI3MjA1YWUwYWQwYWYwNDM4NmRjMDdkNmM5MmM0YjliMWQ3MzEwZjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1xdWV1ZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1xdWV1ZS5odG1sCkBA
IC0xMCwxMCArMTAsMTAgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignRm9yIEJ1ZyA3MjkzOTog
QXN5bmNocm9ub3VzIFNwZWxsQ2hlY2tlciBzaG91bGQgY29uc2lkZXIgbXVsdGlwbGUgcmVxdWVz
dHMuJyk7CiAKLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7Ci19CitpZiAod2luZG93LmludGVy
bmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQodHJ1ZSk7CiAKIHZhciB0ZXN0Um9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUodGVzdFJvb3QsIGRvY3VtZW50LmJv
ZHkuZmlyc3RDaGlsZCk7CkBAIC04MCwxMCArODAsOCBAQCBmdW5jdGlvbiB2ZXJpZnlJZkFueSgp
CiAgICAgfQogCiAgICAgdGVzdFJvb3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9CiB9CiAKIGZ1bmN0aW9uIGZp
bmRGaXJzdFRleHROb2RlKG5vZGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stc2VxdWVuY2VudW0uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1zZXF1ZW5jZW51bS5odG1sCmluZGV4IDQ1NDNmZDVhZjkzMDg4
OWM5ZjdkMjk4NjBlOGRmNjgxNDZiNGU4NjkuLjBkMGU2NzcwODAxNDRkNmU0YmNlMGJkMWY0NDM3
NmNmODA0ZDdlNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxjaGVjay1zZXF1ZW5jZW51bS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxjaGVjay1zZXF1ZW5jZW51bS5odG1sCkBAIC0xMCw5ICsxMCw5IEBACiA8c2NyaXB0
PgogZGVzY3JpcHRpb24oJ0ZvciBCdWcgNzM1MTE6IEludGVybmFscyBzaG91bGQgaGF2ZSBhIG1l
dGhvZCB0byByZXR1cm4gdGhlIG1heCBzZXF1ZW5jZSBudW1iZXIgb2Ygc3BlbGxjaGVjayByZXF1
ZXN0LicpOwogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxz
KSB7CiAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHRlc3RSdW5uZXIuc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogfQogCiB2
YXIgdGVzdFJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTc3LDEwICs3
Nyw3IEBAIGZ1bmN0aW9uIHZlcmlmeUlmQW55KCkKICAgICB9CiAKICAgICB0ZXN0Um9vdC5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQorICAgIGZpbmlzaEpTVGVzdCgpOwogfQog
CiBmdW5jdGlvbiBjb3B5QW5kUGFzdGUoc291cmNlLCBkZXN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItZGVzY3JpcHRpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9u
Lmh0bWwKaW5kZXggM2IyYzU1NmFmZTlmNzI2ZjA4N2E0YWJkZmJlZWY2YzRhN2U0NzY1My4uNjI2
NGM1NWQ1ZGUxNWJhYTljYjA1MDk1NmY2MmNlY2JiOGUwMzIyNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItZGVzY3JpcHRpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1kZXNjcmlw
dGlvbi5odG1sCkBAIC0xMCwxNyArMTAsMTAgQEAKIAogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9u
ZSgpCi17Ci0gICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChmYWxzZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQoZmFsc2UpOwotICAgIGZpbmlzaEpTVGVzdCgpCi19Ci0KIGZ1bmN0aW9uIHZlcmlmeShu
cmV0cnkpCiB7CiAgICAgaWYgKCFucmV0cnkpIHsKLSAgICAgICBkb25lKCk7CisgICAgICAgZmlu
aXNoSlNUZXN0KCkKICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNyw3ICszMCw3IEBAIGZ1
bmN0aW9uIHZlcmlmeShucmV0cnkpCiAgICAgaWYgKG1hcmtlZFRleHQgIT0gbnVsbCkgewogICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlZFRleHQiLCAid2VsbGNvbWUiKTsKICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZXJEZXNjcmlwdGlvbiIsICJ3ZWxjb21l
Iik7Ci0gICAgICAgIGRvbmUoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfQogCiAg
ICAgLy8gV2FpdCB1bnRpbCB0aGUgYXN5bmMgc3BlbGxjaGVja2luZyBpcyBkb25lLgpAQCAtNDgs
NyArNDEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
ICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVl
KTsKLSAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRy
dWUpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKIAogICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAg
ICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9u
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sCmlu
ZGV4IDU5YWRhNWRhODNiMGNlNjBlOWEyMzk3Y2U5MzViNDQ1ODVjM2ViYTAuLjFlMzZmMWFiOWY3
MWVlMzI2ODJjZDZlMWQ2MGQ0ODg1OWFlZGUzNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcv
ZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sCkBAIC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIGlu
c2VydFRleHQodGV4dCkgewogc2hvdWxkQmVUcnVlKCdpbnNlcnRUZXh0KCJ6Iik7IGluc2VydFRl
eHQoInoiKTsgaW5zZXJ0VGV4dCgiICIpOyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9j
dW1lbnQsIDAsIDIpJyk7CiAKIGRlYnVnKCdFbmFibGUgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tp
bmcsIGRlbGV0ZSB0d28gY2hhcmFjdGVycywgYW5kIGluc2VydCBhIHNwYWNlJyk7Ci10ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwogaW50
ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CiAKIHRl
c3RSdW5uZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7CkBAIC0zNiw4ICszNiw2IEBA
IGZ1bmN0aW9uIHZlcmlmeU1hcmtlcigpIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBz
aG91bGRCZUZhbHNlKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEp
Jyk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
ZmFsc2UpOwotICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoZmFsc2UpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogd2luZG93LnNldFRpbWVvdXQodmVy
aWZ5TWFya2VyLCAxKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tbWlzc3BlbGxlZC13b3JkLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29y
LXRvLW1pc3NwZWxsZWQtd29yZC5odG1sCmluZGV4IDYwZmMwMmVkZjMxNGZlZDU1YjUyNDM0OTBh
YWVlMzBkZWVjZDc0YzguLjMxZDdkNThmZWRkYmZjZjU0OTA5NmE3NzY2YWEzZGJiNWEzYTQwODQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvbW92ZS1jdXJzb3ItdG8tbWlzc3BlbGxlZC13b3JkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1taXNzcGVs
bGVkLXdvcmQuaHRtbApAQCAtMTAsNyArMTAsNyBAQCBkZXNjcmlwdGlvbignVGVzdCBpZiBDaHJv
bWUgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBhIG1pc3NwZWxsZWQgbWFya2VyIHdoZW4gbW92aQog
ICAgICAgICAgICAgJ1RvIHRlc3QgbWFudWFsbHksIHR5cGUgYSBtaXNzcGVsbGVkIHdvcmQgInp6
ICIgYW5kIHR5cGUgYSBsZWZ0LWFycm93IGtleSB0byBtb3ZlIHRoZSBjdXJzb3Igb24gaXQuJyAr
CiAgICAgICAgICAgICAnVGhpcyB0ZXN0IHN1Y2NlZWRzIHdoZW4gInp6IiBpcyBtYXJrZWQgYXMg
bWlzc3BlbGxlZC4nKTsKIAotdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCh0cnVlKTsKIHZhciBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3NyYycpOwogbm9kZS5mb2N1cygpOwogZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgJ3onKTsKQEAgLTE4LDcgKzE4LDYgQEAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydFRleHQiLCBmYWxzZSwgJ3onKTsKIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0
IiwgZmFsc2UsICcgJyk7CiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdtb3ZlJywgJ2Jh
Y2t3YXJkJywgJ2NoYXJhY3RlcicpOwogc2hvdWxkQmVUcnVlKCdpbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7Ci10ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>