<?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>58011</bug_id>
          
          <creation_ts>2011-04-06 22:08:36 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Add more tests for detailed heap snapshots UI</short_desc>
          <delta_ts>2011-04-08 04:59:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>58010</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381126</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-06 22:08:36 -0700</bug_when>
    <thetext>Added tests for &quot;Containment&quot; view. Minor refactorings, bugs fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381130</commentid>
    <comment_count>1</comment_count>
      <attachid>88573</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-06 22:12:28 -0700</bug_when>
    <thetext>Created attachment 88573
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381148</commentid>
    <comment_count>2</comment_count>
      <attachid>88579</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-07 00:01:49 -0700</bug_when>
    <thetext>Created attachment 88579
reduce test running time (bug 58010)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381196</commentid>
    <comment_count>3</comment_count>
      <attachid>88596</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-07 02:17:21 -0700</bug_when>
    <thetext>Created attachment 88596
split big test into smaller ones</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382155</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-08 04:59:51 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/83286


2011-04-08  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Add more tests for detailed heap snapshots UI.
        https://bugs.webkit.org/show_bug.cgi?id=58010
        https://bugs.webkit.org/show_bug.cgi?id=58011

        Added tests for &quot;Containment&quot; view. Minor refactorings, bugs fixed.
        Split one large tests into smaller ones to avoid timing out in debug mode.

        Tests: inspector/profiler/detailed-heapshots-containment-expansion-preserved-when-sorting.html
               inspector/profiler/detailed-heapshots-containment-show-all.html
               inspector/profiler/detailed-heapshots-containment-show-next.html
               inspector/profiler/detailed-heapshots-containment-sorting.html
               inspector/profiler/detailed-heapshots-summary-expansion-preserved-when-sorting.html
               inspector/profiler/detailed-heapshots-summary-show-all.html
               inspector/profiler/detailed-heapshots-summary-show-next.html
               inspector/profiler/detailed-heapshots-summary-sorting.html

        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotGridNode):
        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren):
        (WebInspector.HeapSnapshotGridNode.prototype.sort.doSort):
        (WebInspector.HeapSnapshotGridNode.prototype.sort):
        (WebInspector.HeapSnapshotGenericObjectNode):
        (WebInspector.HeapSnapshotObjectNode):
        (WebInspector.HeapSnapshotInstanceNode):
        (WebInspector.HeapSnapshotConstructorNode):
        (WebInspector.HeapSnapshotDiffNode):
        (WebInspector.HeapSnapshotDominatorObjectNode):
        * inspector/front-end/DetailedHeapshotView.js:
        (WebInspector.HeapSnapshotContainmentDataGrid):
        (WebInspector.HeapSnapshotDominatorsDataGrid):


2011-04-08  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Add more tests for detailed heap snapshots UI.
        https://bugs.webkit.org/show_bug.cgi?id=58010
        https://bugs.webkit.org/show_bug.cgi?id=58011

        Added tests for &quot;Containment&quot; view. Minor refactorings, bugs fixed.
        Split one large tests into smaller ones to avoid timing out in debug mode.

        * inspector/profiler/detailed-heapshots-containment-expansion-preserved-when-sorting-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-containment-expansion-preserved-when-sorting.html: Added.
        * inspector/profiler/detailed-heapshots-containment-show-all-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-containment-show-all.html: Added.
        * inspector/profiler/detailed-heapshots-containment-show-next-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-containment-show-next.html: Added.
        * inspector/profiler/detailed-heapshots-containment-sorting-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-containment-sorting.html: Added.
        * inspector/profiler/detailed-heapshots-summary-expansion-preserved-when-sorting-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-summary-expansion-preserved-when-sorting.html: Added.
        * inspector/profiler/detailed-heapshots-summary-expected.txt: Removed.
        * inspector/profiler/detailed-heapshots-summary-show-all-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-summary-show-all.html: Added.
        * inspector/profiler/detailed-heapshots-summary-show-next-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-summary-show-next.html: Added.
        * inspector/profiler/detailed-heapshots-summary-sorting-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-summary-sorting.html: Added.
        * inspector/profiler/detailed-heapshots-summary.html: Removed.
        * inspector/profiler/detailed-heapshots-test.js:
        (initialize_DetailedHeapshotTest.InspectorTest.startProfilerTest.detailedHeapProfilesEnabled):
        (initialize_DetailedHeapshotTest.InspectorTest.startProfilerTest):
        (initialize_DetailedHeapshotTest.):
        (initialize_DetailedHeapshotTest):
        * platform/chromium/inspector/profiler/detailed-heapshots-containment-expansion-preserved-when-sorting-expected.txt: Copied from LayoutTests/platform/chromium/inspector/profiler/detailed-heapshots-summary-expected.txt.
        * platform/chromium/inspector/profiler/detailed-heapshots-containment-show-all-expected.txt: Added.
        * platform/chromium/inspector/profiler/detailed-heapshots-containment-show-next-expected.txt: Added.
        * platform/chromium/inspector/profiler/detailed-heapshots-containment-sorting-expected.txt: Added.
        * platform/chromium/inspector/profiler/detailed-heapshots-summary-expansion-preserved-when-sorting-expected.txt: Renamed from LayoutTests/platform/chromium/inspector/profiler/detailed-heapshots-summary-expected.txt.
        * platform/chromium/inspector/profiler/detailed-heapshots-summary-show-all-expected.txt: Added.
        * platform/chromium/inspector/profiler/detailed-heapshots-summary-show-next-expected.txt: Added.
        * platform/chromium/inspector/profiler/detailed-heapshots-summary-sorting-expected.txt: Added.
        * platform/chromium/test_expectations.txt:</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88573</attachid>
            <date>2011-04-06 22:12:28 -0700</date>
            <delta_ts>2011-04-07 00:01:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-58011</filename>
            <type>text/plain</type>
            <size>28223</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNTRkODFhLi42OTMzZmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQt
MDYgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIEFkZCBtb3JlIHRlc3RzIGZvciBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cyBVSS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDExCisKKyAg
ICAgICAgQWRkZWQgdGVzdHMgZm9yICJDb250YWlubWVudCIgdmlldy4gTWlub3IgcmVmYWN0b3Jp
bmdzLCBidWdzIGZpeGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy1jb250YWlubWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQuaHRtbDogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1zdW1tYXJ5Lmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1zdW1tYXJ5Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZXRhaWxlZEhlYXBz
aG90VGVzdC4pOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZXRhaWxlZEhlYXBzaG90VGVzdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb250YWlubWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTA0LTA1ICBN
aWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5MWJj
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAor
VGVzdHMgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgorCitIZWFwIHBy
b2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmRmMGQyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1j
b250YWlubWVudC5odG1sCkBAIC0wLDAgKzEsMjI0IEBACis8aHRtbD4KKzxoZWFkPgorICA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluc3RhbmNlQ291
bnQgPSA1NTU7CisgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kQW5kRXhwYW5kR0NSb290cyhuZXh0U3RlcCkK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHByb3BlcnR5TWF0Y2hlcihkYXRhKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSA9PT0gIihHQyByb290cykgQDMiOworICAg
ICAgICB9CisgICAgICAgIHZhciBnY1Jvb3RzID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmpl
Y3QiLCBwcm9wZXJ0eU1hdGNoZXIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCAhIWdjUm9vdHMsICJHQyByb290cyByb3ciKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBhbmRSb3coZ2NSb290cywgbmV4dFN0ZXApOworICAgIH0KKworICAgIEluc3BlY3RvclRl
c3QucnVuRGV0YWlsZWRIZWFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RT
b3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFu
ZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3Quc3dpdGNoVG9WaWV3KCJDb250YWlubWVudCIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIGdjUm9vdHM7CisgICAgICAgICAgICB2YXIgY29sdW1uczsKKyAg
ICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uOworICAgICAgICAgICAgdmFyIGN1cnJlbnRDb2x1
bW5PcmRlcjsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXAzKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoZ2NSb290c1JvdykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBnY1Jvb3RzID0gZ2NSb290c1JvdzsKKyAgICAgICAgICAgICAg
ICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOworICAgICAgICAgICAgICAg
IGN1cnJlbnRDb2x1bW4gPSAwOworICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9
IGZhbHNlOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDQsIDApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPj0gY29sdW1ucy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY2xpY2tDb2x1bW4oY29sdW1uc1tjdXJyZW50Q29sdW1uXSwgc3RlcDUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNShuZXdDb2x1bW5TdGF0ZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dID0gbmV3Q29s
dW1uU3RhdGU7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gSW5zcGVjdG9yVGVzdC5j
b2x1bW5Db250ZW50cyhjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLCBnY1Jvb3RzKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWNvbnRlbnRzLmxlbmd0
aCwgImNvbHVtbiBjb250ZW50cyIpOworICAgICAgICAgICAgICAgIHZhciBzb3J0VHlwZXMgPSB7
IG9iamVjdDogIm5hbWUiLCBzaGFsbG93U2l6ZTogInNpemUiLCByZXRhaW5lZFNpemU6ICJzaXpl
IiB9OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEh
c29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRlbnRpZmllcl0sICJzb3J0IGJ5IGlk
ZW50aWZpZXIiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJc1Nv
cnRlZChjb250ZW50cywgc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRlbnRpZmll
cl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0uc29ydCk7CisKKyAgICAgICAgICAgICAgICBpZiAo
IWN1cnJlbnRDb2x1bW5PcmRlcikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9y
ZGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Y3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICsrY3VycmVu
dENvbHVtbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChz
dGVwNCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdFNob3dOZXh0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
dGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJDb250YWlubWVudCIsIHN0ZXAyKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXAzKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMocm93KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJvd3Mocm93
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCByb3dz
U2hvd24gPD0gaW5zdGFuY2VDb3VudCwgInNob3duIG1vcmUgaW5zdGFuY2VzIHRoYW4gY3JlYXRl
ZDogIiArIHJvd3NTaG93biArICIgPiAiICsgaW5zdGFuY2VDb3VudCk7CisgICAgICAgICAgICAg
ICAgaWYgKHJvd3NTaG93biA8IGluc3RhbmNlQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0
b25zTm9kZSwgImJ1dHRvbnMgbm9kZSIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXAzKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvd3NTaG93biA9PT0gaW5zdGFuY2VDb3VudCkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZp
bmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyhmYWxzZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVu
IGFsbCBpbnN0YW5jZXMgYXJlIHNob3duISIpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KG5leHQsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0U2hvd0FsbChuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBz
aG90LCBzdGVwMSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1l
bnQiLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kQW5kRXhwYW5kR0NSb290cyhz
dGVwMyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0
b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsKKyAg
ICAgICAgICAgICAgICB2YXIgd29yZHMgPSBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50
LnNwbGl0KCIgIik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jkcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVOdW1iZXIgPSBwYXJz
ZUludCh3b3Jkc1tpXSwgMTApOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heWJl
TnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKGluc3RhbmNlQ291bnQsIG1heWJlTnVtYmVyLCBidXR0b25zTm9kZS5zaG93QWxsLnRleHRD
b250ZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50
RGF0YVJvd3Mocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyhpbnN0YW5jZUNvdW50LCByb3dzU2hvd24sICJhZnRlciBzaG93QWxsIGNsaWNrIik7CisgICAg
ICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05v
ZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxz
ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5jZXMg
YXJlIHNob3duISIpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFuc2lvblBy
ZXNlcnZlZFdoZW5Tb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJDb250YWlubWVudCIsIHN0ZXAyKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNvbHVtbnM7CisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1ucyA9IElu
c3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZp
bmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXA0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gc3RlcDQocm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBi
dXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwg
Im5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDUpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNShyb3cpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IHJvdy5jaGlsZHJlblswXTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIGlu
c3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJv
dywgZXhwYW5kQSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZXhwYW5kQShyb3cpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNo
ZXIoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGRhdGEubmFtZSA9PT0gImEiICYmIGRhdGEudmFsdWUuY2hhckF0KDApID09PSAiQSI7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdmFyIGFSb3cgPSBJ
bnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsIHByb3BlcnR5TWF0Y2hlciwgcm93KTsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFhUm93
LCAiXCJhOiBBXCIgcm93Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
YW5kUm93KGFSb3csIHN0ZXA2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciBjb2x1bW5Db250ZW50czsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0
ZXA2KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50cyA9IElu
c3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBjbGlja1R3aWNlKTsKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBjbGlja1R3aWNlKCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3Rl
cDcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gc3RlcDcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1
bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRDb2x1bW5Db250ZW50c0VxdWFsKGNv
bHVtbkNvbnRlbnRzLCBuZXdDb2x1bW5Db250ZW50cyk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMg
U3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgorPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1zdW1tYXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnkuaHRtbAppbmRleCA4ZDY3Zjk2Li41NmQwOWU5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVh
cHNob3RzLXN1bW1hcnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnkuaHRtbApAQCAtMzEsMTMgKzMxLDEzIEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZpZXdD
b2x1bW5zKCk7CiAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbiA9IDA7CiAgICAgICAgICAg
ICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgc3RlcDMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAzLCAwKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmIChjdXJyZW50Q29sdW1uID49IGNvbHVtbnMubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAw
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIApAQCAt
NTksNyArNTksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dENvbHVtbk9yZGVyID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICsrY3VycmVudENvbHVt
bjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RlcDMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KHN0ZXAzLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwK
IApAQCAtOTAsNyArOTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHJvd3NTaG93biA9PT0gaW5zdGFuY2VDb3VudCkgewogICAgICAgICAgICAgICAgICAg
ICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwog
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgISFi
dXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5jZXMgYXJlIHNo
b3duISIpOwotICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQobmV4dCwgMCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9LApAQCAtMTMyLDcgKzEzMiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGluc3RhbmNlQ291bnQsIHJvd3NTaG93
biwgImFmdGVyIHNob3dBbGwgY2xpY2siKTsKICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05v
ZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9u
cyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7Ci0gICAgICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0sCiAKQEAgLTE0NSwyNCArMTQ1LDMzIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJTdW1tYXJ5
Iiwgc3RlcDIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgY29sdW1uczsKICAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDMpOworICAgICAgICAg
ICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJc
IkJcIiByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3cs
IGV4cGFuZEIpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEIoKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9y
VGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBm
b3VuZCEiKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3Jl
QnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIHZhciBjb2x1bW5zOwogICAgICAgICAgICAg
ZnVuY3Rpb24gc3RlcDMoKQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnMg
PSBJbnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KCkKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOwogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIg
cm93Iik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBleHBh
bmRCSW5zdGFuY2UpOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEJJbnN0YW5jZShy
b3cpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBiSW5zdGFuY2VSb3cg
PSByb3cuY2hpbGRyZW5bMF07Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHRydWUsICEhYkluc3RhbmNlUm93LCAiXCJCXCIgaW5zdGFuY2Ugcm93Iik7Ci0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGJJbnN0YW5jZVJvdywg
ZXhwYW5kQSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJJbnN0YW5jZVJv
dyA9IHJvdy5jaGlsZHJlblswXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIWJJbnN0YW5jZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGJJbnN0YW5jZVJvdywgZXhwYW5k
QSk7CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZXhwYW5kQShyb3cpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkK
QEAgLTE3MSw0NiArMTgwLDI2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIHZhciBhUm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93
KCJvYmplY3QiLCBwcm9wZXJ0eU1hdGNoZXIsIHJvdyk7CiAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYVJvdywgIlwiYTogQVwiIHJvdyIpOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhhUm93LCBzdGVwNCk7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA1
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciBj
b2x1bW5Db250ZW50czsKLSAgICAgICAgICAgIHZhciB0ZXN0U3RhdGVzID0gWyIiLCAiZXhwYW5k
ZWQiLCAic2hvdyBtb3JlIiwgInNob3cgYWxsIl07Ci0gICAgICAgICAgICBmdW5jdGlvbiBzdGVw
NCgpCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNSgpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdGVzdFN0YXRlcy5zaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICghdGVzdFN0
YXRlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgY29s
dW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgY2xp
Y2tUd2ljZSk7CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1u
KGNvbHVtbnNbMF0sIHN0ZXA1KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
bGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNik7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwNSgpCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwNigpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdmFyIG5ld0NvbHVt
bkNvbnRlbnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zWzBdKTsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydENvbHVtbkNvbnRlbnRzRXF1YWwoY29s
dW1uQ29udGVudHMsIG5ld0NvbHVtbkNvbnRlbnRzKTsKLQotICAgICAgICAgICAgICAgIHZhciBy
b3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiByb3ciKTsK
LSAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0
b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgIGlmICh0ZXN0U3RhdGVzWzBdID09PSAiZXhw
YW5kZWQiIHx8IHRlc3RTdGF0ZXNbMF0gPT09ICJzaG93IG1vcmUiKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsIHRl
c3RTdGF0ZXNbMF0gKyAiOiBubyBidXR0b25zIG5vZGUgZm91bmQhIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXN0U3RhdGVzWzBdID09PSAiZXhwYW5kZWQiKQotICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93TmV4dCIsIGJ1
dHRvbnNOb2RlLCBzdGVwNCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIs
IGJ1dHRvbnNOb2RlLCBzdGVwNCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05v
ZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBzaG93biEiKTsK
LSAgICAgICAgICAgICAgICAgICAgc3RlcDQoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIF0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCmluZGV4IGUxYTY3NDEuLjE5YmVmZjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVz
dC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLXRlc3QuanMKQEAgLTEwMSwxNyArMTAxLDI3IEBAIEluc3BlY3RvclRlc3QuY2hlY2tBcnJh
eUlzU29ydGVkID0gZnVuY3Rpb24oY29udGVudHMsIHNvcnRUeXBlLCBzb3J0T3JkZXIpCiAgICAg
fQogICAgIGZ1bmN0aW9uIHBhcnNlU2l6ZShzaXplKQogICAgIHsKLSAgICAgICAgdmFyIGFtb3Vu
dCA9IHBhcnNlSW50KHNpemUsIDEwKTsKKyAgICAgICAgaWYgKHNpemUuY2hhckF0KDApID09PSAi
PiIpCisgICAgICAgICAgICBzaXplID0gc2l6ZS5zdWJzdHJpbmcoMik7CisgICAgICAgIHZhciBh
bW91bnQgPSBwYXJzZUZsb2F0KHNpemUsIDEwKTsKICAgICAgICAgdmFyIG11bHRpcGxpZXIgPSB7
Ci0gICAgICAgICAgICAiSyI6IDEwMjQsCi0gICAgICAgICAgICAiTSI6IDEwMjQgKiAxMDI0Ci0g
ICAgICAgIH1bc2l6ZS5jaGFyQXQoc2l6ZS5sZW5ndGggLSAxKV07CisgICAgICAgICAgICAiS0Ii
OiAxMDI0LAorICAgICAgICAgICAgIk1CIjogMTAyNCAqIDEwMjQKKyAgICAgICAgfVtzaXplLnN1
YnN0cmluZyhzaXplLmxlbmd0aCAtIDIpXTsKICAgICAgICAgcmV0dXJuIG11bHRpcGxpZXIgPyBh
bW91bnQgKiBtdWx0aXBsaWVyIDogYW1vdW50OwogICAgIH0KKyAgICBmdW5jdGlvbiBleHRyYWN0
TmFtZShkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CisgICAg
ICAgIGlmICghZGF0YS5uYW1lKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Ik5vIG5hbWUgZmllbGQgaW4gIiArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKKyAgICAgICAgcmV0
dXJuIHBhcnNlSW50KGRhdGEubmFtZSwgMTApOworICAgIH0KICAgICB2YXIgY29tcGFyYXRvciA9
IHsKICAgICAgICAgdGV4dDogc2ltcGxlQ29tcGFyYXRvciwKICAgICAgICAgbnVtYmVyOiBmdW5j
dGlvbiAoYSwgYikgeyByZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihwYXJzZUludChhLCAxMCksIHBh
cnNlSW50KGIsIDEwKSk7IH0sCi0gICAgICAgIHNpemU6IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVy
biBzaW1wbGVDb21wYXJhdG9yKHBhcnNlU2l6ZShhLCAxMCksIHBhcnNlU2l6ZShiLCAxMCkpOyB9
CisgICAgICAgIHNpemU6IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBzaW1wbGVDb21wYXJhdG9y
KHBhcnNlU2l6ZShhKSwgcGFyc2VTaXplKGIpKTsgfSwKKyAgICAgICAgbmFtZTogZnVuY3Rpb24g
KGEsIGIpIHsgcmV0dXJuIHNpbXBsZUNvbXBhcmF0b3IoZXh0cmFjdE5hbWUoYSksIGV4dHJhY3RO
YW1lKGIpKTsgfQogICAgIH1bc29ydFR5cGVdOwogICAgIHZhciBhY2NlcHRhYmxlQ29tcGFyaXNv
blJlc3VsdCA9IHsKICAgICAgICAgYXNjZW5kaW5nOiAtMSwKQEAgLTEzMCw3ICsxNDAsNyBAQCBJ
bnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJc1NvcnRlZCA9IGZ1bmN0aW9uKGNvbnRlbnRzLCBzb3J0
VHlwZSwgc29ydE9yZGVyKQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGVudHMubGVuZ3Ro
IC0gMTsgKytpKSB7CiAgICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJhdG9yKGNvbnRlbnRzW2ld
LCBjb250ZW50c1tpICsgMV0pOwogICAgICAgICBpZiAocmVzdWx0ICE9PSAwICYmIHJlc3VsdCAh
PT0gYWNjZXB0YWJsZUNvbXBhcmlzb25SZXN1bHQpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiRWxlbWVudHMgIiArIGkgKyAiIGFuZCAiICsgKGkgKyAxKSArICIgYXJlIG91
dCBvZiBvcmRlcjogIiArIGNvbnRlbnRzW2ldICsgIiAiICsgY29udGVudHNbaSArIDFdKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFbGVtZW50cyAiICsgaSArICIgYW5k
ICIgKyAoaSArIDEpICsgIiBhcmUgb3V0IG9mIG9yZGVyOiAiICsgY29udGVudHNbaV0gKyAiICIg
KyBjb250ZW50c1tpICsgMV0gKyAiICgiICsgc29ydE9yZGVyICsgIikiKTsKICAgICB9CiB9Owog
CkBAIC0xNDMsOCArMTUzLDEzIEBAIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4gPSBmdW5jdGlv
bihjb2x1bW4sIGNhbGxiYWNrKQogICAgIGZ1bmN0aW9uIHNvcnRpbmdDb21wbGV0ZSgpCiAgICAg
ewogICAgICAgICB0aGlzLl9jdXJyZW50R3JpZCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvcnRp
bmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUsIHRoaXMpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyhjb2x1bW4uaWRlbnRpZmllciwgdGhpcy5fY3VycmVudEdyaWQoKS5z
b3J0Q29sdW1uSWRlbnRpZmllciwgInVuZXhwZWN0ZWQgc29ydGluZyIpOwogICAgICAgICBjb2x1
bW4uc29ydCA9IHRoaXMuX2N1cnJlbnRHcmlkKCkuc29ydE9yZGVyOwotICAgICAgICBjYWxsYmFj
ayhjb2x1bW4pOworICAgICAgICBmdW5jdGlvbiBjYWxsQ2FsbGJhY2soKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIHNldFRpbWVv
dXQoY2FsbENhbGxiYWNrLCAwKTsKICAgICB9CiAgICAgdGhpcy5fY3VycmVudEdyaWQoKS5hZGRF
dmVudExpc3RlbmVyKCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsK
ICAgICB0aGlzLl9jdXJyZW50R3JpZCgpLl9jbGlja0luSGVhZGVyQ2VsbChldmVudCk7CkBAIC0x
NTcsMTcgKzE3MiwyMyBAQCBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24gPSBmdW5j
dGlvbihidXR0b25OYW1lLCByb3csIGNhbGxiYWNrKQogICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ29t
cGxldGUoKQogICAgIHsKICAgICAgICAgcGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHVs
YXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVDb21wbGV0ZSwgdGhpcyk7Ci0gICAgICAgIGNhbGxiYWNr
KHBhcmVudCk7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxDYWxsYmFjaygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKHBhcmVudCk7CisgICAgICAgIH0KKyAgICAgICAgc2V0VGltZW91
dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0KICAgICBwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigi
cG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0ZUNvbXBsZXRlLCB0aGlzKTsKICAgICByb3dbYnV0
dG9uTmFtZV0uY2xpY2soKTsKIH07CiAKLUluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMgPSBm
dW5jdGlvbihjb2x1bW4pCitJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzID0gZnVuY3Rpb24o
Y29sdW1uLCByb3cpCiB7CiAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIHZhciBwYXJlbnQgPSB0
aGlzLl9jdXJyZW50R3JpZCgpOworICAgIHZhciBwYXJlbnQgPSByb3cgfHwgdGhpcy5fY3VycmVu
dEdyaWQoKTsKICAgICBmb3IgKHZhciBub2RlID0gcGFyZW50LmNoaWxkcmVuWzBdOyBub2RlOyBu
b2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIHBhcmVudCwgdHJ1ZSkpIHsKKyAgICAg
ICAgaWYgKCFub2RlLnNlbGVjdGFibGUpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
dmFyIGRhdGEgPSBub2RlLmRhdGFbY29sdW1uLmlkZW50aWZpZXJdOwogICAgICAgICBpZiAodHlw
ZW9mIGRhdGEgPT09ICJvYmplY3QiKQogICAgICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5
KGRhdGEpOwpAQCAtMjQ5LDcgKzI3MCwxMSBAQCBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyA9IGZ1
bmN0aW9uKHJvdywgY2FsbGJhY2spCiAgICAgZnVuY3Rpb24gcG9wdWxhdGVDb21wbGV0ZSgpCiAg
ICAgewogICAgICAgICByb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUi
LCBwb3B1bGF0ZUNvbXBsZXRlLCB0aGlzKTsKLSAgICAgICAgY2FsbGJhY2socm93KTsgICAgICAg
IAorICAgICAgICBmdW5jdGlvbiBjYWxsQ2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAg
ICBjYWxsYmFjayhyb3cpOworICAgICAgICB9CisgICAgICAgIHNldFRpbWVvdXQoY2FsbENhbGxi
YWNrLCAwKTsKICAgICB9CiAgICAgcm93LmFkZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIGNvbXBs
ZXRlIiwgcG9wdWxhdGVDb21wbGV0ZSwgdGhpcyk7CiAgICAgcm93LmV4cGFuZCgpOwpAQCAtMjgx
LDEwICszMDYsMjYgQEAgSW5zcGVjdG9yVGVzdC5maW5kUm93ID0gZnVuY3Rpb24oY29sdW1uSWRl
bnRpZmllciwgbWF0Y2hlciwgcGFyZW50KQogCiBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldyA9
IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHdo
ZW4gYWRkaW5nIHRlc3RzIGZvciBvdGhlciB2aWV3cy4KLSAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscygiU3VtbWFyeSIsIHRpdGxlKTsKICAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Qu
c2FmZVdyYXAoY2FsbGJhY2spOwotICAgIGNhbGxiYWNrKCk7CisgICAgdmFyIHZpZXcgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnZpc2libGVWaWV3OworICAgIHZhciBpbmRleCA9IC0x
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy52aWV3cy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgaWYgKHZpZXcudmlld3NbaV0udGl0bGUgPT09IHRpdGxlKSB7CisgICAgICAgICAgICBpbmRl
eCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKHRydWUsIGluZGV4ID49IDAsICJWaWV3IG5vdCBmb3VuZDogIiArIHRpdGxl
KTsKKyAgICBpZiAodmlldy52aWV3cy5jdXJyZW50ID09PSBpbmRleCkgeworICAgICAgICBzZXRU
aW1lb3V0KGNhbGxiYWNrLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmdW5jdGlv
biBzb3J0aW5nQ29tcGxldGUoKQorICAgIHsKKyAgICAgICAgdmlldy52aWV3c1tpbmRleF0uZ3Jp
ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRl
LCB0aGlzKTsKKyAgICAgICAgc2V0VGltZW91dChjYWxsYmFjaywgMCk7CisgICAgfQorICAgIHZp
ZXcudmlld3NbaW5kZXhdLmdyaWQuYWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIs
IHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7CisgICAgdmlldy5fY2hhbmdlVmlldyh7dGFyZ2V0OiB7
c2VsZWN0ZWRJbmRleDogaW5kZXh9fSk7CiB9OwogCiBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVu
U25hcHNob3QgPSBmdW5jdGlvbihnZW5lcmF0b3IsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb250YWlubWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTAxZWY4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorVGVzdHMgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25h
cHNob3RzLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMg
d2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U29ydGluZworCitSdW5uaW5nOiB0ZXN0U2hv
d05leHQKKworUnVubmluZzogdGVzdFNob3dBbGwKKworUnVubmluZzogdGVzdEV4cGFuc2lvblBy
ZXNlcnZlZFdoZW5Tb3J0aW5nCisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQyZmU3YzMuLjJlYTAzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0w
NC0wNiAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtD
aHJvbWl1bV0gQWRkIG1vcmUgdGVzdHMgZm9yIGRldGFpbGVkIGhlYXAgc25hcHNob3RzIFVJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMTEKKwor
ICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgIkNvbnRhaW5tZW50IiB2aWV3LiBNaW5vciByZWZhY3Rv
cmluZ3MsIGJ1Z3MgZml4ZWQuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5zb3J0
LmRvU29ydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJv
dG90eXBlLnNvcnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFw
c2hvdFZpZXcuanM6CisKIDIwMTEtMDQtMDYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdy
aWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRI
ZWFwc2hvdEdyaWROb2Rlcy5qcwppbmRleCBjMjhmZjgyLi4wNzFkNTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9k
ZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhl
YXBzaG90R3JpZE5vZGVzLmpzCkBAIC02NSw2ICs2NSw4IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwcm92aWRlci5pbnN0YW5j
ZUNvdW50ID0gMDsKICAgICAgICAgfQogICAgICAgICBwcm92aWRlciA9IHByb3ZpZGVyIHx8IHRo
aXMuX3Byb3ZpZGVyOworICAgICAgICBpZiAoISgiaW5zdGFuY2VDb3VudCIgaW4gcHJvdmlkZXIp
KQorICAgICAgICAgICAgcHJvdmlkZXIuaW5zdGFuY2VDb3VudCA9IDA7CiAgICAgICAgIGhvd01h
bnkgPSBob3dNYW55IHx8IHRoaXMuX2RlZmF1bHRQb3B1bGF0ZUNvdW50OwogICAgICAgICBhdElu
ZGV4ID0gYXRJbmRleCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKICAgICAgICAgdmFyIGhhdmVT
YXZlZENoaWxkcmVuID0gISF0aGlzLl9zYXZlZENoaWxkcmVuOwpAQCAtMTAyLDI1ICsxMDQsMjUg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgIH0sCiAKLSAgICBzb3J0OiBmdW5jdGlvbihzdXBwcmVzc05vdGlmeUFib3V0Q29t
cGxldGlvbikKKyAgICBzb3J0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgY29tcGFy
YXRvciA9IHRoaXMuY29tcGFyYXRvcigpOwogICAgICAgICBXZWJJbnNwZWN0b3IuUGxlYXNlV2Fp
dE1lc3NhZ2UucHJvdG90eXBlLnN0YXJ0QWN0aW9uKHRoaXMuZGF0YUdyaWQuZWxlbWVudCwgZG9T
b3J0LmJpbmQodGhpcykpOwogCiAgICAgICAgIGZ1bmN0aW9uIGRvU29ydCgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghdGhpcy5fcHJvdmlkZXIuc29ydChjb21wYXJhdG9yKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9zYXZlQ2hpbGRyZW4oKTsKLSAg
ICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIHRoaXMuX3Byb3Zp
ZGVyLmZpcnN0KCk7Ci0gICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4odGhpcy5fcHJv
dmlkZXIpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLmNoaWxkcmVuLmxl
bmd0aDsgaSA8IGw7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hp
bGRyZW5baV07Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmV4cGFuZGVkKQotICAgICAgICAg
ICAgICAgICAgICBjaGlsZC5zb3J0KCk7CisgICAgICAgICAgICBpZiAodGhpcy5fcHJvdmlkZXIu
c29ydChjb21wYXJhdG9yKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVDaGlsZHJlbigp
OworICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9wcm92aWRlci5maXJzdCgpOworICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVD
aGlsZHJlbih0aGlzLl9wcm92aWRlcik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldOworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2hpbGQuZXhwYW5kZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zb3J0KCk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdXBw
cmVzc05vdGlmeUFib3V0Q29tcGxldGlvbikKKyAgICAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlk
ID09PSB0aGlzKQogICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KCJzb3J0aW5nIGNvbXBsZXRlIik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5q
cwppbmRleCBjYTdmODk4Li4yZTY0MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTQyMCwy
MCArNDIwLDE3IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyA9IGZ1bmN0aW9u
KHBhcmVudCwgcHJvZmlsZSkKICAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9
ICJzdGF0dXMtYmFyLWl0ZW0iOwogICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlVmlldy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAK
LSAgICB2YXIgY2xhc3Nlc1ZpZXdPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRp
b24iKTsKLSAgICBjbGFzc2VzVmlld09wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3VtbWFyeSIpOwotICAgIHZhciBkaWZmVmlld09wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIm9wdGlvbiIpOwotICAgIGRpZmZWaWV3T3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb21wYXJpc29uIik7Ci0gICAgdmFyIGNvbnRhaW5tZW50Vmlld09wdGlvbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgIGNvbnRhaW5tZW50Vmlld09w
dGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGFpbm1lbnQiKTsKLSAgICB2
YXIgZG9taW5hdG9yc1ZpZXdPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24i
KTsKLSAgICBkb21pbmF0b3JzVmlld09wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRG9taW5hdG9ycyIpOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQo
Y2xhc3Nlc1ZpZXdPcHRpb24pOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hp
bGQoZGlmZlZpZXdPcHRpb24pOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hp
bGQoY29udGFpbm1lbnRWaWV3T3B0aW9uKTsKLSAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmFw
cGVuZENoaWxkKGRvbWluYXRvcnNWaWV3T3B0aW9uKTsKLSAgICB0aGlzLnZpZXdzID0gWyJTdW1t
YXJ5IiwgIkNvbXBhcmlzb24iLCAiQ29udGFpbm1lbnQiLCAiRG9taW5hdG9ycyJdOworICAgIHRo
aXMudmlld3MgPSBbe3RpdGxlOiAiU3VtbWFyeSIsIHZpZXc6IHRoaXMuY29uc3RydWN0b3JzVmll
dywgZ3JpZDogdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZH0sCisgICAgICAgICAgICAgICAgICB7
dGl0bGU6ICJDb21wYXJpc29uIiwgdmlldzogdGhpcy5kaWZmVmlldywgZ3JpZDogdGhpcy5kaWZm
RGF0YUdyaWR9LAorICAgICAgICAgICAgICAgICAge3RpdGxlOiAiQ29udGFpbm1lbnQiLCB2aWV3
OiB0aGlzLmNvbnRhaW5tZW50VmlldywgZ3JpZDogdGhpcy5jb250YWlubWVudERhdGFHcmlkfSwK
KyAgICAgICAgICAgICAgICAgIHt0aXRsZTogIkRvbWluYXRvcnMiLCB2aWV3OiB0aGlzLmRvbWlu
YXRvclZpZXcsIGdyaWQ6IHRoaXMuZG9taW5hdG9yRGF0YUdyaWR9XTsKICAgICB0aGlzLnZpZXdz
LmN1cnJlbnQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy52aWV3cy5sZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlld3NbaV07CisgICAgICAgIHZhciBv
cHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9u
LmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKHZpZXcudGl0bGUpOworICAgICAgICB0aGlz
LnZpZXdTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CisgICAgfQogCiAgICAgdGhp
cy5fcHJvZmlsZVVpZCA9IHByb2ZpbGUudWlkOwogCkBAIC03NzEsMTkgKzc2OCw5IEBAIFdlYklu
c3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy52aWV3cy5jdXJyZW50ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkSW5kZXg7CiAgICAgICAgIHRo
aXMuY3VycmVudFZpZXcuaGlkZSgpOwotICAgICAgICBpZiAodGhpcy52aWV3c1t0aGlzLnZpZXdz
LmN1cnJlbnRdID09PSAiQ29udGFpbm1lbnQiKSB7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRW
aWV3ID0gdGhpcy5jb250YWlubWVudFZpZXc7Ci0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkID0g
dGhpcy5jb250YWlubWVudERhdGFHcmlkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld3Nb
dGhpcy52aWV3cy5jdXJyZW50XSA9PT0gIlN1bW1hcnkiKSB7Ci0gICAgICAgICAgICB0aGlzLmN1
cnJlbnRWaWV3ID0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3OwotICAgICAgICAgICAgdGhpcy5kYXRh
R3JpZCA9IHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQ7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhp
cy52aWV3c1t0aGlzLnZpZXdzLmN1cnJlbnRdID09PSAiQ29tcGFyaXNvbiIpIHsKLSAgICAgICAg
ICAgIHRoaXMuY3VycmVudFZpZXcgPSB0aGlzLmRpZmZWaWV3OwotICAgICAgICAgICAgdGhpcy5k
YXRhR3JpZCA9IHRoaXMuZGlmZkRhdGFHcmlkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmll
d3NbdGhpcy52aWV3cy5jdXJyZW50XSA9PT0gIkRvbWluYXRvcnMiKSB7Ci0gICAgICAgICAgICB0
aGlzLmN1cnJlbnRWaWV3ID0gdGhpcy5kb21pbmF0b3JWaWV3OwotICAgICAgICAgICAgdGhpcy5k
YXRhR3JpZCA9IHRoaXMuZG9taW5hdG9yRGF0YUdyaWQ7Ci0gICAgICAgIH0KKyAgICAgICAgdmFy
IHZpZXcgPSB0aGlzLnZpZXdzW3RoaXMudmlld3MuY3VycmVudF07CisgICAgICAgIHRoaXMuY3Vy
cmVudFZpZXcgPSB2aWV3LnZpZXc7CisgICAgICAgIHRoaXMuZGF0YUdyaWQgPSB2aWV3LmdyaWQ7
CiAgICAgICAgIHRoaXMuY3VycmVudFZpZXcuc2hvdygpOwogICAgICAgICB0aGlzLnJlZnJlc2hW
aXNpYmxlRGF0YSgpOwogICAgICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5kaWZm
Vmlldykgewo=
</data>
<flag name="commit-queue"
          id="81098"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88579</attachid>
            <date>2011-04-07 00:01:49 -0700</date>
            <delta_ts>2011-04-07 02:17:21 -0700</delta_ts>
            <desc>reduce test running time (bug 58010)</desc>
            <filename>patch-58011</filename>
            <type>text/plain</type>
            <size>35969</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYTkwZDIxLi5iNjJjNGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDQt
MDYgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIEFkZCBtb3JlIHRlc3RzIGZvciBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cyBVSS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDEwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAxMQorCisgICAg
ICAgIEFkZGVkIHRlc3RzIGZvciAiQ29udGFpbm1lbnQiIHZpZXcuIE1pbm9yIHJlZmFjdG9yaW5n
cywgYnVncyBmaXhlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50Lmh0bWw6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMt
c3VtbWFyeS5odG1sLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxl
ZC1oZWFwc2hvdHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hv
dFRlc3QuSW5zcGVjdG9yVGVzdC5zdGFydFByb2ZpbGVyVGVzdC5kZXRhaWxlZEhlYXBQcm9maWxl
c0VuYWJsZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZXRhaWxlZEhlYXBzaG90VGVzdC5JbnNw
ZWN0b3JUZXN0LnN0YXJ0UHJvZmlsZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGV0YWls
ZWRIZWFwc2hvdFRlc3QuKToKKyAgICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hvdFRl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDQtMDYg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
VXBkYXRlIHRlc3QgZXhwZWN0YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFp
bm1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAz
NmQyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKworSGVh
cCBwcm9maWxlciBpcyBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYzY4ZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LWNvbnRhaW5tZW50Lmh0bWwKQEAgLTAsMCArMSwyMjQgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5zdGFuY2VD
b3VudCA9IDI1OworICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCisgICAgeworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3Vu
dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZEFuZEV4cGFuZEdDUm9vdHMobmV4dFN0ZXAp
CisgICAgeworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWUgPT09ICIoR0Mgcm9vdHMpIEAzIjsKKyAg
ICAgICAgfQorICAgICAgICB2YXIgZ2NSb290cyA9IEluc3BlY3RvclRlc3QuZmluZFJvdygib2Jq
ZWN0IiwgcHJvcGVydHlNYXRjaGVyKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHModHJ1ZSwgISFnY1Jvb3RzLCAiR0Mgcm9vdHMgcm93Iik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwYW5kUm93KGdjUm9vdHMsIG5leHRTdGVwKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0
U29ydGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VB
bmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciBnY1Jvb3RzOworICAgICAgICAgICAgdmFyIGNvbHVtbnM7Cisg
ICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgIHZhciBjdXJyZW50Q29s
dW1uT3JkZXI7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBmaW5kQW5kRXhwYW5kR0NSb290cyhzdGVwMyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKGdjUm9vdHNSb3cpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2NSb290cyA9IGdjUm9vdHNSb3c7CisgICAgICAgICAgICAg
ICAgY29sdW1ucyA9IEluc3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50Q29sdW1uID0gMDsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uT3JkZXIg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXA0LCAwKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50Q29sdW1uID49IGNvbHVtbnMubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbY3VycmVudENvbHVtbl0sIHN0ZXA1KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUobmV3Q29sdW1uU3RhdGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1uc1tjdXJyZW50Q29sdW1uXSA9IG5ld0Nv
bHVtblN0YXRlOworICAgICAgICAgICAgICAgIHZhciBjb250ZW50cyA9IEluc3BlY3RvclRlc3Qu
Y29sdW1uQ29udGVudHMoY29sdW1uc1tjdXJyZW50Q29sdW1uXSwgZ2NSb290cyk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFjb250ZW50cy5sZW5n
dGgsICJjb2x1bW4gY29udGVudHMiKTsKKyAgICAgICAgICAgICAgICB2YXIgc29ydFR5cGVzID0g
eyBvYmplY3Q6ICJuYW1lIiwgc2hhbGxvd1NpemU6ICJzaXplIiwgcmV0YWluZWRTaXplOiAic2l6
ZSIgfTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAh
IXNvcnRUeXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCAic29ydCBieSBp
ZGVudGlmaWVyIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0FycmF5SXNT
b3J0ZWQoY29udGVudHMsIHNvcnRUeXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLmlkZW50aWZp
ZXJdLCBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLnNvcnQpOworCisgICAgICAgICAgICAgICAgaWYg
KCFjdXJyZW50Q29sdW1uT3JkZXIpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5P
cmRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICArK2N1cnJl
bnRDb2x1bW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
c3RlcDQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RTaG93TmV4dChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaW5kQW5kRXhwYW5kR0NSb290cyhzdGVwMyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFSb3dzKHJv
dyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgcm93
c1Nob3duIDw9IGluc3RhbmNlQ291bnQsICJzaG93biBtb3JlIGluc3RhbmNlcyB0aGFuIGNyZWF0
ZWQ6ICIgKyByb3dzU2hvd24gKyAiID4gIiArIGluc3RhbmNlQ291bnQpOworICAgICAgICAgICAg
ICAgIGlmIChyb3dzU2hvd24gPCBpbnN0YW5jZUNvdW50KSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0
dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93TmV4dCIsIGJ1dHRvbnNOb2RlLCBzdGVwMyk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyb3dzU2hvd24gPT09IGluc3RhbmNlQ291bnQp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5m
aW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hl
biBhbGwgaW5zdGFuY2VzIGFyZSBzaG93biEiKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dBbGwobmV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFw
c2hvdCwgc3RlcDEpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkNvbnRhaW5t
ZW50Iiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVw
MigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZEFuZEV4cGFuZEdDUm9vdHMo
c3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMyhyb3cp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVj
dG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7Cisg
ICAgICAgICAgICAgICAgdmFyIHdvcmRzID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVu
dC5zcGxpdCgiICIpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFy
c2VJbnQod29yZHNbaV0sIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXli
ZU51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhpbnN0YW5jZUNvdW50LCBtYXliZU51bWJlciwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0
Q29udGVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3Vu
dERhdGFSb3dzKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoaW5zdGFuY2VDb3VudCwgcm93c1Nob3duLCAiYWZ0ZXIgc2hvd0FsbCBjbGljayIpOworICAg
ICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNO
b2RlKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFs
c2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2Vz
IGFyZSBzaG93biEiKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFeHBhbnNpb25Q
cmVzZXJ2ZWRXaGVuU29ydGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5zOworICAgICAgICAgICAgZnVu
Y3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJ
bnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwMyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBm
aW5kQW5kRXhwYW5kR0NSb290cyhzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIg
YnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUs
ICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA1KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUocm93KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciByb3cgPSByb3cuY2hpbGRyZW5bMF07CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiBp
bnN0YW5jZSByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhy
b3csIGV4cGFuZEEpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEEocm93KQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHJvcGVydHlNYXRj
aGVyKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBkYXRhLm5hbWUgPT09ICJhIiAmJiBkYXRhLnZhbHVlLmNoYXJBdCgwKSA9PT0gIkEi
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHZhciBhUm93ID0g
SW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCBwcm9wZXJ0eU1hdGNoZXIsIHJvdyk7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYVJv
dywgIlwiYTogQVwiIHJvdyIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGFuZFJvdyhhUm93LCBzdGVwNik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgY29sdW1uQ29udGVudHM7CisgICAgICAgICAgICBmdW5jdGlvbiBz
dGVwNigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudHMgPSBJ
bnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgY2xpY2tUd2ljZSk7CisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0
ZXA3KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHN0ZXA3KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbmV3Q29s
dW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0Q29sdW1uQ29udGVudHNFcXVhbChj
b2x1bW5Db250ZW50cywgbmV3Q29sdW1uQ29udGVudHMpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdKTsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3Rz
IFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKzwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtc3VtbWFyeS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5Lmh0bWwKaW5kZXggOGQ2N2Y5Ni4uZWZkN2Fm
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1zdW1tYXJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5Lmh0bWwKQEAgLTYsNyArNiw3IEBACiAKIGZ1bmN0
aW9uIHRlc3QoKQogewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gNTU1OworICAgIHZhciBpbnN0
YW5jZUNvdW50ID0gMjU7CiAgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKICAgICB7
CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5j
ZUNvdW50KTsKQEAgLTMxLDEzICszMSwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
ICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOwogICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRl
ciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHN0ZXAzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChzdGVwMywgMCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IHN0ZXAzKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbHVt
biA+PSBjb2x1bW5zLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgICAgICArK2N1cnJlbnRDb2x1bW47CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHN0ZXAzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChzdGVw
MywgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKQEAgLTkwLDcgKzkwLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyb3dzU2hvd24gPT09IGlu
c3RhbmNlQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5z
cGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5v
ZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBzaG93biEiKTsKLSAgICAgICAgICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSwKQEAgLTEzMiw3ICsx
MzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyhpbnN0YW5jZUNvdW50LCByb3dzU2hvd24sICJhZnRlciBzaG93QWxsIGNsaWNr
Iik7CiAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5k
QnV0dG9uc05vZGUocm93KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhmYWxzZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBp
bnN0YW5jZXMgYXJlIHNob3duISIpOwotICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOwogICAgICAgICAgICAgfQogICAgICAgICB9LAog
CkBAIC0xNDUsMjQgKzE0NSwzMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiU3VtbWFyeSIsIHN0ZXAyKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgdmFyIGNvbHVtbnM7CiAgICAgICAgICAgICBmdW5jdGlvbiBzdGVw
MigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29sdW1ucyA9IEluc3BlY3RvclRl
c3Qudmlld0NvbHVtbnMoKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29s
dW1uKGNvbHVtbnNbMF0sIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVj
dG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBleHBhbmRCKTsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBleHBhbmRCKCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJv
dyk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUs
ICEhYnV0dG9uc05vZGUsICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7CisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRv
bnNOb2RlLCBzdGVwMyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICB2YXIgY29sdW1uczsKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29s
dW1ucygpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1u
c1swXSwgc3RlcDQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVw
NCgpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRl
c3QuZmluZFJvdygib2JqZWN0IiwgIkIiKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIHJvdyIpOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywgZXhwYW5kQkluc3RhbmNlKTsKLSAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBleHBhbmRCSW5zdGFuY2Uocm93KQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgYkluc3RhbmNlUm93ID0gcm93LmNoaWxkcmVuWzBdOwotICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0
YW5jZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwotICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGFuZFJvdyhiSW5zdGFuY2VSb3csIGV4cGFuZEEpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBiSW5zdGFuY2VSb3cgPSByb3cuY2hpbGRyZW5bMF07Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFiSW5zdGFu
Y2VSb3csICJcIkJcIiBpbnN0YW5jZSByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGFuZFJvdyhiSW5zdGFuY2VSb3csIGV4cGFuZEEpOwogICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIGV4cGFuZEEocm93KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gcHJvcGVydHlNYXRjaGVyKGRhdGEpCkBAIC0xNzEsNDYgKzE4MCwyNiBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB2YXIgYVJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJvdygib2JqZWN0IiwgcHJvcGVydHlNYXRj
aGVyLCByb3cpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCAhIWFSb3csICJcImE6IEFcIiByb3ciKTsKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBhbmRSb3coYVJvdywgc3RlcDQpOworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhhUm93LCBzdGVwNSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgY29sdW1uQ29udGVudHM7Ci0gICAgICAg
ICAgICB2YXIgdGVzdFN0YXRlcyA9IFsiIiwgImV4cGFuZGVkIiwgInNob3cgbW9yZSIsICJzaG93
IGFsbCJdOwotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDUoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlc3RTdGF0ZXMuc2hp
ZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRlc3RTdGF0ZXMubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIH0KLQogICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnRzID0gSW5zcGVjdG9y
VGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zWzBdKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIGNsaWNrVHdpY2UpOwogICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIGNsaWNrVHdpY2UoKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNSk7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwg
c3RlcDYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ZnVuY3Rpb24gc3RlcDUoKQorICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDYoKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRl
c3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNvbnRlbnRzLCBuZXdDb2x1bW5D
b250ZW50cyk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5k
Um93KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1
dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAg
ICAgICAgICBpZiAodGVzdFN0YXRlc1swXSA9PT0gImV4cGFuZGVkIiB8fCB0ZXN0U3RhdGVzWzBd
ID09PSAic2hvdyBtb3JlIikgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCB0ZXN0U3RhdGVzWzBdICsgIjogbm8gYnV0
dG9ucyBub2RlIGZvdW5kISIpOwotICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFN0YXRlc1sw
XSA9PT0gImV4cGFuZGVkIikKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDQpOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDQpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5k
IHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7Ci0gICAgICAgICAgICAgICAgICAgIHN0
ZXA0KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4
dCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICBdKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5q
cwppbmRleCBlMWE2NzQxLi45ZjZkNGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCkBAIC0yMyw2ICsy
MywxMSBAQCBJbnNwZWN0b3JUZXN0LnN0YXJ0UHJvZmlsZXJUZXN0ID0gZnVuY3Rpb24oY2FsbGJh
Y2spCiAKICAgICBmdW5jdGlvbiBkZXRhaWxlZEhlYXBQcm9maWxlc0VuYWJsZWQoKQogICAgIHsK
KyAgICAgICAgLy8gUmVkdWNlIHRoZSBudW1iZXIgb2YgcG9wdWxhdGVkIG5vZGVzIHRvIHNwZWVk
IHVwIHRlc3RpbmcuCisgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVu
dERhdGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVsYXRlQ291bnQgPSAxMDsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5f
ZGVmYXVsdFBvcHVsYXRlQ291bnQgPSAxMDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50ID0gNTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5
cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50ID0gMzsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkRldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLiIpOwogICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKSgpOwogICAgIH0KQEAgLTEwMSwxNyArMTA2
LDI3IEBAIEluc3BlY3RvclRlc3QuY2hlY2tBcnJheUlzU29ydGVkID0gZnVuY3Rpb24oY29udGVu
dHMsIHNvcnRUeXBlLCBzb3J0T3JkZXIpCiAgICAgfQogICAgIGZ1bmN0aW9uIHBhcnNlU2l6ZShz
aXplKQogICAgIHsKLSAgICAgICAgdmFyIGFtb3VudCA9IHBhcnNlSW50KHNpemUsIDEwKTsKKyAg
ICAgICAgaWYgKHNpemUuY2hhckF0KDApID09PSAiPiIpCisgICAgICAgICAgICBzaXplID0gc2l6
ZS5zdWJzdHJpbmcoMik7CisgICAgICAgIHZhciBhbW91bnQgPSBwYXJzZUZsb2F0KHNpemUsIDEw
KTsKICAgICAgICAgdmFyIG11bHRpcGxpZXIgPSB7Ci0gICAgICAgICAgICAiSyI6IDEwMjQsCi0g
ICAgICAgICAgICAiTSI6IDEwMjQgKiAxMDI0Ci0gICAgICAgIH1bc2l6ZS5jaGFyQXQoc2l6ZS5s
ZW5ndGggLSAxKV07CisgICAgICAgICAgICAiS0IiOiAxMDI0LAorICAgICAgICAgICAgIk1CIjog
MTAyNCAqIDEwMjQKKyAgICAgICAgfVtzaXplLnN1YnN0cmluZyhzaXplLmxlbmd0aCAtIDIpXTsK
ICAgICAgICAgcmV0dXJuIG11bHRpcGxpZXIgPyBhbW91bnQgKiBtdWx0aXBsaWVyIDogYW1vdW50
OwogICAgIH0KKyAgICBmdW5jdGlvbiBleHRyYWN0TmFtZShkYXRhKQorICAgIHsKKyAgICAgICAg
ZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CisgICAgICAgIGlmICghZGF0YS5uYW1lKQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5vIG5hbWUgZmllbGQgaW4gIiArIEpTT04u
c3RyaW5naWZ5KGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50KGRhdGEubmFtZSwgMTAp
OworICAgIH0KICAgICB2YXIgY29tcGFyYXRvciA9IHsKICAgICAgICAgdGV4dDogc2ltcGxlQ29t
cGFyYXRvciwKICAgICAgICAgbnVtYmVyOiBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gc2ltcGxl
Q29tcGFyYXRvcihwYXJzZUludChhLCAxMCksIHBhcnNlSW50KGIsIDEwKSk7IH0sCi0gICAgICAg
IHNpemU6IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBzaW1wbGVDb21wYXJhdG9yKHBhcnNlU2l6
ZShhLCAxMCksIHBhcnNlU2l6ZShiLCAxMCkpOyB9CisgICAgICAgIHNpemU6IGZ1bmN0aW9uIChh
LCBiKSB7IHJldHVybiBzaW1wbGVDb21wYXJhdG9yKHBhcnNlU2l6ZShhKSwgcGFyc2VTaXplKGIp
KTsgfSwKKyAgICAgICAgbmFtZTogZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIHNpbXBsZUNvbXBh
cmF0b3IoZXh0cmFjdE5hbWUoYSksIGV4dHJhY3ROYW1lKGIpKTsgfQogICAgIH1bc29ydFR5cGVd
OwogICAgIHZhciBhY2NlcHRhYmxlQ29tcGFyaXNvblJlc3VsdCA9IHsKICAgICAgICAgYXNjZW5k
aW5nOiAtMSwKQEAgLTEzMCw3ICsxNDUsNyBAQCBJbnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJc1Nv
cnRlZCA9IGZ1bmN0aW9uKGNvbnRlbnRzLCBzb3J0VHlwZSwgc29ydE9yZGVyKQogICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY29udGVudHMubGVuZ3RoIC0gMTsgKytpKSB7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSBjb21wYXJhdG9yKGNvbnRlbnRzW2ldLCBjb250ZW50c1tpICsgMV0pOwogICAgICAg
ICBpZiAocmVzdWx0ICE9PSAwICYmIHJlc3VsdCAhPT0gYWNjZXB0YWJsZUNvbXBhcmlzb25SZXN1
bHQpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWxlbWVudHMgIiArIGkg
KyAiIGFuZCAiICsgKGkgKyAxKSArICIgYXJlIG91dCBvZiBvcmRlcjogIiArIGNvbnRlbnRzW2ld
ICsgIiAiICsgY29udGVudHNbaSArIDFdKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJFbGVtZW50cyAiICsgaSArICIgYW5kICIgKyAoaSArIDEpICsgIiBhcmUgb3V0IG9m
IG9yZGVyOiAiICsgY29udGVudHNbaV0gKyAiICIgKyBjb250ZW50c1tpICsgMV0gKyAiICgiICsg
c29ydE9yZGVyICsgIikiKTsKICAgICB9CiB9OwogCkBAIC0xNDMsOCArMTU4LDEzIEBAIEluc3Bl
Y3RvclRlc3QuY2xpY2tDb2x1bW4gPSBmdW5jdGlvbihjb2x1bW4sIGNhbGxiYWNrKQogICAgIGZ1
bmN0aW9uIHNvcnRpbmdDb21wbGV0ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jdXJyZW50R3Jp
ZCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxl
dGUsIHRoaXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb2x1bW4uaWRl
bnRpZmllciwgdGhpcy5fY3VycmVudEdyaWQoKS5zb3J0Q29sdW1uSWRlbnRpZmllciwgInVuZXhw
ZWN0ZWQgc29ydGluZyIpOwogICAgICAgICBjb2x1bW4uc29ydCA9IHRoaXMuX2N1cnJlbnRHcmlk
KCkuc29ydE9yZGVyOwotICAgICAgICBjYWxsYmFjayhjb2x1bW4pOworICAgICAgICBmdW5jdGlv
biBjYWxsQ2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFjayhjb2x1bW4p
OworICAgICAgICB9CisgICAgICAgIHNldFRpbWVvdXQoY2FsbENhbGxiYWNrLCAwKTsKICAgICB9
CiAgICAgdGhpcy5fY3VycmVudEdyaWQoKS5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNvbXBs
ZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKICAgICB0aGlzLl9jdXJyZW50R3JpZCgpLl9j
bGlja0luSGVhZGVyQ2VsbChldmVudCk7CkBAIC0xNTcsMTcgKzE3NywyMyBAQCBJbnNwZWN0b3JU
ZXN0LmNsaWNrU2hvd01vcmVCdXR0b24gPSBmdW5jdGlvbihidXR0b25OYW1lLCByb3csIGNhbGxi
YWNrKQogICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ29tcGxldGUoKQogICAgIHsKICAgICAgICAgcGFy
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVDb21w
bGV0ZSwgdGhpcyk7Ci0gICAgICAgIGNhbGxiYWNrKHBhcmVudCk7CisgICAgICAgIGZ1bmN0aW9u
IGNhbGxDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHBhcmVudCk7
CisgICAgICAgIH0KKyAgICAgICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0K
ICAgICBwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0
ZUNvbXBsZXRlLCB0aGlzKTsKICAgICByb3dbYnV0dG9uTmFtZV0uY2xpY2soKTsKIH07CiAKLUlu
c3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMgPSBmdW5jdGlvbihjb2x1bW4pCitJbnNwZWN0b3JU
ZXN0LmNvbHVtbkNvbnRlbnRzID0gZnVuY3Rpb24oY29sdW1uLCByb3cpCiB7CiAgICAgdmFyIHJl
c3VsdCA9IFtdOwotICAgIHZhciBwYXJlbnQgPSB0aGlzLl9jdXJyZW50R3JpZCgpOworICAgIHZh
ciBwYXJlbnQgPSByb3cgfHwgdGhpcy5fY3VycmVudEdyaWQoKTsKICAgICBmb3IgKHZhciBub2Rl
ID0gcGFyZW50LmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2Rl
KHRydWUsIHBhcmVudCwgdHJ1ZSkpIHsKKyAgICAgICAgaWYgKCFub2RlLnNlbGVjdGFibGUpCisg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdmFyIGRhdGEgPSBub2RlLmRhdGFbY29sdW1u
LmlkZW50aWZpZXJdOwogICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICJvYmplY3QiKQogICAg
ICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwpAQCAtMjQ5LDcgKzI3NSwxMSBA
QCBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyA9IGZ1bmN0aW9uKHJvdywgY2FsbGJhY2spCiAgICAg
ZnVuY3Rpb24gcG9wdWxhdGVDb21wbGV0ZSgpCiAgICAgewogICAgICAgICByb3cucmVtb3ZlRXZl
bnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0ZUNvbXBsZXRlLCB0aGlzKTsK
LSAgICAgICAgY2FsbGJhY2socm93KTsgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYWxsQ2Fs
bGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFjayhyb3cpOworICAgICAgICB9
CisgICAgICAgIHNldFRpbWVvdXQoY2FsbENhbGxiYWNrLCAwKTsKICAgICB9CiAgICAgcm93LmFk
ZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVDb21wbGV0ZSwgdGhp
cyk7CiAgICAgcm93LmV4cGFuZCgpOwpAQCAtMjgxLDEwICszMTEsMjYgQEAgSW5zcGVjdG9yVGVz
dC5maW5kUm93ID0gZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgbWF0Y2hlciwgcGFyZW50KQog
CiBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldyA9IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykK
IHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHdoZW4gYWRkaW5nIHRlc3RzIGZvciBvdGhlciB2
aWV3cy4KLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiU3VtbWFyeSIsIHRpdGxlKTsK
ICAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwotICAgIGNh
bGxiYWNrKCk7CisgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnZp
c2libGVWaWV3OworICAgIHZhciBpbmRleCA9IC0xOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dmlldy52aWV3cy5sZW5ndGg7ICsraSkKKyAgICAgICAgaWYgKHZpZXcudmlld3NbaV0udGl0bGUg
PT09IHRpdGxlKSB7CisgICAgICAgICAgICBpbmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIGluZGV4ID49
IDAsICJWaWV3IG5vdCBmb3VuZDogIiArIHRpdGxlKTsKKyAgICBpZiAodmlldy52aWV3cy5jdXJy
ZW50ID09PSBpbmRleCkgeworICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBmdW5jdGlvbiBzb3J0aW5nQ29tcGxldGUoKQorICAgIHsK
KyAgICAgICAgdmlldy52aWV3c1tpbmRleF0uZ3JpZC5yZW1vdmVFdmVudExpc3RlbmVyKCJzb3J0
aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKKyAgICAgICAgc2V0VGltZW91
dChjYWxsYmFjaywgMCk7CisgICAgfQorICAgIHZpZXcudmlld3NbaW5kZXhdLmdyaWQuYWRkRXZl
bnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7Cisg
ICAgdmlldy5fY2hhbmdlVmlldyh7dGFyZ2V0OiB7c2VsZWN0ZWRJbmRleDogaW5kZXh9fSk7CiB9
OwogCiBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QgPSBmdW5jdGlvbihnZW5lcmF0
b3IsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTAxZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1jb250YWlubWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgU3Vt
bWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgorCitQcm9maWxlciB3YXMgZW5h
YmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0
ZXN0U29ydGluZworCitSdW5uaW5nOiB0ZXN0U2hvd05leHQKKworUnVubmluZzogdGVzdFNob3dB
bGwKKworUnVubmluZzogdGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nCisKK1Byb2Zp
bGVyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDJmMmYyODkuLjJlNjhhMWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
QEAgLTMyOTksNyArMzI5OSw2IEBAIEJVR1dLNTgwMDggTUFDIFNOT1dMRU9QQVJEIDogZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvYmlkaS1DUy1hZnRlci1BTi5odG1sID0gSU1BCiBCVUdXSzU4MDA4
IE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JpZGktbWlycm9yLWhl
LWFyLmh0bWwgPSBJTUFHRStURVhUCiBCVUdXSzU4MDA4IE1BQyBTTk9XTEVPUEFSRCA6IGZhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2JpZGktbmV1dHJhbC1ydW4uaHRtbCA9IElNQUdFK1RFWFQKIAot
QlVHV0s1ODAxMCBXSU4gTElOVVggREVCVUcgOiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQt
aGVhcHNob3RzLXN1bW1hcnkuaHRtbCA9IFBBU1MgVElNRU9VVAogQlVHQ1I3ODYzOCBXSU4gOiBm
YXN0L2ZyYW1lcy9zZXQtdW5sb2FkZWQtZnJhbWUtbG9jYXRpb24uaHRtbCA9IENSQVNIIFBBU1MK
IEJVR1dLNTc5NzUgOiBmYXN0L292ZXJmbG93L2xpbmUtY2xhbXAuaHRtbCA9IElNQUdFCiBCVUdX
SzU4MDA1IE1BQyA6IGVkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWlubGluZS1lbGVtZW50Lmh0
bWwgPSBJTUFHRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc1Y2UwNDkuLjM4NTFiYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxMS0wNC0wNiAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gQWRkIG1vcmUgdGVzdHMgZm9yIGRldGFpbGVk
IGhlYXAgc25hcHNob3RzIFVJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTgwMTAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4MDExCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yICJDb250YWlubWVudCIg
dmlldy4gTWlub3IgcmVmYWN0b3JpbmdzLCBidWdzIGZpeGVkLgorCisgICAgICAgIFRlc3Q6IGlu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQuaHRtbAorCisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGls
ZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90
eXBlLnNvcnQuZG9Tb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlk
Tm9kZS5wcm90b3R5cGUuc29ydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
R2VuZXJpY09iamVjdE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9i
amVjdE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQpOgorCiAyMDExLTA0LTA2
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKaW5kZXggYzI4ZmY4Mi4u
NDY5Y2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwpAQCAtMjgsMTAgKzI4LDEw
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlk
Tm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGhhc0NoaWxkcmVuLCBwb3B1bGF0ZUNvdW50KQorV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlID0gZnVuY3Rpb24odHJlZSwgaGFzQ2hpbGRyZW4p
CiB7CiAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIG51bGwsIGhhc0No
aWxkcmVuKTsKLSAgICB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCA9IHBvcHVsYXRlQ291bnQ7
CisgICAgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQgPSB0cmVlLl9kZWZhdWx0UG9wdWxhdGVD
b3VudDsKICAgICB0aGlzLl9wcm92aWRlciA9IG51bGw7CiAgICAgdGhpcy5hZGRFdmVudExpc3Rl
bmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKIH0KQEAgLTY1LDYgKzY1LDgg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHByb3ZpZGVyLmluc3RhbmNlQ291bnQgPSAwOwogICAgICAgICB9CiAgICAgICAgIHBy
b3ZpZGVyID0gcHJvdmlkZXIgfHwgdGhpcy5fcHJvdmlkZXI7CisgICAgICAgIGlmICghKCJpbnN0
YW5jZUNvdW50IiBpbiBwcm92aWRlcikpCisgICAgICAgICAgICBwcm92aWRlci5pbnN0YW5jZUNv
dW50ID0gMDsKICAgICAgICAgaG93TWFueSA9IGhvd01hbnkgfHwgdGhpcy5fZGVmYXVsdFBvcHVs
YXRlQ291bnQ7CiAgICAgICAgIGF0SW5kZXggPSBhdEluZGV4IHx8IHRoaXMuY2hpbGRyZW4ubGVu
Z3RoOwogICAgICAgICB2YXIgaGF2ZVNhdmVkQ2hpbGRyZW4gPSAhIXRoaXMuX3NhdmVkQ2hpbGRy
ZW47CkBAIC0xMDIsMjUgKzEwNCwyNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIHNvcnQ6IGZ1bmN0aW9u
KHN1cHByZXNzTm90aWZ5QWJvdXRDb21wbGV0aW9uKQorICAgIHNvcnQ6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciBjb21wYXJhdG9yID0gdGhpcy5jb21wYXJhdG9yKCk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc3RhcnRBY3Rpb24odGhp
cy5kYXRhR3JpZC5lbGVtZW50LCBkb1NvcnQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgZnVuY3Rp
b24gZG9Tb3J0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9wcm92aWRlci5z
b3J0KGNvbXBhcmF0b3IpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRo
aXMuX3NhdmVDaGlsZHJlbigpOwotICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwot
ICAgICAgICAgICAgdGhpcy5fcHJvdmlkZXIuZmlyc3QoKTsKLSAgICAgICAgICAgIHRoaXMucG9w
dWxhdGVDaGlsZHJlbih0aGlzLl9wcm92aWRlcik7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsKLSAgICAgICAgICAgICAgICBpZiAoY2hp
bGQuZXhwYW5kZWQpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkLnNvcnQoKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9wcm92aWRlci5zb3J0KGNvbXBhcmF0b3IpKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc2F2ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGls
ZHJlbigpOworICAgICAgICAgICAgICAgIHRoaXMuX3Byb3ZpZGVyLmZpcnN0KCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKHRoaXMuX3Byb3ZpZGVyKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07
CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkLnNvcnQoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoIXN1cHByZXNzTm90aWZ5QWJvdXRDb21wbGV0aW9uKQorICAgICAg
ICAgICAgaWYgKHRoaXMuZGF0YUdyaWQgPT09IHRoaXMpCiAgICAgICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInNvcnRpbmcgY29tcGxldGUiKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTEyOCw5ICsxMzAsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5v
ZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlOwog
Ci1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUgPSBmdW5jdGlvbih0
cmVlLCBub2RlLCBoYXNDaGlsZHJlbiwgcG9wdWxhdGVDb3VudCkKK1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZSA9IGZ1bmN0aW9uKHRyZWUsIG5vZGUsIGhhc0NoaWxk
cmVuKQogewotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5jYWxsKHRoaXMs
IHRyZWUsIGhhc0NoaWxkcmVuLCBwb3B1bGF0ZUNvdW50KTsKKyAgICBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBoYXNDaGlsZHJlbik7CiAgICAgdGhp
cy5fbmFtZSA9IG5vZGUubmFtZTsKICAgICB0aGlzLl90eXBlID0gbm9kZS50eXBlOwogICAgIHRo
aXMuX3NoYWxsb3dTaXplID0gbm9kZS5zZWxmU2l6ZTsKQEAgLTIyOCw3ICsyMzAsNyBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5IZQogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUg
PSBmdW5jdGlvbih0cmVlLCBlZGdlKQogewogICAgIHZhciBwcm92aWRlciA9IHRoaXMuX2NyZWF0
ZVByb3ZpZGVyKHRyZWUuc25hcHNob3QsIGVkZ2Uubm9kZUluZGV4KTsKLSAgICBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBlZGdlLm5v
ZGUsICFwcm92aWRlci5pc0VtcHR5LCAxMDApOworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIGVkZ2Uubm9kZSwgIXByb3ZpZGVy
LmlzRW1wdHkpOwogICAgIHRoaXMuX3JlZmVyZW5jZU5hbWUgPSBlZGdlLm5hbWU7CiAgICAgdGhp
cy5fcmVmZXJlbmNlVHlwZSA9IGVkZ2UudHlwZTsKICAgICB0aGlzLl9wcm92aWRlciA9IHByb3Zp
ZGVyOwpAQCAtMzE3LDcgKzMxOSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3RO
b2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzCiBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlID0gZnVuY3Rpb24odHJlZSwgYmFzZVNuYXBz
aG90LCBzbmFwc2hvdCwgbm9kZSkKIHsKICAgICB2YXIgcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQ
cm92aWRlcihiYXNlU25hcHNob3QgfHwgc25hcHNob3QsIG5vZGUubm9kZUluZGV4KTsgIAotICAg
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRy
ZWUsIG5vZGUsICFwcm92aWRlci5pc0VtcHR5LCAxMDApOworICAgIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIG5vZGUsICFwcm92aWRl
ci5pc0VtcHR5KTsKICAgICB0aGlzLl9pc0RlbGV0ZWROb2RlID0gISFiYXNlU25hcHNob3Q7CiAg
ICAgdGhpcy5fcHJvdmlkZXIgPSBwcm92aWRlcjsgICAgCiB9OwpAQCAtMzkxLDcgKzM5Myw3IEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5IZWFwU25hCiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25z
dHJ1Y3Rvck5vZGUgPSBmdW5jdGlvbih0cmVlLCBjbGFzc05hbWUsIGFnZ3JlZ2F0ZSkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBhZ2dy
ZWdhdGUuY291bnQgPiAwLCAxMDApOworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlk
Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIGFnZ3JlZ2F0ZS5jb3VudCA+IDApOwogICAgIHRoaXMuX25h
bWUgPSBjbGFzc05hbWU7CiAgICAgdGhpcy5fY291bnQgPSBhZ2dyZWdhdGUuY291bnQ7CiAgICAg
dGhpcy5fc2hhbGxvd1NpemUgPSBhZ2dyZWdhdGUuc2VsZjsKQEAgLTQ5Miw3ICs0OTQsNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUgPSBmdW5jdGlvbih0cmVlLCBjbGFzc05h
bWUsIGJhc2VBZ2dyZWdhdGUsIGFnZwogICAgICAgICBiYXNlQWdncmVnYXRlID0geyBjb3VudDog
MCwgc2VsZjogMCwgbWF4UmV0OiAwLCB0eXBlOmFnZ3JlZ2F0ZS50eXBlLCBuYW1lOmFnZ3JlZ2F0
ZS5uYW1lLCBpZHhzOiBbXSB9OwogICAgIGlmICghYWdncmVnYXRlKQogICAgICAgICBhZ2dyZWdh
dGUgPSB7IGNvdW50OiAwLCBzZWxmOiAwLCBtYXhSZXQ6IDAsIHR5cGU6YmFzZUFnZ3JlZ2F0ZS50
eXBlLCBuYW1lOmJhc2VBZ2dyZWdhdGUubmFtZSwgaWR4czogW10gfTsKLSAgICBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCB0cnVlLCA1MCk7CisgICAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLmNhbGwodGhpcywgdHJlZSwgdHJ1ZSk7
CiAgICAgdGhpcy5fbmFtZSA9IGNsYXNzTmFtZTsKICAgICB0aGlzLl9jYWxjdWxhdGVEaWZmKHRy
ZWUuYmFzZVNuYXBzaG90LCB0cmVlLnNuYXBzaG90LCBiYXNlQWdncmVnYXRlLmlkeHMsIGFnZ3Jl
Z2F0ZS5pZHhzKTsKICAgICB0aGlzLl9wcm92aWRlciA9IHRoaXMuX2NyZWF0ZU5vZGVzUHJvdmlk
ZXIodHJlZS5iYXNlU25hcHNob3QsIHRyZWUuc25hcHNob3QsIGFnZ3JlZ2F0ZS50eXBlLCBjbGFz
c05hbWUpOwpAQCAtNjI3LDcgKzYyOSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZm
Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvCiBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZSA9IGZ1bmN0aW9uKHRyZWUs
IG5vZGUpCiB7CiAgICAgdmFyIHByb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIodHJlZS5z
bmFwc2hvdCwgbm9kZS5ub2RlSW5kZXgpOwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RH
ZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIG5vZGUsICFwcm92aWRlci5pc0VtcHR5
LCAyNSk7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNh
bGwodGhpcywgdHJlZSwgbm9kZSwgIXByb3ZpZGVyLmlzRW1wdHkpOwogICAgIHRoaXMuX3Byb3Zp
ZGVyID0gcHJvdmlkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCBjYTdmODk4Li5h
NmIxNjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZXRhaWxlZEhlYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCkBAIC0zNywxMCArMzcsMTEgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQgPSBmdW5jdGlvbigpCiAgICAg
fTsKICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKICAgICB0
aGlzLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuc29ydCwgdGhpcyk7
Ci0gICAgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQgPSAxMDA7CiB9CiAKIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBfZGVm
YXVsdFBvcHVsYXRlQ291bnQ6IDEwMCwKKwogICAgIHNldERhdGFTb3VyY2U6IGZ1bmN0aW9uKHNu
YXBzaG90Vmlldywgc25hcHNob3QpCiAgICAgewogICAgICAgICB0aGlzLnNuYXBzaG90VmlldyA9
IHNuYXBzaG90VmlldzsKQEAgLTExNiw2ICsxMTcsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Q29uc3RydWN0b3JzRGF0YUdyaWQgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUgPSB7CisgICAgX2RlZmF1
bHRQb3B1bGF0ZUNvdW50OiAxMDAsCisKICAgICBfc29ydEZpZWxkczogZnVuY3Rpb24oc29ydENv
bHVtbiwgc29ydEFzY2VuZGluZykKICAgICB7CiAgICAgICAgIHJldHVybiB7CkBAIC0xNjEsNiAr
MTY0LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZCA9IGZ1bmN0aW9u
KCkKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUg
PSB7CisgICAgX2RlZmF1bHRQb3B1bGF0ZUNvdW50OiA1MCwKKwogICAgIF9zb3J0RmllbGRzOiBm
dW5jdGlvbihzb3J0Q29sdW1uLCBzb3J0QXNjZW5kaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHsKQEAgLTIyMCwxMCArMjI1LDExIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0
b3JzRGF0YUdyaWQgPSBmdW5jdGlvbigpCiAgICAgfTsKICAgICBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRp
bmcgY2hhbmdlZCIsIHRoaXMuc29ydCwgdGhpcyk7Ci0gICAgdGhpcy5fZGVmYXVsdFBvcHVsYXRl
Q291bnQgPSAyNTsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRh
R3JpZC5wcm90b3R5cGUgPSB7CisgICAgX2RlZmF1bHRQb3B1bGF0ZUNvdW50OiAyNSwKKwogICAg
IHNldERhdGFTb3VyY2U6IGZ1bmN0aW9uKHNuYXBzaG90Vmlldywgc25hcHNob3QpCiAgICAgewog
ICAgICAgICB0aGlzLnNuYXBzaG90VmlldyA9IHNuYXBzaG90VmlldzsKQEAgLTQyMCwyMCArNDI2
LDE3IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVu
dCwgcHJvZmlsZSkKICAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0
dXMtYmFyLWl0ZW0iOwogICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlVmlldy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICB2
YXIgY2xhc3Nlc1ZpZXdPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsK
LSAgICBjbGFzc2VzVmlld09wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3Vt
bWFyeSIpOwotICAgIHZhciBkaWZmVmlld09wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im9wdGlvbiIpOwotICAgIGRpZmZWaWV3T3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb21wYXJpc29uIik7Ci0gICAgdmFyIGNvbnRhaW5tZW50Vmlld09wdGlvbiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgIGNvbnRhaW5tZW50Vmlld09wdGlvbi5s
YWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGFpbm1lbnQiKTsKLSAgICB2YXIgZG9t
aW5hdG9yc1ZpZXdPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKLSAg
ICBkb21pbmF0b3JzVmlld09wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9t
aW5hdG9ycyIpOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xhc3Nl
c1ZpZXdPcHRpb24pOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZGlm
ZlZpZXdPcHRpb24pOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29u
dGFpbm1lbnRWaWV3T3B0aW9uKTsKLSAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmFwcGVuZENo
aWxkKGRvbWluYXRvcnNWaWV3T3B0aW9uKTsKLSAgICB0aGlzLnZpZXdzID0gWyJTdW1tYXJ5Iiwg
IkNvbXBhcmlzb24iLCAiQ29udGFpbm1lbnQiLCAiRG9taW5hdG9ycyJdOworICAgIHRoaXMudmll
d3MgPSBbe3RpdGxlOiAiU3VtbWFyeSIsIHZpZXc6IHRoaXMuY29uc3RydWN0b3JzVmlldywgZ3Jp
ZDogdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZH0sCisgICAgICAgICAgICAgICAgICB7dGl0bGU6
ICJDb21wYXJpc29uIiwgdmlldzogdGhpcy5kaWZmVmlldywgZ3JpZDogdGhpcy5kaWZmRGF0YUdy
aWR9LAorICAgICAgICAgICAgICAgICAge3RpdGxlOiAiQ29udGFpbm1lbnQiLCB2aWV3OiB0aGlz
LmNvbnRhaW5tZW50VmlldywgZ3JpZDogdGhpcy5jb250YWlubWVudERhdGFHcmlkfSwKKyAgICAg
ICAgICAgICAgICAgIHt0aXRsZTogIkRvbWluYXRvcnMiLCB2aWV3OiB0aGlzLmRvbWluYXRvclZp
ZXcsIGdyaWQ6IHRoaXMuZG9taW5hdG9yRGF0YUdyaWR9XTsKICAgICB0aGlzLnZpZXdzLmN1cnJl
bnQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy52aWV3cy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlld3NbaV07CisgICAgICAgIHZhciBvcHRpb24g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLmxhYmVs
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKHZpZXcudGl0bGUpOworICAgICAgICB0aGlzLnZpZXdT
ZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CisgICAgfQogCiAgICAgdGhpcy5fcHJv
ZmlsZVVpZCA9IHByb2ZpbGUudWlkOwogCkBAIC03NzEsMTkgKzc3NCw5IEBAIFdlYkluc3BlY3Rv
ci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy52aWV3
cy5jdXJyZW50ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkSW5kZXg7CiAgICAgICAgIHRoaXMuY3Vy
cmVudFZpZXcuaGlkZSgpOwotICAgICAgICBpZiAodGhpcy52aWV3c1t0aGlzLnZpZXdzLmN1cnJl
bnRdID09PSAiQ29udGFpbm1lbnQiKSB7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3ID0g
dGhpcy5jb250YWlubWVudFZpZXc7Ci0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkID0gdGhpcy5j
b250YWlubWVudERhdGFHcmlkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld3NbdGhpcy52
aWV3cy5jdXJyZW50XSA9PT0gIlN1bW1hcnkiKSB7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRW
aWV3ID0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3OwotICAgICAgICAgICAgdGhpcy5kYXRhR3JpZCA9
IHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQ7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3
c1t0aGlzLnZpZXdzLmN1cnJlbnRdID09PSAiQ29tcGFyaXNvbiIpIHsKLSAgICAgICAgICAgIHRo
aXMuY3VycmVudFZpZXcgPSB0aGlzLmRpZmZWaWV3OwotICAgICAgICAgICAgdGhpcy5kYXRhR3Jp
ZCA9IHRoaXMuZGlmZkRhdGFHcmlkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld3NbdGhp
cy52aWV3cy5jdXJyZW50XSA9PT0gIkRvbWluYXRvcnMiKSB7Ci0gICAgICAgICAgICB0aGlzLmN1
cnJlbnRWaWV3ID0gdGhpcy5kb21pbmF0b3JWaWV3OwotICAgICAgICAgICAgdGhpcy5kYXRhR3Jp
ZCA9IHRoaXMuZG9taW5hdG9yRGF0YUdyaWQ7Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIHZpZXcg
PSB0aGlzLnZpZXdzW3RoaXMudmlld3MuY3VycmVudF07CisgICAgICAgIHRoaXMuY3VycmVudFZp
ZXcgPSB2aWV3LnZpZXc7CisgICAgICAgIHRoaXMuZGF0YUdyaWQgPSB2aWV3LmdyaWQ7CiAgICAg
ICAgIHRoaXMuY3VycmVudFZpZXcuc2hvdygpOwogICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxl
RGF0YSgpOwogICAgICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5kaWZmVmlldykg
ewo=
</data>
<flag name="commit-queue"
          id="81108"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88596</attachid>
            <date>2011-04-07 02:17:21 -0700</date>
            <delta_ts>2011-04-07 11:25:41 -0700</delta_ts>
            <desc>split big test into smaller ones</desc>
            <filename>patch-58011</filename>
            <type>text/plain</type>
            <size>64678</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYTkwZDIxLi5lYTM1NThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQt
MDcgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIEFkZCBtb3JlIHRlc3RzIGZvciBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cyBVSS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDEwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAxMQorCisgICAg
ICAgIEFkZGVkIHRlc3RzIGZvciAiQ29udGFpbm1lbnQiIHZpZXcuIE1pbm9yIHJlZmFjdG9yaW5n
cywgYnVncyBmaXhlZC4KKyAgICAgICAgU3BsaXQgb25lIGxhcmdlIHRlc3RzIGludG8gc21hbGxl
ciBvbmVzIHRvIGF2b2lkIHRpbWluZyBvdXQgaW4gZGVidWcgbW9kZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwYW5zaW9u
LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lv
bi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1hbGwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVh
cHNob3RzLWNvbnRhaW5tZW50LXNob3ctYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1uZXh0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LW5leHQuaHRtbDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24t
cHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJl
c2VydmVkLXdoZW4tc29ydGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1z
aG93LWFsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LWFsbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1u
ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctbmV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxl
ZC1oZWFwc2hvdHMtc3VtbWFyeS1zb3J0aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qczoK
KyAgICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5z
dGFydFByb2ZpbGVyVGVzdC5kZXRhaWxlZEhlYXBQcm9maWxlc0VuYWJsZWQpOgorICAgICAgICAo
aW5pdGlhbGl6ZV9EZXRhaWxlZEhlYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0UHJvZmls
ZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hvdFRlc3QuKToKKyAg
ICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hvdFRlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFp
bm1lbnQtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFp
bm1lbnQtc2hvdy1hbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50
LXNob3ctbmV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc29y
dGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJl
c2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LXN1bW1hcnktZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LWFsbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0
YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMS0w
NC0wNiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9t
aXVtXSBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwYW5zaW9u
LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1leHBhbnNpb24tcHJl
c2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzNkMjg1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtZXhwYW5zaW9uLXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdHMg
Q29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5kZWQgbm9k
ZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKworSGVhcCBwcm9maWxlciBpcyBk
aXNhYmxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGlu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNzIxZDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRh
aW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKQEAgLTAsMCArMSw5
MCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9ImRldGFp
bGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7CisgICAgZnVuY3Rpb24gY3JlYXRl
SGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0
LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0RXhw
YW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3Rl
cDEpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkNvbnRhaW5tZW50Iiwgc3Rl
cDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgY29sdW1uczsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1
bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDMpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5maW5kQW5kRXhwYW5kR0NSb290cyhzdGVwNCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0
b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KHRydWUsICEhYnV0dG9uc05vZGUsICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0
dG9uc05vZGUsIHN0ZXA1KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDUocm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByb3cgPSByb3cu
Y2hpbGRyZW5bMF07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
dHJ1ZSwgISFyb3csICJcIkJcIiBpbnN0YW5jZSByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3csIGV4cGFuZEEpOworICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIGV4cGFuZEEocm93KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gcHJvcGVydHlNYXRjaGVyKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5hbWUgPT09ICJhIiAmJiBkYXRhLnZh
bHVlLmNoYXJBdCgwKSA9PT0gIkEiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIHZhciBhUm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCBwcm9w
ZXJ0eU1hdGNoZXIsIHJvdyk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHRydWUsICEhYVJvdywgIlwiYTogQVwiIHJvdyIpOworICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhhUm93LCBzdGVwNik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgY29sdW1uQ29udGVudHM7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBzdGVwNigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29sdW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNb
MF0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1sw
XSwgY2xpY2tUd2ljZSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNr
Q29sdW1uKGNvbHVtbnNbMF0sIHN0ZXA3KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA3KCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbmV3Q29sdW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNv
bnRlbnRzKGNvbHVtbnNbMF0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
Q29sdW1uQ29udGVudHNFcXVhbChjb2x1bW5Db250ZW50cywgbmV3Q29sdW1uQ29udGVudHMpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD4KK1Rlc3RzIENvbnRhaW5tZW50IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCitFeHBhbmRlZCBub2RlcyBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5n
LgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LWFsbC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLWNvbnRhaW5tZW50LXNob3ctYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44M2I5OTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LWFs
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0cyBDb250YWlubWVudCB2aWV3IG9m
IGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBUaGUgIlNob3cgQWxsIiBidXR0b24gbXVzdCBzaG93
IGFsbCBub2Rlcy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVu
dC1zaG93LWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LWFsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmFjNWIwNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3ctYWxs
Lmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Cisg
ICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9CisK
KyAgICBJbnNwZWN0b3JUZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWworICAgICAg
ICBmdW5jdGlvbiB0ZXN0U2hvd0FsbChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3Rz
KHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMocm93
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3Bl
Y3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSIpOwor
ICAgICAgICAgICAgICAgIHZhciB3b3JkcyA9IGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRl
bnQuc3BsaXQoIiAiKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXliZU51bWJlciA9IHBh
cnNlSW50KHdvcmRzW2ldLCAxMCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obWF5
YmVOdW1iZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoaW5zdGFuY2VDb3VudCwgbWF5YmVOdW1iZXIsIGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4
dENvbnRlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDQpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNChyb3cpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291
bnREYXRhUm93cyhyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKGluc3RhbmNlQ291bnQsIHJvd3NTaG93biwgImFmdGVyIHNob3dBbGwgY2xpY2siKTsKKyAg
ICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25z
Tm9kZShyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZh
bHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNl
cyBhcmUgc2hvd24hIik7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ29udGFpbm1lbnQgdmlldyBv
ZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KK1RoZSAmcXVvdDtTaG93IEFsbCZxdW90OyBidXR0
b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29u
dGFpbm1lbnQtc2hvdy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1uZXh0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGYyYWI0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1jb250YWlubWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
VGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVwZWF0
ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgorCitI
ZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3ctbmV4dC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250
YWlubWVudC1zaG93LW5leHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xNTYyNmU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LW5leHQuaHRtbApAQCAtMCww
ICsxLDU2IEBACis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0i
ZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5jdGlvbiBj
cmVhdGVIZWFwU25hcHNob3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3Qu
Y3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3Rv
clRlc3QucnVuRGV0YWlsZWRIZWFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RTaG93TmV4dChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRh
a2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXAzKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMocm93KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50
RGF0YVJvd3Mocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCByb3dzU2hvd24gPD0gaW5zdGFuY2VDb3VudCwgInNob3duIG1vcmUgaW5zdGFuY2Vz
IHRoYW4gY3JlYXRlZDogIiArIHJvd3NTaG93biArICIgPiAiICsgaW5zdGFuY2VDb3VudCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHJvd3NTaG93biA8IGluc3RhbmNlQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05v
ZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
dHJ1ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSIpOworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05v
ZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvd3NTaG93biA9PT0gaW5z
dGFuY2VDb3VudCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNw
ZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9k
ZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5jZXMgYXJlIHNob3duISIpOworICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxl
ZCBoZWFwIHNuYXBzaG90cy4KK1JlcGVhdGVkIGNsaWNrcyBvbiAmcXVvdDtTaG93IE5leHQmcXVv
dDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLWNvbnRhaW5tZW50LXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTI2Y2Q2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
K1Rlc3RzIHNvcnRpbmcgaW4gQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBz
aG90cy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLWNvbnRhaW5tZW50LXNvcnRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45YjlkYmMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLmh0bWwKQEAg
LTAsMCArMSw4MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7CisgICAgZnVuY3Rp
b24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9CisKKyAgICBJbnNw
ZWN0b3JUZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlv
biB0ZXN0U29ydGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciBnY1Jvb3RzOworICAgICAgICAgICAgdmFyIGNvbHVt
bnM7CisgICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgIHZhciBjdXJy
ZW50Q29sdW1uT3JkZXI7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3Rz
KHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoZ2NS
b290c1JvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnY1Jvb3RzID0gZ2NSb290
c1JvdzsKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1u
cygpOworICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4gPSAwOworICAgICAgICAgICAgICAg
IGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
c3RlcDQsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPj0gY29s
dW1ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1tjdXJyZW50Q29sdW1u
XSwgc3RlcDUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNShu
ZXdDb2x1bW5TdGF0ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zW2N1
cnJlbnRDb2x1bW5dID0gbmV3Q29sdW1uU3RhdGU7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRl
bnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zW2N1cnJlbnRDb2x1bW5d
LCBnY1Jvb3RzKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0
cnVlLCAhIWNvbnRlbnRzLmxlbmd0aCwgImNvbHVtbiBjb250ZW50cyIpOworICAgICAgICAgICAg
ICAgIHZhciBzb3J0VHlwZXMgPSB7IG9iamVjdDogIm5hbWUiLCBzaGFsbG93U2l6ZTogInNpemUi
LCByZXRhaW5lZFNpemU6ICJzaXplIiB9OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKHRydWUsICEhc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRl
bnRpZmllcl0sICJzb3J0IGJ5IGlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNoZWNrQXJyYXlJc1NvcnRlZChjb250ZW50cywgc29ydFR5cGVzW2NvbHVtbnNbY3Vy
cmVudENvbHVtbl0uaWRlbnRpZmllcl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0uc29ydCk7CisK
KyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2x1bW5PcmRlcikKKyAgICAgICAgICAgICAg
ICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICsrY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChzdGVwNCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8cD4KK1Rlc3RzIHNvcnRpbmcgaW4gQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBo
ZWFwIHNuYXBzaG90cy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBh
bnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwYW5zaW9uLXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmZkMWE4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwYW5zaW9uLXByZXNl
cnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdHMgU3Vt
bWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBFeHBhbmRlZCBub2RlcyBtdXN0
IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgorCitIZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVk
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5
LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDNhOGY1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24t
cHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCkBAIC0wLDAgKzEsOTMgQEAKKzxodG1sPgorPGhl
YWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIg
aW5zdGFuY2VDb3VudCA9IDI1OworICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCisg
ICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5z
dGFuY2VDb3VudCk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBz
aG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFuc2lvblByZXNlcnZlZFdo
ZW5Tb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFr
ZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAg
ICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3Quc3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJvdygib2JqZWN0IiwgIkIiKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwi
QlwiIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywg
ZXhwYW5kQik7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZXhwYW5kQigpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JU
ZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBub2RlIGZv
dW5kISIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVC
dXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDMpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNvbHVtbnM7CisgICAgICAgICAgICBm
dW5jdGlvbiBzdGVwMygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1ucyA9
IEluc3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXA0KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiBy
b3ciKTsKKyAgICAgICAgICAgICAgICBiSW5zdGFuY2VSb3cgPSByb3cuY2hpbGRyZW5bMF07Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFiSW5zdGFu
Y2VSb3csICJcIkJcIiBpbnN0YW5jZSByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGFuZFJvdyhiSW5zdGFuY2VSb3csIGV4cGFuZEEpOworICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIGV4cGFuZEEocm93KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gcHJvcGVydHlNYXRjaGVyKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5hbWUgPT09ICJhIiAmJiBkYXRh
LnZhbHVlLmNoYXJBdCgwKSA9PT0gIkEiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHZhciBhUm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCBw
cm9wZXJ0eU1hdGNoZXIsIHJvdyk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKHRydWUsICEhYVJvdywgIlwiYTogQVwiIHJvdyIpOworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhhUm93LCBzdGVwNSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgY29sdW1uQ29udGVudHM7
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNSgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29sdW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVt
bnNbMF0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1u
c1swXSwgY2xpY2tUd2ljZSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNs
aWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXA2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbmV3Q29sdW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVt
bkNvbnRlbnRzKGNvbHVtbnNbMF0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0Q29sdW1uQ29udGVudHNFcXVhbChjb2x1bW5Db250ZW50cywgbmV3Q29sdW1uQ29udGVudHMp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNu
YXBzaG90cy4KK0V4cGFuZGVkIG5vZGVzIG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcu
Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY5MWJjMC4uMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LXN1bW1hcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0
cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi0KLUhlYXAgcHJvZmls
ZXIgaXMgZGlzYWJsZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctYWxsLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1z
aG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWIyM2E4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LWFsbC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACitUZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMu
IFRoZSAiU2hvdyBBbGwiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgorCitIZWFwIHByb2Zp
bGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LWFsbC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctYWxs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwZjI2OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS1zaG93LWFsbC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxodG1sPgorPGhl
YWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIg
aW5zdGFuY2VDb3VudCA9IDI1OworICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCisg
ICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5z
dGFuY2VDb3VudCk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBz
aG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dBbGwobmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0
ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXco
IlN1bW1hcnkiLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVj
dG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQSIpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJBXCIgcm93Iik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBzdGVwMyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgY291bnQgPSByb3cuZGF0YVsiY291bnQiXTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0YW5jZUNvdW50LCBjb3VudCk7CisgICAg
ICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05v
ZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVl
LCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7CisgICAgICAgICAgICAgICAgdmFyIHdv
cmRzID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudC5zcGxpdCgiICIpOworICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFyc2VJbnQod29yZHNbaV0sIDEwKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXliZU51bWJlcikpCisgICAgICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0YW5jZUNvdW50LCBt
YXliZU51bWJlciwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRv
bigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFSb3dzKHJvdyk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoaW5zdGFuY2VDb3VudCwgcm93
c1Nob3duLCAiYWZ0ZXIgc2hvd0FsbCBjbGljayIpOworICAgICAgICAgICAgICAgIHZhciBidXR0
b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJi
dXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBzaG93biEiKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+CitUZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMu
CitUaGUgJnF1b3Q7U2hvdyBBbGwmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCis8
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1uZXh0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3Vt
bWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjNmNTVhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1uZXh0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNu
YXBzaG90cy4gUmVwZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cg
YWxsIG5vZGVzLgorCitIZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1z
aG93LW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtc3VtbWFyeS1zaG93LW5leHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xYjc0MzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctbmV4dC5odG1sCkBA
IC0wLDAgKzEsNTggQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDI1OworICAgIGZ1bmN0
aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7CisgICAgfQorCisgICAgSW5z
cGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rp
b24gdGVzdFNob3dOZXh0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJvdygib2JqZWN0IiwgIkEi
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXJv
dywgIlwiQVwiIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93
KHJvdywgc3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVw
Myhyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IElu
c3BlY3RvclRlc3QuY291bnREYXRhUm93cyhyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHJvd3NTaG93biA8PSBpbnN0YW5jZUNvdW50LCAic2hv
d24gbW9yZSBpbnN0YW5jZXMgdGhhbiBjcmVhdGVkOiAiICsgcm93c1Nob3duICsgIiA+ICIgKyBp
bnN0YW5jZUNvdW50KTsKKyAgICAgICAgICAgICAgICBpZiAocm93c1Nob3duIDwgaW5zdGFuY2VD
b3VudCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JU
ZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hv
d05leHQiLCBidXR0b25zTm9kZSwgc3RlcDMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
cm93c1Nob3duID09PSBpbnN0YW5jZUNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBi
dXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNO
b2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7
CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyBTdW1tYXJ5IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCitSZXBlYXRlZCBjbGlja3Mgb24gJnF1b3Q7
U2hvdyBOZXh0JnF1b3Q7IGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgorPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNvcnRpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MzA3NjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CitUZXN0cyBzb3J0aW5nIGluIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90
cy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1z
dW1tYXJ5LXNvcnRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
YjBlNDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNvcnRpbmcuaHRtbApAQCAtMCwwICsxLDc1IEBA
Cis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iZGV0YWlsZWQt
aGVhcHNob3RzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFw
U25hcHNob3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVh
cFNuYXBzaG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVu
RGV0YWlsZWRIZWFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTb3J0aW5n
KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5T
bmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
c3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgY29sdW1uczsKKyAgICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uOworICAgICAg
ICAgICAgdmFyIGN1cnJlbnRDb2x1bW5PcmRlcjsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JU
ZXN0LnZpZXdDb2x1bW5zKCk7CisgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbiA9IDA7Cisg
ICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChzdGVwMywgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dENvbHVtbiA+PSBjb2x1bW5zLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KG5leHQsIDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5z
W2N1cnJlbnRDb2x1bW5dLCBzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHN0ZXA0KG5ld0NvbHVtblN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbHVtbnNbY3VycmVudENvbHVtbl0gPSBuZXdDb2x1bW5TdGF0ZTsKKyAgICAgICAgICAg
ICAgICB2YXIgY29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNb
Y3VycmVudENvbHVtbl0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHRydWUsICEhY29udGVudHMubGVuZ3RoLCAiY29sdW1uIGNvbnRlbnRzIik7CisgICAgICAg
ICAgICAgICAgdmFyIHNvcnRUeXBlcyA9IHsgb2JqZWN0OiAidGV4dCIsIGNvdW50OiAibnVtYmVy
Iiwgc2hhbGxvd1NpemU6ICJzaXplIiwgcmV0YWluZWRTaXplOiAic2l6ZSIgfTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXNvcnRUeXBlc1tjb2x1
bW5zW2N1cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCAic29ydCBieSBpZGVudGlmaWVyIik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQoY29udGVudHMs
IHNvcnRUeXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCBjb2x1bW5zW2N1
cnJlbnRDb2x1bW5dLnNvcnQpOworCisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29sdW1u
T3JkZXIpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5P
cmRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICArK2N1cnJlbnRDb2x1bW47CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDMsIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyBzb3J0aW5nIGluIFN1bW1hcnkg
dmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1zdW1tYXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhkNjdmOTYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAs
MCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRldGFp
bGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gNTU1OwotICAgIGZ1bmN0aW9uIGNyZWF0
ZUhlYXBTbmFwc2hvdCgpCi0gICAgewotICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVh
dGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVz
dC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdFNv
cnRpbmcobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5k
T3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBm
dW5jdGlvbiBzdGVwMSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5zd2l0Y2hUb1ZpZXcoIlN1bW1hcnkiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHZhciBjb2x1bW5zOwotICAgICAgICAgICAgdmFyIGN1cnJlbnRDb2x1bW47Ci0g
ICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbk9yZGVyOwotCi0gICAgICAgICAgICBmdW5jdGlv
biBzdGVwMigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29sdW1ucyA9IEluc3Bl
Y3RvclRlc3Qudmlld0NvbHVtbnMoKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uID0g
MDsKLSAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uT3JkZXIgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBzdGVwMygpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBz
dGVwMygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4g
Pj0gY29sdW1ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLCBzdGVw
NCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KG5ld0NvbHVt
blN0YXRlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbHVtbnNbY3VycmVudENv
bHVtbl0gPSBuZXdDb2x1bW5TdGF0ZTsKLSAgICAgICAgICAgICAgICB2YXIgY29udGVudHMgPSBJ
bnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbY3VycmVudENvbHVtbl0pOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhY29udGVudHMu
bGVuZ3RoLCAiY29sdW1uIGNvbnRlbnRzIik7Ci0gICAgICAgICAgICAgICAgdmFyIHNvcnRUeXBl
cyA9IHsgb2JqZWN0OiAidGV4dCIsIGNvdW50OiAibnVtYmVyIiwgc2hhbGxvd1NpemU6ICJzaXpl
IiwgcmV0YWluZWRTaXplOiAic2l6ZSIgfTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCAhIXNvcnRUeXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLmlk
ZW50aWZpZXJdLCAic29ydCBieSBpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQoY29udGVudHMsIHNvcnRUeXBlc1tjb2x1bW5zW2N1
cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLnNvcnQpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29sdW1uT3JkZXIpCi0gICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICArK2N1cnJlbnRDb2x1bW47Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHN0ZXAzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24gdGVzdFNob3dOZXh0KG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsK
LQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJvdygib2JqZWN0
IiwgIkEiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVl
LCAhIXJvdywgIlwiQVwiIHJvdyIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
YW5kUm93KHJvdywgc3RlcDMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlv
biBzdGVwMyhyb3cpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93
biA9IEluc3BlY3RvclRlc3QuY291bnREYXRhUm93cyhyb3cpOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHJvd3NTaG93biA8PSBpbnN0YW5jZUNvdW50
LCAic2hvd24gbW9yZSBpbnN0YW5jZXMgdGhhbiBjcmVhdGVkOiAiICsgcm93c1Nob3duICsgIiA+
ICIgKyBpbnN0YW5jZUNvdW50KTsKLSAgICAgICAgICAgICAgICBpZiAocm93c1Nob3duIDwgaW5z
dGFuY2VDb3VudCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNw
ZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2Rl
Iik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRv
bigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDMpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAocm93c1Nob3duID09PSBpbnN0YW5jZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1
dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hv
d24hIik7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dBbGwo
bmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNu
YXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBmdW5jdGlv
biBzdGVwMSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5z
d2l0Y2hUb1ZpZXcoIlN1bW1hcnkiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIg
cm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQSIpOwotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJBXCIgcm93Iik7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBzdGVwMyk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgY291bnQgPSByb3cuZGF0YVsiY291bnQiXTsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0YW5jZUNvdW50LCBj
b3VudCk7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5m
aW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7Ci0gICAgICAgICAg
ICAgICAgdmFyIHdvcmRzID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudC5zcGxpdCgi
ICIpOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFyc2VJbnQod29y
ZHNbaV0sIDEwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXliZU51bWJlcikp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0
YW5jZUNvdW50LCBtYXliZU51bWJlciwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tT
aG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFSb3dz
KHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoaW5zdGFu
Y2VDb3VudCwgcm93c1Nob3duLCAiYWZ0ZXIgc2hvd0FsbCBjbGljayIpOwotICAgICAgICAgICAg
ICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0
dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBzaG93
biEiKTsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nKG5l
eHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFw
c2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDEoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dp
dGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB2YXIgY29sdW1uczsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygp
OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwg
c3RlcDMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmlu
ZFJvdygib2JqZWN0IiwgIkIiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIHJvdyIpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwYW5kUm93KHJvdywgZXhwYW5kQkluc3RhbmNlKTsKLSAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBleHBhbmRCSW5zdGFuY2Uocm93KQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgYkluc3RhbmNlUm93ID0gcm93LmNoaWxkcmVuWzBdOwotICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5jZVJv
dywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGFuZFJvdyhiSW5zdGFuY2VSb3csIGV4cGFuZEEpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmdW5jdGlvbiBleHBhbmRBKHJvdykKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHByb3BlcnR5TWF0Y2hlcihkYXRhKQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5u
YW1lID09PSAiYSIgJiYgZGF0YS52YWx1ZS5jaGFyQXQoMCkgPT09ICJBIjsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YXIgYVJvdyA9IEluc3BlY3RvclRlc3Qu
ZmluZFJvdygib2JqZWN0IiwgcHJvcGVydHlNYXRjaGVyLCByb3cpOwotICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWFSb3csICJcImE6IEFcIiBy
b3ciKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3coYVJvdywg
c3RlcDQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
dmFyIGNvbHVtbkNvbnRlbnRzOwotICAgICAgICAgICAgdmFyIHRlc3RTdGF0ZXMgPSBbIiIsICJl
eHBhbmRlZCIsICJzaG93IG1vcmUiLCAic2hvdyBhbGwiXTsKLSAgICAgICAgICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0U3RhdGVzLnNoaWZ0
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXN0U3RhdGVzLmxlbmd0aCkgewotICAgICAgICAg
ICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRl
c3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBjbGlja1R3aWNlKTsKLSAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBjbGlja1R3aWNlKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDUpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDUoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250ZW50
cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNvbnRl
bnRzLCBuZXdDb2x1bW5Db250ZW50cyk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5z
cGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAg
ICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUo
cm93KTsKLSAgICAgICAgICAgICAgICBpZiAodGVzdFN0YXRlc1swXSA9PT0gImV4cGFuZGVkIiB8
fCB0ZXN0U3RhdGVzWzBdID09PSAic2hvdyBtb3JlIikgewotICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCB0ZXN0U3RhdGVz
WzBdICsgIjogbm8gYnV0dG9ucyBub2RlIGZvdW5kISIpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAodGVzdFN0YXRlc1swXSA9PT0gImV4cGFuZGVkIikKLSAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9k
ZSwgc3RlcDQpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25z
Tm9kZSwgc3RlcDQpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0
dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0ZXA0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMKaW5kZXgg
ZTFhNjc0MS4uMzVlZTBhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcwpAQCAtMjMsNiArMjMsMTEgQEAg
SW5zcGVjdG9yVGVzdC5zdGFydFByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogCiAg
ICAgZnVuY3Rpb24gZGV0YWlsZWRIZWFwUHJvZmlsZXNFbmFibGVkKCkKICAgICB7CisgICAgICAg
IC8vIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHBvcHVsYXRlZCBub2RlcyB0byBzcGVlZCB1cCB0ZXN0
aW5nLgorICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3Jp
ZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50ID0gMTA7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUuX2RlZmF1bHRQ
b3B1bGF0ZUNvdW50ID0gMTA7CisgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZm
RGF0YUdyaWQucHJvdG90eXBlLl9kZWZhdWx0UG9wdWxhdGVDb3VudCA9IDU7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQucHJvdG90eXBlLl9kZWZh
dWx0UG9wdWxhdGVDb3VudCA9IDM7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJE
ZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4iKTsKICAgICAgICAgSW5zcGVjdG9y
VGVzdC5zYWZlV3JhcChjYWxsYmFjaykoKTsKICAgICB9CkBAIC0xMDEsMTcgKzEwNiwyNyBAQCBJ
bnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJc1NvcnRlZCA9IGZ1bmN0aW9uKGNvbnRlbnRzLCBzb3J0
VHlwZSwgc29ydE9yZGVyKQogICAgIH0KICAgICBmdW5jdGlvbiBwYXJzZVNpemUoc2l6ZSkKICAg
ICB7Ci0gICAgICAgIHZhciBhbW91bnQgPSBwYXJzZUludChzaXplLCAxMCk7CisgICAgICAgIGlm
IChzaXplLmNoYXJBdCgwKSA9PT0gIj4iKQorICAgICAgICAgICAgc2l6ZSA9IHNpemUuc3Vic3Ry
aW5nKDIpOworICAgICAgICB2YXIgYW1vdW50ID0gcGFyc2VGbG9hdChzaXplLCAxMCk7CiAgICAg
ICAgIHZhciBtdWx0aXBsaWVyID0gewotICAgICAgICAgICAgIksiOiAxMDI0LAotICAgICAgICAg
ICAgIk0iOiAxMDI0ICogMTAyNAotICAgICAgICB9W3NpemUuY2hhckF0KHNpemUubGVuZ3RoIC0g
MSldOworICAgICAgICAgICAgIktCIjogMTAyNCwKKyAgICAgICAgICAgICJNQiI6IDEwMjQgKiAx
MDI0CisgICAgICAgIH1bc2l6ZS5zdWJzdHJpbmcoc2l6ZS5sZW5ndGggLSAyKV07CiAgICAgICAg
IHJldHVybiBtdWx0aXBsaWVyID8gYW1vdW50ICogbXVsdGlwbGllciA6IGFtb3VudDsKICAgICB9
CisgICAgZnVuY3Rpb24gZXh0cmFjdE5hbWUoZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEgPSBK
U09OLnBhcnNlKGRhdGEpOworICAgICAgICBpZiAoIWRhdGEubmFtZSkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJObyBuYW1lIGZpZWxkIGluICIgKyBKU09OLnN0cmluZ2lm
eShkYXRhKSk7CisgICAgICAgIHJldHVybiBwYXJzZUludChkYXRhLm5hbWUsIDEwKTsKKyAgICB9
CiAgICAgdmFyIGNvbXBhcmF0b3IgPSB7CiAgICAgICAgIHRleHQ6IHNpbXBsZUNvbXBhcmF0b3Is
CiAgICAgICAgIG51bWJlcjogZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIHNpbXBsZUNvbXBhcmF0
b3IocGFyc2VJbnQoYSwgMTApLCBwYXJzZUludChiLCAxMCkpOyB9LAotICAgICAgICBzaXplOiBm
dW5jdGlvbiAoYSwgYikgeyByZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihwYXJzZVNpemUoYSwgMTAp
LCBwYXJzZVNpemUoYiwgMTApKTsgfQorICAgICAgICBzaXplOiBmdW5jdGlvbiAoYSwgYikgeyBy
ZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihwYXJzZVNpemUoYSksIHBhcnNlU2l6ZShiKSk7IH0sCisg
ICAgICAgIG5hbWU6IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBzaW1wbGVDb21wYXJhdG9yKGV4
dHJhY3ROYW1lKGEpLCBleHRyYWN0TmFtZShiKSk7IH0KICAgICB9W3NvcnRUeXBlXTsKICAgICB2
YXIgYWNjZXB0YWJsZUNvbXBhcmlzb25SZXN1bHQgPSB7CiAgICAgICAgIGFzY2VuZGluZzogLTEs
CkBAIC0xMzAsNyArMTQ1LDcgQEAgSW5zcGVjdG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQgPSBm
dW5jdGlvbihjb250ZW50cywgc29ydFR5cGUsIHNvcnRPcmRlcikKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvbnRlbnRzLmxlbmd0aCAtIDE7ICsraSkgewogICAgICAgICB2YXIgcmVzdWx0ID0g
Y29tcGFyYXRvcihjb250ZW50c1tpXSwgY29udGVudHNbaSArIDFdKTsKICAgICAgICAgaWYgKHJl
c3VsdCAhPT0gMCAmJiByZXN1bHQgIT09IGFjY2VwdGFibGVDb21wYXJpc29uUmVzdWx0KQotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkVsZW1lbnRzICIgKyBpICsgIiBhbmQg
IiArIChpICsgMSkgKyAiIGFyZSBvdXQgb2Ygb3JkZXI6ICIgKyBjb250ZW50c1tpXSArICIgIiAr
IGNvbnRlbnRzW2kgKyAxXSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
RWxlbWVudHMgIiArIGkgKyAiIGFuZCAiICsgKGkgKyAxKSArICIgYXJlIG91dCBvZiBvcmRlcjog
IiArIGNvbnRlbnRzW2ldICsgIiAiICsgY29udGVudHNbaSArIDFdICsgIiAoIiArIHNvcnRPcmRl
ciArICIpIik7CiAgICAgfQogfTsKIApAQCAtMTQzLDggKzE1OCwxMyBAQCBJbnNwZWN0b3JUZXN0
LmNsaWNrQ29sdW1uID0gZnVuY3Rpb24oY29sdW1uLCBjYWxsYmFjaykKICAgICBmdW5jdGlvbiBz
b3J0aW5nQ29tcGxldGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3VycmVudEdyaWQoKS5yZW1v
dmVFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlz
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29sdW1uLmlkZW50aWZpZXIs
IHRoaXMuX2N1cnJlbnRHcmlkKCkuc29ydENvbHVtbklkZW50aWZpZXIsICJ1bmV4cGVjdGVkIHNv
cnRpbmciKTsKICAgICAgICAgY29sdW1uLnNvcnQgPSB0aGlzLl9jdXJyZW50R3JpZCgpLnNvcnRP
cmRlcjsKLSAgICAgICAgY2FsbGJhY2soY29sdW1uKTsKKyAgICAgICAgZnVuY3Rpb24gY2FsbENh
bGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2soY29sdW1uKTsKKyAgICAg
ICAgfQorICAgICAgICBzZXRUaW1lb3V0KGNhbGxDYWxsYmFjaywgMCk7CiAgICAgfQogICAgIHRo
aXMuX2N1cnJlbnRHcmlkKCkuYWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNv
cnRpbmdDb21wbGV0ZSwgdGhpcyk7CiAgICAgdGhpcy5fY3VycmVudEdyaWQoKS5fY2xpY2tJbkhl
YWRlckNlbGwoZXZlbnQpOwpAQCAtMTU3LDE3ICsxNzcsMjMgQEAgSW5zcGVjdG9yVGVzdC5jbGlj
a1Nob3dNb3JlQnV0dG9uID0gZnVuY3Rpb24oYnV0dG9uTmFtZSwgcm93LCBjYWxsYmFjaykKICAg
ICBmdW5jdGlvbiBwb3B1bGF0ZUNvbXBsZXRlKCkKICAgICB7CiAgICAgICAgIHBhcmVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRo
aXMpOwotICAgICAgICBjYWxsYmFjayhwYXJlbnQpOworICAgICAgICBmdW5jdGlvbiBjYWxsQ2Fs
bGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFjayhwYXJlbnQpOworICAgICAg
ICB9CisgICAgICAgIHNldFRpbWVvdXQoY2FsbENhbGxiYWNrLCAwKTsKICAgICB9CiAgICAgcGFy
ZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVDb21wbGV0
ZSwgdGhpcyk7CiAgICAgcm93W2J1dHRvbk5hbWVdLmNsaWNrKCk7CiB9OwogCi1JbnNwZWN0b3JU
ZXN0LmNvbHVtbkNvbnRlbnRzID0gZnVuY3Rpb24oY29sdW1uKQorSW5zcGVjdG9yVGVzdC5jb2x1
bW5Db250ZW50cyA9IGZ1bmN0aW9uKGNvbHVtbiwgcm93KQogewogICAgIHZhciByZXN1bHQgPSBb
XTsKLSAgICB2YXIgcGFyZW50ID0gdGhpcy5fY3VycmVudEdyaWQoKTsKKyAgICB2YXIgcGFyZW50
ID0gcm93IHx8IHRoaXMuX2N1cnJlbnRHcmlkKCk7CiAgICAgZm9yICh2YXIgbm9kZSA9IHBhcmVu
dC5jaGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCBw
YXJlbnQsIHRydWUpKSB7CisgICAgICAgIGlmICghbm9kZS5zZWxlY3RhYmxlKQorICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIHZhciBkYXRhID0gbm9kZS5kYXRhW2NvbHVtbi5pZGVudGlm
aWVyXTsKICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAib2JqZWN0IikKICAgICAgICAgICAg
IGRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKQEAgLTI0OSwxMiArMjc1LDI4IEBAIEluc3Bl
Y3RvclRlc3QuZXhwYW5kUm93ID0gZnVuY3Rpb24ocm93LCBjYWxsYmFjaykKICAgICBmdW5jdGlv
biBwb3B1bGF0ZUNvbXBsZXRlKCkKICAgICB7CiAgICAgICAgIHJvdy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJwb3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOwotICAgICAg
ICBjYWxsYmFjayhyb3cpOyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGNhbGxDYWxsYmFjaygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJvdyk7CisgICAgICAgIH0KKyAgICAg
ICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0KICAgICByb3cuYWRkRXZlbnRM
aXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0ZUNvbXBsZXRlLCB0aGlzKTsKICAg
ICByb3cuZXhwYW5kKCk7CiB9OwogCitJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3Rz
ID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNh
ZmVXcmFwKGNhbGxiYWNrKTsKKyAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBkYXRhLnZhbHVlID09PSAiKEdDIHJvb3RzKSBAMyI7CisgICAg
fQorICAgIHZhciBnY1Jvb3RzID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCBwcm9w
ZXJ0eU1hdGNoZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhZ2NS
b290cywgIkdDIHJvb3RzIHJvdyIpOworICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGdjUm9v
dHMsIGNhbGxiYWNrKTsKK30KKwogSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUgPSBmdW5j
dGlvbihyb3cpCiB7CiAgICAgdmFyIHJlc3VsdCA9IDA7CkBAIC0yODEsMTAgKzMyMywyNiBAQCBJ
bnNwZWN0b3JUZXN0LmZpbmRSb3cgPSBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBtYXRjaGVy
LCBwYXJlbnQpCiAKIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3ID0gZnVuY3Rpb24odGl0bGUs
IGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgd2hlbiBhZGRpbmcgdGVzdHMg
Zm9yIG90aGVyIHZpZXdzLgotICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJTdW1tYXJ5
IiwgdGl0bGUpOwogICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFj
ayk7Ci0gICAgY2FsbGJhY2soKTsKKyAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
cHJvZmlsZXMudmlzaWJsZVZpZXc7CisgICAgdmFyIGluZGV4ID0gLTE7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB2aWV3LnZpZXdzLmxlbmd0aDsgKytpKQorICAgICAgICBpZiAodmlldy52aWV3
c1tpXS50aXRsZSA9PT0gdGl0bGUpIHsKKyAgICAgICAgICAgIGluZGV4ID0gaTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1
ZSwgaW5kZXggPj0gMCwgIlZpZXcgbm90IGZvdW5kOiAiICsgdGl0bGUpOworICAgIGlmICh2aWV3
LnZpZXdzLmN1cnJlbnQgPT09IGluZGV4KSB7CisgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ss
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ1bmN0aW9uIHNvcnRpbmdDb21wbGV0
ZSgpCisgICAgeworICAgICAgICB2aWV3LnZpZXdzW2luZGV4XS5ncmlkLnJlbW92ZUV2ZW50TGlz
dGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUsIHRoaXMpOworICAgICAg
ICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTsKKyAgICB9CisgICAgdmlldy52aWV3c1tpbmRleF0u
Z3JpZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRl
LCB0aGlzKTsKKyAgICB2aWV3Ll9jaGFuZ2VWaWV3KHt0YXJnZXQ6IHtzZWxlY3RlZEluZGV4OiBp
bmRleH19KTsKIH07CiAKIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdCA9IGZ1bmN0
aW9uKGdlbmVyYXRvciwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5t
ZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtY29udGFpbm1lbnQtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZGYwMjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQt
d2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIENvbnRhaW5t
ZW50IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIEV4cGFuZGVkIG5vZGVzIG11c3Qg
YmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0
YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RFeHBhbnNp
b25QcmVzZXJ2ZWRXaGVuU29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb250YWlubWVudC1zaG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlOTA2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hv
dHMtY29udGFpbm1lbnQtc2hvdy1hbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVz
dHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gVGhlICJTaG93
IEFsbCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVk
LgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RT
aG93QWxsCisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1jb250YWlubWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlu
bWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjA0NTUwMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50
LXNob3ctbmV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBDb250YWlubWVu
dCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBSZXBlYXRlZCBjbGlja3Mgb24gIlNo
b3cgTmV4dCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCisKK1Byb2ZpbGVyIHdhcyBlbmFi
bGVkLgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRl
c3RTaG93TmV4dAorCitQcm9maWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRh
aW5tZW50LXNvcnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmYwZTAzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50
LXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgc29ydGluZyBpbiBD
b250YWlubWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgorCitQcm9maWxlciB3
YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5u
aW5nOiB0ZXN0U29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxl
ZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNv
cnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQw
NmU0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwYW5zaW9uLXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMg
U3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBFeHBhbmRlZCBub2RlcyBt
dXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4K
K0RldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0RXhw
YW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcKKworUHJvZmlsZXIgd2FzIGRpc2FibGVkLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1z
dW1tYXJ5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUwMWVm
OC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3Iv
cHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVGVzdHMgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhl
YXAgc25hcHNob3RzLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4KLURldGFpbGVkIGhlYXAgcHJv
ZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0U29ydGluZwotCi1SdW5uaW5nOiB0
ZXN0U2hvd05leHQKLQotUnVubmluZzogdGVzdFNob3dBbGwKLQotUnVubmluZzogdGVzdEV4cGFu
c2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS1zaG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzZhMzgxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3Vt
bWFyeS1zaG93LWFsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBTdW1tYXJ5
IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFRoZSAiU2hvdyBBbGwiIGJ1dHRvbiBt
dXN0IHNob3cgYWxsIG5vZGVzLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhl
YXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U2hvd0FsbAorCitQcm9m
aWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93
LW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctbmV4dC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4ODYzOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOSBAQAorVGVzdHMgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNo
b3RzLiBSZXBlYXRlZCBjbGlja3Mgb24gIlNob3cgTmV4dCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwg
bm9kZXMuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3
ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RTaG93TmV4dAorCitQcm9maWxlciB3YXMgZGlz
YWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zb3J0aW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGEwZGExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1zdW1tYXJ5LXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVz
dHMgc29ydGluZyBpbiBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisK
K1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJs
ZWQuCisKK1J1bm5pbmc6IHRlc3RTb3J0aW5nCisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CmluZGV4IDJmMmYyODkuLjJlNjhhMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTMyOTksNyArMzI5OSw2IEBA
IEJVR1dLNTgwMDggTUFDIFNOT1dMRU9QQVJEIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYmlk
aS1DUy1hZnRlci1BTi5odG1sID0gSU1BCiBCVUdXSzU4MDA4IE1BQyBTTk9XTEVPUEFSRCA6IGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JpZGktbWlycm9yLWhlLWFyLmh0bWwgPSBJTUFHRStURVhU
CiBCVUdXSzU4MDA4IE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2Jp
ZGktbmV1dHJhbC1ydW4uaHRtbCA9IElNQUdFK1RFWFQKIAotQlVHV0s1ODAxMCBXSU4gTElOVVgg
REVCVUcgOiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnkuaHRt
bCA9IFBBU1MgVElNRU9VVAogQlVHQ1I3ODYzOCBXSU4gOiBmYXN0L2ZyYW1lcy9zZXQtdW5sb2Fk
ZWQtZnJhbWUtbG9jYXRpb24uaHRtbCA9IENSQVNIIFBBU1MKIEJVR1dLNTc5NzUgOiBmYXN0L292
ZXJmbG93L2xpbmUtY2xhbXAuaHRtbCA9IElNQUdFCiBCVUdXSzU4MDA1IE1BQyA6IGVkaXRpbmcv
aW5zZXJ0aW5nL2VkaXRhYmxlLWlubGluZS1lbGVtZW50Lmh0bWwgPSBJTUFHRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDc1Y2UwNDkuLmEzOWE1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0w
NC0wNyAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtD
aHJvbWl1bV0gQWRkIG1vcmUgdGVzdHMgZm9yIGRldGFpbGVkIGhlYXAgc25hcHNob3RzIFVJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMTAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDExCisKKyAg
ICAgICAgQWRkZWQgdGVzdHMgZm9yICJDb250YWlubWVudCIgdmlldy4gTWlub3IgcmVmYWN0b3Jp
bmdzLCBidWdzIGZpeGVkLgorICAgICAgICBTcGxpdCBvbmUgbGFyZ2UgdGVzdHMgaW50byBzbWFs
bGVyIG9uZXMgdG8gYXZvaWQgdGltaW5nIG91dCBpbiBkZWJ1ZyBtb2RlLgorCisgICAgICAgIFRl
c3RzOiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4
cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKKyAgICAgICAgICAgICAgIGluc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1hbGwuaHRt
bAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1j
b250YWlubWVudC1zaG93LW5leHQuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLmh0bWwKKyAgICAgICAg
ICAgICAgIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBh
bnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1hbGwuaHRtbAorICAg
ICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5
LXNob3ctbmV4dC5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuc29ydC5kb1NvcnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5zb3J0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3REb21pbmF0b3JPYmplY3ROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdENvbnRhaW5tZW50RGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdERvbWluYXRvcnNEYXRhR3JpZCk6CisKIDIwMTEtMDQtMDYgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hv
dEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWls
ZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwppbmRleCBjMjhmZjgyLi40NjljYjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlk
Tm9kZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90R3JpZE5vZGVzLmpzCkBAIC0yOCwxMCArMjgsMTAgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlID0gZnVuY3Rpb24odHJl
ZSwgaGFzQ2hpbGRyZW4sIHBvcHVsYXRlQ291bnQpCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
R3JpZE5vZGUgPSBmdW5jdGlvbih0cmVlLCBoYXNDaGlsZHJlbikKIHsKICAgICBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgbnVsbCwgaGFzQ2hpbGRyZW4pOwotICAgIHRoaXMu
X2RlZmF1bHRQb3B1bGF0ZUNvdW50ID0gcG9wdWxhdGVDb3VudDsKKyAgICB0aGlzLl9kZWZhdWx0
UG9wdWxhdGVDb3VudCA9IHRyZWUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50OwogICAgIHRoaXMuX3By
b3ZpZGVyID0gbnVsbDsKICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhp
cy5fcG9wdWxhdGUsIHRoaXMpOwogfQpAQCAtNjUsNiArNjUsOCBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcHJvdmlkZXIuaW5z
dGFuY2VDb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgcHJvdmlkZXIgPSBwcm92aWRlciB8
fCB0aGlzLl9wcm92aWRlcjsKKyAgICAgICAgaWYgKCEoImluc3RhbmNlQ291bnQiIGluIHByb3Zp
ZGVyKSkKKyAgICAgICAgICAgIHByb3ZpZGVyLmluc3RhbmNlQ291bnQgPSAwOwogICAgICAgICBo
b3dNYW55ID0gaG93TWFueSB8fCB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudDsKICAgICAgICAg
YXRJbmRleCA9IGF0SW5kZXggfHwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7CiAgICAgICAgIHZhciBo
YXZlU2F2ZWRDaGlsZHJlbiA9ICEhdGhpcy5fc2F2ZWRDaGlsZHJlbjsKQEAgLTEwMiwyNSArMTA0
LDI1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCi0gICAgc29ydDogZnVuY3Rpb24oc3VwcHJlc3NOb3RpZnlBYm91
dENvbXBsZXRpb24pCisgICAgc29ydDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGNv
bXBhcmF0b3IgPSB0aGlzLmNvbXBhcmF0b3IoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFz
ZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5zdGFydEFjdGlvbih0aGlzLmRhdGFHcmlkLmVsZW1lbnQs
IGRvU29ydC5iaW5kKHRoaXMpKTsKIAogICAgICAgICBmdW5jdGlvbiBkb1NvcnQoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3Byb3ZpZGVyLnNvcnQoY29tcGFyYXRvcikpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy5fc2F2ZUNoaWxkcmVuKCk7
Ci0gICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICB0aGlzLl9w
cm92aWRlci5maXJzdCgpOwotICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKHRoaXMu
X3Byb3ZpZGVyKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5jaGlsZHJl
bi5sZW5ndGg7IGkgPCBsOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlz
LmNoaWxkcmVuW2ldOwotICAgICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGQuc29ydCgpOworICAgICAgICAgICAgaWYgKHRoaXMuX3Byb3Zp
ZGVyLnNvcnQoY29tcGFyYXRvcikpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zYXZlQ2hpbGRy
ZW4oKTsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fcHJvdmlkZXIuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICB0aGlzLnBvcHVs
YXRlQ2hpbGRyZW4odGhpcy5fcHJvdmlkZXIpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwLCBsID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuc29y
dCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgh
c3VwcHJlc3NOb3RpZnlBYm91dENvbXBsZXRpb24pCisgICAgICAgICAgICBpZiAodGhpcy5kYXRh
R3JpZCA9PT0gdGhpcykKICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycygic29ydGluZyBjb21wbGV0ZSIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTI4LDkgKzEz
MCw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAK
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZSA9IGZ1bmN0aW9uKHRyZWUsIG5vZGUsIGhhc0NoaWxk
cmVuLCBwb3B1bGF0ZUNvdW50KQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmpl
Y3ROb2RlID0gZnVuY3Rpb24odHJlZSwgbm9kZSwgaGFzQ2hpbGRyZW4pCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLmNhbGwodGhpcywgdHJlZSwgaGFzQ2hpbGRyZW4s
IHBvcHVsYXRlQ291bnQpOworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5j
YWxsKHRoaXMsIHRyZWUsIGhhc0NoaWxkcmVuKTsKICAgICB0aGlzLl9uYW1lID0gbm9kZS5uYW1l
OwogICAgIHRoaXMuX3R5cGUgPSBub2RlLnR5cGU7CiAgICAgdGhpcy5fc2hhbGxvd1NpemUgPSBu
b2RlLnNlbGZTaXplOwpAQCAtMjI4LDcgKzIzMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhl
CiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGVk
Z2UpCiB7CiAgICAgdmFyIHByb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIodHJlZS5zbmFw
c2hvdCwgZWRnZS5ub2RlSW5kZXgpOwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5l
cmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIGVkZ2Uubm9kZSwgIXByb3ZpZGVyLmlzRW1w
dHksIDEwMCk7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2Rl
LmNhbGwodGhpcywgdHJlZSwgZWRnZS5ub2RlLCAhcHJvdmlkZXIuaXNFbXB0eSk7CiAgICAgdGhp
cy5fcmVmZXJlbmNlTmFtZSA9IGVkZ2UubmFtZTsKICAgICB0aGlzLl9yZWZlcmVuY2VUeXBlID0g
ZWRnZS50eXBlOwogICAgIHRoaXMuX3Byb3ZpZGVyID0gcHJvdmlkZXI7CkBAIC0zMTcsNyArMzE5
LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHMKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJ
bnN0YW5jZU5vZGUgPSBmdW5jdGlvbih0cmVlLCBiYXNlU25hcHNob3QsIHNuYXBzaG90LCBub2Rl
KQogewogICAgIHZhciBwcm92aWRlciA9IHRoaXMuX2NyZWF0ZVByb3ZpZGVyKGJhc2VTbmFwc2hv
dCB8fCBzbmFwc2hvdCwgbm9kZS5ub2RlSW5kZXgpOyAgCi0gICAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNhbGwodGhpcywgdHJlZSwgbm9kZSwgIXByb3ZpZGVy
LmlzRW1wdHksIDEwMCk7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmpl
Y3ROb2RlLmNhbGwodGhpcywgdHJlZSwgbm9kZSwgIXByb3ZpZGVyLmlzRW1wdHkpOwogICAgIHRo
aXMuX2lzRGVsZXRlZE5vZGUgPSAhIWJhc2VTbmFwc2hvdDsKICAgICB0aGlzLl9wcm92aWRlciA9
IHByb3ZpZGVyOyAgICAKIH07CkBAIC0zOTEsNyArMzkzLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhl
YXBTbmEKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZSA9IGZ1bmN0
aW9uKHRyZWUsIGNsYXNzTmFtZSwgYWdncmVnYXRlKQogewotICAgIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIGFnZ3JlZ2F0ZS5jb3VudCA+IDAsIDEw
MCk7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLmNhbGwodGhpcywgdHJl
ZSwgYWdncmVnYXRlLmNvdW50ID4gMCk7CiAgICAgdGhpcy5fbmFtZSA9IGNsYXNzTmFtZTsKICAg
ICB0aGlzLl9jb3VudCA9IGFnZ3JlZ2F0ZS5jb3VudDsKICAgICB0aGlzLl9zaGFsbG93U2l6ZSA9
IGFnZ3JlZ2F0ZS5zZWxmOwpAQCAtNDkyLDcgKzQ5NCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3REaWZmTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGNsYXNzTmFtZSwgYmFzZUFnZ3JlZ2F0ZSwg
YWdnCiAgICAgICAgIGJhc2VBZ2dyZWdhdGUgPSB7IGNvdW50OiAwLCBzZWxmOiAwLCBtYXhSZXQ6
IDAsIHR5cGU6YWdncmVnYXRlLnR5cGUsIG5hbWU6YWdncmVnYXRlLm5hbWUsIGlkeHM6IFtdIH07
CiAgICAgaWYgKCFhZ2dyZWdhdGUpCiAgICAgICAgIGFnZ3JlZ2F0ZSA9IHsgY291bnQ6IDAsIHNl
bGY6IDAsIG1heFJldDogMCwgdHlwZTpiYXNlQWdncmVnYXRlLnR5cGUsIG5hbWU6YmFzZUFnZ3Jl
Z2F0ZS5uYW1lLCBpZHhzOiBbXSB9OwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlk
Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIHRydWUsIDUwKTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCB0cnVlKTsKICAgICB0aGlzLl9uYW1lID0g
Y2xhc3NOYW1lOwogICAgIHRoaXMuX2NhbGN1bGF0ZURpZmYodHJlZS5iYXNlU25hcHNob3QsIHRy
ZWUuc25hcHNob3QsIGJhc2VBZ2dyZWdhdGUuaWR4cywgYWdncmVnYXRlLmlkeHMpOwogICAgIHRo
aXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlTm9kZXNQcm92aWRlcih0cmVlLmJhc2VTbmFwc2hv
dCwgdHJlZS5zbmFwc2hvdCwgYWdncmVnYXRlLnR5cGUsIGNsYXNzTmFtZSk7CkBAIC02MjcsNyAr
NjI5LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG8KIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3REb21pbmF0b3JPYmplY3ROb2RlID0gZnVuY3Rpb24odHJlZSwgbm9kZSkKIHsKICAgICB2YXIg
cHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcih0cmVlLnNuYXBzaG90LCBub2RlLm5vZGVJ
bmRleCk7Ci0gICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNh
bGwodGhpcywgdHJlZSwgbm9kZSwgIXByb3ZpZGVyLmlzRW1wdHksIDI1KTsKKyAgICBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBub2Rl
LCAhcHJvdmlkZXIuaXNFbXB0eSk7CiAgICAgdGhpcy5fcHJvdmlkZXIgPSBwcm92aWRlcjsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWls
ZWRIZWFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
dGFpbGVkSGVhcHNob3RWaWV3LmpzCmluZGV4IGNhN2Y4OTguLmE2YjE2NzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFw
c2hvdFZpZXcuanMKQEAgLTM3LDEwICszNywxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Q29udGFpbm1lbnREYXRhR3JpZCA9IGZ1bmN0aW9uKCkKICAgICB9OwogICAgIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOwogICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5l
cigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5zb3J0LCB0aGlzKTsKLSAgICB0aGlzLl9kZWZhdWx0
UG9wdWxhdGVDb3VudCA9IDEwMDsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRh
aW5tZW50RGF0YUdyaWQucHJvdG90eXBlID0geworICAgIF9kZWZhdWx0UG9wdWxhdGVDb3VudDog
MTAwLAorCiAgICAgc2V0RGF0YVNvdXJjZTogZnVuY3Rpb24oc25hcHNob3RWaWV3LCBzbmFwc2hv
dCkKICAgICB7CiAgICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3OwpAQCAt
MTE2LDYgKzExNyw4IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRh
R3JpZCA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVj
dG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBfZGVmYXVsdFBvcHVsYXRlQ291bnQ6IDEw
MCwKKwogICAgIF9zb3J0RmllbGRzOiBmdW5jdGlvbihzb3J0Q29sdW1uLCBzb3J0QXNjZW5kaW5n
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKQEAgLTE2MSw2ICsxNjQsOCBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBfZGVmYXVsdFBv
cHVsYXRlQ291bnQ6IDUwLAorCiAgICAgX3NvcnRGaWVsZHM6IGZ1bmN0aW9uKHNvcnRDb2x1bW4s
IHNvcnRBc2NlbmRpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gewpAQCAtMjIwLDEwICsyMjUs
MTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZCA9IGZ1bmN0
aW9uKCkKICAgICB9OwogICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVt
bnMpOwogICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5z
b3J0LCB0aGlzKTsKLSAgICB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCA9IDI1OwogfQogCiBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsK
KyAgICBfZGVmYXVsdFBvcHVsYXRlQ291bnQ6IDI1LAorCiAgICAgc2V0RGF0YVNvdXJjZTogZnVu
Y3Rpb24oc25hcHNob3RWaWV3LCBzbmFwc2hvdCkKICAgICB7CiAgICAgICAgIHRoaXMuc25hcHNo
b3RWaWV3ID0gc25hcHNob3RWaWV3OwpAQCAtNDIwLDIwICs0MjYsMTcgQEAgV2ViSW5zcGVjdG9y
LkRldGFpbGVkSGVhcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgIHRo
aXMudmlld1NlbGVjdEVsZW1lbnQuY2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbSI7CiAgICAg
dGhpcy52aWV3U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9j
aGFuZ2VWaWV3LmJpbmQodGhpcyksIGZhbHNlKTsKIAotICAgIHZhciBjbGFzc2VzVmlld09wdGlv
biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgIGNsYXNzZXNWaWV3T3B0
aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdW1tYXJ5Iik7Ci0gICAgdmFyIGRp
ZmZWaWV3T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgZGlm
ZlZpZXdPcHRpb24ubGFiZWwgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbXBhcmlzb24iKTsK
LSAgICB2YXIgY29udGFpbm1lbnRWaWV3T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIik7Ci0gICAgY29udGFpbm1lbnRWaWV3T3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb250YWlubWVudCIpOwotICAgIHZhciBkb21pbmF0b3JzVmlld09wdGlvbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgIGRvbWluYXRvcnNWaWV3T3B0
aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEb21pbmF0b3JzIik7Ci0gICAgdGhp
cy52aWV3U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChjbGFzc2VzVmlld09wdGlvbik7Ci0gICAg
dGhpcy52aWV3U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChkaWZmVmlld09wdGlvbik7Ci0gICAg
dGhpcy52aWV3U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChjb250YWlubWVudFZpZXdPcHRpb24p
OwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9taW5hdG9yc1ZpZXdP
cHRpb24pOwotICAgIHRoaXMudmlld3MgPSBbIlN1bW1hcnkiLCAiQ29tcGFyaXNvbiIsICJDb250
YWlubWVudCIsICJEb21pbmF0b3JzIl07CisgICAgdGhpcy52aWV3cyA9IFt7dGl0bGU6ICJTdW1t
YXJ5IiwgdmlldzogdGhpcy5jb25zdHJ1Y3RvcnNWaWV3LCBncmlkOiB0aGlzLmNvbnN0cnVjdG9y
c0RhdGFHcmlkfSwKKyAgICAgICAgICAgICAgICAgIHt0aXRsZTogIkNvbXBhcmlzb24iLCB2aWV3
OiB0aGlzLmRpZmZWaWV3LCBncmlkOiB0aGlzLmRpZmZEYXRhR3JpZH0sCisgICAgICAgICAgICAg
ICAgICB7dGl0bGU6ICJDb250YWlubWVudCIsIHZpZXc6IHRoaXMuY29udGFpbm1lbnRWaWV3LCBn
cmlkOiB0aGlzLmNvbnRhaW5tZW50RGF0YUdyaWR9LAorICAgICAgICAgICAgICAgICAge3RpdGxl
OiAiRG9taW5hdG9ycyIsIHZpZXc6IHRoaXMuZG9taW5hdG9yVmlldywgZ3JpZDogdGhpcy5kb21p
bmF0b3JEYXRhR3JpZH1dOwogICAgIHRoaXMudmlld3MuY3VycmVudCA9IDA7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLnZpZXdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2aWV3
ID0gdGhpcy52aWV3c1tpXTsKKyAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIm9wdGlvbiIpOworICAgICAgICBvcHRpb24ubGFiZWwgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcodmlldy50aXRsZSk7CisgICAgICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5k
Q2hpbGQob3B0aW9uKTsKKyAgICB9CiAKICAgICB0aGlzLl9wcm9maWxlVWlkID0gcHJvZmlsZS51
aWQ7CiAKQEAgLTc3MSwxOSArNzc0LDkgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RW
aWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLnZpZXdzLmN1cnJlbnQgPSBldmVudC50
YXJnZXQuc2VsZWN0ZWRJbmRleDsKICAgICAgICAgdGhpcy5jdXJyZW50Vmlldy5oaWRlKCk7Ci0g
ICAgICAgIGlmICh0aGlzLnZpZXdzW3RoaXMudmlld3MuY3VycmVudF0gPT09ICJDb250YWlubWVu
dCIpIHsKLSAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB0aGlzLmNvbnRhaW5tZW50Vmll
dzsKLSAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQgPSB0aGlzLmNvbnRhaW5tZW50RGF0YUdyaWQ7
Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3c1t0aGlzLnZpZXdzLmN1cnJlbnRdID09PSAi
U3VtbWFyeSIpIHsKLSAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB0aGlzLmNvbnN0cnVj
dG9yc1ZpZXc7Ci0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkID0gdGhpcy5jb25zdHJ1Y3RvcnNE
YXRhR3JpZDsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdzW3RoaXMudmlld3MuY3VycmVu
dF0gPT09ICJDb21wYXJpc29uIikgewotICAgICAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9IHRo
aXMuZGlmZlZpZXc7Ci0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkID0gdGhpcy5kaWZmRGF0YUdy
aWQ7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3c1t0aGlzLnZpZXdzLmN1cnJlbnRdID09
PSAiRG9taW5hdG9ycyIpIHsKLSAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB0aGlzLmRv
bWluYXRvclZpZXc7Ci0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkID0gdGhpcy5kb21pbmF0b3JE
YXRhR3JpZDsKLSAgICAgICAgfQorICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlld3NbdGhpcy52
aWV3cy5jdXJyZW50XTsKKyAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9IHZpZXcudmlldzsKKyAg
ICAgICAgdGhpcy5kYXRhR3JpZCA9IHZpZXcuZ3JpZDsKICAgICAgICAgdGhpcy5jdXJyZW50Vmll
dy5zaG93KCk7CiAgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7CiAgICAgICAgIGlm
ICh0aGlzLmN1cnJlbnRWaWV3ID09PSB0aGlzLmRpZmZWaWV3KSB7Cg==
</data>
<flag name="review"
          id="81128"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="81129"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>