<?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>100752</bug_id>
          
          <creation_ts>2012-10-30 06:28:38 -0700</creation_ts>
          <short_desc>Web Inspector: [Canvas] do not blow up the capturing log</short_desc>
          <delta_ts>2014-12-12 13:42:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754295</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-10-30 06:28:38 -0700</bug_when>
    <thetext>Clear obsolete calls in the canvas 2D capturing log in runtime.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754325</commentid>
    <comment_count>1</comment_count>
      <attachid>171440</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-10-30 06:51:30 -0700</bug_when>
    <thetext>Created attachment 171440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754558</commentid>
    <comment_count>2</comment_count>
      <attachid>171440</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-30 12:10:24 -0700</bug_when>
    <thetext>Comment on attachment 171440
Patch

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

New failing tests:
inspector/profiler/canvas2d/canvas2d-api-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755978</commentid>
    <comment_count>3</comment_count>
      <attachid>171791</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-01 01:27:41 -0700</bug_when>
    <thetext>Created attachment 171791
fixed test for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755991</commentid>
    <comment_count>4</comment_count>
      <attachid>171797</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-01 01:45:44 -0700</bug_when>
    <thetext>Created attachment 171797
fixed jscompiler warnings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755993</commentid>
    <comment_count>5</comment_count>
      <attachid>171791</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-01 02:00:18 -0700</bug_when>
    <thetext>Comment on attachment 171791
fixed test for bots

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

New failing tests:
inspector/profiler/canvas2d/canvas2d-api-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756049</commentid>
    <comment_count>6</comment_count>
      <attachid>171797</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-01 03:42:00 -0700</bug_when>
    <thetext>Comment on attachment 171797
fixed jscompiler warnings

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

New failing tests:
inspector/profiler/canvas2d/canvas2d-api-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757219</commentid>
    <comment_count>7</comment_count>
      <attachid>172066</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-02 08:42:55 -0700</bug_when>
    <thetext>Created attachment 172066
fixed mac test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758248</commentid>
    <comment_count>8</comment_count>
      <attachid>172066</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-04 23:11:59 -0800</bug_when>
    <thetext>Comment on attachment 172066
fixed mac test

Rejecting attachment 172066 from commit-queue.

aandrey@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758279</commentid>
    <comment_count>9</comment_count>
      <attachid>172066</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-04 23:53:19 -0800</bug_when>
    <thetext>Comment on attachment 172066
fixed mac test

Clearing flags on attachment: 172066

Committed r133438: &lt;http://trac.webkit.org/changeset/133438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054949</commentid>
    <comment_count>10</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-12 13:39:57 -0800</bug_when>
    <thetext>Closing as invalid, as this bug pertains to the old inspector UI and/or its tests.
Please file a new bug (https://www.webkit.org/new-inspector-bug) if the bug/feature/issue is still relevant to WebKit trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171440</attachid>
            <date>2012-10-30 06:51:30 -0700</date>
            <delta_ts>2012-10-31 02:42:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100752-20121030174954.patch</filename>
            <type>text/plain</type>
            <size>37758</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE3ZTlhNzIzMTk0NzY0
YTI0YmMxMDc4MzAwNjc0NTZjMjdhMDM1Mi4uNzJhOWVlNmI0ODAyNTcyMzAzNDZlYjM1ZjFlYTQx
ZjMzZTAyYmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTMwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDYW52YXNdIGRvIG5vdCBibG93IHVwIHRoZSBjYXB0dXJpbmcgbG9nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhciBvYnNvbGV0ZSBjYWxs
cyBpbiB0aGUgY2FudmFzIDJEIGNhcHR1cmluZyBsb2cgaW4gcnVudGltZS4KKyAgICAgICAgTm93
IHdlIHN0b3JlIGluIHRoZSBsb2cgb25seSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0aGF0IGFy
ZSBuZWNlc3NhcnkgdG8gcmVwbGF5IGEKKyAgICAgICAgY2FudmFzIDJEIGNvbnRleHQuIFRvIGFj
aGlldmUgdGhhdCB3ZSBmaW5kIGluIHJ1bnRpbWUgdGhvc2UgY2FsbHMgaW4gdGhlIGxvZyB0aGF0
IG5vCisgICAgICAgIGxvbmdlciBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBjb250ZXh0IHN0YXRl
IGFuZCByZW1vdmUgdGhlbS4KKyAgICAgICAgVGhlc2UgYXJlIHRoZSBydWxlcyBhY2NvcmRpbmcg
d2hpY2ggd2UgZmluZCBhbmQgcmVtb3ZlIHN1Y2ggY2FsbHM6CisgICAgICAgIC0gYWxsIFBBVEgg
bWV0aG9kcyBiZXR3ZWVuIGEgY2xpcCgpIGNhbGwgYW5kIGJlZ2luUGF0aCgpIGNhbGwgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgLSBhbGwgTUFUUklYIG1ldGhvZHMgYmVmb3JlIGEgcmVzdG9yZSgp
IG9yIHNldFRyYW5zZm9ybSgpIGNhbGwgYnV0IGFmdGVyIGFueSBQQVRIIG9yIGNvcnJlc3BvbmRp
bmcgc2F2ZSgpIG1ldGhvZAorICAgICAgICAtIGFsbCBjb25zZWN1dGl2ZSBzYXZlKCkgKyByZXN0
b3JlKCkgY2FsbHMKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJk
L2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9m
aWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorCiAyMDEyLTEwLTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW5hbWUgTG9jYWxpemVyIHRvIExvY2FsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLmpzCmluZGV4IDMyOTVmYzRjOTA3Nzk0MTgxZDU3N2I5ZGM0MGIxODVmNDg5OGJiMGMu
LmUyN2ZmYWM3MmI3MzkwNzI1OTQyOWI3MDc5MjM2ZjUxNjA1YjlkNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGVTb3VyY2UuanMKQEAgLTExNyw2ICsxMTcsMjAgQEAgdmFyIFR5cGVVdGlscyA9IHsKICAgICB9
LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmplY3Q9fSBvYmoKKyAgICAgKiBAcmV0dXJu
IHtPYmplY3R9CisgICAgICovCisgICAgY2xvbmVPYmplY3Q6IGZ1bmN0aW9uKG9iaikKKyAgICB7
CisgICAgICAgIGlmICghb2JqKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZh
ciByZXN1bHQgPSB7fTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikKKyAgICAgICAgICAg
IHJlc3VsdFtrZXldID0gb2JqW2tleV07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwK
KworICAgIC8qKgogICAgICAqIEByZXR1cm4ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0KICAg
ICAgKi8KICAgICBfZHVtbXlDYW52YXMyZENvbnRleHQ6IGZ1bmN0aW9uKCkKQEAgLTM1OCw2ICsz
NzIsMjggQEAgQ2FsbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3Vs
dDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
KiBAcGFyYW0ge09iamVjdH0gYXR0YWNobWVudAorICAgICAqLworICAgIHNldEF0dGFjaG1lbnQ6
IGZ1bmN0aW9uKG5hbWUsIGF0dGFjaG1lbnQpCisgICAgeworICAgICAgICBpZiAoYXR0YWNobWVu
dCkgeworICAgICAgICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSB0aGlzLl9hdHRhY2htZW50cyB8
fCB7fTsKKyAgICAgICAgICAgIHRoaXMuX2F0dGFjaG1lbnRzW25hbWVdID0gYXR0YWNobWVudDsK
KyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hdHRhY2htZW50cykKKyAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9hdHRhY2htZW50c1tuYW1lXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCisgICAg
YXR0YWNobWVudDogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9h
dHRhY2htZW50cyAmJiB0aGlzLl9hdHRhY2htZW50c1tuYW1lXTsKKyAgICB9LAorCiAgICAgZnJl
ZXplOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZnJlZXplZCkKQEAgLTM4
Miw3ICs0MTgsOCBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFyZ3MgPSB0aGlz
Ll9hcmdzLm1hcChmdW5jdGlvbihvYmopIHsKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZS50
b1JlcGxheWFibGUob2JqLCBjYWNoZSk7CiAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gbmV3
IFJlcGxheWFibGVDYWxsKHRoaXNPYmplY3QsIHRoaXMuX2Z1bmN0aW9uTmFtZSwgYXJncywgcmVz
dWx0LCB0aGlzLl9zdGFja1RyYWNlKTsKKyAgICAgICAgdmFyIGF0dGFjaG1lbnRzID0gVHlwZVV0
aWxzLmNsb25lT2JqZWN0KHRoaXMuX2F0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBS
ZXBsYXlhYmxlQ2FsbCh0aGlzT2JqZWN0LCB0aGlzLl9mdW5jdGlvbk5hbWUsIGFyZ3MsIHJlc3Vs
dCwgdGhpcy5fc3RhY2tUcmFjZSwgYXR0YWNobWVudHMpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTQxNyw2ICs0NTQsOSBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzdWx0
ID0gcmVwbGF5UmVzdWx0OwogICAgICAgICB0aGlzLl9zdGFja1RyYWNlID0gcmVwbGF5YWJsZUNh
bGwuc3RhY2tUcmFjZSgpOwogICAgICAgICB0aGlzLl9mcmVlemVkID0gdHJ1ZTsKKyAgICAgICAg
dmFyIGF0dGFjaG1lbnRzID0gcmVwbGF5YWJsZUNhbGwuYXR0YWNobWVudHMoKTsKKyAgICAgICAg
aWYgKGF0dGFjaG1lbnRzKQorICAgICAgICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSBUeXBlVXRp
bHMuY2xvbmVPYmplY3QoYXR0YWNobWVudHMpOwogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9
CiB9CkBAIC00MjgsMTQgKzQ2OCwxNyBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAqIEBwYXJhbSB7
QXJyYXkuPFJlcGxheWFibGVSZXNvdXJjZXwqPn0gYXJncwogICogQHBhcmFtIHtSZXBsYXlhYmxl
UmVzb3VyY2V8Kn0gcmVzdWx0CiAgKiBAcGFyYW0ge1N0YWNrVHJhY2V9IHN0YWNrVHJhY2UKKyAq
IEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsIE9iamVjdD59IGF0dGFjaG1lbnRzCiAgKi8KLWZ1bmN0
aW9uIFJlcGxheWFibGVDYWxsKHRoaXNPYmplY3QsIGZ1bmN0aW9uTmFtZSwgYXJncywgcmVzdWx0
LCBzdGFja1RyYWNlKQorZnVuY3Rpb24gUmVwbGF5YWJsZUNhbGwodGhpc09iamVjdCwgZnVuY3Rp
b25OYW1lLCBhcmdzLCByZXN1bHQsIHN0YWNrVHJhY2UsIGF0dGFjaG1lbnRzKQogewogICAgIHRo
aXMuX3RoaXNPYmplY3QgPSB0aGlzT2JqZWN0OwogICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IGZ1
bmN0aW9uTmFtZTsKICAgICB0aGlzLl9hcmdzID0gYXJnczsKICAgICB0aGlzLl9yZXN1bHQgPSBy
ZXN1bHQ7CiAgICAgdGhpcy5fc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7CisgICAgaWYgKGF0dGFj
aG1lbnRzKQorICAgICAgICB0aGlzLl9hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogfQogCiBS
ZXBsYXlhYmxlQ2FsbC5wcm90b3R5cGUgPSB7CkBAIC00ODgsNiArNTMxLDIzIEBAIFJlcGxheWFi
bGVDYWxsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7
T2JqZWN0LjxzdHJpbmcsIE9iamVjdD59CisgICAgICovCisgICAgYXR0YWNobWVudHM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9hdHRhY2htZW50czsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0dXJuIHtP
YmplY3R9CisgICAgICovCisgICAgYXR0YWNobWVudDogZnVuY3Rpb24obmFtZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9hdHRhY2htZW50cyAmJiB0aGlzLl9hdHRhY2htZW50c1tuYW1l
XTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtDYWNoZX0gY2FjaGUKICAgICAg
KiBAcmV0dXJuIHtDYWxsfQogICAgICAqLwpAQCAtNzIyLDcgKzc4Miw5IEBAIFJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHks
IHByb3BlcnR5LCB7CiAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKQogICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZE9i
amVjdFtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqID0gd3JhcHBl
ZE9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBSZXNvdXJjZS5mb3JPYmplY3Qob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXNvdXJjZSA/IHJlc291cmNlIDogb2JqOwogICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgICAgICBzZXQ6IHNlbGYuX3dyYXBQcm9wZXJ0eVNldHRlcihzZWxmLCB3cmFw
cGVkT2JqZWN0LCBwcm9wZXJ0eSksCiAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRy
dWUKQEAgLTgwNCwxMiArODY2LDEyIEBAIFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ewogICAgICAgICAgICAgdmFyIG1hbmFnZXIgPSByZXNvdXJjZS5tYW5hZ2VyKCk7CiAgICAgICAg
ICAgICBpZiAoIW1hbmFnZXIgfHwgIW1hbmFnZXIuY2FwdHVyaW5nKCkpIHsKLSAgICAgICAgICAg
ICAgICBvcmlnaW5hbE9iamVjdFtwcm9wZXJ0eU5hbWVdID0gdmFsdWU7CisgICAgICAgICAgICAg
ICAgb3JpZ2luYWxPYmplY3RbcHJvcGVydHlOYW1lXSA9IFJlc291cmNlLndyYXBwZWRPYmplY3Qo
dmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHZhciBhcmdzID0gW3Byb3BlcnR5TmFtZSwgdmFsdWVdOwogICAgICAgICAgICAgbWFuYWdl
ci5jYXB0dXJlQXJndW1lbnRzKHJlc291cmNlLCBhcmdzKTsKLSAgICAgICAgICAgIG9yaWdpbmFs
T2JqZWN0W3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIG9yaWdpbmFsT2JqZWN0
W3Byb3BlcnR5TmFtZV0gPSBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHZhbHVlKTsKICAgICAgICAg
ICAgIHZhciBzdGFja1RyYWNlID0gU3RhY2tUcmFjZS5jcmVhdGUoMSwgYXJndW1lbnRzLmNhbGxl
ZSk7CiAgICAgICAgICAgICB2YXIgY2FsbCA9IG5ldyBDYWxsKHJlc291cmNlLCAiIiwgYXJncywg
dW5kZWZpbmVkLCBzdGFja1RyYWNlKTsKICAgICAgICAgICAgIG1hbmFnZXIuY2FwdHVyZUNhbGwo
Y2FsbCk7CkBAIC0xODE5LDcgKzE4ODEsNiBAQCBmdW5jdGlvbiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZShjb250ZXh0LCByZXBsYXlDb250ZXh0Q2FsbGJhY2spCiB7CiAgICAgUmVz
b3VyY2UuY2FsbCh0aGlzLCBjb250ZXh0KTsKICAgICB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJh
Y2sgPSByZXBsYXlDb250ZXh0Q2FsbGJhY2s7Ci0gICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrID0g
W107CiB9CiAKIC8qKgpAQCAtMTg0MSw3ICsxOTAyLDggQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcyA9IFsKICAgICAiZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uIiwKICAgICAiZm9udCIsCiAgICAgInRleHRBbGlnbiIsCi0gICAgInRleHRCYXNl
bGluZSIKKyAgICAidGV4dEJhc2VsaW5lIiwKKyAgICAibGluZURhc2hPZmZzZXQiCiBdOwogCiAv
KioKQEAgLTE4ODEsOCArMTk0MywxMyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgX3BvcHVsYXRlUmVwbGF5YWJsZURhdGE6IGZ1bmN0aW9uKGRh
dGEsIGNhY2hlKQogICAgIHsKICAgICAgICAgZGF0YS5yZXBsYXlDb250ZXh0Q2FsbGJhY2sgPSB0
aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2s7Ci0gICAgICAgIGRhdGEuYXR0cmlidXRlc1N0YWNr
ID0gdGhpcy5fYXR0cmlidXRlc1N0YWNrLnNsaWNlKDApOwogICAgICAgICBkYXRhLmN1cnJlbnRB
dHRyaWJ1dGVzID0gdGhpcy5fY3VycmVudEF0dHJpYnV0ZXNTdGF0ZSgpOworICAgICAgICB2YXIg
Y3R4ID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBk
YXRhLm9yaWdpbmFsSW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjdHguY2FudmFz
LndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIkFTU0VSVF9OT1RfUkVBQ0hFRDogZ2V0SW1hZ2VEYXRhIGZh
aWxlZC4iLCBlKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICAvKioKQEAgLTE4OTMsMjEgKzE5
NjAsMjQgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgIF9kb1JlcGxheUNhbGxzOiBmdW5jdGlvbihkYXRhLCBjYWNoZSkKICAgICB7CiAgICAgICAg
IHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IGRhdGEucmVwbGF5Q29udGV4dENhbGxiYWNr
OwotICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sgPSBkYXRhLmF0dHJpYnV0ZXNTdGFjay5z
bGljZSgwKTsKIAogICAgICAgICB2YXIgY3R4ID0gUmVzb3VyY2Uud3JhcHBlZE9iamVjdCh0aGlz
Ll9yZXBsYXlDb250ZXh0Q2FsbGJhY2soKSk7CiAgICAgICAgIHRoaXMuc2V0V3JhcHBlZE9iamVj
dChjdHgpOwogCi0gICAgICAgIHZhciBzYXZlQ2FsbHMgPSAwOworICAgICAgICBpZiAoZGF0YS5v
cmlnaW5hbEltYWdlRGF0YSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBj
dHgucHV0SW1hZ2VEYXRhKGRhdGEub3JpZ2luYWxJbWFnZURhdGEsIDAsIDApOworICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkFTU0VSVF9O
T1RfUkVBQ0hFRDogcHV0SW1hZ2VEYXRhIGZhaWxlZC4iLCBlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YS5jYWxscy5sZW5ndGg7
IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgIHZhciByZXBsYXlhYmxlQ2FsbCA9IGRhdGEuY2Fs
bHNbaV07Ci0gICAgICAgICAgICBpZiAocmVwbGF5YWJsZUNhbGwuZnVuY3Rpb25OYW1lKCkgPT09
ICJzYXZlIikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhdmVDYWxscyA8IHRo
aXMuX2F0dHJpYnV0ZXNTdGFjay5sZW5ndGgsICJTaXplIG9mIGF0dHJpYnV0ZXMgc3RhY2sgaXMg
bGVzcyB0aGFuICdzYXZlJyBjYWxscyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5QXR0
cmlidXRlc1N0YXRlKHRoaXMuX2F0dHJpYnV0ZXNTdGFja1tzYXZlQ2FsbHMrK10pOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcGxheWFibGVDYWxsLmZ1bmN0aW9uTmFtZSgpID09
PSAic2F2ZSIpCisgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlBdHRyaWJ1dGVzU3RhdGUocmVw
bGF5YWJsZUNhbGwuYXR0YWNobWVudCgiY2FudmFzMmRBdHRyaWJ1dGVzU3RhdGUiKSk7CiAgICAg
ICAgICAgICB0aGlzLl9jYWxscy5wdXNoKHJlcGxheWFibGVDYWxsLnJlcGxheShjYWNoZSkpOwog
ICAgICAgICB9Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhdmVDYWxscyA9PT0gdGhpcy5fYXR0
cmlidXRlc1N0YWNrLmxlbmd0aCwgIlNpemUgb2YgYXR0cmlidXRlcyBzdGFjayBzaG91bGQgYmUg
ZXF1YWwgdG8gdGhlIG51bWJlciBvZiAnc2F2ZScgY2FsbHMiKTsKICAgICAgICAgdGhpcy5fYXBw
bHlBdHRyaWJ1dGVzU3RhdGUoZGF0YS5jdXJyZW50QXR0cmlidXRlcyk7CiAgICAgfSwKIApAQCAt
MTkxNiw3ICsxOTg2LDExIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBwdXNoQ2FsbF9zZXRUcmFuc2Zvcm06IGZ1bmN0aW9uKGNh
bGwpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIHRyYW5zZm9ybSBt
YXRyaXggbWV0aG9kcy4KKyAgICAgICAgdmFyIHNhdmVDYWxsSW5kZXggPSB0aGlzLl9sYXN0SW5k
ZXhPZk1hdGNoaW5nU2F2ZUNhbGwoKTsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fbGFzdElu
ZGV4T2ZBbnlDYWxsKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2Rz
KTsKKyAgICAgICAgaW5kZXggPSBNYXRoLm1heChpbmRleCwgc2F2ZUNhbGxJbmRleCk7CisgICAg
ICAgIGlmICh0aGlzLl9yZW1vdmVDYWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
UmVzb3VyY2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzLCBpbmRleCArIDEpKQorICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlQWxsT2Jzb2xldGVDYWxsc0Zyb21Mb2coKTsKICAgICAgICAgdGhp
cy5wdXNoQ2FsbChjYWxsKTsKICAgICB9LAogCkBAIC0xOTI1LDcgKzE5OTksOSBAQCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcHVz
aENhbGxfYmVnaW5QYXRoOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBvYnNvbGV0ZSBwYXRoIG1ldGhvZHMuCisgICAgICAgIHZhciBpbmRleCA9IHRoaXMu
X2xhc3RJbmRleE9mQW55Q2FsbChbImNsaXAiXSk7CisgICAgICAgIGlmICh0aGlzLl9yZW1vdmVD
YWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMs
IGluZGV4ICsgMSkpCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJv
bUxvZygpOwogICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOwogICAgIH0sCiAKQEAgLTE5MzQs
NyArMjAxMCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBwdXNoQ2FsbF9zYXZlOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrLnB1c2godGhpcy5fY3VycmVudEF0dHJpYnV0ZXNT
dGF0ZSgpKTsKKyAgICAgICAgY2FsbC5zZXRBdHRhY2htZW50KCJjYW52YXMyZEF0dHJpYnV0ZXNT
dGF0ZSIsIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVzU3RhdGUoKSk7CiAgICAgICAgIHRoaXMucHVz
aENhbGwoY2FsbCk7CiAgICAgfSwKIApAQCAtMTk0Myw5ICsyMDE5LDEzOCBAQCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcHVzaENh
bGxfcmVzdG9yZTogZnVuY3Rpb24oY2FsbCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2F0dHJpYnV0
ZXNTdGFjay5wb3AoKTsKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvYnNvbGV0ZSBjbGlwLHNh
dmUgbWV0aG9kcy4KLSAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsKKyAgICAgICAgdmFyIGxh
c3RJbmRleE9mU2F2ZSA9IHRoaXMuX2xhc3RJbmRleE9mTWF0Y2hpbmdTYXZlQ2FsbCgpOworICAg
ICAgICBpZiAobGFzdEluZGV4T2ZTYXZlID09PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy5fY2FsbHNbbGFzdEluZGV4T2ZTYXZlXS5zZXRBdHRhY2htZW50KCJjYW52YXMy
ZEF0dHJpYnV0ZXNTdGF0ZSIsIG51bGwpOyAvLyBObyBsb25nZXIgbmVlZGVkLCBmcmVlIG1lbW9y
eS4KKworICAgICAgICB2YXIgbW9kaWZpZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMuX3Jl
bW92ZUNhbGxzRnJvbUxvZyhbImNsaXAiXSwgbGFzdEluZGV4T2ZTYXZlICsgMSkpCisgICAgICAg
ICAgICBtb2RpZmllZCA9IHRydWU7CisKKyAgICAgICAgdmFyIGxhc3RJbmRleE9mQW55UGF0aE1l
dGhvZCA9IHRoaXMuX2xhc3RJbmRleE9mQW55Q2FsbChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRS
ZXNvdXJjZS5QYXRoTWV0aG9kcyk7CisgICAgICAgIHZhciBpbmRleCA9IE1hdGgubWF4KGxhc3RJ
bmRleE9mU2F2ZSwgbGFzdEluZGV4T2ZBbnlQYXRoTWV0aG9kKTsKKyAgICAgICAgaWYgKHRoaXMu
X3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5UcmFu
c2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIGluZGV4ICsgMSkpCisgICAgICAgICAgICBtb2RpZmll
ZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG1vZGlmaWVkKQorICAgICAgICAgICAgdGhpcy5fcmVt
b3ZlQWxsT2Jzb2xldGVDYWxsc0Zyb21Mb2coKTsKKworICAgICAgICB2YXIgbGFzdENhbGwgPSB0
aGlzLl9jYWxsc1t0aGlzLl9jYWxscy5sZW5ndGggLSAxXTsKKyAgICAgICAgaWYgKGxhc3RDYWxs
ICYmIGxhc3RDYWxsLmZ1bmN0aW9uTmFtZSgpID09PSAic2F2ZSIpCisgICAgICAgICAgICB0aGlz
Ll9jYWxscy5wb3AoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5wdXNoQ2FsbChj
YWxsKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBmcm9tSW5k
ZXgKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgX2xhc3RJbmRleE9mTWF0
Y2hpbmdTYXZlQ2FsbDogZnVuY3Rpb24oZnJvbUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHR5
cGVvZiBmcm9tSW5kZXggIT09ICJudW1iZXIiKQorICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhp
cy5fY2FsbHMubGVuZ3RoIC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJvbUluZGV4
ID0gTWF0aC5taW4oZnJvbUluZGV4LCB0aGlzLl9jYWxscy5sZW5ndGggLSAxKTsKKyAgICAgICAg
dmFyIHN0YWNrRGVwdGggPSAxOworICAgICAgICBmb3IgKHZhciBpID0gZnJvbUluZGV4OyBpID49
IDA7IC0taSkgeworICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9IHRoaXMuX2NhbGxzW2ld
LmZ1bmN0aW9uTmFtZSgpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PT0gInJlc3Rv
cmUiKQorICAgICAgICAgICAgICAgICsrc3RhY2tEZXB0aDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGZ1bmN0aW9uTmFtZSA9PT0gInNhdmUiKSB7CisgICAgICAgICAgICAgICAgLS1zdGFja0RlcHRo
OworICAgICAgICAgICAgICAgIGlmICghc3RhY2tEZXB0aCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFBcnJheS48c3RyaW5nPn0gZnVuY3Rp
b25OYW1lcworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZnJvbUluZGV4CisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIF9sYXN0SW5kZXhPZkFueUNhbGw6IGZ1bmN0aW9uKGZ1
bmN0aW9uTmFtZXMsIGZyb21JbmRleCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgZnJvbUlu
ZGV4ICE9PSAibnVtYmVyIikKKyAgICAgICAgICAgIGZyb21JbmRleCA9IHRoaXMuX2NhbGxzLmxl
bmd0aCAtIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyb21JbmRleCA9IE1hdGgubWlu
KGZyb21JbmRleCwgdGhpcy5fY2FsbHMubGVuZ3RoIC0gMSk7CisgICAgICAgIGZvciAodmFyIGkg
PSBmcm9tSW5kZXg7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25OYW1l
cy5pbmRleE9mKHRoaXMuX2NhbGxzW2ldLmZ1bmN0aW9uTmFtZSgpKSAhPT0gLTEpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0s
CisKKyAgICBfcmVtb3ZlQWxsT2Jzb2xldGVDYWxsc0Zyb21Mb2c6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIC8vIFJlbW92ZSBhbGwgUEFUSCBtZXRob2RzIGJldHdlZW4gY2xpcCgpIGFuZCBi
ZWdpblBhdGgoKSBjYWxscy4KKyAgICAgICAgdmFyIGxhc3RJbmRleE9mQmVnaW5QYXRoID0gdGhp
cy5fbGFzdEluZGV4T2ZBbnlDYWxsKFsiYmVnaW5QYXRoIl0pOworICAgICAgICB3aGlsZSAobGFz
dEluZGV4T2ZCZWdpblBhdGggIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlz
Ll9sYXN0SW5kZXhPZkFueUNhbGwoWyJjbGlwIl0sIGxhc3RJbmRleE9mQmVnaW5QYXRoIC0gMSk7
CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVDYWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMsIGluZGV4ICsgMSwgbGFzdEluZGV4T2ZCZWdpblBh
dGgpOworICAgICAgICAgICAgbGFzdEluZGV4T2ZCZWdpblBhdGggPSB0aGlzLl9sYXN0SW5kZXhP
ZkFueUNhbGwoWyJiZWdpblBhdGgiXSwgaW5kZXggLSAxKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFJlbW92ZSBhbGwgVFJBU0ZPUk1BVElPTiBNQVRSSVggbWV0aG9kcyBiZWZvcmUgcmVzdG9y
ZSgpIG9yIHNldFRyYW5zZm9ybSgpIGJ1dCBhZnRlciBhbnkgUEFUSCBvciBjb3JyZXNwb25kaW5n
IHNhdmUoKSBtZXRob2QuCisgICAgICAgIHZhciBsYXN0UmVzdG9yZSA9IHRoaXMuX2xhc3RJbmRl
eE9mQW55Q2FsbChbInJlc3RvcmUiLCAic2V0VHJhbnNmb3JtIl0pOworICAgICAgICB3aGlsZSAo
bGFzdFJlc3RvcmUgIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgc2F2ZUNhbGxJbmRleCA9IHRo
aXMuX2xhc3RJbmRleE9mTWF0Y2hpbmdTYXZlQ2FsbChsYXN0UmVzdG9yZSAtIDEpOworICAgICAg
ICAgICAgdmFyIGluZGV4ID0gdGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2RzLCBsYXN0UmVzdG9yZSAtIDEpOworICAgICAg
ICAgICAgaW5kZXggPSBNYXRoLm1heChpbmRleCwgc2F2ZUNhbGxJbmRleCk7CisgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVDYWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3Vy
Y2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzLCBpbmRleCArIDEsIGxhc3RSZXN0b3JlKTsK
KyAgICAgICAgICAgIGxhc3RSZXN0b3JlID0gdGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKFsicmVz
dG9yZSIsICJzZXRUcmFuc2Zvcm0iXSwgaW5kZXggLSAxKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFJlbW92ZSBhbGwgc2F2ZS1yZXN0b3JlIGNvbnNlY3V0aXZlIHBhaXJzLgorICAgICAgICB2
YXIgcmVzdG9yZUNhbGxzID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2NhbGxzLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0g
dGhpcy5fY2FsbHNbaV0uZnVuY3Rpb25OYW1lKCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25O
YW1lID09PSAicmVzdG9yZSIpIHsKKyAgICAgICAgICAgICAgICArK3Jlc3RvcmVDYWxsczsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChm
dW5jdGlvbk5hbWUgPT09ICJzYXZlIiAmJiByZXN0b3JlQ2FsbHMgPiAwKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHNhdmVDYWxsSW5kZXggPSBpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGog
PSBpIC0gMTsgaiA+PSAwICYmIGkgLSBqIDwgcmVzdG9yZUNhbGxzOyAtLWopIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX2NhbGxzW2pdLmZ1bmN0aW9uTmFtZSgpID09PSAic2F2ZSIp
CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlQ2FsbEluZGV4ID0gajsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxzLnNwbGljZShzYXZlQ2FsbEluZGV4
LCAoaSAtIHNhdmVDYWxsSW5kZXggKyAxKSAqIDIpOworICAgICAgICAgICAgICAgIGkgPSBzYXZl
Q2FsbEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdG9yZUNhbGxzID0gMDsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFBcnJheS48c3Ry
aW5nPn0gZnVuY3Rpb25OYW1lcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXgKKyAg
ICAgKiBAcGFyYW0ge251bWJlcj19IHRvSW5kZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIF9yZW1vdmVDYWxsc0Zyb21Mb2c6IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZXMs
IGZyb21JbmRleCwgdG9JbmRleCkKKyAgICB7CisgICAgICAgIHZhciBvbGRMZW5ndGggPSB0aGlz
Ll9jYWxscy5sZW5ndGg7CisgICAgICAgIGlmICh0eXBlb2YgdG9JbmRleCAhPT0gIm51bWJlciIp
CisgICAgICAgICAgICB0b0luZGV4ID0gb2xkTGVuZ3RoOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0b0luZGV4ID0gTWF0aC5taW4odG9JbmRleCwgb2xkTGVuZ3RoKTsKKyAgICAgICAgdmFy
IG5ld0luZGV4ID0gTWF0aC5taW4oZnJvbUluZGV4LCBvbGRMZW5ndGgpOworICAgICAgICBmb3Ig
KHZhciBpID0gbmV3SW5kZXg7IGkgPCB0b0luZGV4OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBj
YWxsID0gdGhpcy5fY2FsbHNbaV07CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25OYW1lcy5pbmRl
eE9mKGNhbGwuZnVuY3Rpb25OYW1lKCkpID09PSAtMSkKKyAgICAgICAgICAgICAgICB0aGlzLl9j
YWxsc1tuZXdJbmRleCsrXSA9IGNhbGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld0luZGV4
ID49IHRvSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRoaXMuX2Nh
bGxzLnNwbGljZShuZXdJbmRleCwgdG9JbmRleCAtIG5ld0luZGV4KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTk1NSwyMSArMjE2MCwzMCBAQCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2
YXIgY3R4ID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBzdGF0ZSA9IHt9Owor
ICAgICAgICBzdGF0ZS5hdHRyaWJ1dGVzID0ge307CiAgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbihhdHRy
aWJ1dGUpIHsKLSAgICAgICAgICAgIHN0YXRlW2F0dHJpYnV0ZV0gPSBjdHhbYXR0cmlidXRlXTsK
KyAgICAgICAgICAgIHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmlidXRlXSA9IGN0eFthdHRyaWJ1dGVd
OwogICAgICAgICB9KTsKKyAgICAgICAgaWYgKGN0eC5nZXRMaW5lRGFzaCkKKyAgICAgICAgICAg
IHN0YXRlLmxpbmVEYXNoID0gY3R4LmdldExpbmVEYXNoKCk7CiAgICAgICAgIHJldHVybiBzdGF0
ZTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHshT2JqZWN0LjxzdHJpbmcsIHN0
cmluZz59IHN0YXRlCisgICAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgc3RyaW5nPj19IHN0
YXRlCiAgICAgICovCiAgICAgX2FwcGx5QXR0cmlidXRlc1N0YXRlOiBmdW5jdGlvbihzdGF0ZSkK
ICAgICB7CisgICAgICAgIGlmICghc3RhdGUpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHZhciBjdHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKLSAgICAgICAgT2JqZWN0LmtleXMoc3Rh
dGUpLmZvckVhY2goZnVuY3Rpb24oYXR0cmlidXRlKSB7Ci0gICAgICAgICAgICBjdHhbYXR0cmli
dXRlXSA9IHN0YXRlW2F0dHJpYnV0ZV07Ci0gICAgICAgIH0pOworICAgICAgICBpZiAoc3RhdGUu
YXR0cmlidXRlcykgeworICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhdGUuYXR0cmlidXRlcyku
Zm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICBjdHhbYXR0cmli
dXRlXSA9IHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmlidXRlXTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgICAgIGlmIChjdHguc2V0TGluZURhc2gpCisgICAgICAgICAgICBjdHguc2V0
TGluZURhc2goc3RhdGUubGluZURhc2gpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE5ODIsNiAr
MjE5Niw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKCF3cmFwRnVuY3Rpb25zKSB7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25z
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFNhdmUgc3Rh
dGUgb2YgdGhlIENhbnZhc0dyYWRpZW50IG9iamVjdHMuCiAgICAgICAgICAgICB3cmFwRnVuY3Rp
b25zWyJjcmVhdGVMaW5lYXJHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291
cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJj
cmVhdGVSYWRpYWxHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFj
dG9yeU1ldGhvZChSZXNvdXJjZSk7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVQ
YXR0ZXJuIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJl
c291cmNlKTsKQEAgLTIwMDYsMTQgKzIyMjEsMTIgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzLmZvckVhY2goZnVuY3Rpb24o
bWV0aG9kTmFtZSkgewotICAgICAgICAgICAgICAgIHZhciBmdW5jID0gbWV0aG9kTmFtZSA9PT0g
InNldFRyYW5zZm9ybSIgPyB0aGlzLnB1c2hDYWxsX3NldFRyYW5zZm9ybSA6IG51bGw7Ci0gICAg
ICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYyk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJl
c291cmNlLlBhdGhNZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kTmFtZSkgewotICAgICAg
ICAgICAgICAgIHZhciBmdW5jID0gbWV0aG9kTmFtZSA9PT0gImJlZ2luUGF0aCIgPyB0aGlzLnB1
c2hDYWxsX2JlZ2luUGF0aCA6IG51bGw7Ci0gICAgICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdX
cmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYyk7Ci0gICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIG1ldGhvZE5hbWU7IG1ldGhvZE5hbWUgPSBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHNbaV07ICsr
aSkKKyAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1l
LCBtZXRob2ROYW1lID09PSAic2V0VHJhbnNmb3JtIiA/IHRoaXMucHVzaENhbGxfc2V0VHJhbnNm
b3JtIDogbnVsbCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbWV0aG9kTmFtZTsgbWV0
aG9kTmFtZSA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2RzW2ld
OyArK2kpCisgICAgICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9k
TmFtZSwgbWV0aG9kTmFtZSA9PT0gImJlZ2luUGF0aCIgPyB0aGlzLnB1c2hDYWxsX2JlZ2luUGF0
aCA6IG51bGwpOworCiAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbigic2F2
ZSIsIHRoaXMucHVzaENhbGxfc2F2ZSk7CiAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBG
dW5jdGlvbigicmVzdG9yZSIsIHRoaXMucHVzaENhbGxfcmVzdG9yZSk7CiAgICAgICAgICAgICBz
dGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbigiY2xpcCIpOwpAQCAtMjQwMSwyMCArMjYxNCwxMCBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NvbnN0cnVjdENh
bnZhczJEUmVwbGF5Q29udGV4dDogZnVuY3Rpb24ob3JpZ2luYWxDb250ZXh0KQogICAgIHsKLSAg
ICAgICAgdmFyIHJlcGxheUNvbnRleHQgPSBvcmlnaW5hbENvbnRleHRbIl9fcmVwbGF5Q29udGV4
dCJdOwotICAgICAgICBpZiAoIXJlcGxheUNvbnRleHQpIHsKLSAgICAgICAgICAgIHZhciBjYW52
YXMgPSBvcmlnaW5hbENvbnRleHQuY2FudmFzLmNsb25lTm9kZSh0cnVlKTsKLSAgICAgICAgICAg
IHJlcGxheUNvbnRleHQgPSAvKiogQHR5cGUge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gKi8g
UmVzb3VyY2Uud3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSk7Ci0gICAgICAg
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3JpZ2luYWxDb250ZXh0LCAiX19yZXBsYXlDb250
ZXh0IiwgewotICAgICAgICAgICAgICAgIHZhbHVlOiByZXBsYXlDb250ZXh0LAotICAgICAgICAg
ICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxz
ZSwKLSAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgdGhpcy5fcmVwbGF5Q29udGV4dCA9IHJlcGxheUNvbnRleHQ7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xlYXIgdGhlIGNhbnZhcy4KLSAgICAg
ICAgfQorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgMkQgY29udGV4dCBlYWNoIHRpbWUgdG8gc3Rh
cnQgd2l0aCBhbiBlbXB0eSBjb250ZXh0IGRyYXdpbmcgc3RhdGUgc3RhY2sgKG1hbmFnZWQgYnkg
c2F2ZSgpIGFuZCByZXN0b3JlKCkgbWV0aG9kcykuCisgICAgICAgIHZhciBjYW52YXMgPSBvcmln
aW5hbENvbnRleHQuY2FudmFzLmNsb25lTm9kZSh0cnVlKTsKKyAgICAgICAgdmFyIHJlcGxheUNv
bnRleHQgPSAvKiogQHR5cGUge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gKi8gUmVzb3VyY2Uu
d3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSk7CisgICAgICAgIHRoaXMuX3Jl
cGxheUNvbnRleHQgPSByZXBsYXlDb250ZXh0OwogICAgICAgICByZXR1cm4gcmVwbGF5Q29udGV4
dDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWNmZjUwODZlMDMwNmI0MDg0MWFmNmZlODkyNWZkNDBlZTgz
ZjA5NC4uN2I1NjU0NThhNmJjYzAxYjkyMWNjMDMyZTg5NWY1MmU0Yjg2MGQyMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDEyLTEwLTMwICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDYW52YXNdIGRvIG5vdCBibG93IHVw
IHRoZSBjYXB0dXJpbmcgbG9nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0IGZvciB0cmFjayBDYW52YXMgMkQgQVBJIGNoYW5nZXMsIGFz
IHdlbGwgYXMgYmFzaWNzIGZvciB0aGUgY2FwdHVyaW5nLgorCisgICAgICAgICogaW5zcGVjdG9y
L3Byb2ZpbGVyL2NhbnZhcy1wcm9maWxlci10ZXN0LmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMuCisgICAg
ICAgIChpbml0aWFsaXplX0NhbnZhc1dlYkdMUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRlc3QuZW5h
YmxlQ2FudmFzQWdlbnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9DYW52YXNXZWJHTFByb2ZpbGVy
VGVzdCk6CisgICAgICAgIChjcmVhdGVXZWJHTENvbnRleHQpOgorICAgICAgICAoY3JlYXRlQ2Fu
dmFzMkRDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2Fu
dmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNh
cHR1cmluZy1iYXNpY3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmls
ZXItZ2V0LWVycm9yLmh0bWw6CisKIDIwMTItMTAtMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVGVzdCBleHBlY3RhdGlvbiB1cGRhdGUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzLXByb2Zp
bGVyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzLXByb2Zp
bGVyLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmNDQ2ODRhOTgxZTYzZGVjOWVmYTcwMThlOTcyODcw
Njc0OWY1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9jYW52YXMtcHJvZmlsZXItdGVzdC5qcwpAQCAtMCwwICsxLDQzIEBACit2YXIgaW5pdGlhbGl6
ZV9DYW52YXNXZWJHTFByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0
LmVuYWJsZUNhbnZhc0FnZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24g
Y2FudmFzQWdlbnRFbmFibGVkKGVycm9yKQorICAgIHsKKyAgICAgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spKCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUxFRCB0byBlbmFi
bGUgQ2FudmFzQWdlbnQ6ICIgKyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIENhbnZh
c0FnZW50LmVuYWJsZShjYW52YXNBZ2VudEVuYWJsZWQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4Y2VwdGlvbiB3aGlsZSBlbmFibGluZyBD
YW52YXNBZ2VudCIsIGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwor
ICAgIH0KK307CisKK307CisKK2Z1bmN0aW9uIGNyZWF0ZVdlYkdMQ29udGV4dChvcHRfY2FudmFz
KQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisKKyAgICB2YXIgY2Fu
dmFzID0gb3B0X2NhbnZhcyB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAg
ICB2YXIgY29udGV4dElkcyA9IFsiZXhwZXJpbWVudGFsLXdlYmdsIiwgIndlYmtpdC0zZCIsICIz
ZCJdOworICAgIGZvciAodmFyIGkgPSAwLCBjb250ZXh0SWQ7IGNvbnRleHRJZCA9IGNvbnRleHRJ
ZHNbaV07ICsraSkgeworICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dChjb250ZXh0
SWQpOworICAgICAgICBpZiAoZ2wpCisgICAgICAgICAgICByZXR1cm4gZ2w7CisgICAgfQorICAg
IHJldHVybiBudWxsOworfQorCitmdW5jdGlvbiBjcmVhdGVDYW52YXMyRENvbnRleHQob3B0X2Nh
bnZhcykKK3sKKyAgICB2YXIgY2FudmFzID0gb3B0X2NhbnZhcyB8fCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJjYW52YXMiKTsKKyAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoIjJkIik7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2Fu
dmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLWFwaS1jaGFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MTZmNTZkMGUwZDJlM2ZkODc5Y2U2YjE1NjBlMDM3ZTc2YjYwMmIyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJk
LWFwaS1jaGFuZ2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUZXN0IHRvIGNhdGNo
IENhbnZhcyAyRCBBUEkgY2hhbmdlcy4gSWYgdGhpcyB0ZXN0IHNob3VsZCBldmVyIGZhaWwsIHdl
IHNob3VsZCByZS1leGFtaW5lIHRoZSBDYW52YXMgMkQgc3RhdGUgc2F2aW5nL3Jlc3RvcmluZyBs
b2dpYyBpbiB0aGUgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgdG8gaW5jbHVkZSBhbnkgbGF0ZXN0IGNo
YW5nZXMgdG8gdGhlIEFQSS4KKworUHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIG5v
dCBjdXN0b21seSB3cmFwcGVkOgorY2xlYXJSZWN0CitjbGVhclNoYWRvdworY3JlYXRlSW1hZ2VE
YXRhCitkcmF3SW1hZ2UKK2RyYXdJbWFnZUZyb21SZWN0CitmaWxsCitmaWxsUmVjdAorZmlsbFRl
eHQKK2dldEltYWdlRGF0YQoraXNQb2ludEluUGF0aAorbWVhc3VyZVRleHQKK3B1dEltYWdlRGF0
YQorc2V0QWxwaGEKK3NldENvbXBvc2l0ZU9wZXJhdGlvbgorc2V0RmlsbENvbG9yCitzZXRMaW5l
Q2FwCitzZXRMaW5lSm9pbgorc2V0TGluZVdpZHRoCitzZXRNaXRlckxpbWl0CitzZXRTaGFkb3cK
K3NldFN0cm9rZUNvbG9yCitzdHJva2UKK3N0cm9rZVJlY3QKK3N0cm9rZVRleHQKK3dlYmtpdEJh
Y2tpbmdTdG9yZVBpeGVsUmF0aW8KK3dlYmtpdEdldEltYWdlRGF0YUhECit3ZWJraXRJbWFnZVNt
b290aGluZ0VuYWJsZWQKK3dlYmtpdFB1dEltYWdlRGF0YUhECisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1hcGktY2hhbmdlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLWFw
aS1jaGFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg5MmQ2Y2ExOTlmN2NjOTY1ZjI5YjAxZDRlZWZi
YzM1MDQwNDQ5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9jYW52YXMyZC9jYW52YXMyZC1hcGktY2hhbmdlcy5odG1sCkBAIC0wLDAgKzEsMTIzIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZSA9IHt9OworCisvKioKKyAqIEBjb25zdAorICogQHR5
cGUge0FycmF5LjxzdHJpbmc+fQorICovCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZS5BdHRyaWJ1dGVQcm9wZXJ0aWVzID0gWworICAgICJzdHJva2VTdHlsZSIsCisgICAgImZpbGxT
dHlsZSIsCisgICAgImdsb2JhbEFscGhhIiwKKyAgICAibGluZVdpZHRoIiwKKyAgICAibGluZUNh
cCIsCisgICAgImxpbmVKb2luIiwKKyAgICAibWl0ZXJMaW1pdCIsCisgICAgInNoYWRvd09mZnNl
dFgiLAorICAgICJzaGFkb3dPZmZzZXRZIiwKKyAgICAic2hhZG93Qmx1ciIsCisgICAgInNoYWRv
d0NvbG9yIiwKKyAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwKKyAgICAiZm9udCIsCisg
ICAgInRleHRBbGlnbiIsCisgICAgInRleHRCYXNlbGluZSIsCisgICAgImxpbmVEYXNoT2Zmc2V0
IgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLwor
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMgPSBbCisgICAgImJl
Z2luUGF0aCIsCisgICAgIm1vdmVUbyIsCisgICAgImNsb3NlUGF0aCIsCisgICAgImxpbmVUbyIs
CisgICAgInF1YWRyYXRpY0N1cnZlVG8iLAorICAgICJiZXppZXJDdXJ2ZVRvIiwKKyAgICAiYXJj
VG8iLAorICAgICJhcmMiLAorICAgICJyZWN0IgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0
eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3Vy
Y2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzID0gWworICAgICJzY2FsZSIsCisgICAgInJv
dGF0ZSIsCisgICAgInRyYW5zbGF0ZSIsCisgICAgInRyYW5zZm9ybSIsCisgICAgInNldFRyYW5z
Zm9ybSIKK107CisKKy8qKgorICogQGNvbnN0CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59Cisg
Ki8KK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLk90aGVyQ3VzdG9tUHJvcGVydGll
cyA9IFsKKyAgICAiY2FudmFzIiwKKyAgICAiY3JlYXRlTGluZWFyR3JhZGllbnQiLAorICAgICJj
cmVhdGVSYWRpYWxHcmFkaWVudCIsCisgICAgImNyZWF0ZVBhdHRlcm4iLAorICAgICJzYXZlIiwK
KyAgICAicmVzdG9yZSIsCisgICAgImNsaXAiLAorICAgICJnZXRMaW5lRGFzaCIsCisgICAgInNl
dExpbmVEYXNoIgorXTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHZhciBjdHggPSBjYW52YXMuZ2V0
Q29udGV4dCgiMmQiKTsKKyAgICBpZiAoIWN0eCkgeworICAgICAgICBvdXRwdXQoIkVSUk9SOiBD
b3VsZCBub3QgY3JlYXRlIGNhbnZhcyAyRCBjb250ZXh0LiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdmFyIHByb3BlcnR5TmFtZXMgPSBbXTsKKyAgICBmb3IgKHZhciBwcm9wZXJ0
eSBpbiBjdHgpCisgICAgICAgIHByb3BlcnR5TmFtZXMucHVzaChwcm9wZXJ0eSk7CisgICAgcHJv
cGVydHlOYW1lcy5zb3J0KCk7CisKKyAgICBvdXRwdXQoIlByb3BlcnRpZXMgYW5kIGZ1bmN0aW9u
cyB0aGF0IGFyZSBub3QgY3VzdG9tbHkgd3JhcHBlZDoiKTsKKyAgICB2YXIgdHJhY2tlZFByb3Bl
cnRpZXMgPSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5BdHRyaWJ1dGVQcm9wZXJ0
aWVzLmNvbmNhdChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5QYXRoTWV0aG9kcywg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRo
b2RzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5PdGhlckN1c3RvbVByb3BlcnRp
ZXMpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0eU5hbWVzW2ldOworICAgICAgICBpZiAo
dHJhY2tlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wZXJ0eSkgIT09IC0xKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIG91dHB1dChwcm9wZXJ0eSk7CisgICAgfQorfQorCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIH0KKyAgICB0cnkgeworICAgICAgICB0ZXN0KCk7CisgICAgfSBmaW5hbGx5IHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0byBjYXRjaCBDYW52YXMgMkQgQVBJIGNoYW5nZXMuCitJ
ZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFpbCwgd2Ugc2hvdWxkIHJlLWV4YW1pbmUgdGhlIENh
bnZhcyAyRCBzdGF0ZSBzYXZpbmcvcmVzdG9yaW5nIGxvZ2ljIGluIHRoZQorSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUgdG8gaW5jbHVkZSBhbnkgbGF0ZXN0IGNoYW5nZXMgdG8gdGhlIEFQSS4KKworPC9w
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJk
LXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNGFm
OWU4NGE5NzViYjE2NzRhOTdiZDQ0ZDVhZjVmM2Q1NWZhNDQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXIt
Y2FwdHVyaW5nLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0cyBDYW52
YXMgMkQgY2FwdHVyaW5nIGJhc2ljcy4KKworQnVnIDEwMDc1MgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNhcHR1
cmluZy1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMy
ZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRm
YzRkN2E5ZTNjOTg0OWM3YjdjN2VkYmJhNjkzOGY3Zjk2YjdhMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxl
ci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKQEAgLTAsMCArMSwyOTIgQEAKKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vY2FudmFzLXByb2ZpbGVy
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIGN0eDsKK3ZhciByYXdDdHg7Cit2
YXIgY3R4UmVzb3VyY2U7CisKK3ZhciBzYW1wbGVBdHRyaWJ1dGVzMSA9IHsKKyAgICAic3Ryb2tl
U3R5bGUiOiAiIzAwMDAwMSIsCisgICAgImZpbGxTdHlsZSI6ICIjMDAwMDAyIiwKKyAgICAiZ2xv
YmFsQWxwaGEiOiAwLjUsCisgICAgImxpbmVXaWR0aCI6IDIsCisgICAgImxpbmVDYXAiOiAicm91
bmQiLAorICAgICJsaW5lSm9pbiI6ICJiZXZlbCIsCisgICAgIm1pdGVyTGltaXQiOiAxMiwKKyAg
ICAic2hhZG93T2Zmc2V0WCI6IDEsCisgICAgInNoYWRvd09mZnNldFkiOiAyLAorICAgICJzaGFk
b3dCbHVyIjogMywKKyAgICAic2hhZG93Q29sb3IiOiAiIzAwMDAwMyIsCisgICAgImdsb2JhbENv
bXBvc2l0ZU9wZXJhdGlvbiI6ICJzb3VyY2UtaW4iLAorICAgICJmb250IjogIjEycHggc2Fucy1z
ZXJpZiIsCisgICAgInRleHRBbGlnbiI6ICJlbmQiLAorICAgICJ0ZXh0QmFzZWxpbmUiOiAidG9w
IiwKKyAgICAibGluZURhc2hPZmZzZXQiOiAxCit9OworCit2YXIgc2FtcGxlQXR0cmlidXRlczIg
PSB7CisgICAgInN0cm9rZVN0eWxlIjogIiMxMDAwMDEiLAorICAgICJmaWxsU3R5bGUiOiAiIzEw
MDAwMiIsCisgICAgImdsb2JhbEFscGhhIjogMCwKKyAgICAibGluZVdpZHRoIjogMywKKyAgICAi
bGluZUNhcCI6ICJzcXVhcmUiLAorICAgICJsaW5lSm9pbiI6ICJyb3VuZCIsCisgICAgIm1pdGVy
TGltaXQiOiAxMSwKKyAgICAic2hhZG93T2Zmc2V0WCI6IDMsCisgICAgInNoYWRvd09mZnNldFki
OiA0LAorICAgICJzaGFkb3dCbHVyIjogMiwKKyAgICAic2hhZG93Q29sb3IiOiAiIzEwMDAwMyIs
CisgICAgImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiI6ICJ4b3IiLAorICAgICJmb250IjogIjEz
cHggc2Fucy1zZXJpZiIsCisgICAgInRleHRBbGlnbiI6ICJsZWZ0IiwKKyAgICAidGV4dEJhc2Vs
aW5lIjogIm1pZGRsZSIsCisgICAgImxpbmVEYXNoT2Zmc2V0IjogMgorfTsKKworZnVuY3Rpb24g
YXNzaWduQXR0cmlidXRlcyhhdHRyaWJ1dGVzKQoreworICAgIGZvciAodmFyIGF0dHJpYnV0ZSBp
biBhdHRyaWJ1dGVzKQorICAgICAgICBjdHhbYXR0cmlidXRlXSA9IGF0dHJpYnV0ZXNbYXR0cmli
dXRlXTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKQoreworICAg
IGZvciAodmFyIGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICBjb25zb2xlLmFzc2Vy
dChjdHhbYXR0cmlidXRlXSA9PT0gYXR0cmlidXRlc1thdHRyaWJ1dGVdLCAiRXhwZWN0ZWQgdmFs
dWUgZm9yIGF0dHJpYnV0ZSAiICsgYXR0cmlidXRlICsgIjogIiArIGF0dHJpYnV0ZXNbYXR0cmli
dXRlXSArICIsIGJ1dCB3YXM6ICIgKyBjdHhbYXR0cmlidXRlXSk7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydE51bWJlck9mQ2FsbHNJbkxvZyhleHBlY3RlZCkKK3sKKyAgICB2YXIgY2FsbHMgPSBjdHhS
ZXNvdXJjZS5jYWxscygpOworICAgIGlmIChjYWxscy5sZW5ndGggIT09IGV4cGVjdGVkKSB7Cisg
ICAgICAgIHZhciBuYW1lcyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwICYm
IGNhbGxzW2ldOyArK2kpCisgICAgICAgICAgICBuYW1lcy5wdXNoKGNhbGxzW2ldLmZ1bmN0aW9u
TmFtZSgpKTsKKyAgICAgICAgY29uc29sZS5lcnJvcigiRXhwZWN0ZWQgc2l6ZSBvZiB0aGUgMkQg
Y29udGV4dCBjYWxsIGxvZzogIiArIGV4cGVjdGVkICsgIiwgYnV0IHdhczogIiArIGNhbGxzLmxl
bmd0aCArICIsIG5hbWVzOiAiICsgbmFtZXMpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdERy
YXdpbmdBdHRyaWJ1dGVzKCkKK3sKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7Cisg
ICAgYXNzaWduQXR0cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVzMSk7CisgICAgYXNzZXJ0QXR0cmli
dXRlcyhzYW1wbGVBdHRyaWJ1dGVzMSk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDAp
OworCisgICAgLy8gU2F2ZSBwcmV2aW91cyBhdHRyaWJ1dGUgdmFsdWVzIGFuZCBzZXQgbmV3IHZh
bHVlcy4KKyAgICBjdHguc2F2ZSgpOworICAgIGFzc2lnbkF0dHJpYnV0ZXMoc2FtcGxlQXR0cmli
dXRlczIpOworICAgIGFzc2VydEF0dHJpYnV0ZXMoc2FtcGxlQXR0cmlidXRlczIpOworICAgIGFz
c2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsKKworICAgIC8vIFJlc3RvcmUgcHJldmlvdXMgYXR0
cmlidXRlIHZhbHVlcy4KKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2VydEF0dHJpYnV0ZXMo
c2FtcGxlQXR0cmlidXRlczEpOworICAgIC8vIENhbGwgbG9nIHNob3VsZCBiZSBlbXB0eSBhZnRl
ciBzYXZlKCkgYW5kIHJlc3RvcmUoKSBjYWxscy4KKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5M
b2coMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTYXZlUmVzdG9yZVNlcXVlbmNlKCkKK3sKKyAgICBh
c3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7CisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBjdHgu
cmVzdG9yZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHguc2F2
ZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsKKyAgICBjdHguc2F2ZSgpOwor
ICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygyKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGFz
c2VydE51bWJlck9mQ2FsbHNJbkxvZygzKTsKKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2Vy
dE51bWJlck9mQ2FsbHNJbkxvZygyKTsKKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2VydE51
bWJlck9mQ2FsbHNJbkxvZygxKTsKKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2VydE51bWJl
ck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHgucmVzdG9yZSgpOworICAgIGN0eC5yZXN0b3JlKCk7
CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworfQorCitmdW5jdGlvbiBjYWxsUGF0
aE1ldGhvZHMoKQoreworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgubGluZVdpZHRoID0g
MjsKKyAgICBjdHgubW92ZVRvKDExLCAxMik7CisgICAgY3R4LmxpbmVUbygxMTEsIDExMik7Cisg
ICAgY3R4LnN0cm9rZSgpOworfQorCitmdW5jdGlvbiBjbGVhckNvbnRleHRSZXNvdXJjZUxvZygp
Cit7CisgICAgd2hpbGUgKGN0eFJlc291cmNlLmNhbGxzKCkubGVuZ3RoKQorICAgICAgICBjdHhS
ZXNvdXJjZS5jYWxscygpLnBvcCgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsK
K30KKworZnVuY3Rpb24gdGVzdFBhdGhNZXRob2RzU2VxdWVuY2UoKQoreworICAgIGFzc2VydE51
bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjYWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnRO
dW1iZXJPZkNhbGxzSW5Mb2coMyk7IC8vIFtiZWdpblBhdGgsbW92ZVRvLGxpbmVUb10KKyAgICBj
YWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMyk7IC8vIG9s
ZCBtZXRob2RzIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZAorICAgIGNsZWFyQ29udGV4dFJlc291
cmNlTG9nKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDbGlwTWV0aG9kcygpCit7CisgICAgYXNzZXJ0
TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZlKCk7CisgICAgY2FsbFBhdGhNZXRo
b2RzKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDQpOworICAgIGN0eC5jbGlwKCk7
CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDUpOworICAgIGNhbGxQYXRoTWV0aG9kcygp
OworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZyg4KTsKKyAgICBjYWxsUGF0aE1ldGhvZHMo
KTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coOCk7IC8vIHRoZSBsYXN0IGNhbGxzIHNo
b3VsZCBoYXZlIGJlZW4gY2xlYXJlZAorICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVt
YmVyT2ZDYWxsc0luTG9nKDUpOyAvLyBbc2F2ZSxiZWdpblBhdGgsbW92ZVRvLGxpbmVUbyxyZXN0
b3JlXQorICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2co
MSk7IC8vIFtiZWdpblBhdGhdCisgICAgY2xlYXJDb250ZXh0UmVzb3VyY2VMb2coKTsKK30KKwor
ZnVuY3Rpb24gdGVzdE1hdHJpeE1ldGhvZHMoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygwKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGN0eC50cmFuc2xhdGUoMTAwLCAyMDApOwor
ICAgIGN0eC5zY2FsZSgwLjksIDAuOSk7CisgICAgY3R4LnJvdGF0ZSgwLjIpOworICAgIGN0eC50
cmFuc2xhdGUoLTEwMCwgLTIwMCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDUpOwor
ICAgIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMiwgMywgNCwgNSwgNik7CisgICAgY3R4LnJvdGF0ZSgw
LjMpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygzKTsgLy8gW3NhdmUsc2V0VHJhbnNm
b3JtLHJvdGF0ZV0KKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygwKTsKK30KKworZnVuY3Rpb24gdGVzdE1hdHJpeE1ldGhvZHNXaXRoUGF0aE1ldGhvZHMo
KQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHguc2F2ZSgpOwor
ICAgIGN0eC50cmFuc2xhdGUoMTAwLCAyMDApOworICAgIGN0eC5zY2FsZSgwLjksIDAuOSk7Cisg
ICAgY3R4LnJvdGF0ZSgwLjIpOworICAgIGN0eC50cmFuc2xhdGUoLTEwMCwgLTIwMCk7CisgICAg
YXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDUpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBj
dHgucmVjdCgxLCAxLCAxMCwgMTApOworICAgIGN0eC50cmFuc2xhdGUoMSwgMik7CisgICAgYXNz
ZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDgpOworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0
TnVtYmVyT2ZDYWxsc0luTG9nKDgpOyAvLyBbc2F2ZSx0cmFuc2xhdGUsc2NhbGUscm90YXRlLHRy
YW5zbGF0ZSxiZWdpblBhdGgscmVjdCxyZXN0b3JlXQorICAgIGN0eC5iZWdpblBhdGgoKTsKKyAg
ICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMSk7IC8vIFtiZWdpblBhdGhdCisgICAgY2xlYXJD
b250ZXh0UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rpb24gdGVzdE5lc3RlZFNhdmVSZXN0b3Jl
Q2FsbHMoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHguc2F2
ZSgpOworICAgIGN0eC50cmFuc2xhdGUoMTAwLCAyMDApOworICAgIGN0eC5iZWdpblBhdGgoKTsK
KyAgICBjdHgucmVjdCgxLCAxLCAxMCwgMTApOworICAgIGN0eC5jbGlwKCk7CisgICAgY3R4LnNh
dmUoKTsKKyAgICBjdHgucm90YXRlKDAuMik7CisgICAgY2FsbFBhdGhNZXRob2RzKCk7CisgICAg
YXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEwKTsgLy8gW3NhdmUsdHJhbnNsYXRlLGJlZ2luUGF0
aCxyZWN0LGNsaXAsc2F2ZSxyb3RhdGUsYmVnaW5QYXRoLG1vdmVUbyxsaW5lVG9dCisgICAgY3R4
LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMTEpOworICAgIGN0eC5y
ZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDkpOyAvLyBbc2F2ZSx0cmFu
c2xhdGUsc2F2ZSxyb3RhdGUsYmVnaW5QYXRoLG1vdmVUbyxsaW5lVG8scmVzdG9yZSxyZXN0b3Jl
XQorICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDkpOyAv
LyBubyBlZmZlY3QKKyAgICBjdHguc2V0VHJhbnNmb3JtKDEsIDIsIDMsIDQsIDUsIDYpOworICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxMCk7IC8vIG5vdGhpbmcgdG8gcmVtb3ZlIGZyb20g
dGhlIGxvZworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5M
b2coMik7IC8vIFtzZXRUcmFuc2Zvcm0sYmVnaW5QYXRoXQorICAgIGNsZWFyQ29udGV4dFJlc291
cmNlTG9nKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3REZWVwTmVzdGVkU2F2ZVJlc3RvcmVDYWxscygp
Cit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTA7ICsraSkgeworICAgICAgICBjdHguc2F2ZSgpOworICAgICAgICBjdHgudHJhbnNs
YXRlKDEsIDIpOworICAgIH0KKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMjApOworICAg
IGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygyMyk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIGN0eC5yb3RhdGUoMSk7
CisgICAgICAgIGN0eC5zY2FsZSgyKTsKKyAgICAgICAgY3R4LmNsaXAoKTsKKyAgICAgICAgY3R4
LnRyYW5zZm9ybSgzKTsKKyAgICAgICAgY3R4LnJlc3RvcmUoKTsKKyAgICAgICAgYXNzZXJ0TnVt
YmVyT2ZDYWxsc0luTG9nKDI0ICsgaSk7CisgICAgfQorICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygzMyk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygxKTsgLy8gbm93IGNsZWFyIHVwIHRoZSBsb2cKKyAgICBjbGVhckNvbnRleHRSZXNvdXJj
ZUxvZygpOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRSdW5DYW52YXMyRFByb2dyYW0oKQorewor
ICAgIGN0eCA9IGNyZWF0ZUNhbnZhczJEQ29udGV4dCgpOworICAgIGNvbnNvbGUuYXNzZXJ0KGN0
eCwgIkZhaWxlZCB0byBjcmVhdGUgMkQgY29udGV4dCIpOworCisgICAgY3R4UmVzb3VyY2UgPSBj
dHhbIl9fcmVzb3VyY2VPYmplY3QiXTsKKyAgICBjb25zb2xlLmFzc2VydChjdHhSZXNvdXJjZSwg
IjJEIGNvbnRleHQgaXMgbm90IHdyYXBwZWQiKTsKKworICAgIHJhd0N0eCA9IGN0eFJlc291cmNl
LndyYXBwZWRPYmplY3QoKTsKKyAgICBjb25zb2xlLmFzc2VydChyYXdDdHgsICJObyByYXcgMkQg
Y29udGV4dCBmb3VuZCIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGN0eCAhPT0gcmF3Q3R4LCAiUHJv
eHkgYW5kIFJBVyBjb250ZXh0cyBzaG91bGQgbm90IGJlIHRoZSBzYW1lIik7CisKKyAgICB0ZXN0
RHJhd2luZ0F0dHJpYnV0ZXMoKTsKKyAgICB0ZXN0U2F2ZVJlc3RvcmVTZXF1ZW5jZSgpOworICAg
IHRlc3RQYXRoTWV0aG9kc1NlcXVlbmNlKCk7CisgICAgdGVzdENsaXBNZXRob2RzKCk7CisgICAg
dGVzdE1hdHJpeE1ldGhvZHMoKTsKKyAgICB0ZXN0TWF0cml4TWV0aG9kc1dpdGhQYXRoTWV0aG9k
cygpOworICAgIHRlc3ROZXN0ZWRTYXZlUmVzdG9yZUNhbGxzKCk7CisgICAgdGVzdERlZXBOZXN0
ZWRTYXZlUmVzdG9yZUNhbGxzKCk7CisKKyAgICByZXR1cm4gIlNVQ0NFU1MiOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUNhbnZhc0FnZW50KHN0ZXAx
KTsKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5Db25zb2xlKCJjcmVhdGVBbmRSdW5DYW52YXMyRFByb2dyYW0oKSIsIHN0ZXAyKTsK
KyAgICB9CisgICAgZnVuY3Rpb24gc3RlcDIoZXJyb3IpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscygiXCJTVUNDRVNTXCIiLCBlcnJvcik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ2FudmFzIDJEIGNhcHR1cmlu
ZyBiYXNpY3MuCis8L3A+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNzUyIj5CdWcgMTAwNzUyPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmls
ZXItZ2V0LWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wv
d2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWwKaW5kZXggNWRkMjU5NzdkYjlkZjIwMjBkN2Fh
OWEzOGE0NmQ2MWU4MWU3Mjc5Zi4uNWJjYzA0MTQ5NWM0ZDRhODhhZTEwODQyYjEyOWUzYjUwOTMx
YzFjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dl
YmdsLXByb2ZpbGVyLWdldC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbApAQCAtMSw3ICsxLDcg
QEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
d2ViZ2wtcHJvZmlsZXItdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Nh
bnZhcy1wcm9maWxlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHZhciBnbDsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9m
aWxlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmds
LXByb2ZpbGVyLXRlc3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZjNmNWVi
Yjg0MmE0OTU4NDg0YTVkNWI5N2ZiZjBlYTU3MWI3ZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dl
YmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBA
Ci12YXIgaW5pdGlhbGl6ZV9DYW52YXNXZWJHTFByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9uKCkgewot
Ci1JbnNwZWN0b3JUZXN0LmVuYWJsZUNhbnZhc0FnZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCi17
Ci0gICAgZnVuY3Rpb24gY2FudmFzQWdlbnRFbmFibGVkKGVycm9yKQotICAgIHsKLSAgICAgICAg
aWYgKCFlcnJvcikKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2sp
KCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkZBSUxFRCB0byBlbmFibGUgQ2FudmFzQWdlbnQ6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHRyeSB7
Ci0gICAgICAgIENhbnZhc0FnZW50LmVuYWJsZShjYW52YXNBZ2VudEVuYWJsZWQpOwotICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4Y2VwdGlvbiB3
aGlsZSBlbmFibGluZyBDYW52YXNBZ2VudCIsIGUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOwotICAgIH0KLX07Ci0KLX07Ci0KLWZ1bmN0aW9uIGNyZWF0ZVdlYkdMQ29u
dGV4dChvcHRfY2FudmFzKQotewotICAgIHZhciBjYW52YXMgPSBvcHRfY2FudmFzIHx8IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHZhciBjb250ZXh0SWRzID0gWyJleHBl
cmltZW50YWwtd2ViZ2wiLCAid2Via2l0LTNkIiwgIjNkIl07Ci0gICAgZm9yICh2YXIgaSA9IDAs
IGNvbnRleHRJZDsgY29udGV4dElkID0gY29udGV4dElkc1tpXTsgKytpKSB7Ci0gICAgICAgIHZh
ciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRJZCk7Ci0gICAgICAgIGlmIChnbCkKLSAg
ICAgICAgICAgIHJldHVybiBnbDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19Ci0KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0V2ViR0xFbmFibGVkIiwgIjEiKTsK
</data>
<flag name="review"
          id="185362"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="185432"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171791</attachid>
            <date>2012-11-01 01:27:41 -0700</date>
            <delta_ts>2012-11-01 02:00:18 -0700</delta_ts>
            <desc>fixed test for bots</desc>
            <filename>bug-100752-20121101122602.patch</filename>
            <type>text/plain</type>
            <size>38064</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE3ZTlhNzIzMTk0NzY0
YTI0YmMxMDc4MzAwNjc0NTZjMjdhMDM1Mi4uNzJhOWVlNmI0ODAyNTcyMzAzNDZlYjM1ZjFlYTQx
ZjMzZTAyYmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTMwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDYW52YXNdIGRvIG5vdCBibG93IHVwIHRoZSBjYXB0dXJpbmcgbG9nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhciBvYnNvbGV0ZSBjYWxs
cyBpbiB0aGUgY2FudmFzIDJEIGNhcHR1cmluZyBsb2cgaW4gcnVudGltZS4KKyAgICAgICAgTm93
IHdlIHN0b3JlIGluIHRoZSBsb2cgb25seSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0aGF0IGFy
ZSBuZWNlc3NhcnkgdG8gcmVwbGF5IGEKKyAgICAgICAgY2FudmFzIDJEIGNvbnRleHQuIFRvIGFj
aGlldmUgdGhhdCB3ZSBmaW5kIGluIHJ1bnRpbWUgdGhvc2UgY2FsbHMgaW4gdGhlIGxvZyB0aGF0
IG5vCisgICAgICAgIGxvbmdlciBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBjb250ZXh0IHN0YXRl
IGFuZCByZW1vdmUgdGhlbS4KKyAgICAgICAgVGhlc2UgYXJlIHRoZSBydWxlcyBhY2NvcmRpbmcg
d2hpY2ggd2UgZmluZCBhbmQgcmVtb3ZlIHN1Y2ggY2FsbHM6CisgICAgICAgIC0gYWxsIFBBVEgg
bWV0aG9kcyBiZXR3ZWVuIGEgY2xpcCgpIGNhbGwgYW5kIGJlZ2luUGF0aCgpIGNhbGwgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgLSBhbGwgTUFUUklYIG1ldGhvZHMgYmVmb3JlIGEgcmVzdG9yZSgp
IG9yIHNldFRyYW5zZm9ybSgpIGNhbGwgYnV0IGFmdGVyIGFueSBQQVRIIG9yIGNvcnJlc3BvbmRp
bmcgc2F2ZSgpIG1ldGhvZAorICAgICAgICAtIGFsbCBjb25zZWN1dGl2ZSBzYXZlKCkgKyByZXN0
b3JlKCkgY2FsbHMKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJk
L2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9m
aWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorCiAyMDEyLTEwLTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW5hbWUgTG9jYWxpemVyIHRvIExvY2FsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLmpzCmluZGV4IDMyOTVmYzRjOTA3Nzk0MTgxZDU3N2I5ZGM0MGIxODVmNDg5OGJiMGMu
LmUyN2ZmYWM3MmI3MzkwNzI1OTQyOWI3MDc5MjM2ZjUxNjA1YjlkNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGVTb3VyY2UuanMKQEAgLTExNyw2ICsxMTcsMjAgQEAgdmFyIFR5cGVVdGlscyA9IHsKICAgICB9
LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmplY3Q9fSBvYmoKKyAgICAgKiBAcmV0dXJu
IHtPYmplY3R9CisgICAgICovCisgICAgY2xvbmVPYmplY3Q6IGZ1bmN0aW9uKG9iaikKKyAgICB7
CisgICAgICAgIGlmICghb2JqKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZh
ciByZXN1bHQgPSB7fTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikKKyAgICAgICAgICAg
IHJlc3VsdFtrZXldID0gb2JqW2tleV07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwK
KworICAgIC8qKgogICAgICAqIEByZXR1cm4ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0KICAg
ICAgKi8KICAgICBfZHVtbXlDYW52YXMyZENvbnRleHQ6IGZ1bmN0aW9uKCkKQEAgLTM1OCw2ICsz
NzIsMjggQEAgQ2FsbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3Vs
dDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAg
KiBAcGFyYW0ge09iamVjdH0gYXR0YWNobWVudAorICAgICAqLworICAgIHNldEF0dGFjaG1lbnQ6
IGZ1bmN0aW9uKG5hbWUsIGF0dGFjaG1lbnQpCisgICAgeworICAgICAgICBpZiAoYXR0YWNobWVu
dCkgeworICAgICAgICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSB0aGlzLl9hdHRhY2htZW50cyB8
fCB7fTsKKyAgICAgICAgICAgIHRoaXMuX2F0dGFjaG1lbnRzW25hbWVdID0gYXR0YWNobWVudDsK
KyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hdHRhY2htZW50cykKKyAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9hdHRhY2htZW50c1tuYW1lXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCisgICAg
YXR0YWNobWVudDogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9h
dHRhY2htZW50cyAmJiB0aGlzLl9hdHRhY2htZW50c1tuYW1lXTsKKyAgICB9LAorCiAgICAgZnJl
ZXplOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZnJlZXplZCkKQEAgLTM4
Miw3ICs0MTgsOCBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFyZ3MgPSB0aGlz
Ll9hcmdzLm1hcChmdW5jdGlvbihvYmopIHsKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZS50
b1JlcGxheWFibGUob2JqLCBjYWNoZSk7CiAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gbmV3
IFJlcGxheWFibGVDYWxsKHRoaXNPYmplY3QsIHRoaXMuX2Z1bmN0aW9uTmFtZSwgYXJncywgcmVz
dWx0LCB0aGlzLl9zdGFja1RyYWNlKTsKKyAgICAgICAgdmFyIGF0dGFjaG1lbnRzID0gVHlwZVV0
aWxzLmNsb25lT2JqZWN0KHRoaXMuX2F0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBS
ZXBsYXlhYmxlQ2FsbCh0aGlzT2JqZWN0LCB0aGlzLl9mdW5jdGlvbk5hbWUsIGFyZ3MsIHJlc3Vs
dCwgdGhpcy5fc3RhY2tUcmFjZSwgYXR0YWNobWVudHMpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTQxNyw2ICs0NTQsOSBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzdWx0
ID0gcmVwbGF5UmVzdWx0OwogICAgICAgICB0aGlzLl9zdGFja1RyYWNlID0gcmVwbGF5YWJsZUNh
bGwuc3RhY2tUcmFjZSgpOwogICAgICAgICB0aGlzLl9mcmVlemVkID0gdHJ1ZTsKKyAgICAgICAg
dmFyIGF0dGFjaG1lbnRzID0gcmVwbGF5YWJsZUNhbGwuYXR0YWNobWVudHMoKTsKKyAgICAgICAg
aWYgKGF0dGFjaG1lbnRzKQorICAgICAgICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSBUeXBlVXRp
bHMuY2xvbmVPYmplY3QoYXR0YWNobWVudHMpOwogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9
CiB9CkBAIC00MjgsMTQgKzQ2OCwxNyBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAqIEBwYXJhbSB7
QXJyYXkuPFJlcGxheWFibGVSZXNvdXJjZXwqPn0gYXJncwogICogQHBhcmFtIHtSZXBsYXlhYmxl
UmVzb3VyY2V8Kn0gcmVzdWx0CiAgKiBAcGFyYW0ge1N0YWNrVHJhY2V9IHN0YWNrVHJhY2UKKyAq
IEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsIE9iamVjdD59IGF0dGFjaG1lbnRzCiAgKi8KLWZ1bmN0
aW9uIFJlcGxheWFibGVDYWxsKHRoaXNPYmplY3QsIGZ1bmN0aW9uTmFtZSwgYXJncywgcmVzdWx0
LCBzdGFja1RyYWNlKQorZnVuY3Rpb24gUmVwbGF5YWJsZUNhbGwodGhpc09iamVjdCwgZnVuY3Rp
b25OYW1lLCBhcmdzLCByZXN1bHQsIHN0YWNrVHJhY2UsIGF0dGFjaG1lbnRzKQogewogICAgIHRo
aXMuX3RoaXNPYmplY3QgPSB0aGlzT2JqZWN0OwogICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IGZ1
bmN0aW9uTmFtZTsKICAgICB0aGlzLl9hcmdzID0gYXJnczsKICAgICB0aGlzLl9yZXN1bHQgPSBy
ZXN1bHQ7CiAgICAgdGhpcy5fc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7CisgICAgaWYgKGF0dGFj
aG1lbnRzKQorICAgICAgICB0aGlzLl9hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzOwogfQogCiBS
ZXBsYXlhYmxlQ2FsbC5wcm90b3R5cGUgPSB7CkBAIC00ODgsNiArNTMxLDIzIEBAIFJlcGxheWFi
bGVDYWxsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7
T2JqZWN0LjxzdHJpbmcsIE9iamVjdD59CisgICAgICovCisgICAgYXR0YWNobWVudHM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9hdHRhY2htZW50czsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0dXJuIHtP
YmplY3R9CisgICAgICovCisgICAgYXR0YWNobWVudDogZnVuY3Rpb24obmFtZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9hdHRhY2htZW50cyAmJiB0aGlzLl9hdHRhY2htZW50c1tuYW1l
XTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtDYWNoZX0gY2FjaGUKICAgICAg
KiBAcmV0dXJuIHtDYWxsfQogICAgICAqLwpAQCAtNzIyLDcgKzc4Miw5IEBAIFJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHks
IHByb3BlcnR5LCB7CiAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKQogICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZE9i
amVjdFtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqID0gd3JhcHBl
ZE9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBSZXNvdXJjZS5mb3JPYmplY3Qob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXNvdXJjZSA/IHJlc291cmNlIDogb2JqOwogICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgICAgICBzZXQ6IHNlbGYuX3dyYXBQcm9wZXJ0eVNldHRlcihzZWxmLCB3cmFw
cGVkT2JqZWN0LCBwcm9wZXJ0eSksCiAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRy
dWUKQEAgLTgwNCwxMiArODY2LDEyIEBAIFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ewogICAgICAgICAgICAgdmFyIG1hbmFnZXIgPSByZXNvdXJjZS5tYW5hZ2VyKCk7CiAgICAgICAg
ICAgICBpZiAoIW1hbmFnZXIgfHwgIW1hbmFnZXIuY2FwdHVyaW5nKCkpIHsKLSAgICAgICAgICAg
ICAgICBvcmlnaW5hbE9iamVjdFtwcm9wZXJ0eU5hbWVdID0gdmFsdWU7CisgICAgICAgICAgICAg
ICAgb3JpZ2luYWxPYmplY3RbcHJvcGVydHlOYW1lXSA9IFJlc291cmNlLndyYXBwZWRPYmplY3Qo
dmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHZhciBhcmdzID0gW3Byb3BlcnR5TmFtZSwgdmFsdWVdOwogICAgICAgICAgICAgbWFuYWdl
ci5jYXB0dXJlQXJndW1lbnRzKHJlc291cmNlLCBhcmdzKTsKLSAgICAgICAgICAgIG9yaWdpbmFs
T2JqZWN0W3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIG9yaWdpbmFsT2JqZWN0
W3Byb3BlcnR5TmFtZV0gPSBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHZhbHVlKTsKICAgICAgICAg
ICAgIHZhciBzdGFja1RyYWNlID0gU3RhY2tUcmFjZS5jcmVhdGUoMSwgYXJndW1lbnRzLmNhbGxl
ZSk7CiAgICAgICAgICAgICB2YXIgY2FsbCA9IG5ldyBDYWxsKHJlc291cmNlLCAiIiwgYXJncywg
dW5kZWZpbmVkLCBzdGFja1RyYWNlKTsKICAgICAgICAgICAgIG1hbmFnZXIuY2FwdHVyZUNhbGwo
Y2FsbCk7CkBAIC0xODE5LDcgKzE4ODEsNiBAQCBmdW5jdGlvbiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZShjb250ZXh0LCByZXBsYXlDb250ZXh0Q2FsbGJhY2spCiB7CiAgICAgUmVz
b3VyY2UuY2FsbCh0aGlzLCBjb250ZXh0KTsKICAgICB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJh
Y2sgPSByZXBsYXlDb250ZXh0Q2FsbGJhY2s7Ci0gICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrID0g
W107CiB9CiAKIC8qKgpAQCAtMTg0MSw3ICsxOTAyLDggQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcyA9IFsKICAgICAiZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uIiwKICAgICAiZm9udCIsCiAgICAgInRleHRBbGlnbiIsCi0gICAgInRleHRCYXNl
bGluZSIKKyAgICAidGV4dEJhc2VsaW5lIiwKKyAgICAibGluZURhc2hPZmZzZXQiCiBdOwogCiAv
KioKQEAgLTE4ODEsOCArMTk0MywxMyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgX3BvcHVsYXRlUmVwbGF5YWJsZURhdGE6IGZ1bmN0aW9uKGRh
dGEsIGNhY2hlKQogICAgIHsKICAgICAgICAgZGF0YS5yZXBsYXlDb250ZXh0Q2FsbGJhY2sgPSB0
aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2s7Ci0gICAgICAgIGRhdGEuYXR0cmlidXRlc1N0YWNr
ID0gdGhpcy5fYXR0cmlidXRlc1N0YWNrLnNsaWNlKDApOwogICAgICAgICBkYXRhLmN1cnJlbnRB
dHRyaWJ1dGVzID0gdGhpcy5fY3VycmVudEF0dHJpYnV0ZXNTdGF0ZSgpOworICAgICAgICB2YXIg
Y3R4ID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBk
YXRhLm9yaWdpbmFsSW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjdHguY2FudmFz
LndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIkFTU0VSVF9OT1RfUkVBQ0hFRDogZ2V0SW1hZ2VEYXRhIGZh
aWxlZC4iLCBlKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICAvKioKQEAgLTE4OTMsMjEgKzE5
NjAsMjQgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgIF9kb1JlcGxheUNhbGxzOiBmdW5jdGlvbihkYXRhLCBjYWNoZSkKICAgICB7CiAgICAgICAg
IHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IGRhdGEucmVwbGF5Q29udGV4dENhbGxiYWNr
OwotICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sgPSBkYXRhLmF0dHJpYnV0ZXNTdGFjay5z
bGljZSgwKTsKIAogICAgICAgICB2YXIgY3R4ID0gUmVzb3VyY2Uud3JhcHBlZE9iamVjdCh0aGlz
Ll9yZXBsYXlDb250ZXh0Q2FsbGJhY2soKSk7CiAgICAgICAgIHRoaXMuc2V0V3JhcHBlZE9iamVj
dChjdHgpOwogCi0gICAgICAgIHZhciBzYXZlQ2FsbHMgPSAwOworICAgICAgICBpZiAoZGF0YS5v
cmlnaW5hbEltYWdlRGF0YSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBj
dHgucHV0SW1hZ2VEYXRhKGRhdGEub3JpZ2luYWxJbWFnZURhdGEsIDAsIDApOworICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkFTU0VSVF9O
T1RfUkVBQ0hFRDogcHV0SW1hZ2VEYXRhIGZhaWxlZC4iLCBlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YS5jYWxscy5sZW5ndGg7
IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgIHZhciByZXBsYXlhYmxlQ2FsbCA9IGRhdGEuY2Fs
bHNbaV07Ci0gICAgICAgICAgICBpZiAocmVwbGF5YWJsZUNhbGwuZnVuY3Rpb25OYW1lKCkgPT09
ICJzYXZlIikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhdmVDYWxscyA8IHRo
aXMuX2F0dHJpYnV0ZXNTdGFjay5sZW5ndGgsICJTaXplIG9mIGF0dHJpYnV0ZXMgc3RhY2sgaXMg
bGVzcyB0aGFuICdzYXZlJyBjYWxscyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5QXR0
cmlidXRlc1N0YXRlKHRoaXMuX2F0dHJpYnV0ZXNTdGFja1tzYXZlQ2FsbHMrK10pOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcGxheWFibGVDYWxsLmZ1bmN0aW9uTmFtZSgpID09
PSAic2F2ZSIpCisgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlBdHRyaWJ1dGVzU3RhdGUocmVw
bGF5YWJsZUNhbGwuYXR0YWNobWVudCgiY2FudmFzMmRBdHRyaWJ1dGVzU3RhdGUiKSk7CiAgICAg
ICAgICAgICB0aGlzLl9jYWxscy5wdXNoKHJlcGxheWFibGVDYWxsLnJlcGxheShjYWNoZSkpOwog
ICAgICAgICB9Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhdmVDYWxscyA9PT0gdGhpcy5fYXR0
cmlidXRlc1N0YWNrLmxlbmd0aCwgIlNpemUgb2YgYXR0cmlidXRlcyBzdGFjayBzaG91bGQgYmUg
ZXF1YWwgdG8gdGhlIG51bWJlciBvZiAnc2F2ZScgY2FsbHMiKTsKICAgICAgICAgdGhpcy5fYXBw
bHlBdHRyaWJ1dGVzU3RhdGUoZGF0YS5jdXJyZW50QXR0cmlidXRlcyk7CiAgICAgfSwKIApAQCAt
MTkxNiw3ICsxOTg2LDExIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBwdXNoQ2FsbF9zZXRUcmFuc2Zvcm06IGZ1bmN0aW9uKGNh
bGwpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIHRyYW5zZm9ybSBt
YXRyaXggbWV0aG9kcy4KKyAgICAgICAgdmFyIHNhdmVDYWxsSW5kZXggPSB0aGlzLl9sYXN0SW5k
ZXhPZk1hdGNoaW5nU2F2ZUNhbGwoKTsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fbGFzdElu
ZGV4T2ZBbnlDYWxsKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2Rz
KTsKKyAgICAgICAgaW5kZXggPSBNYXRoLm1heChpbmRleCwgc2F2ZUNhbGxJbmRleCk7CisgICAg
ICAgIGlmICh0aGlzLl9yZW1vdmVDYWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
UmVzb3VyY2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzLCBpbmRleCArIDEpKQorICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlQWxsT2Jzb2xldGVDYWxsc0Zyb21Mb2coKTsKICAgICAgICAgdGhp
cy5wdXNoQ2FsbChjYWxsKTsKICAgICB9LAogCkBAIC0xOTI1LDcgKzE5OTksOSBAQCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcHVz
aENhbGxfYmVnaW5QYXRoOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBvYnNvbGV0ZSBwYXRoIG1ldGhvZHMuCisgICAgICAgIHZhciBpbmRleCA9IHRoaXMu
X2xhc3RJbmRleE9mQW55Q2FsbChbImNsaXAiXSk7CisgICAgICAgIGlmICh0aGlzLl9yZW1vdmVD
YWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMs
IGluZGV4ICsgMSkpCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJv
bUxvZygpOwogICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOwogICAgIH0sCiAKQEAgLTE5MzQs
NyArMjAxMCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBwdXNoQ2FsbF9zYXZlOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrLnB1c2godGhpcy5fY3VycmVudEF0dHJpYnV0ZXNT
dGF0ZSgpKTsKKyAgICAgICAgY2FsbC5zZXRBdHRhY2htZW50KCJjYW52YXMyZEF0dHJpYnV0ZXNT
dGF0ZSIsIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVzU3RhdGUoKSk7CiAgICAgICAgIHRoaXMucHVz
aENhbGwoY2FsbCk7CiAgICAgfSwKIApAQCAtMTk0Myw5ICsyMDE5LDEzOCBAQCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcHVzaENh
bGxfcmVzdG9yZTogZnVuY3Rpb24oY2FsbCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2F0dHJpYnV0
ZXNTdGFjay5wb3AoKTsKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvYnNvbGV0ZSBjbGlwLHNh
dmUgbWV0aG9kcy4KLSAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsKKyAgICAgICAgdmFyIGxh
c3RJbmRleE9mU2F2ZSA9IHRoaXMuX2xhc3RJbmRleE9mTWF0Y2hpbmdTYXZlQ2FsbCgpOworICAg
ICAgICBpZiAobGFzdEluZGV4T2ZTYXZlID09PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy5fY2FsbHNbbGFzdEluZGV4T2ZTYXZlXS5zZXRBdHRhY2htZW50KCJjYW52YXMy
ZEF0dHJpYnV0ZXNTdGF0ZSIsIG51bGwpOyAvLyBObyBsb25nZXIgbmVlZGVkLCBmcmVlIG1lbW9y
eS4KKworICAgICAgICB2YXIgbW9kaWZpZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMuX3Jl
bW92ZUNhbGxzRnJvbUxvZyhbImNsaXAiXSwgbGFzdEluZGV4T2ZTYXZlICsgMSkpCisgICAgICAg
ICAgICBtb2RpZmllZCA9IHRydWU7CisKKyAgICAgICAgdmFyIGxhc3RJbmRleE9mQW55UGF0aE1l
dGhvZCA9IHRoaXMuX2xhc3RJbmRleE9mQW55Q2FsbChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRS
ZXNvdXJjZS5QYXRoTWV0aG9kcyk7CisgICAgICAgIHZhciBpbmRleCA9IE1hdGgubWF4KGxhc3RJ
bmRleE9mU2F2ZSwgbGFzdEluZGV4T2ZBbnlQYXRoTWV0aG9kKTsKKyAgICAgICAgaWYgKHRoaXMu
X3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5UcmFu
c2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIGluZGV4ICsgMSkpCisgICAgICAgICAgICBtb2RpZmll
ZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG1vZGlmaWVkKQorICAgICAgICAgICAgdGhpcy5fcmVt
b3ZlQWxsT2Jzb2xldGVDYWxsc0Zyb21Mb2coKTsKKworICAgICAgICB2YXIgbGFzdENhbGwgPSB0
aGlzLl9jYWxsc1t0aGlzLl9jYWxscy5sZW5ndGggLSAxXTsKKyAgICAgICAgaWYgKGxhc3RDYWxs
ICYmIGxhc3RDYWxsLmZ1bmN0aW9uTmFtZSgpID09PSAic2F2ZSIpCisgICAgICAgICAgICB0aGlz
Ll9jYWxscy5wb3AoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5wdXNoQ2FsbChj
YWxsKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBmcm9tSW5k
ZXgKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgX2xhc3RJbmRleE9mTWF0
Y2hpbmdTYXZlQ2FsbDogZnVuY3Rpb24oZnJvbUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHR5
cGVvZiBmcm9tSW5kZXggIT09ICJudW1iZXIiKQorICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhp
cy5fY2FsbHMubGVuZ3RoIC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJvbUluZGV4
ID0gTWF0aC5taW4oZnJvbUluZGV4LCB0aGlzLl9jYWxscy5sZW5ndGggLSAxKTsKKyAgICAgICAg
dmFyIHN0YWNrRGVwdGggPSAxOworICAgICAgICBmb3IgKHZhciBpID0gZnJvbUluZGV4OyBpID49
IDA7IC0taSkgeworICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9IHRoaXMuX2NhbGxzW2ld
LmZ1bmN0aW9uTmFtZSgpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PT0gInJlc3Rv
cmUiKQorICAgICAgICAgICAgICAgICsrc3RhY2tEZXB0aDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGZ1bmN0aW9uTmFtZSA9PT0gInNhdmUiKSB7CisgICAgICAgICAgICAgICAgLS1zdGFja0RlcHRo
OworICAgICAgICAgICAgICAgIGlmICghc3RhY2tEZXB0aCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFBcnJheS48c3RyaW5nPn0gZnVuY3Rp
b25OYW1lcworICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZnJvbUluZGV4CisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIF9sYXN0SW5kZXhPZkFueUNhbGw6IGZ1bmN0aW9uKGZ1
bmN0aW9uTmFtZXMsIGZyb21JbmRleCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgZnJvbUlu
ZGV4ICE9PSAibnVtYmVyIikKKyAgICAgICAgICAgIGZyb21JbmRleCA9IHRoaXMuX2NhbGxzLmxl
bmd0aCAtIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyb21JbmRleCA9IE1hdGgubWlu
KGZyb21JbmRleCwgdGhpcy5fY2FsbHMubGVuZ3RoIC0gMSk7CisgICAgICAgIGZvciAodmFyIGkg
PSBmcm9tSW5kZXg7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25OYW1l
cy5pbmRleE9mKHRoaXMuX2NhbGxzW2ldLmZ1bmN0aW9uTmFtZSgpKSAhPT0gLTEpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0s
CisKKyAgICBfcmVtb3ZlQWxsT2Jzb2xldGVDYWxsc0Zyb21Mb2c6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIC8vIFJlbW92ZSBhbGwgUEFUSCBtZXRob2RzIGJldHdlZW4gY2xpcCgpIGFuZCBi
ZWdpblBhdGgoKSBjYWxscy4KKyAgICAgICAgdmFyIGxhc3RJbmRleE9mQmVnaW5QYXRoID0gdGhp
cy5fbGFzdEluZGV4T2ZBbnlDYWxsKFsiYmVnaW5QYXRoIl0pOworICAgICAgICB3aGlsZSAobGFz
dEluZGV4T2ZCZWdpblBhdGggIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlz
Ll9sYXN0SW5kZXhPZkFueUNhbGwoWyJjbGlwIl0sIGxhc3RJbmRleE9mQmVnaW5QYXRoIC0gMSk7
CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVDYWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMsIGluZGV4ICsgMSwgbGFzdEluZGV4T2ZCZWdpblBh
dGgpOworICAgICAgICAgICAgbGFzdEluZGV4T2ZCZWdpblBhdGggPSB0aGlzLl9sYXN0SW5kZXhP
ZkFueUNhbGwoWyJiZWdpblBhdGgiXSwgaW5kZXggLSAxKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFJlbW92ZSBhbGwgVFJBU0ZPUk1BVElPTiBNQVRSSVggbWV0aG9kcyBiZWZvcmUgcmVzdG9y
ZSgpIG9yIHNldFRyYW5zZm9ybSgpIGJ1dCBhZnRlciBhbnkgUEFUSCBvciBjb3JyZXNwb25kaW5n
IHNhdmUoKSBtZXRob2QuCisgICAgICAgIHZhciBsYXN0UmVzdG9yZSA9IHRoaXMuX2xhc3RJbmRl
eE9mQW55Q2FsbChbInJlc3RvcmUiLCAic2V0VHJhbnNmb3JtIl0pOworICAgICAgICB3aGlsZSAo
bGFzdFJlc3RvcmUgIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgc2F2ZUNhbGxJbmRleCA9IHRo
aXMuX2xhc3RJbmRleE9mTWF0Y2hpbmdTYXZlQ2FsbChsYXN0UmVzdG9yZSAtIDEpOworICAgICAg
ICAgICAgdmFyIGluZGV4ID0gdGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2RzLCBsYXN0UmVzdG9yZSAtIDEpOworICAgICAg
ICAgICAgaW5kZXggPSBNYXRoLm1heChpbmRleCwgc2F2ZUNhbGxJbmRleCk7CisgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVDYWxsc0Zyb21Mb2coQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3Vy
Y2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzLCBpbmRleCArIDEsIGxhc3RSZXN0b3JlKTsK
KyAgICAgICAgICAgIGxhc3RSZXN0b3JlID0gdGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKFsicmVz
dG9yZSIsICJzZXRUcmFuc2Zvcm0iXSwgaW5kZXggLSAxKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFJlbW92ZSBhbGwgc2F2ZS1yZXN0b3JlIGNvbnNlY3V0aXZlIHBhaXJzLgorICAgICAgICB2
YXIgcmVzdG9yZUNhbGxzID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2NhbGxzLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0g
dGhpcy5fY2FsbHNbaV0uZnVuY3Rpb25OYW1lKCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25O
YW1lID09PSAicmVzdG9yZSIpIHsKKyAgICAgICAgICAgICAgICArK3Jlc3RvcmVDYWxsczsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChm
dW5jdGlvbk5hbWUgPT09ICJzYXZlIiAmJiByZXN0b3JlQ2FsbHMgPiAwKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHNhdmVDYWxsSW5kZXggPSBpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGog
PSBpIC0gMTsgaiA+PSAwICYmIGkgLSBqIDwgcmVzdG9yZUNhbGxzOyAtLWopIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX2NhbGxzW2pdLmZ1bmN0aW9uTmFtZSgpID09PSAic2F2ZSIp
CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlQ2FsbEluZGV4ID0gajsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxzLnNwbGljZShzYXZlQ2FsbEluZGV4
LCAoaSAtIHNhdmVDYWxsSW5kZXggKyAxKSAqIDIpOworICAgICAgICAgICAgICAgIGkgPSBzYXZl
Q2FsbEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdG9yZUNhbGxzID0gMDsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFBcnJheS48c3Ry
aW5nPn0gZnVuY3Rpb25OYW1lcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXgKKyAg
ICAgKiBAcGFyYW0ge251bWJlcj19IHRvSW5kZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIF9yZW1vdmVDYWxsc0Zyb21Mb2c6IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZXMs
IGZyb21JbmRleCwgdG9JbmRleCkKKyAgICB7CisgICAgICAgIHZhciBvbGRMZW5ndGggPSB0aGlz
Ll9jYWxscy5sZW5ndGg7CisgICAgICAgIGlmICh0eXBlb2YgdG9JbmRleCAhPT0gIm51bWJlciIp
CisgICAgICAgICAgICB0b0luZGV4ID0gb2xkTGVuZ3RoOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0b0luZGV4ID0gTWF0aC5taW4odG9JbmRleCwgb2xkTGVuZ3RoKTsKKyAgICAgICAgdmFy
IG5ld0luZGV4ID0gTWF0aC5taW4oZnJvbUluZGV4LCBvbGRMZW5ndGgpOworICAgICAgICBmb3Ig
KHZhciBpID0gbmV3SW5kZXg7IGkgPCB0b0luZGV4OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBj
YWxsID0gdGhpcy5fY2FsbHNbaV07CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25OYW1lcy5pbmRl
eE9mKGNhbGwuZnVuY3Rpb25OYW1lKCkpID09PSAtMSkKKyAgICAgICAgICAgICAgICB0aGlzLl9j
YWxsc1tuZXdJbmRleCsrXSA9IGNhbGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld0luZGV4
ID49IHRvSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRoaXMuX2Nh
bGxzLnNwbGljZShuZXdJbmRleCwgdG9JbmRleCAtIG5ld0luZGV4KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTk1NSwyMSArMjE2MCwzMCBAQCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2
YXIgY3R4ID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBzdGF0ZSA9IHt9Owor
ICAgICAgICBzdGF0ZS5hdHRyaWJ1dGVzID0ge307CiAgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbihhdHRy
aWJ1dGUpIHsKLSAgICAgICAgICAgIHN0YXRlW2F0dHJpYnV0ZV0gPSBjdHhbYXR0cmlidXRlXTsK
KyAgICAgICAgICAgIHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmlidXRlXSA9IGN0eFthdHRyaWJ1dGVd
OwogICAgICAgICB9KTsKKyAgICAgICAgaWYgKGN0eC5nZXRMaW5lRGFzaCkKKyAgICAgICAgICAg
IHN0YXRlLmxpbmVEYXNoID0gY3R4LmdldExpbmVEYXNoKCk7CiAgICAgICAgIHJldHVybiBzdGF0
ZTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHshT2JqZWN0LjxzdHJpbmcsIHN0
cmluZz59IHN0YXRlCisgICAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgc3RyaW5nPj19IHN0
YXRlCiAgICAgICovCiAgICAgX2FwcGx5QXR0cmlidXRlc1N0YXRlOiBmdW5jdGlvbihzdGF0ZSkK
ICAgICB7CisgICAgICAgIGlmICghc3RhdGUpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHZhciBjdHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKLSAgICAgICAgT2JqZWN0LmtleXMoc3Rh
dGUpLmZvckVhY2goZnVuY3Rpb24oYXR0cmlidXRlKSB7Ci0gICAgICAgICAgICBjdHhbYXR0cmli
dXRlXSA9IHN0YXRlW2F0dHJpYnV0ZV07Ci0gICAgICAgIH0pOworICAgICAgICBpZiAoc3RhdGUu
YXR0cmlidXRlcykgeworICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhdGUuYXR0cmlidXRlcyku
Zm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICBjdHhbYXR0cmli
dXRlXSA9IHN0YXRlLmF0dHJpYnV0ZXNbYXR0cmlidXRlXTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgICAgIGlmIChjdHguc2V0TGluZURhc2gpCisgICAgICAgICAgICBjdHguc2V0
TGluZURhc2goc3RhdGUubGluZURhc2gpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE5ODIsNiAr
MjE5Niw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKCF3cmFwRnVuY3Rpb25zKSB7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25z
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFNhdmUgc3Rh
dGUgb2YgdGhlIENhbnZhc0dyYWRpZW50IG9iamVjdHMuCiAgICAgICAgICAgICB3cmFwRnVuY3Rp
b25zWyJjcmVhdGVMaW5lYXJHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291
cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJj
cmVhdGVSYWRpYWxHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFj
dG9yeU1ldGhvZChSZXNvdXJjZSk7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVQ
YXR0ZXJuIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJl
c291cmNlKTsKQEAgLTIwMDYsMTQgKzIyMjEsMTIgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzLmZvckVhY2goZnVuY3Rpb24o
bWV0aG9kTmFtZSkgewotICAgICAgICAgICAgICAgIHZhciBmdW5jID0gbWV0aG9kTmFtZSA9PT0g
InNldFRyYW5zZm9ybSIgPyB0aGlzLnB1c2hDYWxsX3NldFRyYW5zZm9ybSA6IG51bGw7Ci0gICAg
ICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYyk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJl
c291cmNlLlBhdGhNZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kTmFtZSkgewotICAgICAg
ICAgICAgICAgIHZhciBmdW5jID0gbWV0aG9kTmFtZSA9PT0gImJlZ2luUGF0aCIgPyB0aGlzLnB1
c2hDYWxsX2JlZ2luUGF0aCA6IG51bGw7Ci0gICAgICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdX
cmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYyk7Ci0gICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIG1ldGhvZE5hbWU7IG1ldGhvZE5hbWUgPSBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHNbaV07ICsr
aSkKKyAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1l
LCBtZXRob2ROYW1lID09PSAic2V0VHJhbnNmb3JtIiA/IHRoaXMucHVzaENhbGxfc2V0VHJhbnNm
b3JtIDogbnVsbCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbWV0aG9kTmFtZTsgbWV0
aG9kTmFtZSA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2RzW2ld
OyArK2kpCisgICAgICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9k
TmFtZSwgbWV0aG9kTmFtZSA9PT0gImJlZ2luUGF0aCIgPyB0aGlzLnB1c2hDYWxsX2JlZ2luUGF0
aCA6IG51bGwpOworCiAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbigic2F2
ZSIsIHRoaXMucHVzaENhbGxfc2F2ZSk7CiAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBG
dW5jdGlvbigicmVzdG9yZSIsIHRoaXMucHVzaENhbGxfcmVzdG9yZSk7CiAgICAgICAgICAgICBz
dGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbigiY2xpcCIpOwpAQCAtMjQwMSwyMCArMjYxNCwxMCBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NvbnN0cnVjdENh
bnZhczJEUmVwbGF5Q29udGV4dDogZnVuY3Rpb24ob3JpZ2luYWxDb250ZXh0KQogICAgIHsKLSAg
ICAgICAgdmFyIHJlcGxheUNvbnRleHQgPSBvcmlnaW5hbENvbnRleHRbIl9fcmVwbGF5Q29udGV4
dCJdOwotICAgICAgICBpZiAoIXJlcGxheUNvbnRleHQpIHsKLSAgICAgICAgICAgIHZhciBjYW52
YXMgPSBvcmlnaW5hbENvbnRleHQuY2FudmFzLmNsb25lTm9kZSh0cnVlKTsKLSAgICAgICAgICAg
IHJlcGxheUNvbnRleHQgPSAvKiogQHR5cGUge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gKi8g
UmVzb3VyY2Uud3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSk7Ci0gICAgICAg
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3JpZ2luYWxDb250ZXh0LCAiX19yZXBsYXlDb250
ZXh0IiwgewotICAgICAgICAgICAgICAgIHZhbHVlOiByZXBsYXlDb250ZXh0LAotICAgICAgICAg
ICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxz
ZSwKLSAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgdGhpcy5fcmVwbGF5Q29udGV4dCA9IHJlcGxheUNvbnRleHQ7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xlYXIgdGhlIGNhbnZhcy4KLSAgICAg
ICAgfQorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgMkQgY29udGV4dCBlYWNoIHRpbWUgdG8gc3Rh
cnQgd2l0aCBhbiBlbXB0eSBjb250ZXh0IGRyYXdpbmcgc3RhdGUgc3RhY2sgKG1hbmFnZWQgYnkg
c2F2ZSgpIGFuZCByZXN0b3JlKCkgbWV0aG9kcykuCisgICAgICAgIHZhciBjYW52YXMgPSBvcmln
aW5hbENvbnRleHQuY2FudmFzLmNsb25lTm9kZSh0cnVlKTsKKyAgICAgICAgdmFyIHJlcGxheUNv
bnRleHQgPSAvKiogQHR5cGUge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gKi8gUmVzb3VyY2Uu
d3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSk7CisgICAgICAgIHRoaXMuX3Jl
cGxheUNvbnRleHQgPSByZXBsYXlDb250ZXh0OwogICAgICAgICByZXR1cm4gcmVwbGF5Q29udGV4
dDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWNmZjUwODZlMDMwNmI0MDg0MWFmNmZlODkyNWZkNDBlZTgz
ZjA5NC4uN2I1NjU0NThhNmJjYzAxYjkyMWNjMDMyZTg5NWY1MmU0Yjg2MGQyMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDEyLTEwLTMwICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDYW52YXNdIGRvIG5vdCBibG93IHVw
IHRoZSBjYXB0dXJpbmcgbG9nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0IGZvciB0cmFjayBDYW52YXMgMkQgQVBJIGNoYW5nZXMsIGFz
IHdlbGwgYXMgYmFzaWNzIGZvciB0aGUgY2FwdHVyaW5nLgorCisgICAgICAgICogaW5zcGVjdG9y
L3Byb2ZpbGVyL2NhbnZhcy1wcm9maWxlci10ZXN0LmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMuCisgICAg
ICAgIChpbml0aWFsaXplX0NhbnZhc1dlYkdMUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRlc3QuZW5h
YmxlQ2FudmFzQWdlbnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9DYW52YXNXZWJHTFByb2ZpbGVy
VGVzdCk6CisgICAgICAgIChjcmVhdGVXZWJHTENvbnRleHQpOgorICAgICAgICAoY3JlYXRlQ2Fu
dmFzMkRDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2Fu
dmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNh
cHR1cmluZy1iYXNpY3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmls
ZXItZ2V0LWVycm9yLmh0bWw6CisKIDIwMTItMTAtMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVGVzdCBleHBlY3RhdGlvbiB1cGRhdGUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzLXByb2Zp
bGVyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzLXByb2Zp
bGVyLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmNDQ2ODRhOTgxZTYzZGVjOWVmYTcwMThlOTcyODcw
Njc0OWY1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9jYW52YXMtcHJvZmlsZXItdGVzdC5qcwpAQCAtMCwwICsxLDQzIEBACit2YXIgaW5pdGlhbGl6
ZV9DYW52YXNXZWJHTFByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0
LmVuYWJsZUNhbnZhc0FnZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24g
Y2FudmFzQWdlbnRFbmFibGVkKGVycm9yKQorICAgIHsKKyAgICAgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spKCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUxFRCB0byBlbmFi
bGUgQ2FudmFzQWdlbnQ6ICIgKyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIENhbnZh
c0FnZW50LmVuYWJsZShjYW52YXNBZ2VudEVuYWJsZWQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4Y2VwdGlvbiB3aGlsZSBlbmFibGluZyBD
YW52YXNBZ2VudCIsIGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwor
ICAgIH0KK307CisKK307CisKK2Z1bmN0aW9uIGNyZWF0ZVdlYkdMQ29udGV4dChvcHRfY2FudmFz
KQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisKKyAgICB2YXIgY2Fu
dmFzID0gb3B0X2NhbnZhcyB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAg
ICB2YXIgY29udGV4dElkcyA9IFsiZXhwZXJpbWVudGFsLXdlYmdsIiwgIndlYmtpdC0zZCIsICIz
ZCJdOworICAgIGZvciAodmFyIGkgPSAwLCBjb250ZXh0SWQ7IGNvbnRleHRJZCA9IGNvbnRleHRJ
ZHNbaV07ICsraSkgeworICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dChjb250ZXh0
SWQpOworICAgICAgICBpZiAoZ2wpCisgICAgICAgICAgICByZXR1cm4gZ2w7CisgICAgfQorICAg
IHJldHVybiBudWxsOworfQorCitmdW5jdGlvbiBjcmVhdGVDYW52YXMyRENvbnRleHQob3B0X2Nh
bnZhcykKK3sKKyAgICB2YXIgY2FudmFzID0gb3B0X2NhbnZhcyB8fCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJjYW52YXMiKTsKKyAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoIjJkIik7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2Fu
dmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLWFwaS1jaGFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43Yzk2MmViYTg0ODMxZjYwNTNhYTQ2N2NiYTQxZTM1YjUzMjhiOWY4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJk
LWFwaS1jaGFuZ2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3QgdG8gY2F0Y2gg
Q2FudmFzIDJEIEFQSSBjaGFuZ2VzLiBJZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFpbCwgd2Ug
c2hvdWxkIHJlLWV4YW1pbmUgdGhlIENhbnZhcyAyRCBzdGF0ZSBzYXZpbmcvcmVzdG9yaW5nIGxv
Z2ljIGluIHRoZSBJbmplY3RlZFNjcmlwdE1vZHVsZSB0byBpbmNsdWRlIGFueSBsYXRlc3QgY2hh
bmdlcyB0byB0aGUgQVBJLgorCitOZXcgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHRoYXQgc2hv
dWxkIGJlIG1hbnVhbGx5IGV4YW1pbmVkIChzaG91bGQgYmUgZW1wdHkgdG8gcGFzcyB0aGUgdGVz
dCk6CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMy
ZC9jYW52YXMyZC1hcGktY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2NhbnZhczJkL2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlZjY3
ZTIwNTIzOGFiYTI4M2ZiZTE0NDM0YTExMzliYjhmNDBlNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1hcGktY2hhbmdl
cy5odG1sCkBAIC0wLDAgKzEsMTUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK3ZhciBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZSA9IHt9Owor
CisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICovCitDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5BdHRyaWJ1dGVQcm9wZXJ0aWVzID0gWworICAgICJz
dHJva2VTdHlsZSIsCisgICAgImZpbGxTdHlsZSIsCisgICAgImdsb2JhbEFscGhhIiwKKyAgICAi
bGluZVdpZHRoIiwKKyAgICAibGluZUNhcCIsCisgICAgImxpbmVKb2luIiwKKyAgICAibWl0ZXJM
aW1pdCIsCisgICAgInNoYWRvd09mZnNldFgiLAorICAgICJzaGFkb3dPZmZzZXRZIiwKKyAgICAi
c2hhZG93Qmx1ciIsCisgICAgInNoYWRvd0NvbG9yIiwKKyAgICAiZ2xvYmFsQ29tcG9zaXRlT3Bl
cmF0aW9uIiwKKyAgICAiZm9udCIsCisgICAgInRleHRBbGlnbiIsCisgICAgInRleHRCYXNlbGlu
ZSIsCisgICAgImxpbmVEYXNoT2Zmc2V0IgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBl
IHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2Uu
UGF0aE1ldGhvZHMgPSBbCisgICAgImJlZ2luUGF0aCIsCisgICAgIm1vdmVUbyIsCisgICAgImNs
b3NlUGF0aCIsCisgICAgImxpbmVUbyIsCisgICAgInF1YWRyYXRpY0N1cnZlVG8iLAorICAgICJi
ZXppZXJDdXJ2ZVRvIiwKKyAgICAiYXJjVG8iLAorICAgICJhcmMiLAorICAgICJyZWN0IgorXTsK
KworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuVHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzID0g
WworICAgICJzY2FsZSIsCisgICAgInJvdGF0ZSIsCisgICAgInRyYW5zbGF0ZSIsCisgICAgInRy
YW5zZm9ybSIsCisgICAgInNldFRyYW5zZm9ybSIKK107CisKKy8qKgorICogQGNvbnN0CisgKiBA
dHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291
cmNlLklnbm9yZVByb3BlcnRpZXMgPSBbCisgICAgImNhbnZhcyIsCisgICAgImNyZWF0ZUxpbmVh
ckdyYWRpZW50IiwKKyAgICAiY3JlYXRlUmFkaWFsR3JhZGllbnQiLAorICAgICJjcmVhdGVQYXR0
ZXJuIiwKKyAgICAic2F2ZSIsCisgICAgInJlc3RvcmUiLAorICAgICJjbGlwIiwKKyAgICAiZ2V0
TGluZURhc2giLAorICAgICJzZXRMaW5lRGFzaCIsCisgICAgLy8gSWdub3JlIHRoZSBwcm9wZXJ0
aWVzIGJlbG93LgorICAgICJjbGVhclJlY3QiLAorICAgICJjbGVhclNoYWRvdyIsCisgICAgImNy
ZWF0ZUltYWdlRGF0YSIsCisgICAgImRyYXdJbWFnZSIsCisgICAgImRyYXdJbWFnZUZyb21SZWN0
IiwKKyAgICAiZmlsbCIsCisgICAgImZpbGxSZWN0IiwKKyAgICAiZmlsbFRleHQiLAorICAgICJn
ZXRJbWFnZURhdGEiLAorICAgICJpc1BvaW50SW5QYXRoIiwKKyAgICAibWVhc3VyZVRleHQiLAor
ICAgICJwdXRJbWFnZURhdGEiLAorICAgICJzZXRBbHBoYSIsCisgICAgInNldENvbXBvc2l0ZU9w
ZXJhdGlvbiIsCisgICAgInNldEZpbGxDb2xvciIsCisgICAgInNldExpbmVDYXAiLAorICAgICJz
ZXRMaW5lSm9pbiIsCisgICAgInNldExpbmVXaWR0aCIsCisgICAgInNldE1pdGVyTGltaXQiLAor
ICAgICJzZXRTaGFkb3ciLAorICAgICJzZXRTdHJva2VDb2xvciIsCisgICAgInN0cm9rZSIsCisg
ICAgInN0cm9rZVJlY3QiLAorICAgICJzdHJva2VUZXh0IiwKKyAgICAid2Via2l0QmFja2luZ1N0
b3JlUGl4ZWxSYXRpbyIsCisgICAgIndlYmtpdEdldEltYWdlRGF0YUhEIiwKKyAgICAid2Via2l0
SW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwKKyAgICAid2Via2l0UHV0SW1hZ2VEYXRhSEQiCitdOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CisgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwor
ICAgIGlmICghY3R4KSB7CisgICAgICAgIG91dHB1dCgiRVJST1I6IENvdWxkIG5vdCBjcmVhdGUg
Y2FudmFzIDJEIGNvbnRleHQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIg
cHJvcGVydHlOYW1lcyA9IFtdOworICAgIGZvciAodmFyIHByb3BlcnR5IGluIGN0eCkKKyAgICAg
ICAgcHJvcGVydHlOYW1lcy5wdXNoKHByb3BlcnR5KTsKKyAgICBwcm9wZXJ0eU5hbWVzLnNvcnQo
KTsKKworICAgIG91dHB1dCgiTmV3IHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IHNob3Vs
ZCBiZSBtYW51YWxseSBleGFtaW5lZCAoc2hvdWxkIGJlIGVtcHR5IHRvIHBhc3MgdGhlIHRlc3Qp
OiIpOworICAgIHZhciB0cmFja2VkUHJvcGVydGllcyA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMuY29uY2F0KENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRFJlc291cmNlLlBhdGhNZXRob2RzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJl
c291cmNlLklnbm9yZVByb3BlcnRpZXMpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVy
dHlOYW1lcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0eU5h
bWVzW2ldOworICAgICAgICBpZiAodHJhY2tlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wZXJ0eSkg
IT09IC0xKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG91dHB1dChwcm9wZXJ0eSk7
CisgICAgfQorfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB0ZXN0KCk7
CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0byBjYXRjaCBDYW52
YXMgMkQgQVBJIGNoYW5nZXMuCitJZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFpbCwgd2Ugc2hv
dWxkIHJlLWV4YW1pbmUgdGhlIENhbnZhcyAyRCBzdGF0ZSBzYXZpbmcvcmVzdG9yaW5nIGxvZ2lj
IGluIHRoZQorSW5qZWN0ZWRTY3JpcHRNb2R1bGUgdG8gaW5jbHVkZSBhbnkgbGF0ZXN0IGNoYW5n
ZXMgdG8gdGhlIEFQSS4KKworPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNh
cHR1cmluZy1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyNGFmOWU4NGE5NzViYjE2NzRhOTdiZDQ0ZDVhZjVmM2Q1NWZhNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFz
MmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACitUZXN0cyBDYW52YXMgMkQgY2FwdHVyaW5nIGJhc2ljcy4KKworQnVnIDEwMDc1
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2Nh
bnZhczJkLXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmRmYzRkN2E5ZTNjOTg0OWM3YjdjN2VkYmJhNjkzOGY3Zjk2Yjdh
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52
YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKQEAgLTAsMCArMSwy
OTIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vY2FudmFzLXByb2ZpbGVyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFy
IGN0eDsKK3ZhciByYXdDdHg7Cit2YXIgY3R4UmVzb3VyY2U7CisKK3ZhciBzYW1wbGVBdHRyaWJ1
dGVzMSA9IHsKKyAgICAic3Ryb2tlU3R5bGUiOiAiIzAwMDAwMSIsCisgICAgImZpbGxTdHlsZSI6
ICIjMDAwMDAyIiwKKyAgICAiZ2xvYmFsQWxwaGEiOiAwLjUsCisgICAgImxpbmVXaWR0aCI6IDIs
CisgICAgImxpbmVDYXAiOiAicm91bmQiLAorICAgICJsaW5lSm9pbiI6ICJiZXZlbCIsCisgICAg
Im1pdGVyTGltaXQiOiAxMiwKKyAgICAic2hhZG93T2Zmc2V0WCI6IDEsCisgICAgInNoYWRvd09m
ZnNldFkiOiAyLAorICAgICJzaGFkb3dCbHVyIjogMywKKyAgICAic2hhZG93Q29sb3IiOiAiIzAw
MDAwMyIsCisgICAgImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiI6ICJzb3VyY2UtaW4iLAorICAg
ICJmb250IjogIjEycHggc2Fucy1zZXJpZiIsCisgICAgInRleHRBbGlnbiI6ICJlbmQiLAorICAg
ICJ0ZXh0QmFzZWxpbmUiOiAidG9wIiwKKyAgICAibGluZURhc2hPZmZzZXQiOiAxCit9OworCit2
YXIgc2FtcGxlQXR0cmlidXRlczIgPSB7CisgICAgInN0cm9rZVN0eWxlIjogIiMxMDAwMDEiLAor
ICAgICJmaWxsU3R5bGUiOiAiIzEwMDAwMiIsCisgICAgImdsb2JhbEFscGhhIjogMCwKKyAgICAi
bGluZVdpZHRoIjogMywKKyAgICAibGluZUNhcCI6ICJzcXVhcmUiLAorICAgICJsaW5lSm9pbiI6
ICJyb3VuZCIsCisgICAgIm1pdGVyTGltaXQiOiAxMSwKKyAgICAic2hhZG93T2Zmc2V0WCI6IDMs
CisgICAgInNoYWRvd09mZnNldFkiOiA0LAorICAgICJzaGFkb3dCbHVyIjogMiwKKyAgICAic2hh
ZG93Q29sb3IiOiAiIzEwMDAwMyIsCisgICAgImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiI6ICJ4
b3IiLAorICAgICJmb250IjogIjEzcHggc2Fucy1zZXJpZiIsCisgICAgInRleHRBbGlnbiI6ICJs
ZWZ0IiwKKyAgICAidGV4dEJhc2VsaW5lIjogIm1pZGRsZSIsCisgICAgImxpbmVEYXNoT2Zmc2V0
IjogMgorfTsKKworZnVuY3Rpb24gYXNzaWduQXR0cmlidXRlcyhhdHRyaWJ1dGVzKQoreworICAg
IGZvciAodmFyIGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzKQorICAgICAgICBjdHhbYXR0cmlidXRl
XSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlXTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXR0cmlidXRl
cyhhdHRyaWJ1dGVzKQoreworICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiBhdHRyaWJ1dGVzKQor
ICAgICAgICBjb25zb2xlLmFzc2VydChjdHhbYXR0cmlidXRlXSA9PT0gYXR0cmlidXRlc1thdHRy
aWJ1dGVdLCAiRXhwZWN0ZWQgdmFsdWUgZm9yIGF0dHJpYnV0ZSAiICsgYXR0cmlidXRlICsgIjog
IiArIGF0dHJpYnV0ZXNbYXR0cmlidXRlXSArICIsIGJ1dCB3YXM6ICIgKyBjdHhbYXR0cmlidXRl
XSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZyhleHBlY3RlZCkKK3sK
KyAgICB2YXIgY2FsbHMgPSBjdHhSZXNvdXJjZS5jYWxscygpOworICAgIGlmIChjYWxscy5sZW5n
dGggIT09IGV4cGVjdGVkKSB7CisgICAgICAgIHZhciBuYW1lcyA9IFtdOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwICYmIGNhbGxzW2ldOyArK2kpCisgICAgICAgICAgICBuYW1lcy5w
dXNoKGNhbGxzW2ldLmZ1bmN0aW9uTmFtZSgpKTsKKyAgICAgICAgY29uc29sZS5lcnJvcigiRXhw
ZWN0ZWQgc2l6ZSBvZiB0aGUgMkQgY29udGV4dCBjYWxsIGxvZzogIiArIGV4cGVjdGVkICsgIiwg
YnV0IHdhczogIiArIGNhbGxzLmxlbmd0aCArICIsIG5hbWVzOiAiICsgbmFtZXMpOworICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdERyYXdpbmdBdHRyaWJ1dGVzKCkKK3sKKyAgICBhc3NlcnROdW1i
ZXJPZkNhbGxzSW5Mb2coMCk7CisgICAgYXNzaWduQXR0cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVz
MSk7CisgICAgYXNzZXJ0QXR0cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVzMSk7CisgICAgYXNzZXJ0
TnVtYmVyT2ZDYWxsc0luTG9nKDApOworCisgICAgLy8gU2F2ZSBwcmV2aW91cyBhdHRyaWJ1dGUg
dmFsdWVzIGFuZCBzZXQgbmV3IHZhbHVlcy4KKyAgICBjdHguc2F2ZSgpOworICAgIGFzc2lnbkF0
dHJpYnV0ZXMoc2FtcGxlQXR0cmlidXRlczIpOworICAgIGFzc2VydEF0dHJpYnV0ZXMoc2FtcGxl
QXR0cmlidXRlczIpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsKKworICAgIC8v
IFJlc3RvcmUgcHJldmlvdXMgYXR0cmlidXRlIHZhbHVlcy4KKyAgICBjdHgucmVzdG9yZSgpOwor
ICAgIGFzc2VydEF0dHJpYnV0ZXMoc2FtcGxlQXR0cmlidXRlczEpOworICAgIC8vIENhbGwgbG9n
IHNob3VsZCBiZSBlbXB0eSBhZnRlciBzYXZlKCkgYW5kIHJlc3RvcmUoKSBjYWxscy4KKyAgICBh
c3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTYXZlUmVzdG9y
ZVNlcXVlbmNlKCkKK3sKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7CisgICAgY3R4
LnJlc3RvcmUoKTsKKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygwKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygx
KTsKKyAgICBjdHguc2F2ZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygyKTsKKyAg
ICBjdHguc2F2ZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygzKTsKKyAgICBjdHgu
cmVzdG9yZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygyKTsKKyAgICBjdHgucmVz
dG9yZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsKKyAgICBjdHgucmVzdG9y
ZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHgucmVzdG9yZSgp
OworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOwor
fQorCitmdW5jdGlvbiBjYWxsUGF0aE1ldGhvZHMoKQoreworICAgIGN0eC5iZWdpblBhdGgoKTsK
KyAgICBjdHgubGluZVdpZHRoID0gMjsKKyAgICBjdHgubW92ZVRvKDExLCAxMik7CisgICAgY3R4
LmxpbmVUbygxMTEsIDExMik7CisgICAgY3R4LnN0cm9rZSgpOworfQorCitmdW5jdGlvbiBjbGVh
ckNvbnRleHRSZXNvdXJjZUxvZygpCit7CisgICAgd2hpbGUgKGN0eFJlc291cmNlLmNhbGxzKCku
bGVuZ3RoKQorICAgICAgICBjdHhSZXNvdXJjZS5jYWxscygpLnBvcCgpOworICAgIGFzc2VydE51
bWJlck9mQ2FsbHNJbkxvZygwKTsKK30KKworZnVuY3Rpb24gdGVzdFBhdGhNZXRob2RzU2VxdWVu
Y2UoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjYWxsUGF0aE1l
dGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMyk7IC8vIFtiZWdpblBhdGgs
bW92ZVRvLGxpbmVUb10KKyAgICBjYWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJP
ZkNhbGxzSW5Mb2coMyk7IC8vIG9sZCBtZXRob2RzIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZAor
ICAgIGNsZWFyQ29udGV4dFJlc291cmNlTG9nKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDbGlwTWV0
aG9kcygpCit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZl
KCk7CisgICAgY2FsbFBhdGhNZXRob2RzKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9n
KDQpOworICAgIGN0eC5jbGlwKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDUpOwor
ICAgIGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZyg4KTsK
KyAgICBjYWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coOCk7
IC8vIHRoZSBsYXN0IGNhbGxzIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZAorICAgIGN0eC5yZXN0
b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDUpOyAvLyBbc2F2ZSxiZWdpblBh
dGgsbW92ZVRvLGxpbmVUbyxyZXN0b3JlXQorICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBhc3Nl
cnROdW1iZXJPZkNhbGxzSW5Mb2coMSk7IC8vIFtiZWdpblBhdGhdCisgICAgY2xlYXJDb250ZXh0
UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rpb24gdGVzdE1hdHJpeE1ldGhvZHMoKQoreworICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGN0eC50
cmFuc2xhdGUoMTAwLCAyMDApOworICAgIGN0eC5zY2FsZSgwLjksIDAuOSk7CisgICAgY3R4LnJv
dGF0ZSgwLjIpOworICAgIGN0eC50cmFuc2xhdGUoLTEwMCwgLTIwMCk7CisgICAgYXNzZXJ0TnVt
YmVyT2ZDYWxsc0luTG9nKDUpOworICAgIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMiwgMywgNCwgNSwg
Nik7CisgICAgY3R4LnJvdGF0ZSgwLjMpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygz
KTsgLy8gW3NhdmUsc2V0VHJhbnNmb3JtLHJvdGF0ZV0KKyAgICBjdHgucmVzdG9yZSgpOworICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKK30KKworZnVuY3Rpb24gdGVzdE1hdHJpeE1l
dGhvZHNXaXRoUGF0aE1ldGhvZHMoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygw
KTsKKyAgICBjdHguc2F2ZSgpOworICAgIGN0eC50cmFuc2xhdGUoMTAwLCAyMDApOworICAgIGN0
eC5zY2FsZSgwLjksIDAuOSk7CisgICAgY3R4LnJvdGF0ZSgwLjIpOworICAgIGN0eC50cmFuc2xh
dGUoLTEwMCwgLTIwMCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDUpOworICAgIGN0
eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgxLCAxLCAxMCwgMTApOworICAgIGN0eC50cmFu
c2xhdGUoMSwgMik7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDgpOworICAgIGN0eC5y
ZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDgpOyAvLyBbc2F2ZSx0cmFu
c2xhdGUsc2NhbGUscm90YXRlLHRyYW5zbGF0ZSxiZWdpblBhdGgscmVjdCxyZXN0b3JlXQorICAg
IGN0eC5iZWdpblBhdGgoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMSk7IC8vIFti
ZWdpblBhdGhdCisgICAgY2xlYXJDb250ZXh0UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rpb24g
dGVzdE5lc3RlZFNhdmVSZXN0b3JlQ2FsbHMoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygwKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGN0eC50cmFuc2xhdGUoMTAwLCAyMDApOwor
ICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgxLCAxLCAxMCwgMTApOworICAgIGN0
eC5jbGlwKCk7CisgICAgY3R4LnNhdmUoKTsKKyAgICBjdHgucm90YXRlKDAuMik7CisgICAgY2Fs
bFBhdGhNZXRob2RzKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEwKTsgLy8gW3Nh
dmUsdHJhbnNsYXRlLGJlZ2luUGF0aCxyZWN0LGNsaXAsc2F2ZSxyb3RhdGUsYmVnaW5QYXRoLG1v
dmVUbyxsaW5lVG9dCisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxz
SW5Mb2coMTEpOworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0lu
TG9nKDkpOyAvLyBbc2F2ZSx0cmFuc2xhdGUsc2F2ZSxyb3RhdGUsYmVnaW5QYXRoLG1vdmVUbyxs
aW5lVG8scmVzdG9yZSxyZXN0b3JlXQorICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVt
YmVyT2ZDYWxsc0luTG9nKDkpOyAvLyBubyBlZmZlY3QKKyAgICBjdHguc2V0VHJhbnNmb3JtKDEs
IDIsIDMsIDQsIDUsIDYpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxMCk7IC8vIG5v
dGhpbmcgdG8gcmVtb3ZlIGZyb20gdGhlIGxvZworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBh
c3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMik7IC8vIFtzZXRUcmFuc2Zvcm0sYmVnaW5QYXRoXQor
ICAgIGNsZWFyQ29udGV4dFJlc291cmNlTG9nKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3REZWVwTmVz
dGVkU2F2ZVJlc3RvcmVDYWxscygpCit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDAp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAgICBjdHguc2F2ZSgp
OworICAgICAgICBjdHgudHJhbnNsYXRlKDEsIDIpOworICAgIH0KKyAgICBhc3NlcnROdW1iZXJP
ZkNhbGxzSW5Mb2coMjApOworICAgIGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJl
ck9mQ2FsbHNJbkxvZygyMyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Cisg
ICAgICAgIGN0eC5yb3RhdGUoMSk7CisgICAgICAgIGN0eC5zY2FsZSgyKTsKKyAgICAgICAgY3R4
LmNsaXAoKTsKKyAgICAgICAgY3R4LnRyYW5zZm9ybSgzKTsKKyAgICAgICAgY3R4LnJlc3RvcmUo
KTsKKyAgICAgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDI0ICsgaSk7CisgICAgfQorICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygzMyk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsgLy8gbm93IGNsZWFyIHVwIHRoZSBsb2cKKyAg
ICBjbGVhckNvbnRleHRSZXNvdXJjZUxvZygpOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRSdW5D
YW52YXMyRFByb2dyYW0oKQoreworICAgIGN0eCA9IGNyZWF0ZUNhbnZhczJEQ29udGV4dCgpOwor
ICAgIGNvbnNvbGUuYXNzZXJ0KGN0eCwgIkZhaWxlZCB0byBjcmVhdGUgMkQgY29udGV4dCIpOwor
CisgICAgY3R4UmVzb3VyY2UgPSBjdHhbIl9fcmVzb3VyY2VPYmplY3QiXTsKKyAgICBjb25zb2xl
LmFzc2VydChjdHhSZXNvdXJjZSwgIjJEIGNvbnRleHQgaXMgbm90IHdyYXBwZWQiKTsKKworICAg
IHJhd0N0eCA9IGN0eFJlc291cmNlLndyYXBwZWRPYmplY3QoKTsKKyAgICBjb25zb2xlLmFzc2Vy
dChyYXdDdHgsICJObyByYXcgMkQgY29udGV4dCBmb3VuZCIpOworICAgIGNvbnNvbGUuYXNzZXJ0
KGN0eCAhPT0gcmF3Q3R4LCAiUHJveHkgYW5kIFJBVyBjb250ZXh0cyBzaG91bGQgbm90IGJlIHRo
ZSBzYW1lIik7CisKKyAgICB0ZXN0RHJhd2luZ0F0dHJpYnV0ZXMoKTsKKyAgICB0ZXN0U2F2ZVJl
c3RvcmVTZXF1ZW5jZSgpOworICAgIHRlc3RQYXRoTWV0aG9kc1NlcXVlbmNlKCk7CisgICAgdGVz
dENsaXBNZXRob2RzKCk7CisgICAgdGVzdE1hdHJpeE1ldGhvZHMoKTsKKyAgICB0ZXN0TWF0cml4
TWV0aG9kc1dpdGhQYXRoTWV0aG9kcygpOworICAgIHRlc3ROZXN0ZWRTYXZlUmVzdG9yZUNhbGxz
KCk7CisgICAgdGVzdERlZXBOZXN0ZWRTYXZlUmVzdG9yZUNhbGxzKCk7CisKKyAgICByZXR1cm4g
IlNVQ0NFU1MiOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmVu
YWJsZUNhbnZhc0FnZW50KHN0ZXAxKTsKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJjcmVhdGVBbmRSdW5DYW52YXMy
RFByb2dyYW0oKSIsIHN0ZXAyKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RlcDIoZXJyb3IpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiXCJTVUNDRVNTXCIiLCBl
cnJvcik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVz
dHMgQ2FudmFzIDJEIGNhcHR1cmluZyBiYXNpY3MuCis8L3A+Cis8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzUyIj5CdWcgMTAwNzUyPC9hPgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWwKaW5kZXgg
NWRkMjU5NzdkYjlkZjIwMjBkN2FhOWEzOGE0NmQ2MWU4MWU3Mjc5Zi4uNWJjYzA0MTQ5NWM0ZDRh
ODhhZTEwODQyYjEyOWUzYjUwOTMxYzFjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJy
b3IuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0id2ViZ2wtcHJvZmlsZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL2NhbnZhcy1wcm9maWxlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIHZhciBnbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDUwZjNmNWViYjg0MmE0OTU4NDg0YTVkNWI5N2ZiZjBlYTU3MWI3ZGIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwzNyArMCwwIEBACi12YXIgaW5pdGlhbGl6ZV9DYW52YXNXZWJHTFByb2ZpbGVy
VGVzdCA9IGZ1bmN0aW9uKCkgewotCi1JbnNwZWN0b3JUZXN0LmVuYWJsZUNhbnZhc0FnZW50ID0g
ZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgZnVuY3Rpb24gY2FudmFzQWdlbnRFbmFibGVkKGVy
cm9yKQotICAgIHsKLSAgICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3Quc2FmZVdyYXAoY2FsbGJhY2spKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUxFRCB0byBlbmFibGUgQ2FudmFzQWdlbnQ6ICIgKyBl
cnJvcik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHRyeSB7Ci0gICAgICAgIENhbnZhc0FnZW50LmVuYWJsZShjYW52YXNB
Z2VudEVuYWJsZWQpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkV4Y2VwdGlvbiB3aGlsZSBlbmFibGluZyBDYW52YXNBZ2VudCIsIGUpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH0KLX07Ci0KLX07Ci0KLWZ1
bmN0aW9uIGNyZWF0ZVdlYkdMQ29udGV4dChvcHRfY2FudmFzKQotewotICAgIHZhciBjYW52YXMg
PSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHZh
ciBjb250ZXh0SWRzID0gWyJleHBlcmltZW50YWwtd2ViZ2wiLCAid2Via2l0LTNkIiwgIjNkIl07
Ci0gICAgZm9yICh2YXIgaSA9IDAsIGNvbnRleHRJZDsgY29udGV4dElkID0gY29udGV4dElkc1tp
XTsgKytpKSB7Ci0gICAgICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRJZCk7
Ci0gICAgICAgIGlmIChnbCkKLSAgICAgICAgICAgIHJldHVybiBnbDsKLSAgICB9Ci0gICAgcmV0
dXJuIG51bGw7Ci19Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsK
</data>
<flag name="commit-queue"
          id="185850"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171797</attachid>
            <date>2012-11-01 01:45:44 -0700</date>
            <delta_ts>2012-11-01 03:41:59 -0700</delta_ts>
            <desc>fixed jscompiler warnings</desc>
            <filename>bug-100752-20121101124405.patch</filename>
            <type>text/plain</type>
            <size>39542</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE3ZTlhNzIzMTk0NzY0
YTI0YmMxMDc4MzAwNjc0NTZjMjdhMDM1Mi4uNzJhOWVlNmI0ODAyNTcyMzAzNDZlYjM1ZjFlYTQx
ZjMzZTAyYmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTMwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDYW52YXNdIGRvIG5vdCBibG93IHVwIHRoZSBjYXB0dXJpbmcgbG9nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhciBvYnNvbGV0ZSBjYWxs
cyBpbiB0aGUgY2FudmFzIDJEIGNhcHR1cmluZyBsb2cgaW4gcnVudGltZS4KKyAgICAgICAgTm93
IHdlIHN0b3JlIGluIHRoZSBsb2cgb25seSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0aGF0IGFy
ZSBuZWNlc3NhcnkgdG8gcmVwbGF5IGEKKyAgICAgICAgY2FudmFzIDJEIGNvbnRleHQuIFRvIGFj
aGlldmUgdGhhdCB3ZSBmaW5kIGluIHJ1bnRpbWUgdGhvc2UgY2FsbHMgaW4gdGhlIGxvZyB0aGF0
IG5vCisgICAgICAgIGxvbmdlciBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBjb250ZXh0IHN0YXRl
IGFuZCByZW1vdmUgdGhlbS4KKyAgICAgICAgVGhlc2UgYXJlIHRoZSBydWxlcyBhY2NvcmRpbmcg
d2hpY2ggd2UgZmluZCBhbmQgcmVtb3ZlIHN1Y2ggY2FsbHM6CisgICAgICAgIC0gYWxsIFBBVEgg
bWV0aG9kcyBiZXR3ZWVuIGEgY2xpcCgpIGNhbGwgYW5kIGJlZ2luUGF0aCgpIGNhbGwgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgLSBhbGwgTUFUUklYIG1ldGhvZHMgYmVmb3JlIGEgcmVzdG9yZSgp
IG9yIHNldFRyYW5zZm9ybSgpIGNhbGwgYnV0IGFmdGVyIGFueSBQQVRIIG9yIGNvcnJlc3BvbmRp
bmcgc2F2ZSgpIG1ldGhvZAorICAgICAgICAtIGFsbCBjb25zZWN1dGl2ZSBzYXZlKCkgKyByZXN0
b3JlKCkgY2FsbHMKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJk
L2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9m
aWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorCiAyMDEyLTEwLTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW5hbWUgTG9jYWxpemVyIHRvIExvY2FsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLmpzCmluZGV4IDMyOTVmYzRjOTA3Nzk0MTgxZDU3N2I5ZGM0MGIxODVmNDg5OGJiMGMu
LmMwYTFjYWI0MmU4NTZlNTYxMzM0YzA2Mzg1MjYxMjg1MmRhNTBlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGVTb3VyY2UuanMKQEAgLTM4LDcgKzM4LDcgQEAKIHZhciBUeXBlVXRpbHMgPSB7CiAgICAgLyoq
CiAgICAgICogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS90eXBlZGFycmF5L3NwZWNz
L2xhdGVzdC8jNwotICAgICAqIEB0eXBlIHtBcnJheS48RnVuY3Rpb24+fQorICAgICAqIEB0eXBl
IHshQXJyYXkuPEZ1bmN0aW9uPn0KICAgICAgKi8KICAgICBfdHlwZWRBcnJheUNsYXNzZXM6IChm
dW5jdGlvbih0eXBlTmFtZXMpIHsKICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwpAQCAtMTE3LDYg
KzExNywyMCBAQCB2YXIgVHlwZVV0aWxzID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBA
cGFyYW0ge09iamVjdD19IG9iagorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAg
ICBjbG9uZU9iamVjdDogZnVuY3Rpb24ob2JqKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmopCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHt9OworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gb2JqKQorICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5
XTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHJl
dHVybiB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfQogICAgICAqLwogICAgIF9kdW1teUNhbnZh
czJkQ29udGV4dDogZnVuY3Rpb24oKQpAQCAtMzU4LDYgKzM3MiwyOCBAQCBDYWxsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRh
Y2htZW50CisgICAgICovCisgICAgc2V0QXR0YWNobWVudDogZnVuY3Rpb24obmFtZSwgYXR0YWNo
bWVudCkKKyAgICB7CisgICAgICAgIGlmIChhdHRhY2htZW50KSB7CisgICAgICAgICAgICB0aGlz
Ll9hdHRhY2htZW50cyA9IHRoaXMuX2F0dGFjaG1lbnRzIHx8IHt9OworICAgICAgICAgICAgdGhp
cy5fYXR0YWNobWVudHNbbmFtZV0gPSBhdHRhY2htZW50OworICAgICAgICB9IGVsc2UgaWYgKHRo
aXMuX2F0dGFjaG1lbnRzKQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2F0dGFjaG1lbnRzW25h
bWVdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICBhdHRhY2htZW50OiBmdW5jdGlvbihu
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2F0dGFjaG1lbnRzICYmIHRoaXMuX2F0
dGFjaG1lbnRzW25hbWVdOworICAgIH0sCisKICAgICBmcmVlemU6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQpAQCAtMzgyLDcgKzQxOCw4IEBAIENhbGwucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgYXJncyA9IHRoaXMuX2FyZ3MubWFwKGZ1bmN0aW9uKG9i
aikgewogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlLnRvUmVwbGF5YWJsZShvYmosIGNhY2hl
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBuZXcgUmVwbGF5YWJsZUNhbGwodGhpc09i
amVjdCwgdGhpcy5fZnVuY3Rpb25OYW1lLCBhcmdzLCByZXN1bHQsIHRoaXMuX3N0YWNrVHJhY2Up
OworICAgICAgICB2YXIgYXR0YWNobWVudHMgPSBUeXBlVXRpbHMuY2xvbmVPYmplY3QodGhpcy5f
YXR0YWNobWVudHMpOworICAgICAgICByZXR1cm4gbmV3IFJlcGxheWFibGVDYWxsKHRoaXNPYmpl
Y3QsIHRoaXMuX2Z1bmN0aW9uTmFtZSwgYXJncywgcmVzdWx0LCB0aGlzLl9zdGFja1RyYWNlLCBh
dHRhY2htZW50cyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDE3LDYgKzQ1NCw5IEBAIENhbGwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXBsYXlSZXN1bHQ7CiAgICAg
ICAgIHRoaXMuX3N0YWNrVHJhY2UgPSByZXBsYXlhYmxlQ2FsbC5zdGFja1RyYWNlKCk7CiAgICAg
ICAgIHRoaXMuX2ZyZWV6ZWQgPSB0cnVlOworICAgICAgICB2YXIgYXR0YWNobWVudHMgPSByZXBs
YXlhYmxlQ2FsbC5hdHRhY2htZW50cygpOworICAgICAgICBpZiAoYXR0YWNobWVudHMpCisgICAg
ICAgICAgICB0aGlzLl9hdHRhY2htZW50cyA9IFR5cGVVdGlscy5jbG9uZU9iamVjdChhdHRhY2ht
ZW50cyk7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIH0KQEAgLTQyOCwxNCArNDY4LDE3
IEBAIENhbGwucHJvdG90eXBlID0gewogICogQHBhcmFtIHtBcnJheS48UmVwbGF5YWJsZVJlc291
cmNlfCo+fSBhcmdzCiAgKiBAcGFyYW0ge1JlcGxheWFibGVSZXNvdXJjZXwqfSByZXN1bHQKICAq
IEBwYXJhbSB7U3RhY2tUcmFjZX0gc3RhY2tUcmFjZQorICogQHBhcmFtIHtPYmplY3QuPHN0cmlu
ZywgT2JqZWN0Pn0gYXR0YWNobWVudHMKICAqLwotZnVuY3Rpb24gUmVwbGF5YWJsZUNhbGwodGhp
c09iamVjdCwgZnVuY3Rpb25OYW1lLCBhcmdzLCByZXN1bHQsIHN0YWNrVHJhY2UpCitmdW5jdGlv
biBSZXBsYXlhYmxlQ2FsbCh0aGlzT2JqZWN0LCBmdW5jdGlvbk5hbWUsIGFyZ3MsIHJlc3VsdCwg
c3RhY2tUcmFjZSwgYXR0YWNobWVudHMpCiB7CiAgICAgdGhpcy5fdGhpc09iamVjdCA9IHRoaXNP
YmplY3Q7CiAgICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lOwogICAgIHRoaXMu
X2FyZ3MgPSBhcmdzOwogICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDsKICAgICB0aGlzLl9zdGFj
a1RyYWNlID0gc3RhY2tUcmFjZTsKKyAgICBpZiAoYXR0YWNobWVudHMpCisgICAgICAgIHRoaXMu
X2F0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7CiB9CiAKIFJlcGxheWFibGVDYWxsLnByb3RvdHlw
ZSA9IHsKQEAgLTQ4OCw2ICs1MzEsMjMgQEAgUmVwbGF5YWJsZUNhbGwucHJvdG90eXBlID0gewog
ICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZywgT2JqZWN0
Pn0KKyAgICAgKi8KKyAgICBhdHRhY2htZW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2F0dGFjaG1lbnRzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICBh
dHRhY2htZW50OiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2F0
dGFjaG1lbnRzICYmIHRoaXMuX2F0dGFjaG1lbnRzW25hbWVdOworICAgIH0sCisKKyAgICAvKioK
ICAgICAgKiBAcGFyYW0ge0NhY2hlfSBjYWNoZQogICAgICAqIEByZXR1cm4ge0NhbGx9CiAgICAg
ICovCkBAIC03MjIsNyArNzgyLDkgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgcHJvcGVydHksIHsKICAgICAgICAg
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkT2JqZWN0W3Byb3BlcnR5XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSB3cmFwcGVkT2JqZWN0W3Byb3BlcnR5XTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChv
YmopOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlID8gcmVzb3VyY2Ug
OiBvYmo7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIHNldDog
c2VsZi5fd3JhcFByb3BlcnR5U2V0dGVyKHNlbGYsIHdyYXBwZWRPYmplY3QsIHByb3BlcnR5KSwK
ICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZQpAQCAtODA0LDEyICs4NjYsMTIg
QEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgbWFu
YWdlciA9IHJlc291cmNlLm1hbmFnZXIoKTsKICAgICAgICAgICAgIGlmICghbWFuYWdlciB8fCAh
bWFuYWdlci5jYXB0dXJpbmcoKSkgewotICAgICAgICAgICAgICAgIG9yaWdpbmFsT2JqZWN0W3By
b3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBvcmlnaW5hbE9iamVjdFtwcm9w
ZXJ0eU5hbWVdID0gUmVzb3VyY2Uud3JhcHBlZE9iamVjdCh2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFyIGFyZ3MgPSBbcHJvcGVy
dHlOYW1lLCB2YWx1ZV07CiAgICAgICAgICAgICBtYW5hZ2VyLmNhcHR1cmVBcmd1bWVudHMocmVz
b3VyY2UsIGFyZ3MpOwotICAgICAgICAgICAgb3JpZ2luYWxPYmplY3RbcHJvcGVydHlOYW1lXSA9
IHZhbHVlOworICAgICAgICAgICAgb3JpZ2luYWxPYmplY3RbcHJvcGVydHlOYW1lXSA9IFJlc291
cmNlLndyYXBwZWRPYmplY3QodmFsdWUpOwogICAgICAgICAgICAgdmFyIHN0YWNrVHJhY2UgPSBT
dGFja1RyYWNlLmNyZWF0ZSgxLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICAgICAgIHZhciBj
YWxsID0gbmV3IENhbGwocmVzb3VyY2UsICIiLCBhcmdzLCB1bmRlZmluZWQsIHN0YWNrVHJhY2Up
OwogICAgICAgICAgICAgbWFuYWdlci5jYXB0dXJlQ2FsbChjYWxsKTsKQEAgLTEzNTAsNyArMTQx
Miw3IEBAIGZ1bmN0aW9uIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlKGdsQ29udGV4dCwg
cmVwbGF5Q29udGV4dENhbGxiYWNrKQogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5
LjxzdHJpbmc+fQorICogQHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogV2ViR0xSZW5kZXJp
bmdDb250ZXh0UmVzb3VyY2UuR0xDYXBhYmlsaXRpZXMgPSBbCiAgICAgIkJMRU5EIiwKQEAgLTEz
NjYsNyArMTQyOCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLkdMQ2FwYWJpbGl0
aWVzID0gWwogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICog
QHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3Vy
Y2UuUGl4ZWxTdG9yZVBhcmFtZXRlcnMgPSBbCiAgICAgIlBBQ0tfQUxJR05NRU5UIiwKQEAgLTEz
NzgsNyArMTQ0MCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLlBpeGVsU3RvcmVQ
YXJhbWV0ZXJzID0gWwogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5LjxzdHJpbmc+
fQorICogQHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogV2ViR0xSZW5kZXJpbmdDb250ZXh0
UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzID0gWwogICAgICJBQ1RJVkVfVEVYVFVSRSIsCkBAIC0x
ODE5LDEyICsxODgxLDExIEBAIGZ1bmN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291
cmNlKGNvbnRleHQsIHJlcGxheUNvbnRleHRDYWxsYmFjaykKIHsKICAgICBSZXNvdXJjZS5jYWxs
KHRoaXMsIGNvbnRleHQpOwogICAgIHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IHJlcGxh
eUNvbnRleHRDYWxsYmFjazsKLSAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sgPSBbXTsKIH0KIAog
LyoqCiAgKiBAY29uc3QKLSAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqIEB0eXBlIHshQXJy
YXkuPHN0cmluZz59CiAgKi8KIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJp
YnV0ZVByb3BlcnRpZXMgPSBbCiAgICAgInN0cm9rZVN0eWxlIiwKQEAgLTE4NDEsMTIgKzE5MDIs
MTMgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGll
cyA9IFsKICAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwKICAgICAiZm9udCIsCiAgICAg
InRleHRBbGlnbiIsCi0gICAgInRleHRCYXNlbGluZSIKKyAgICAidGV4dEJhc2VsaW5lIiwKKyAg
ICAibGluZURhc2hPZmZzZXQiCiBdOwogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5
LjxzdHJpbmc+fQorICogQHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMgPSBbCiAgICAgImJlZ2luUGF0aCIsCkBA
IC0xODYyLDcgKzE5MjQsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5QYXRo
TWV0aG9kcyA9IFsKIAogLyoqCiAgKiBAY29uc3QKLSAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0K
KyAqIEB0eXBlIHshQXJyYXkuPHN0cmluZz59CiAgKi8KIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcyA9IFsKICAgICAic2NhbGUiLApA
QCAtMTg4MSw4ICsxOTQzLDEzIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICBfcG9wdWxhdGVSZXBsYXlhYmxlRGF0YTogZnVuY3Rpb24oZGF0YSwg
Y2FjaGUpCiAgICAgewogICAgICAgICBkYXRhLnJlcGxheUNvbnRleHRDYWxsYmFjayA9IHRoaXMu
X3JlcGxheUNvbnRleHRDYWxsYmFjazsKLSAgICAgICAgZGF0YS5hdHRyaWJ1dGVzU3RhY2sgPSB0
aGlzLl9hdHRyaWJ1dGVzU3RhY2suc2xpY2UoMCk7CiAgICAgICAgIGRhdGEuY3VycmVudEF0dHJp
YnV0ZXMgPSB0aGlzLl9jdXJyZW50QXR0cmlidXRlc1N0YXRlKCk7CisgICAgICAgIHZhciBjdHgg
PSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRhdGEu
b3JpZ2luYWxJbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGN0eC5jYW52YXMud2lk
dGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBnZXRJbWFnZURhdGEgZmFpbGVk
LiIsIGUpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTg5MywyMSArMTk2MCwy
NCBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAg
X2RvUmVwbGF5Q2FsbHM6IGZ1bmN0aW9uKGRhdGEsIGNhY2hlKQogICAgIHsKICAgICAgICAgdGhp
cy5fcmVwbGF5Q29udGV4dENhbGxiYWNrID0gZGF0YS5yZXBsYXlDb250ZXh0Q2FsbGJhY2s7Ci0g
ICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNTdGFjayA9IGRhdGEuYXR0cmlidXRlc1N0YWNrLnNsaWNl
KDApOwogCiAgICAgICAgIHZhciBjdHggPSBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHRoaXMuX3Jl
cGxheUNvbnRleHRDYWxsYmFjaygpKTsKICAgICAgICAgdGhpcy5zZXRXcmFwcGVkT2JqZWN0KGN0
eCk7CiAKLSAgICAgICAgdmFyIHNhdmVDYWxscyA9IDA7CisgICAgICAgIGlmIChkYXRhLm9yaWdp
bmFsSW1hZ2VEYXRhKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGN0eC5w
dXRJbWFnZURhdGEoZGF0YS5vcmlnaW5hbEltYWdlRGF0YSwgMCwgMCk7CisgICAgICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9S
RUFDSEVEOiBwdXRJbWFnZURhdGEgZmFpbGVkLiIsIGUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBkYXRhLmNhbGxzLmxlbmd0aDsgaSA8
IG47ICsraSkgewogICAgICAgICAgICAgdmFyIHJlcGxheWFibGVDYWxsID0gZGF0YS5jYWxsc1tp
XTsKLSAgICAgICAgICAgIGlmIChyZXBsYXlhYmxlQ2FsbC5mdW5jdGlvbk5hbWUoKSA9PT0gInNh
dmUiKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc2F2ZUNhbGxzIDwgdGhpcy5f
YXR0cmlidXRlc1N0YWNrLmxlbmd0aCwgIlNpemUgb2YgYXR0cmlidXRlcyBzdGFjayBpcyBsZXNz
IHRoYW4gJ3NhdmUnIGNhbGxzIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlBdHRyaWJ1
dGVzU3RhdGUodGhpcy5fYXR0cmlidXRlc1N0YWNrW3NhdmVDYWxscysrXSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAocmVwbGF5YWJsZUNhbGwuZnVuY3Rpb25OYW1lKCkgPT09ICJz
YXZlIikKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUF0dHJpYnV0ZXNTdGF0ZShyZXBsYXlh
YmxlQ2FsbC5hdHRhY2htZW50KCJjYW52YXMyZEF0dHJpYnV0ZXNTdGF0ZSIpKTsKICAgICAgICAg
ICAgIHRoaXMuX2NhbGxzLnB1c2gocmVwbGF5YWJsZUNhbGwucmVwbGF5KGNhY2hlKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoc2F2ZUNhbGxzID09PSB0aGlzLl9hdHRyaWJ1
dGVzU3RhY2subGVuZ3RoLCAiU2l6ZSBvZiBhdHRyaWJ1dGVzIHN0YWNrIHNob3VsZCBiZSBlcXVh
bCB0byB0aGUgbnVtYmVyIG9mICdzYXZlJyBjYWxscyIpOwogICAgICAgICB0aGlzLl9hcHBseUF0
dHJpYnV0ZXNTdGF0ZShkYXRhLmN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICB9LAogCkBAIC0xOTE2
LDcgKzE5ODYsMTEgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIHB1c2hDYWxsX3NldFRyYW5zZm9ybTogZnVuY3Rpb24oY2FsbCkK
ICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb2Jzb2xldGUgdHJhbnNmb3JtIG1hdHJp
eCBtZXRob2RzLgorICAgICAgICB2YXIgc2F2ZUNhbGxJbmRleCA9IHRoaXMuX2xhc3RJbmRleE9m
TWF0Y2hpbmdTYXZlQ2FsbCgpOworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9sYXN0SW5kZXhP
ZkFueUNhbGwoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMpOwor
ICAgICAgICBpbmRleCA9IE1hdGgubWF4KGluZGV4LCBzYXZlQ2FsbEluZGV4KTsKKyAgICAgICAg
aWYgKHRoaXMuX3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNv
dXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIGluZGV4ICsgMSkpCisgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJvbUxvZygpOwogICAgICAgICB0aGlzLnB1
c2hDYWxsKGNhbGwpOwogICAgIH0sCiAKQEAgLTE5MjUsNyArMTk5OSw5IEBAIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBwdXNoQ2Fs
bF9iZWdpblBhdGg6IGZ1bmN0aW9uKGNhbGwpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogUmVt
b3ZlIG9ic29sZXRlIHBhdGggbWV0aG9kcy4KKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fbGFz
dEluZGV4T2ZBbnlDYWxsKFsiY2xpcCJdKTsKKyAgICAgICAgaWYgKHRoaXMuX3JlbW92ZUNhbGxz
RnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5QYXRoTWV0aG9kcywgaW5k
ZXggKyAxKSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbE9ic29sZXRlQ2FsbHNGcm9tTG9n
KCk7CiAgICAgICAgIHRoaXMucHVzaENhbGwoY2FsbCk7CiAgICAgfSwKIApAQCAtMTkzNCw3ICsy
MDEwLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIHB1c2hDYWxsX3NhdmU6IGZ1bmN0aW9uKGNhbGwpCiAgICAgewotICAgICAg
ICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50QXR0cmlidXRlc1N0YXRl
KCkpOworICAgICAgICBjYWxsLnNldEF0dGFjaG1lbnQoImNhbnZhczJkQXR0cmlidXRlc1N0YXRl
IiwgdGhpcy5fY3VycmVudEF0dHJpYnV0ZXNTdGF0ZSgpKTsKICAgICAgICAgdGhpcy5wdXNoQ2Fs
bChjYWxsKTsKICAgICB9LAogCkBAIC0xOTQzLDkgKzIwMTksMTM4IEBAIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBwdXNoQ2FsbF9y
ZXN0b3JlOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAgICAgICAgdGhpcy5fYXR0cmlidXRlc1N0
YWNrLnBvcCgpOwotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIGNsaXAsc2F2ZSBt
ZXRob2RzLgotICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOworICAgICAgICB2YXIgbGFzdElu
ZGV4T2ZTYXZlID0gdGhpcy5fbGFzdEluZGV4T2ZNYXRjaGluZ1NhdmVDYWxsKCk7CisgICAgICAg
IGlmIChsYXN0SW5kZXhPZlNhdmUgPT09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLl9jYWxsc1tsYXN0SW5kZXhPZlNhdmVdLnNldEF0dGFjaG1lbnQoImNhbnZhczJkQXR0
cmlidXRlc1N0YXRlIiwgbnVsbCk7IC8vIE5vIGxvbmdlciBuZWVkZWQsIGZyZWUgbWVtb3J5Lgor
CisgICAgICAgIHZhciBtb2RpZmllZCA9IGZhbHNlOworICAgICAgICBpZiAodGhpcy5fcmVtb3Zl
Q2FsbHNGcm9tTG9nKFsiY2xpcCJdLCBsYXN0SW5kZXhPZlNhdmUgKyAxKSkKKyAgICAgICAgICAg
IG1vZGlmaWVkID0gdHJ1ZTsKKworICAgICAgICB2YXIgbGFzdEluZGV4T2ZBbnlQYXRoTWV0aG9k
ID0gdGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291
cmNlLlBhdGhNZXRob2RzKTsKKyAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5tYXgobGFzdEluZGV4
T2ZTYXZlLCBsYXN0SW5kZXhPZkFueVBhdGhNZXRob2QpOworICAgICAgICBpZiAodGhpcy5fcmVt
b3ZlQ2FsbHNGcm9tTG9nKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlRyYW5zZm9y
bWF0aW9uTWF0cml4TWV0aG9kcywgaW5kZXggKyAxKSkKKyAgICAgICAgICAgIG1vZGlmaWVkID0g
dHJ1ZTsKKworICAgICAgICBpZiAobW9kaWZpZWQpCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVB
bGxPYnNvbGV0ZUNhbGxzRnJvbUxvZygpOworCisgICAgICAgIHZhciBsYXN0Q2FsbCA9IHRoaXMu
X2NhbGxzW3RoaXMuX2NhbGxzLmxlbmd0aCAtIDFdOworICAgICAgICBpZiAobGFzdENhbGwgJiYg
bGFzdENhbGwuZnVuY3Rpb25OYW1lKCkgPT09ICJzYXZlIikKKyAgICAgICAgICAgIHRoaXMuX2Nh
bGxzLnBvcCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGZyb21JbmRleAor
ICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBfbGFzdEluZGV4T2ZNYXRjaGlu
Z1NhdmVDYWxsOiBmdW5jdGlvbihmcm9tSW5kZXgpCisgICAgeworICAgICAgICBpZiAodHlwZW9m
IGZyb21JbmRleCAhPT0gIm51bWJlciIpCisgICAgICAgICAgICBmcm9tSW5kZXggPSB0aGlzLl9j
YWxscy5sZW5ndGggLSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcm9tSW5kZXggPSBN
YXRoLm1pbihmcm9tSW5kZXgsIHRoaXMuX2NhbGxzLmxlbmd0aCAtIDEpOworICAgICAgICB2YXIg
c3RhY2tEZXB0aCA9IDE7CisgICAgICAgIGZvciAodmFyIGkgPSBmcm9tSW5kZXg7IGkgPj0gMDsg
LS1pKSB7CisgICAgICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0gdGhpcy5fY2FsbHNbaV0uZnVu
Y3Rpb25OYW1lKCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25OYW1lID09PSAicmVzdG9yZSIp
CisgICAgICAgICAgICAgICAgKytzdGFja0RlcHRoOworICAgICAgICAgICAgZWxzZSBpZiAoZnVu
Y3Rpb25OYW1lID09PSAic2F2ZSIpIHsKKyAgICAgICAgICAgICAgICAtLXN0YWNrRGVwdGg7Cisg
ICAgICAgICAgICAgICAgaWYgKCFzdGFja0RlcHRoKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUFycmF5LjxzdHJpbmc+fSBmdW5jdGlvbk5h
bWVzCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBmcm9tSW5kZXgKKyAgICAgKiBAcmV0dXJuIHtu
dW1iZXJ9CisgICAgICovCisgICAgX2xhc3RJbmRleE9mQW55Q2FsbDogZnVuY3Rpb24oZnVuY3Rp
b25OYW1lcywgZnJvbUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiBmcm9tSW5kZXgg
IT09ICJudW1iZXIiKQorICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhpcy5fY2FsbHMubGVuZ3Ro
IC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJvbUluZGV4ID0gTWF0aC5taW4oZnJv
bUluZGV4LCB0aGlzLl9jYWxscy5sZW5ndGggLSAxKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IGZy
b21JbmRleDsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbk5hbWVzLmlu
ZGV4T2YodGhpcy5fY2FsbHNbaV0uZnVuY3Rpb25OYW1lKCkpICE9PSAtMSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfSwKKwor
ICAgIF9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJvbUxvZzogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgLy8gUmVtb3ZlIGFsbCBQQVRIIG1ldGhvZHMgYmV0d2VlbiBjbGlwKCkgYW5kIGJlZ2lu
UGF0aCgpIGNhbGxzLgorICAgICAgICB2YXIgbGFzdEluZGV4T2ZCZWdpblBhdGggPSB0aGlzLl9s
YXN0SW5kZXhPZkFueUNhbGwoWyJiZWdpblBhdGgiXSk7CisgICAgICAgIHdoaWxlIChsYXN0SW5k
ZXhPZkJlZ2luUGF0aCAhPT0gLTEpIHsKKyAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2xh
c3RJbmRleE9mQW55Q2FsbChbImNsaXAiXSwgbGFzdEluZGV4T2ZCZWdpblBhdGggLSAxKTsKKyAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRSZXNvdXJjZS5QYXRoTWV0aG9kcywgaW5kZXggKyAxLCBsYXN0SW5kZXhPZkJlZ2luUGF0aCk7
CisgICAgICAgICAgICBsYXN0SW5kZXhPZkJlZ2luUGF0aCA9IHRoaXMuX2xhc3RJbmRleE9mQW55
Q2FsbChbImJlZ2luUGF0aCJdLCBpbmRleCAtIDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
UmVtb3ZlIGFsbCBUUkFTRk9STUFUSU9OIE1BVFJJWCBtZXRob2RzIGJlZm9yZSByZXN0b3JlKCkg
b3Igc2V0VHJhbnNmb3JtKCkgYnV0IGFmdGVyIGFueSBQQVRIIG9yIGNvcnJlc3BvbmRpbmcgc2F2
ZSgpIG1ldGhvZC4KKyAgICAgICAgdmFyIGxhc3RSZXN0b3JlID0gdGhpcy5fbGFzdEluZGV4T2ZB
bnlDYWxsKFsicmVzdG9yZSIsICJzZXRUcmFuc2Zvcm0iXSk7CisgICAgICAgIHdoaWxlIChsYXN0
UmVzdG9yZSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHZhciBzYXZlQ2FsbEluZGV4ID0gdGhpcy5f
bGFzdEluZGV4T2ZNYXRjaGluZ1NhdmVDYWxsKGxhc3RSZXN0b3JlIC0gMSk7CisgICAgICAgICAg
ICB2YXIgaW5kZXggPSB0aGlzLl9sYXN0SW5kZXhPZkFueUNhbGwoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMsIGxhc3RSZXN0b3JlIC0gMSk7CisgICAgICAgICAg
ICBpbmRleCA9IE1hdGgubWF4KGluZGV4LCBzYXZlQ2FsbEluZGV4KTsKKyAgICAgICAgICAgIHRo
aXMuX3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5U
cmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIGluZGV4ICsgMSwgbGFzdFJlc3RvcmUpOworICAg
ICAgICAgICAgbGFzdFJlc3RvcmUgPSB0aGlzLl9sYXN0SW5kZXhPZkFueUNhbGwoWyJyZXN0b3Jl
IiwgInNldFRyYW5zZm9ybSJdLCBpbmRleCAtIDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
UmVtb3ZlIGFsbCBzYXZlLXJlc3RvcmUgY29uc2VjdXRpdmUgcGFpcnMuCisgICAgICAgIHZhciBy
ZXN0b3JlQ2FsbHMgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fY2FsbHMubGVuZ3Ro
IC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSB0aGlz
Ll9jYWxsc1tpXS5mdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbk5hbWUg
PT09ICJyZXN0b3JlIikgeworICAgICAgICAgICAgICAgICsrcmVzdG9yZUNhbGxzOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZ1bmN0
aW9uTmFtZSA9PT0gInNhdmUiICYmIHJlc3RvcmVDYWxscyA+IDApIHsKKyAgICAgICAgICAgICAg
ICB2YXIgc2F2ZUNhbGxJbmRleCA9IGk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkg
LSAxOyBqID49IDAgJiYgaSAtIGogPCByZXN0b3JlQ2FsbHM7IC0taikgeworICAgICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5fY2FsbHNbal0uZnVuY3Rpb25OYW1lKCkgPT09ICJzYXZlIikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNhdmVDYWxsSW5kZXggPSBqOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgdGhpcy5fY2FsbHMuc3BsaWNlKHNhdmVDYWxsSW5kZXgsIChp
IC0gc2F2ZUNhbGxJbmRleCArIDEpICogMik7CisgICAgICAgICAgICAgICAgaSA9IHNhdmVDYWxs
SW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN0b3JlQ2FsbHMgPSAwOworICAg
ICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUFycmF5LjxzdHJpbmc+
fSBmdW5jdGlvbk5hbWVzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleAorICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0gdG9JbmRleAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAg
ICovCisgICAgX3JlbW92ZUNhbGxzRnJvbUxvZzogZnVuY3Rpb24oZnVuY3Rpb25OYW1lcywgZnJv
bUluZGV4LCB0b0luZGV4KQorICAgIHsKKyAgICAgICAgdmFyIG9sZExlbmd0aCA9IHRoaXMuX2Nh
bGxzLmxlbmd0aDsKKyAgICAgICAgaWYgKHR5cGVvZiB0b0luZGV4ICE9PSAibnVtYmVyIikKKyAg
ICAgICAgICAgIHRvSW5kZXggPSBvbGRMZW5ndGg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRvSW5kZXggPSBNYXRoLm1pbih0b0luZGV4LCBvbGRMZW5ndGgpOworICAgICAgICB2YXIgbmV3
SW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXgsIG9sZExlbmd0aCk7CisgICAgICAgIGZvciAodmFy
IGkgPSBuZXdJbmRleDsgaSA8IHRvSW5kZXg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNhbGwg
PSB0aGlzLl9jYWxsc1tpXTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbk5hbWVzLmluZGV4T2Yo
Y2FsbC5mdW5jdGlvbk5hbWUoKSkgPT09IC0xKQorICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxz
W25ld0luZGV4KytdID0gY2FsbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3SW5kZXggPj0g
dG9JbmRleCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGhpcy5fY2FsbHMu
c3BsaWNlKG5ld0luZGV4LCB0b0luZGV4IC0gbmV3SW5kZXgpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xOTU1LDIxICsyMTYwLDMwIEBAIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBj
dHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKICAgICAgICAgdmFyIHN0YXRlID0ge307CisgICAg
ICAgIHN0YXRlLmF0dHJpYnV0ZXMgPSB7fTsKICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKGF0dHJpYnV0
ZSkgewotICAgICAgICAgICAgc3RhdGVbYXR0cmlidXRlXSA9IGN0eFthdHRyaWJ1dGVdOworICAg
ICAgICAgICAgc3RhdGUuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gY3R4W2F0dHJpYnV0ZV07CiAg
ICAgICAgIH0pOworICAgICAgICBpZiAoY3R4LmdldExpbmVEYXNoKQorICAgICAgICAgICAgc3Rh
dGUubGluZURhc2ggPSBjdHguZ2V0TGluZURhc2goKTsKICAgICAgICAgcmV0dXJuIHN0YXRlOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0geyFPYmplY3QuPHN0cmluZywgc3RyaW5n
Pn0gc3RhdGUKKyAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCBzdHJpbmc+PX0gc3RhdGUK
ICAgICAgKi8KICAgICBfYXBwbHlBdHRyaWJ1dGVzU3RhdGU6IGZ1bmN0aW9uKHN0YXRlKQogICAg
IHsKKyAgICAgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFy
IGN0eCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOwotICAgICAgICBPYmplY3Qua2V5cyhzdGF0ZSku
Zm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGUpIHsKLSAgICAgICAgICAgIGN0eFthdHRyaWJ1dGVd
ID0gc3RhdGVbYXR0cmlidXRlXTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGF0ZS5hdHRy
aWJ1dGVzKSB7CisgICAgICAgICAgICBPYmplY3Qua2V5cyhzdGF0ZS5hdHRyaWJ1dGVzKS5mb3JF
YWNoKGZ1bmN0aW9uKGF0dHJpYnV0ZSkgeworICAgICAgICAgICAgICAgIGN0eFthdHRyaWJ1dGVd
ID0gc3RhdGUuYXR0cmlidXRlc1thdHRyaWJ1dGVdOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGN0eC5zZXRMaW5lRGFzaCkKKyAgICAgICAgICAgIGN0eC5zZXRMaW5l
RGFzaChzdGF0ZS5saW5lRGFzaCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTk4Miw2ICsyMTk2
LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnMgPSBP
YmplY3QuY3JlYXRlKG51bGwpOwogCisgICAgICAgICAgICAvLyBGSVhNRTogU2F2ZSBzdGF0ZSBv
ZiB0aGUgQ2FudmFzR3JhZGllbnQgb2JqZWN0cy4KICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNb
ImNyZWF0ZUxpbmVhckdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VG
YWN0b3J5TWV0aG9kKFJlc291cmNlKTsKICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0
ZVJhZGlhbEdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5
TWV0aG9kKFJlc291cmNlKTsKICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVBhdHRl
cm4iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoUmVzb3Vy
Y2UpOwpAQCAtMjAwNiwxNCArMjIyMSwxMiBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRS
ZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRo
b2ROYW1lKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1lID09PSAic2V0
VHJhbnNmb3JtIiA/IHRoaXMucHVzaENhbGxfc2V0VHJhbnNmb3JtIDogbnVsbDsKLSAgICAgICAg
ICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3Vy
Y2UuUGF0aE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1lID09PSAiYmVnaW5QYXRoIiA/IHRoaXMucHVzaENh
bGxfYmVnaW5QYXRoIDogbnVsbDsKLSAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBG
dW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKTsKLSAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMCwgbWV0aG9kTmFtZTsgbWV0aG9kTmFtZSA9IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kc1tpXTsgKytpKQor
ICAgICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKG1ldGhvZE5hbWUsIG1l
dGhvZE5hbWUgPT09ICJzZXRUcmFuc2Zvcm0iID8gdGhpcy5wdXNoQ2FsbF9zZXRUcmFuc2Zvcm0g
OiBudWxsKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBtZXRob2ROYW1lOyBtZXRob2RO
YW1lID0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHNbaV07ICsr
aSkKKyAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1l
LCBtZXRob2ROYW1lID09PSAiYmVnaW5QYXRoIiA/IHRoaXMucHVzaENhbGxfYmVnaW5QYXRoIDog
bnVsbCk7CisKICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKCJzYXZlIiwg
dGhpcy5wdXNoQ2FsbF9zYXZlKTsKICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0
aW9uKCJyZXN0b3JlIiwgdGhpcy5wdXNoQ2FsbF9yZXN0b3JlKTsKICAgICAgICAgICAgIHN0YXRl
TW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKCJjbGlwIik7CkBAIC0yNDAxLDIwICsyNjE0LDEwIEBAIElu
amVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY29uc3RydWN0Q2FudmFz
MkRSZXBsYXlDb250ZXh0OiBmdW5jdGlvbihvcmlnaW5hbENvbnRleHQpCiAgICAgewotICAgICAg
ICB2YXIgcmVwbGF5Q29udGV4dCA9IG9yaWdpbmFsQ29udGV4dFsiX19yZXBsYXlDb250ZXh0Il07
Ci0gICAgICAgIGlmICghcmVwbGF5Q29udGV4dCkgewotICAgICAgICAgICAgdmFyIGNhbnZhcyA9
IG9yaWdpbmFsQ29udGV4dC5jYW52YXMuY2xvbmVOb2RlKHRydWUpOwotICAgICAgICAgICAgcmVw
bGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyBSZXNv
dXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpKTsKLSAgICAgICAgICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcmlnaW5hbENvbnRleHQsICJfX3JlcGxheUNvbnRleHQi
LCB7Ci0gICAgICAgICAgICAgICAgdmFsdWU6IHJlcGxheUNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgd3JpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAot
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB0aGlzLl9yZXBsYXlDb250ZXh0ID0gcmVwbGF5Q29udGV4dDsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGVhciB0aGUgY2FudmFzLgotICAgICAgICB9
CisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyAyRCBjb250ZXh0IGVhY2ggdGltZSB0byBzdGFydCB3
aXRoIGFuIGVtcHR5IGNvbnRleHQgZHJhd2luZyBzdGF0ZSBzdGFjayAobWFuYWdlZCBieSBzYXZl
KCkgYW5kIHJlc3RvcmUoKSBtZXRob2RzKS4KKyAgICAgICAgdmFyIGNhbnZhcyA9IG9yaWdpbmFs
Q29udGV4dC5jYW52YXMuY2xvbmVOb2RlKHRydWUpOworICAgICAgICB2YXIgcmVwbGF5Q29udGV4
dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyBSZXNvdXJjZS53cmFw
cGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpKTsKKyAgICAgICAgdGhpcy5fcmVwbGF5
Q29udGV4dCA9IHJlcGxheUNvbnRleHQ7CiAgICAgICAgIHJldHVybiByZXBsYXlDb250ZXh0Owog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlY2ZmNTA4NmUwMzA2YjQwODQxYWY2ZmU4OTI1ZmQ0MGVlODNmMDk0
Li43YjU2NTQ1OGE2YmNjMDFiOTIxY2MwMzJlODk1ZjUyZTRiODYwZDIzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTItMTAtMzAgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZhc10gZG8gbm90IGJsb3cgdXAgdGhl
IGNhcHR1cmluZyBsb2cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRlc3QgZm9yIHRyYWNrIENhbnZhcyAyRCBBUEkgY2hhbmdlcywgYXMgd2Vs
bCBhcyBiYXNpY3MgZm9yIHRoZSBjYXB0dXJpbmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJv
ZmlsZXIvY2FudmFzLXByb2ZpbGVyLXRlc3QuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcy4KKyAgICAgICAg
KGluaXRpYWxpemVfQ2FudmFzV2ViR0xQcm9maWxlclRlc3QuSW5zcGVjdG9yVGVzdC5lbmFibGVD
YW52YXNBZ2VudCk6CisgICAgICAgIChpbml0aWFsaXplX0NhbnZhc1dlYkdMUHJvZmlsZXJUZXN0
KToKKyAgICAgICAgKGNyZWF0ZVdlYkdMQ29udGV4dCk6CisgICAgICAgIChjcmVhdGVDYW52YXMy
RENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMy
ZC1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9w
cm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1hcGktY2hhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVy
aW5nLWJhc2ljcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9m
aWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1n
ZXQtZXJyb3IuaHRtbDoKKwogMjAxMi0xMC0yOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBUZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMtcHJvZmlsZXIt
dGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMtcHJvZmlsZXIt
dGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xM2Y0NDY4NGE5ODFlNjNkZWM5ZWZhNzAxOGU5NzI4NzA2NzQ5
ZjVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Nh
bnZhcy1wcm9maWxlci10ZXN0LmpzCkBAIC0wLDAgKzEsNDMgQEAKK3ZhciBpbml0aWFsaXplX0Nh
bnZhc1dlYkdMUHJvZmlsZXJUZXN0ID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3QuZW5h
YmxlQ2FudmFzQWdlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjYW52
YXNBZ2VudEVuYWJsZWQoZXJyb3IpCisgICAgeworICAgICAgICBpZiAoIWVycm9yKQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjaykoKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVEIHRvIGVuYWJsZSBD
YW52YXNBZ2VudDogIiArIGVycm9yKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgQ2FudmFzQWdl
bnQuZW5hYmxlKGNhbnZhc0FnZW50RW5hYmxlZCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXhjZXB0aW9uIHdoaWxlIGVuYWJsaW5nIENhbnZh
c0FnZW50IiwgZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
fQorfTsKKworfTsKKworZnVuY3Rpb24gY3JlYXRlV2ViR0xDb250ZXh0KG9wdF9jYW52YXMpCit7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKworICAgIHZhciBjYW52YXMg
PSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHZh
ciBjb250ZXh0SWRzID0gWyJleHBlcmltZW50YWwtd2ViZ2wiLCAid2Via2l0LTNkIiwgIjNkIl07
CisgICAgZm9yICh2YXIgaSA9IDAsIGNvbnRleHRJZDsgY29udGV4dElkID0gY29udGV4dElkc1tp
XTsgKytpKSB7CisgICAgICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRJZCk7
CisgICAgICAgIGlmIChnbCkKKyAgICAgICAgICAgIHJldHVybiBnbDsKKyAgICB9CisgICAgcmV0
dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUNhbnZhczJEQ29udGV4dChvcHRfY2FudmFz
KQoreworICAgIHZhciBjYW52YXMgPSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOworICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMy
ZC1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvY2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdjOTYyZWJhODQ4MzFmNjA1M2FhNDY3Y2JhNDFlMzViNTMyOGI5ZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtYXBp
LWNoYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCB0byBjYXRjaCBDYW52
YXMgMkQgQVBJIGNoYW5nZXMuIElmIHRoaXMgdGVzdCBzaG91bGQgZXZlciBmYWlsLCB3ZSBzaG91
bGQgcmUtZXhhbWluZSB0aGUgQ2FudmFzIDJEIHN0YXRlIHNhdmluZy9yZXN0b3JpbmcgbG9naWMg
aW4gdGhlIEluamVjdGVkU2NyaXB0TW9kdWxlIHRvIGluY2x1ZGUgYW55IGxhdGVzdCBjaGFuZ2Vz
IHRvIHRoZSBBUEkuCisKK05ldyBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMgdGhhdCBzaG91bGQg
YmUgbWFudWFsbHkgZXhhbWluZWQgKHNob3VsZCBiZSBlbXB0eSB0byBwYXNzIHRoZSB0ZXN0KToK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2Nh
bnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
Y2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWVmNjdlMjA1
MjM4YWJhMjgzZmJlMTQ0MzRhMTEzOWJiOGY0MGU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0
bWwKQEAgLTAsMCArMSwxNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KKwordmFyIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlID0ge307CisKKy8q
KgorICogQGNvbnN0CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMgPSBbCisgICAgInN0cm9r
ZVN0eWxlIiwKKyAgICAiZmlsbFN0eWxlIiwKKyAgICAiZ2xvYmFsQWxwaGEiLAorICAgICJsaW5l
V2lkdGgiLAorICAgICJsaW5lQ2FwIiwKKyAgICAibGluZUpvaW4iLAorICAgICJtaXRlckxpbWl0
IiwKKyAgICAic2hhZG93T2Zmc2V0WCIsCisgICAgInNoYWRvd09mZnNldFkiLAorICAgICJzaGFk
b3dCbHVyIiwKKyAgICAic2hhZG93Q29sb3IiLAorICAgICJnbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24iLAorICAgICJmb250IiwKKyAgICAidGV4dEFsaWduIiwKKyAgICAidGV4dEJhc2VsaW5lIiwK
KyAgICAibGluZURhc2hPZmZzZXQiCitdOworCisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0Fy
cmF5LjxzdHJpbmc+fQorICovCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5QYXRo
TWV0aG9kcyA9IFsKKyAgICAiYmVnaW5QYXRoIiwKKyAgICAibW92ZVRvIiwKKyAgICAiY2xvc2VQ
YXRoIiwKKyAgICAibGluZVRvIiwKKyAgICAicXVhZHJhdGljQ3VydmVUbyIsCisgICAgImJlemll
ckN1cnZlVG8iLAorICAgICJhcmNUbyIsCisgICAgImFyYyIsCisgICAgInJlY3QiCitdOworCisv
KioKKyAqIEBjb25zdAorICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICovCitDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMgPSBbCisg
ICAgInNjYWxlIiwKKyAgICAicm90YXRlIiwKKyAgICAidHJhbnNsYXRlIiwKKyAgICAidHJhbnNm
b3JtIiwKKyAgICAic2V0VHJhbnNmb3JtIgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBl
IHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2Uu
SWdub3JlUHJvcGVydGllcyA9IFsKKyAgICAiY2FudmFzIiwKKyAgICAiY3JlYXRlTGluZWFyR3Jh
ZGllbnQiLAorICAgICJjcmVhdGVSYWRpYWxHcmFkaWVudCIsCisgICAgImNyZWF0ZVBhdHRlcm4i
LAorICAgICJzYXZlIiwKKyAgICAicmVzdG9yZSIsCisgICAgImNsaXAiLAorICAgICJnZXRMaW5l
RGFzaCIsCisgICAgInNldExpbmVEYXNoIiwKKyAgICAvLyBJZ25vcmUgdGhlIHByb3BlcnRpZXMg
YmVsb3cuCisgICAgImNsZWFyUmVjdCIsCisgICAgImNsZWFyU2hhZG93IiwKKyAgICAiY3JlYXRl
SW1hZ2VEYXRhIiwKKyAgICAiZHJhd0ltYWdlIiwKKyAgICAiZHJhd0ltYWdlRnJvbVJlY3QiLAor
ICAgICJmaWxsIiwKKyAgICAiZmlsbFJlY3QiLAorICAgICJmaWxsVGV4dCIsCisgICAgImdldElt
YWdlRGF0YSIsCisgICAgImlzUG9pbnRJblBhdGgiLAorICAgICJtZWFzdXJlVGV4dCIsCisgICAg
InB1dEltYWdlRGF0YSIsCisgICAgInNldEFscGhhIiwKKyAgICAic2V0Q29tcG9zaXRlT3BlcmF0
aW9uIiwKKyAgICAic2V0RmlsbENvbG9yIiwKKyAgICAic2V0TGluZUNhcCIsCisgICAgInNldExp
bmVKb2luIiwKKyAgICAic2V0TGluZVdpZHRoIiwKKyAgICAic2V0TWl0ZXJMaW1pdCIsCisgICAg
InNldFNoYWRvdyIsCisgICAgInNldFN0cm9rZUNvbG9yIiwKKyAgICAic3Ryb2tlIiwKKyAgICAi
c3Ryb2tlUmVjdCIsCisgICAgInN0cm9rZVRleHQiLAorICAgICJ3ZWJraXRCYWNraW5nU3RvcmVQ
aXhlbFJhdGlvIiwKKyAgICAid2Via2l0R2V0SW1hZ2VEYXRhSEQiLAorICAgICJ3ZWJraXRJbWFn
ZVNtb290aGluZ0VuYWJsZWQiLAorICAgICJ3ZWJraXRQdXRJbWFnZURhdGFIRCIKK107CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKKyAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAg
aWYgKCFjdHgpIHsKKyAgICAgICAgb3V0cHV0KCJFUlJPUjogQ291bGQgbm90IGNyZWF0ZSBjYW52
YXMgMkQgY29udGV4dC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBwcm9w
ZXJ0eU5hbWVzID0gW107CisgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gY3R4KQorICAgICAgICBw
cm9wZXJ0eU5hbWVzLnB1c2gocHJvcGVydHkpOworICAgIHByb3BlcnR5TmFtZXMuc29ydCgpOwor
CisgICAgb3V0cHV0KCJOZXcgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJl
IG1hbnVhbGx5IGV4YW1pbmVkIChzaG91bGQgYmUgZW1wdHkgdG8gcGFzcyB0aGUgdGVzdCk6Iik7
CisgICAgdmFyIHRyYWNrZWRQcm9wZXJ0aWVzID0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVz
b3VyY2UuQXR0cmlidXRlUHJvcGVydGllcy5jb25jYXQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
UmVzb3VyY2UuUGF0aE1ldGhvZHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlRy
YW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3Vy
Y2UuSWdub3JlUHJvcGVydGllcyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0eU5h
bWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnR5TmFtZXNb
aV07CisgICAgICAgIGlmICh0cmFja2VkUHJvcGVydGllcy5pbmRleE9mKHByb3BlcnR5KSAhPT0g
LTEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgb3V0cHV0KHByb3BlcnR5KTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHRlc3QoKTsKKyAg
ICB9IGZpbmFsbHkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0IHRvIGNhdGNoIENhbnZhcyAy
RCBBUEkgY2hhbmdlcy4KK0lmIHRoaXMgdGVzdCBzaG91bGQgZXZlciBmYWlsLCB3ZSBzaG91bGQg
cmUtZXhhbWluZSB0aGUgQ2FudmFzIDJEIHN0YXRlIHNhdmluZy9yZXN0b3JpbmcgbG9naWMgaW4g
dGhlCitJbmplY3RlZFNjcmlwdE1vZHVsZSB0byBpbmNsdWRlIGFueSBsYXRlc3QgY2hhbmdlcyB0
byB0aGUgQVBJLgorCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVy
aW5nLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
Y2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODI0YWY5ZTg0YTk3NWJiMTY3NGE5N2JkNDRkNWFmNWYzZDU1ZmE0NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9j
YW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1Rlc3RzIENhbnZhcyAyRCBjYXB0dXJpbmcgYmFzaWNzLgorCitCdWcgMTAwNzUyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFz
MmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZGZjNGQ3YTllM2M5ODQ5YzdiN2M3ZWRiYmE2OTM4ZjdmOTZiN2EyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJk
L2NhbnZhczJkLXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MuaHRtbApAQCAtMCwwICsxLDI5MiBA
QAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9jYW52YXMtcHJvZmlsZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgY3R4
OwordmFyIHJhd0N0eDsKK3ZhciBjdHhSZXNvdXJjZTsKKwordmFyIHNhbXBsZUF0dHJpYnV0ZXMx
ID0geworICAgICJzdHJva2VTdHlsZSI6ICIjMDAwMDAxIiwKKyAgICAiZmlsbFN0eWxlIjogIiMw
MDAwMDIiLAorICAgICJnbG9iYWxBbHBoYSI6IDAuNSwKKyAgICAibGluZVdpZHRoIjogMiwKKyAg
ICAibGluZUNhcCI6ICJyb3VuZCIsCisgICAgImxpbmVKb2luIjogImJldmVsIiwKKyAgICAibWl0
ZXJMaW1pdCI6IDEyLAorICAgICJzaGFkb3dPZmZzZXRYIjogMSwKKyAgICAic2hhZG93T2Zmc2V0
WSI6IDIsCisgICAgInNoYWRvd0JsdXIiOiAzLAorICAgICJzaGFkb3dDb2xvciI6ICIjMDAwMDAz
IiwKKyAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIjogInNvdXJjZS1pbiIsCisgICAgImZv
bnQiOiAiMTJweCBzYW5zLXNlcmlmIiwKKyAgICAidGV4dEFsaWduIjogImVuZCIsCisgICAgInRl
eHRCYXNlbGluZSI6ICJ0b3AiLAorICAgICJsaW5lRGFzaE9mZnNldCI6IDEKK307CisKK3ZhciBz
YW1wbGVBdHRyaWJ1dGVzMiA9IHsKKyAgICAic3Ryb2tlU3R5bGUiOiAiIzEwMDAwMSIsCisgICAg
ImZpbGxTdHlsZSI6ICIjMTAwMDAyIiwKKyAgICAiZ2xvYmFsQWxwaGEiOiAwLAorICAgICJsaW5l
V2lkdGgiOiAzLAorICAgICJsaW5lQ2FwIjogInNxdWFyZSIsCisgICAgImxpbmVKb2luIjogInJv
dW5kIiwKKyAgICAibWl0ZXJMaW1pdCI6IDExLAorICAgICJzaGFkb3dPZmZzZXRYIjogMywKKyAg
ICAic2hhZG93T2Zmc2V0WSI6IDQsCisgICAgInNoYWRvd0JsdXIiOiAyLAorICAgICJzaGFkb3dD
b2xvciI6ICIjMTAwMDAzIiwKKyAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIjogInhvciIs
CisgICAgImZvbnQiOiAiMTNweCBzYW5zLXNlcmlmIiwKKyAgICAidGV4dEFsaWduIjogImxlZnQi
LAorICAgICJ0ZXh0QmFzZWxpbmUiOiAibWlkZGxlIiwKKyAgICAibGluZURhc2hPZmZzZXQiOiAy
Cit9OworCitmdW5jdGlvbiBhc3NpZ25BdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCit7CisgICAgZm9y
ICh2YXIgYXR0cmlidXRlIGluIGF0dHJpYnV0ZXMpCisgICAgICAgIGN0eFthdHRyaWJ1dGVdID0g
YXR0cmlidXRlc1thdHRyaWJ1dGVdOworfQorCitmdW5jdGlvbiBhc3NlcnRBdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMpCit7CisgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGF0dHJpYnV0ZXMpCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGN0eFthdHRyaWJ1dGVdID09PSBhdHRyaWJ1dGVzW2F0dHJpYnV0
ZV0sICJFeHBlY3RlZCB2YWx1ZSBmb3IgYXR0cmlidXRlICIgKyBhdHRyaWJ1dGUgKyAiOiAiICsg
YXR0cmlidXRlc1thdHRyaWJ1dGVdICsgIiwgYnV0IHdhczogIiArIGN0eFthdHRyaWJ1dGVdKTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKGV4cGVjdGVkKQoreworICAg
IHZhciBjYWxscyA9IGN0eFJlc291cmNlLmNhbGxzKCk7CisgICAgaWYgKGNhbGxzLmxlbmd0aCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgdmFyIG5hbWVzID0gW107CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAgJiYgY2FsbHNbaV07ICsraSkKKyAgICAgICAgICAgIG5hbWVzLnB1c2go
Y2FsbHNbaV0uZnVuY3Rpb25OYW1lKCkpOworICAgICAgICBjb25zb2xlLmVycm9yKCJFeHBlY3Rl
ZCBzaXplIG9mIHRoZSAyRCBjb250ZXh0IGNhbGwgbG9nOiAiICsgZXhwZWN0ZWQgKyAiLCBidXQg
d2FzOiAiICsgY2FsbHMubGVuZ3RoICsgIiwgbmFtZXM6ICIgKyBuYW1lcyk7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0RHJhd2luZ0F0dHJpYnV0ZXMoKQoreworICAgIGFzc2VydE51bWJlck9m
Q2FsbHNJbkxvZygwKTsKKyAgICBhc3NpZ25BdHRyaWJ1dGVzKHNhbXBsZUF0dHJpYnV0ZXMxKTsK
KyAgICBhc3NlcnRBdHRyaWJ1dGVzKHNhbXBsZUF0dHJpYnV0ZXMxKTsKKyAgICBhc3NlcnROdW1i
ZXJPZkNhbGxzSW5Mb2coMCk7CisKKyAgICAvLyBTYXZlIHByZXZpb3VzIGF0dHJpYnV0ZSB2YWx1
ZXMgYW5kIHNldCBuZXcgdmFsdWVzLgorICAgIGN0eC5zYXZlKCk7CisgICAgYXNzaWduQXR0cmli
dXRlcyhzYW1wbGVBdHRyaWJ1dGVzMik7CisgICAgYXNzZXJ0QXR0cmlidXRlcyhzYW1wbGVBdHRy
aWJ1dGVzMik7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEpOworCisgICAgLy8gUmVz
dG9yZSBwcmV2aW91cyBhdHRyaWJ1dGUgdmFsdWVzLgorICAgIGN0eC5yZXN0b3JlKCk7CisgICAg
YXNzZXJ0QXR0cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVzMSk7CisgICAgLy8gQ2FsbCBsb2cgc2hv
dWxkIGJlIGVtcHR5IGFmdGVyIHNhdmUoKSBhbmQgcmVzdG9yZSgpIGNhbGxzLgorICAgIGFzc2Vy
dE51bWJlck9mQ2FsbHNJbkxvZygwKTsKK30KKworZnVuY3Rpb24gdGVzdFNhdmVSZXN0b3JlU2Vx
dWVuY2UoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBjdHgucmVz
dG9yZSgpOworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9n
KDApOworICAgIGN0eC5zYXZlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEpOwor
ICAgIGN0eC5zYXZlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDIpOworICAgIGN0
eC5zYXZlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDMpOworICAgIGN0eC5yZXN0
b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDIpOworICAgIGN0eC5yZXN0b3Jl
KCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEpOworICAgIGN0eC5yZXN0b3JlKCk7
CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5yZXN0b3JlKCk7Cisg
ICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7Cit9CisK
K2Z1bmN0aW9uIGNhbGxQYXRoTWV0aG9kcygpCit7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAg
IGN0eC5saW5lV2lkdGggPSAyOworICAgIGN0eC5tb3ZlVG8oMTEsIDEyKTsKKyAgICBjdHgubGlu
ZVRvKDExMSwgMTEyKTsKKyAgICBjdHguc3Ryb2tlKCk7Cit9CisKK2Z1bmN0aW9uIGNsZWFyQ29u
dGV4dFJlc291cmNlTG9nKCkKK3sKKyAgICB3aGlsZSAoY3R4UmVzb3VyY2UuY2FsbHMoKS5sZW5n
dGgpCisgICAgICAgIGN0eFJlc291cmNlLmNhbGxzKCkucG9wKCk7CisgICAgYXNzZXJ0TnVtYmVy
T2ZDYWxsc0luTG9nKDApOworfQorCitmdW5jdGlvbiB0ZXN0UGF0aE1ldGhvZHNTZXF1ZW5jZSgp
Cit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGNhbGxQYXRoTWV0aG9k
cygpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygzKTsgLy8gW2JlZ2luUGF0aCxtb3Zl
VG8sbGluZVRvXQorICAgIGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJlck9mQ2Fs
bHNJbkxvZygzKTsgLy8gb2xkIG1ldGhvZHMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhcmVkCisgICAg
Y2xlYXJDb250ZXh0UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rpb24gdGVzdENsaXBNZXRob2Rz
KCkKK3sKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7CisgICAgY3R4LnNhdmUoKTsK
KyAgICBjYWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coNCk7
CisgICAgY3R4LmNsaXAoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coNSk7CisgICAg
Y2FsbFBhdGhNZXRob2RzKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDgpOworICAg
IGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZyg4KTsgLy8g
dGhlIGxhc3QgY2FsbHMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhcmVkCisgICAgY3R4LnJlc3RvcmUo
KTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coNSk7IC8vIFtzYXZlLGJlZ2luUGF0aCxt
b3ZlVG8sbGluZVRvLHJlc3RvcmVdCisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGFzc2VydE51
bWJlck9mQ2FsbHNJbkxvZygxKTsgLy8gW2JlZ2luUGF0aF0KKyAgICBjbGVhckNvbnRleHRSZXNv
dXJjZUxvZygpOworfQorCitmdW5jdGlvbiB0ZXN0TWF0cml4TWV0aG9kcygpCit7CisgICAgYXNz
ZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZlKCk7CisgICAgY3R4LnRyYW5z
bGF0ZSgxMDAsIDIwMCk7CisgICAgY3R4LnNjYWxlKDAuOSwgMC45KTsKKyAgICBjdHgucm90YXRl
KDAuMik7CisgICAgY3R4LnRyYW5zbGF0ZSgtMTAwLCAtMjAwKTsKKyAgICBhc3NlcnROdW1iZXJP
ZkNhbGxzSW5Mb2coNSk7CisgICAgY3R4LnNldFRyYW5zZm9ybSgxLCAyLCAzLCA0LCA1LCA2KTsK
KyAgICBjdHgucm90YXRlKDAuMyk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDMpOyAv
LyBbc2F2ZSxzZXRUcmFuc2Zvcm0scm90YXRlXQorICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNz
ZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworfQorCitmdW5jdGlvbiB0ZXN0TWF0cml4TWV0aG9k
c1dpdGhQYXRoTWV0aG9kcygpCit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOwor
ICAgIGN0eC5zYXZlKCk7CisgICAgY3R4LnRyYW5zbGF0ZSgxMDAsIDIwMCk7CisgICAgY3R4LnNj
YWxlKDAuOSwgMC45KTsKKyAgICBjdHgucm90YXRlKDAuMik7CisgICAgY3R4LnRyYW5zbGF0ZSgt
MTAwLCAtMjAwKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coNSk7CisgICAgY3R4LmJl
Z2luUGF0aCgpOworICAgIGN0eC5yZWN0KDEsIDEsIDEwLCAxMCk7CisgICAgY3R4LnRyYW5zbGF0
ZSgxLCAyKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coOCk7CisgICAgY3R4LnJlc3Rv
cmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coOCk7IC8vIFtzYXZlLHRyYW5zbGF0
ZSxzY2FsZSxyb3RhdGUsdHJhbnNsYXRlLGJlZ2luUGF0aCxyZWN0LHJlc3RvcmVdCisgICAgY3R4
LmJlZ2luUGF0aCgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsgLy8gW2JlZ2lu
UGF0aF0KKyAgICBjbGVhckNvbnRleHRSZXNvdXJjZUxvZygpOworfQorCitmdW5jdGlvbiB0ZXN0
TmVzdGVkU2F2ZVJlc3RvcmVDYWxscygpCit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9n
KDApOworICAgIGN0eC5zYXZlKCk7CisgICAgY3R4LnRyYW5zbGF0ZSgxMDAsIDIwMCk7CisgICAg
Y3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDEsIDEsIDEwLCAxMCk7CisgICAgY3R4LmNs
aXAoKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGN0eC5yb3RhdGUoMC4yKTsKKyAgICBjYWxsUGF0
aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMTApOyAvLyBbc2F2ZSx0
cmFuc2xhdGUsYmVnaW5QYXRoLHJlY3QsY2xpcCxzYXZlLHJvdGF0ZSxiZWdpblBhdGgsbW92ZVRv
LGxpbmVUb10KKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxv
ZygxMSk7CisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2co
OSk7IC8vIFtzYXZlLHRyYW5zbGF0ZSxzYXZlLHJvdGF0ZSxiZWdpblBhdGgsbW92ZVRvLGxpbmVU
byxyZXN0b3JlLHJlc3RvcmVdCisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJP
ZkNhbGxzSW5Mb2coOSk7IC8vIG5vIGVmZmVjdAorICAgIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMiwg
MywgNCwgNSwgNik7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEwKTsgLy8gbm90aGlu
ZyB0byByZW1vdmUgZnJvbSB0aGUgbG9nCisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGFzc2Vy
dE51bWJlck9mQ2FsbHNJbkxvZygyKTsgLy8gW3NldFRyYW5zZm9ybSxiZWdpblBhdGhdCisgICAg
Y2xlYXJDb250ZXh0UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rpb24gdGVzdERlZXBOZXN0ZWRT
YXZlUmVzdG9yZUNhbGxzKCkKK3sKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIGN0eC5zYXZlKCk7Cisg
ICAgICAgIGN0eC50cmFuc2xhdGUoMSwgMik7CisgICAgfQorICAgIGFzc2VydE51bWJlck9mQ2Fs
bHNJbkxvZygyMCk7CisgICAgY2FsbFBhdGhNZXRob2RzKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZD
YWxsc0luTG9nKDIzKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAg
ICAgY3R4LnJvdGF0ZSgxKTsKKyAgICAgICAgY3R4LnNjYWxlKDIpOworICAgICAgICBjdHguY2xp
cCgpOworICAgICAgICBjdHgudHJhbnNmb3JtKDMpOworICAgICAgICBjdHgucmVzdG9yZSgpOwor
ICAgICAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMjQgKyBpKTsKKyAgICB9CisgICAgYXNz
ZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDMzKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgYXNz
ZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEpOyAvLyBub3cgY2xlYXIgdXAgdGhlIGxvZworICAgIGNs
ZWFyQ29udGV4dFJlc291cmNlTG9nKCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFJ1bkNhbnZh
czJEUHJvZ3JhbSgpCit7CisgICAgY3R4ID0gY3JlYXRlQ2FudmFzMkRDb250ZXh0KCk7CisgICAg
Y29uc29sZS5hc3NlcnQoY3R4LCAiRmFpbGVkIHRvIGNyZWF0ZSAyRCBjb250ZXh0Iik7CisKKyAg
ICBjdHhSZXNvdXJjZSA9IGN0eFsiX19yZXNvdXJjZU9iamVjdCJdOworICAgIGNvbnNvbGUuYXNz
ZXJ0KGN0eFJlc291cmNlLCAiMkQgY29udGV4dCBpcyBub3Qgd3JhcHBlZCIpOworCisgICAgcmF3
Q3R4ID0gY3R4UmVzb3VyY2Uud3JhcHBlZE9iamVjdCgpOworICAgIGNvbnNvbGUuYXNzZXJ0KHJh
d0N0eCwgIk5vIHJhdyAyRCBjb250ZXh0IGZvdW5kIik7CisgICAgY29uc29sZS5hc3NlcnQoY3R4
ICE9PSByYXdDdHgsICJQcm94eSBhbmQgUkFXIGNvbnRleHRzIHNob3VsZCBub3QgYmUgdGhlIHNh
bWUiKTsKKworICAgIHRlc3REcmF3aW5nQXR0cmlidXRlcygpOworICAgIHRlc3RTYXZlUmVzdG9y
ZVNlcXVlbmNlKCk7CisgICAgdGVzdFBhdGhNZXRob2RzU2VxdWVuY2UoKTsKKyAgICB0ZXN0Q2xp
cE1ldGhvZHMoKTsKKyAgICB0ZXN0TWF0cml4TWV0aG9kcygpOworICAgIHRlc3RNYXRyaXhNZXRo
b2RzV2l0aFBhdGhNZXRob2RzKCk7CisgICAgdGVzdE5lc3RlZFNhdmVSZXN0b3JlQ2FsbHMoKTsK
KyAgICB0ZXN0RGVlcE5lc3RlZFNhdmVSZXN0b3JlQ2FsbHMoKTsKKworICAgIHJldHVybiAiU1VD
Q0VTUyI7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZW5hYmxl
Q2FudmFzQWdlbnQoc3RlcDEpOworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoImNyZWF0ZUFuZFJ1bkNhbnZhczJEUHJv
Z3JhbSgpIiwgc3RlcDIpOworICAgIH0KKyAgICBmdW5jdGlvbiBzdGVwMihlcnJvcikKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJcIlNVQ0NFU1NcIiIsIGVycm9y
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyBD
YW52YXMgMkQgY2FwdHVyaW5nIGJhc2ljcy4KKzwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NTIiPkJ1ZyAxMDA3NTI8L2E+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93
ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbAppbmRleCA1ZGQy
NTk3N2RiOWRmMjAyMGQ3YWE5YTM4YTQ2ZDYxZTgxZTcyNzlmLi41YmNjMDQxNDk1YzRkNGE4OGFl
MTA4NDJiMTI5ZTNiNTA5MzFjMWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5o
dG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJ3ZWJnbC1wcm9maWxlci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vY2FudmFzLXByb2ZpbGVyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KIAogdmFyIGdsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L3dlYmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTBmM2Y1ZWJiODQyYTQ5NTg0ODRhNWQ1Yjk3ZmJmMGVhNTcxYjdkYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcworKysgL2Rldi9udWxs
CkBAIC0xLDM3ICswLDAgQEAKLXZhciBpbml0aWFsaXplX0NhbnZhc1dlYkdMUHJvZmlsZXJUZXN0
ID0gZnVuY3Rpb24oKSB7Ci0KLUluc3BlY3RvclRlc3QuZW5hYmxlQ2FudmFzQWdlbnQgPSBmdW5j
dGlvbihjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjYW52YXNBZ2VudEVuYWJsZWQoZXJyb3Ip
Ci0gICAgewotICAgICAgICBpZiAoIWVycm9yKQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5z
YWZlV3JhcChjYWxsYmFjaykoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVEIHRvIGVuYWJsZSBDYW52YXNBZ2VudDogIiArIGVycm9y
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgdHJ5IHsKLSAgICAgICAgQ2FudmFzQWdlbnQuZW5hYmxlKGNhbnZhc0FnZW50
RW5hYmxlZCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiRXhjZXB0aW9uIHdoaWxlIGVuYWJsaW5nIENhbnZhc0FnZW50IiwgZSk7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQotfTsKLQotfTsKLQotZnVuY3Rp
b24gY3JlYXRlV2ViR0xDb250ZXh0KG9wdF9jYW52YXMpCi17Ci0gICAgdmFyIGNhbnZhcyA9IG9w
dF9jYW52YXMgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgdmFyIGNv
bnRleHRJZHMgPSBbImV4cGVyaW1lbnRhbC13ZWJnbCIsICJ3ZWJraXQtM2QiLCAiM2QiXTsKLSAg
ICBmb3IgKHZhciBpID0gMCwgY29udGV4dElkOyBjb250ZXh0SWQgPSBjb250ZXh0SWRzW2ldOyAr
K2kpIHsKLSAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoY29udGV4dElkKTsKLSAg
ICAgICAgaWYgKGdsKQotICAgICAgICAgICAgcmV0dXJuIGdsOwotICAgIH0KLSAgICByZXR1cm4g
bnVsbDsKLX0KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwo=
</data>
<flag name="commit-queue"
          id="185864"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172066</attachid>
            <date>2012-11-02 08:42:55 -0700</date>
            <delta_ts>2012-11-04 23:53:19 -0800</delta_ts>
            <desc>fixed mac test</desc>
            <filename>bug-100752-20121102194114.patch</filename>
            <type>text/plain</type>
            <size>39788</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE3ZTlhNzIzMTk0NzY0
YTI0YmMxMDc4MzAwNjc0NTZjMjdhMDM1Mi4uNzJhOWVlNmI0ODAyNTcyMzAzNDZlYjM1ZjFlYTQx
ZjMzZTAyYmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTMwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDYW52YXNdIGRvIG5vdCBibG93IHVwIHRoZSBjYXB0dXJpbmcgbG9nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhciBvYnNvbGV0ZSBjYWxs
cyBpbiB0aGUgY2FudmFzIDJEIGNhcHR1cmluZyBsb2cgaW4gcnVudGltZS4KKyAgICAgICAgTm93
IHdlIHN0b3JlIGluIHRoZSBsb2cgb25seSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0aGF0IGFy
ZSBuZWNlc3NhcnkgdG8gcmVwbGF5IGEKKyAgICAgICAgY2FudmFzIDJEIGNvbnRleHQuIFRvIGFj
aGlldmUgdGhhdCB3ZSBmaW5kIGluIHJ1bnRpbWUgdGhvc2UgY2FsbHMgaW4gdGhlIGxvZyB0aGF0
IG5vCisgICAgICAgIGxvbmdlciBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBjb250ZXh0IHN0YXRl
IGFuZCByZW1vdmUgdGhlbS4KKyAgICAgICAgVGhlc2UgYXJlIHRoZSBydWxlcyBhY2NvcmRpbmcg
d2hpY2ggd2UgZmluZCBhbmQgcmVtb3ZlIHN1Y2ggY2FsbHM6CisgICAgICAgIC0gYWxsIFBBVEgg
bWV0aG9kcyBiZXR3ZWVuIGEgY2xpcCgpIGNhbGwgYW5kIGJlZ2luUGF0aCgpIGNhbGwgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgLSBhbGwgTUFUUklYIG1ldGhvZHMgYmVmb3JlIGEgcmVzdG9yZSgp
IG9yIHNldFRyYW5zZm9ybSgpIGNhbGwgYnV0IGFmdGVyIGFueSBQQVRIIG9yIGNvcnJlc3BvbmRp
bmcgc2F2ZSgpIG1ldGhvZAorICAgICAgICAtIGFsbCBjb25zZWN1dGl2ZSBzYXZlKCkgKyByZXN0
b3JlKCkgY2FsbHMKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJk
L2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9m
aWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLmh0bWwKKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoK
KyAgICAgICAgKC4pOgorCiAyMDEyLTEwLTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW5hbWUgTG9jYWxpemVyIHRvIExvY2FsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLmpzCmluZGV4IDMyOTVmYzRjOTA3Nzk0MTgxZDU3N2I5ZGM0MGIxODVmNDg5OGJiMGMu
LjJiMGYwMjU3M2MxN2YxNzM1NWY4ZDY4OTcxZGY3NDdhZDk2NDhhMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGVTb3VyY2UuanMKQEAgLTM4LDcgKzM4LDcgQEAKIHZhciBUeXBlVXRpbHMgPSB7CiAgICAgLyoq
CiAgICAgICogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS90eXBlZGFycmF5L3NwZWNz
L2xhdGVzdC8jNwotICAgICAqIEB0eXBlIHtBcnJheS48RnVuY3Rpb24+fQorICAgICAqIEB0eXBl
IHshQXJyYXkuPEZ1bmN0aW9uPn0KICAgICAgKi8KICAgICBfdHlwZWRBcnJheUNsYXNzZXM6IChm
dW5jdGlvbih0eXBlTmFtZXMpIHsKICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwpAQCAtMTE3LDYg
KzExNywyMCBAQCB2YXIgVHlwZVV0aWxzID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBA
cGFyYW0ge09iamVjdD19IG9iagorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAg
ICBjbG9uZU9iamVjdDogZnVuY3Rpb24ob2JqKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmopCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHt9OworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gb2JqKQorICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5
XTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHJl
dHVybiB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfQogICAgICAqLwogICAgIF9kdW1teUNhbnZh
czJkQ29udGV4dDogZnVuY3Rpb24oKQpAQCAtMzU4LDYgKzM3MiwyOCBAQCBDYWxsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRh
Y2htZW50CisgICAgICovCisgICAgc2V0QXR0YWNobWVudDogZnVuY3Rpb24obmFtZSwgYXR0YWNo
bWVudCkKKyAgICB7CisgICAgICAgIGlmIChhdHRhY2htZW50KSB7CisgICAgICAgICAgICB0aGlz
Ll9hdHRhY2htZW50cyA9IHRoaXMuX2F0dGFjaG1lbnRzIHx8IHt9OworICAgICAgICAgICAgdGhp
cy5fYXR0YWNobWVudHNbbmFtZV0gPSBhdHRhY2htZW50OworICAgICAgICB9IGVsc2UgaWYgKHRo
aXMuX2F0dGFjaG1lbnRzKQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2F0dGFjaG1lbnRzW25h
bWVdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICBhdHRhY2htZW50OiBmdW5jdGlvbihu
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2F0dGFjaG1lbnRzICYmIHRoaXMuX2F0
dGFjaG1lbnRzW25hbWVdOworICAgIH0sCisKICAgICBmcmVlemU6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQpAQCAtMzgyLDcgKzQxOCw4IEBAIENhbGwucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgYXJncyA9IHRoaXMuX2FyZ3MubWFwKGZ1bmN0aW9uKG9i
aikgewogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlLnRvUmVwbGF5YWJsZShvYmosIGNhY2hl
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBuZXcgUmVwbGF5YWJsZUNhbGwodGhpc09i
amVjdCwgdGhpcy5fZnVuY3Rpb25OYW1lLCBhcmdzLCByZXN1bHQsIHRoaXMuX3N0YWNrVHJhY2Up
OworICAgICAgICB2YXIgYXR0YWNobWVudHMgPSBUeXBlVXRpbHMuY2xvbmVPYmplY3QodGhpcy5f
YXR0YWNobWVudHMpOworICAgICAgICByZXR1cm4gbmV3IFJlcGxheWFibGVDYWxsKHRoaXNPYmpl
Y3QsIHRoaXMuX2Z1bmN0aW9uTmFtZSwgYXJncywgcmVzdWx0LCB0aGlzLl9zdGFja1RyYWNlLCBh
dHRhY2htZW50cyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDE3LDYgKzQ1NCw5IEBAIENhbGwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXBsYXlSZXN1bHQ7CiAgICAg
ICAgIHRoaXMuX3N0YWNrVHJhY2UgPSByZXBsYXlhYmxlQ2FsbC5zdGFja1RyYWNlKCk7CiAgICAg
ICAgIHRoaXMuX2ZyZWV6ZWQgPSB0cnVlOworICAgICAgICB2YXIgYXR0YWNobWVudHMgPSByZXBs
YXlhYmxlQ2FsbC5hdHRhY2htZW50cygpOworICAgICAgICBpZiAoYXR0YWNobWVudHMpCisgICAg
ICAgICAgICB0aGlzLl9hdHRhY2htZW50cyA9IFR5cGVVdGlscy5jbG9uZU9iamVjdChhdHRhY2ht
ZW50cyk7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIH0KQEAgLTQyOCwxNCArNDY4LDE3
IEBAIENhbGwucHJvdG90eXBlID0gewogICogQHBhcmFtIHtBcnJheS48UmVwbGF5YWJsZVJlc291
cmNlfCo+fSBhcmdzCiAgKiBAcGFyYW0ge1JlcGxheWFibGVSZXNvdXJjZXwqfSByZXN1bHQKICAq
IEBwYXJhbSB7U3RhY2tUcmFjZX0gc3RhY2tUcmFjZQorICogQHBhcmFtIHtPYmplY3QuPHN0cmlu
ZywgT2JqZWN0Pn0gYXR0YWNobWVudHMKICAqLwotZnVuY3Rpb24gUmVwbGF5YWJsZUNhbGwodGhp
c09iamVjdCwgZnVuY3Rpb25OYW1lLCBhcmdzLCByZXN1bHQsIHN0YWNrVHJhY2UpCitmdW5jdGlv
biBSZXBsYXlhYmxlQ2FsbCh0aGlzT2JqZWN0LCBmdW5jdGlvbk5hbWUsIGFyZ3MsIHJlc3VsdCwg
c3RhY2tUcmFjZSwgYXR0YWNobWVudHMpCiB7CiAgICAgdGhpcy5fdGhpc09iamVjdCA9IHRoaXNP
YmplY3Q7CiAgICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lOwogICAgIHRoaXMu
X2FyZ3MgPSBhcmdzOwogICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDsKICAgICB0aGlzLl9zdGFj
a1RyYWNlID0gc3RhY2tUcmFjZTsKKyAgICBpZiAoYXR0YWNobWVudHMpCisgICAgICAgIHRoaXMu
X2F0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7CiB9CiAKIFJlcGxheWFibGVDYWxsLnByb3RvdHlw
ZSA9IHsKQEAgLTQ4OCw2ICs1MzEsMjMgQEAgUmVwbGF5YWJsZUNhbGwucHJvdG90eXBlID0gewog
ICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZywgT2JqZWN0
Pn0KKyAgICAgKi8KKyAgICBhdHRhY2htZW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2F0dGFjaG1lbnRzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICBh
dHRhY2htZW50OiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2F0
dGFjaG1lbnRzICYmIHRoaXMuX2F0dGFjaG1lbnRzW25hbWVdOworICAgIH0sCisKKyAgICAvKioK
ICAgICAgKiBAcGFyYW0ge0NhY2hlfSBjYWNoZQogICAgICAqIEByZXR1cm4ge0NhbGx9CiAgICAg
ICovCkBAIC03MjIsNyArNzgyLDkgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgcHJvcGVydHksIHsKICAgICAgICAg
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkT2JqZWN0W3Byb3BlcnR5XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSB3cmFwcGVkT2JqZWN0W3Byb3BlcnR5XTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChv
YmopOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlID8gcmVzb3VyY2Ug
OiBvYmo7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIHNldDog
c2VsZi5fd3JhcFByb3BlcnR5U2V0dGVyKHNlbGYsIHdyYXBwZWRPYmplY3QsIHByb3BlcnR5KSwK
ICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZQpAQCAtODA0LDEyICs4NjYsMTIg
QEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgbWFu
YWdlciA9IHJlc291cmNlLm1hbmFnZXIoKTsKICAgICAgICAgICAgIGlmICghbWFuYWdlciB8fCAh
bWFuYWdlci5jYXB0dXJpbmcoKSkgewotICAgICAgICAgICAgICAgIG9yaWdpbmFsT2JqZWN0W3By
b3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBvcmlnaW5hbE9iamVjdFtwcm9w
ZXJ0eU5hbWVdID0gUmVzb3VyY2Uud3JhcHBlZE9iamVjdCh2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFyIGFyZ3MgPSBbcHJvcGVy
dHlOYW1lLCB2YWx1ZV07CiAgICAgICAgICAgICBtYW5hZ2VyLmNhcHR1cmVBcmd1bWVudHMocmVz
b3VyY2UsIGFyZ3MpOwotICAgICAgICAgICAgb3JpZ2luYWxPYmplY3RbcHJvcGVydHlOYW1lXSA9
IHZhbHVlOworICAgICAgICAgICAgb3JpZ2luYWxPYmplY3RbcHJvcGVydHlOYW1lXSA9IFJlc291
cmNlLndyYXBwZWRPYmplY3QodmFsdWUpOwogICAgICAgICAgICAgdmFyIHN0YWNrVHJhY2UgPSBT
dGFja1RyYWNlLmNyZWF0ZSgxLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICAgICAgIHZhciBj
YWxsID0gbmV3IENhbGwocmVzb3VyY2UsICIiLCBhcmdzLCB1bmRlZmluZWQsIHN0YWNrVHJhY2Up
OwogICAgICAgICAgICAgbWFuYWdlci5jYXB0dXJlQ2FsbChjYWxsKTsKQEAgLTEzNTAsNyArMTQx
Miw3IEBAIGZ1bmN0aW9uIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlKGdsQ29udGV4dCwg
cmVwbGF5Q29udGV4dENhbGxiYWNrKQogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5
LjxzdHJpbmc+fQorICogQHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogV2ViR0xSZW5kZXJp
bmdDb250ZXh0UmVzb3VyY2UuR0xDYXBhYmlsaXRpZXMgPSBbCiAgICAgIkJMRU5EIiwKQEAgLTEz
NjYsNyArMTQyOCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLkdMQ2FwYWJpbGl0
aWVzID0gWwogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICog
QHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3Vy
Y2UuUGl4ZWxTdG9yZVBhcmFtZXRlcnMgPSBbCiAgICAgIlBBQ0tfQUxJR05NRU5UIiwKQEAgLTEz
NzgsNyArMTQ0MCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLlBpeGVsU3RvcmVQ
YXJhbWV0ZXJzID0gWwogCiAvKioKICAqIEBjb25zdAotICogQHR5cGUge0FycmF5LjxzdHJpbmc+
fQorICogQHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogV2ViR0xSZW5kZXJpbmdDb250ZXh0
UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzID0gWwogICAgICJBQ1RJVkVfVEVYVFVSRSIsCkBAIC0x
ODE5LDEyICsxODgxLDExIEBAIGZ1bmN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291
cmNlKGNvbnRleHQsIHJlcGxheUNvbnRleHRDYWxsYmFjaykKIHsKICAgICBSZXNvdXJjZS5jYWxs
KHRoaXMsIGNvbnRleHQpOwogICAgIHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IHJlcGxh
eUNvbnRleHRDYWxsYmFjazsKLSAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sgPSBbXTsKIH0KIAog
LyoqCiAgKiBAY29uc3QKLSAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqIEB0eXBlIHshQXJy
YXkuPHN0cmluZz59CiAgKi8KIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJp
YnV0ZVByb3BlcnRpZXMgPSBbCiAgICAgInN0cm9rZVN0eWxlIiwKQEAgLTE4NDEsMTIgKzE5MDIs
MTYgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGll
cyA9IFsKICAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwKICAgICAiZm9udCIsCiAgICAg
InRleHRBbGlnbiIsCi0gICAgInRleHRCYXNlbGluZSIKKyAgICAidGV4dEJhc2VsaW5lIiwKKyAg
ICAibGluZURhc2hPZmZzZXQiLAorICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgcHJvcGVydGllcyBp
bXBsZW1lbnRlZCBpbiBKU0MsIGJ1dCBub3QgaW4gVjguCisgICAgIndlYmtpdExpbmVEYXNoIiwK
KyAgICAid2Via2l0TGluZURhc2hPZmZzZXQiCiBdOwogCiAvKioKICAqIEBjb25zdAotICogQHR5
cGUge0FycmF5LjxzdHJpbmc+fQorICogQHR5cGUgeyFBcnJheS48c3RyaW5nPn0KICAqLwogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMgPSBbCiAgICAgImJlZ2lu
UGF0aCIsCkBAIC0xODYyLDcgKzE5MjcsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNv
dXJjZS5QYXRoTWV0aG9kcyA9IFsKIAogLyoqCiAgKiBAY29uc3QKLSAqIEB0eXBlIHtBcnJheS48
c3RyaW5nPn0KKyAqIEB0eXBlIHshQXJyYXkuPHN0cmluZz59CiAgKi8KIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcyA9IFsKICAgICAi
c2NhbGUiLApAQCAtMTg4MSw4ICsxOTQ2LDEzIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICBfcG9wdWxhdGVSZXBsYXlhYmxlRGF0YTogZnVuY3Rp
b24oZGF0YSwgY2FjaGUpCiAgICAgewogICAgICAgICBkYXRhLnJlcGxheUNvbnRleHRDYWxsYmFj
ayA9IHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjazsKLSAgICAgICAgZGF0YS5hdHRyaWJ1dGVz
U3RhY2sgPSB0aGlzLl9hdHRyaWJ1dGVzU3RhY2suc2xpY2UoMCk7CiAgICAgICAgIGRhdGEuY3Vy
cmVudEF0dHJpYnV0ZXMgPSB0aGlzLl9jdXJyZW50QXR0cmlidXRlc1N0YXRlKCk7CisgICAgICAg
IHZhciBjdHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGRhdGEub3JpZ2luYWxJbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGN0eC5j
YW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBnZXRJbWFnZURh
dGEgZmFpbGVkLiIsIGUpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTg5Mywy
MSArMTk2MywyNCBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUg
PSB7CiAgICAgX2RvUmVwbGF5Q2FsbHM6IGZ1bmN0aW9uKGRhdGEsIGNhY2hlKQogICAgIHsKICAg
ICAgICAgdGhpcy5fcmVwbGF5Q29udGV4dENhbGxiYWNrID0gZGF0YS5yZXBsYXlDb250ZXh0Q2Fs
bGJhY2s7Ci0gICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNTdGFjayA9IGRhdGEuYXR0cmlidXRlc1N0
YWNrLnNsaWNlKDApOwogCiAgICAgICAgIHZhciBjdHggPSBSZXNvdXJjZS53cmFwcGVkT2JqZWN0
KHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjaygpKTsKICAgICAgICAgdGhpcy5zZXRXcmFwcGVk
T2JqZWN0KGN0eCk7CiAKLSAgICAgICAgdmFyIHNhdmVDYWxscyA9IDA7CisgICAgICAgIGlmIChk
YXRhLm9yaWdpbmFsSW1hZ2VEYXRhKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgIGN0eC5wdXRJbWFnZURhdGEoZGF0YS5vcmlnaW5hbEltYWdlRGF0YSwgMCwgMCk7CisgICAg
ICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQVNT
RVJUX05PVF9SRUFDSEVEOiBwdXRJbWFnZURhdGEgZmFpbGVkLiIsIGUpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBkYXRhLmNhbGxzLmxl
bmd0aDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgdmFyIHJlcGxheWFibGVDYWxsID0gZGF0
YS5jYWxsc1tpXTsKLSAgICAgICAgICAgIGlmIChyZXBsYXlhYmxlQ2FsbC5mdW5jdGlvbk5hbWUo
KSA9PT0gInNhdmUiKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc2F2ZUNhbGxz
IDwgdGhpcy5fYXR0cmlidXRlc1N0YWNrLmxlbmd0aCwgIlNpemUgb2YgYXR0cmlidXRlcyBzdGFj
ayBpcyBsZXNzIHRoYW4gJ3NhdmUnIGNhbGxzIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYXBw
bHlBdHRyaWJ1dGVzU3RhdGUodGhpcy5fYXR0cmlidXRlc1N0YWNrW3NhdmVDYWxscysrXSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVwbGF5YWJsZUNhbGwuZnVuY3Rpb25OYW1l
KCkgPT09ICJzYXZlIikKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUF0dHJpYnV0ZXNTdGF0
ZShyZXBsYXlhYmxlQ2FsbC5hdHRhY2htZW50KCJjYW52YXMyZEF0dHJpYnV0ZXNTdGF0ZSIpKTsK
ICAgICAgICAgICAgIHRoaXMuX2NhbGxzLnB1c2gocmVwbGF5YWJsZUNhbGwucmVwbGF5KGNhY2hl
KSk7CiAgICAgICAgIH0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoc2F2ZUNhbGxzID09PSB0aGlz
Ll9hdHRyaWJ1dGVzU3RhY2subGVuZ3RoLCAiU2l6ZSBvZiBhdHRyaWJ1dGVzIHN0YWNrIHNob3Vs
ZCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mICdzYXZlJyBjYWxscyIpOwogICAgICAgICB0aGlz
Ll9hcHBseUF0dHJpYnV0ZXNTdGF0ZShkYXRhLmN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICB9LAog
CkBAIC0xOTE2LDcgKzE5ODksMTEgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIHB1c2hDYWxsX3NldFRyYW5zZm9ybTogZnVuY3Rp
b24oY2FsbCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb2Jzb2xldGUgdHJhbnNm
b3JtIG1hdHJpeCBtZXRob2RzLgorICAgICAgICB2YXIgc2F2ZUNhbGxJbmRleCA9IHRoaXMuX2xh
c3RJbmRleE9mTWF0Y2hpbmdTYXZlQ2FsbCgpOworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9s
YXN0SW5kZXhPZkFueUNhbGwoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1l
dGhvZHMpOworICAgICAgICBpbmRleCA9IE1hdGgubWF4KGluZGV4LCBzYXZlQ2FsbEluZGV4KTsK
KyAgICAgICAgaWYgKHRoaXMuX3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIGluZGV4ICsgMSkpCisg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJvbUxvZygpOwogICAgICAg
ICB0aGlzLnB1c2hDYWxsKGNhbGwpOwogICAgIH0sCiAKQEAgLTE5MjUsNyArMjAwMiw5IEBAIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICBwdXNoQ2FsbF9iZWdpblBhdGg6IGZ1bmN0aW9uKGNhbGwpCiAgICAgewotICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIG9ic29sZXRlIHBhdGggbWV0aG9kcy4KKyAgICAgICAgdmFyIGluZGV4ID0g
dGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKFsiY2xpcCJdKTsKKyAgICAgICAgaWYgKHRoaXMuX3Jl
bW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5QYXRoTWV0
aG9kcywgaW5kZXggKyAxKSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbE9ic29sZXRlQ2Fs
bHNGcm9tTG9nKCk7CiAgICAgICAgIHRoaXMucHVzaENhbGwoY2FsbCk7CiAgICAgfSwKIApAQCAt
MTkzNCw3ICsyMDEzLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIHB1c2hDYWxsX3NhdmU6IGZ1bmN0aW9uKGNhbGwpCiAgICAg
ewotICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50QXR0cmli
dXRlc1N0YXRlKCkpOworICAgICAgICBjYWxsLnNldEF0dGFjaG1lbnQoImNhbnZhczJkQXR0cmli
dXRlc1N0YXRlIiwgdGhpcy5fY3VycmVudEF0dHJpYnV0ZXNTdGF0ZSgpKTsKICAgICAgICAgdGhp
cy5wdXNoQ2FsbChjYWxsKTsKICAgICB9LAogCkBAIC0xOTQzLDkgKzIwMjIsMTM4IEBAIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBw
dXNoQ2FsbF9yZXN0b3JlOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAgICAgICAgdGhpcy5fYXR0
cmlidXRlc1N0YWNrLnBvcCgpOwotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIGNs
aXAsc2F2ZSBtZXRob2RzLgotICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOworICAgICAgICB2
YXIgbGFzdEluZGV4T2ZTYXZlID0gdGhpcy5fbGFzdEluZGV4T2ZNYXRjaGluZ1NhdmVDYWxsKCk7
CisgICAgICAgIGlmIChsYXN0SW5kZXhPZlNhdmUgPT09IC0xKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0aGlzLl9jYWxsc1tsYXN0SW5kZXhPZlNhdmVdLnNldEF0dGFjaG1lbnQoImNh
bnZhczJkQXR0cmlidXRlc1N0YXRlIiwgbnVsbCk7IC8vIE5vIGxvbmdlciBuZWVkZWQsIGZyZWUg
bWVtb3J5LgorCisgICAgICAgIHZhciBtb2RpZmllZCA9IGZhbHNlOworICAgICAgICBpZiAodGhp
cy5fcmVtb3ZlQ2FsbHNGcm9tTG9nKFsiY2xpcCJdLCBsYXN0SW5kZXhPZlNhdmUgKyAxKSkKKyAg
ICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKKworICAgICAgICB2YXIgbGFzdEluZGV4T2ZBbnlQ
YXRoTWV0aG9kID0gdGhpcy5fbGFzdEluZGV4T2ZBbnlDYWxsKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRFJlc291cmNlLlBhdGhNZXRob2RzKTsKKyAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5tYXgo
bGFzdEluZGV4T2ZTYXZlLCBsYXN0SW5kZXhPZkFueVBhdGhNZXRob2QpOworICAgICAgICBpZiAo
dGhpcy5fcmVtb3ZlQ2FsbHNGcm9tTG9nKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNl
LlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcywgaW5kZXggKyAxKSkKKyAgICAgICAgICAgIG1v
ZGlmaWVkID0gdHJ1ZTsKKworICAgICAgICBpZiAobW9kaWZpZWQpCisgICAgICAgICAgICB0aGlz
Ll9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJvbUxvZygpOworCisgICAgICAgIHZhciBsYXN0Q2Fs
bCA9IHRoaXMuX2NhbGxzW3RoaXMuX2NhbGxzLmxlbmd0aCAtIDFdOworICAgICAgICBpZiAobGFz
dENhbGwgJiYgbGFzdENhbGwuZnVuY3Rpb25OYW1lKCkgPT09ICJzYXZlIikKKyAgICAgICAgICAg
IHRoaXMuX2NhbGxzLnBvcCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnB1c2hD
YWxsKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGZy
b21JbmRleAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBfbGFzdEluZGV4
T2ZNYXRjaGluZ1NhdmVDYWxsOiBmdW5jdGlvbihmcm9tSW5kZXgpCisgICAgeworICAgICAgICBp
ZiAodHlwZW9mIGZyb21JbmRleCAhPT0gIm51bWJlciIpCisgICAgICAgICAgICBmcm9tSW5kZXgg
PSB0aGlzLl9jYWxscy5sZW5ndGggLSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcm9t
SW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXgsIHRoaXMuX2NhbGxzLmxlbmd0aCAtIDEpOworICAg
ICAgICB2YXIgc3RhY2tEZXB0aCA9IDE7CisgICAgICAgIGZvciAodmFyIGkgPSBmcm9tSW5kZXg7
IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICB2YXIgZnVuY3Rpb25OYW1lID0gdGhpcy5fY2Fs
bHNbaV0uZnVuY3Rpb25OYW1lKCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25OYW1lID09PSAi
cmVzdG9yZSIpCisgICAgICAgICAgICAgICAgKytzdGFja0RlcHRoOworICAgICAgICAgICAgZWxz
ZSBpZiAoZnVuY3Rpb25OYW1lID09PSAic2F2ZSIpIHsKKyAgICAgICAgICAgICAgICAtLXN0YWNr
RGVwdGg7CisgICAgICAgICAgICAgICAgaWYgKCFzdGFja0RlcHRoKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
LTE7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUFycmF5LjxzdHJpbmc+fSBm
dW5jdGlvbk5hbWVzCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBmcm9tSW5kZXgKKyAgICAgKiBA
cmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgX2xhc3RJbmRleE9mQW55Q2FsbDogZnVuY3Rp
b24oZnVuY3Rpb25OYW1lcywgZnJvbUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiBm
cm9tSW5kZXggIT09ICJudW1iZXIiKQorICAgICAgICAgICAgZnJvbUluZGV4ID0gdGhpcy5fY2Fs
bHMubGVuZ3RoIC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJvbUluZGV4ID0gTWF0
aC5taW4oZnJvbUluZGV4LCB0aGlzLl9jYWxscy5sZW5ndGggLSAxKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IGZyb21JbmRleDsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdGlv
bk5hbWVzLmluZGV4T2YodGhpcy5fY2FsbHNbaV0uZnVuY3Rpb25OYW1lKCkpICE9PSAtMSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgfSwKKworICAgIF9yZW1vdmVBbGxPYnNvbGV0ZUNhbGxzRnJvbUxvZzogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgLy8gUmVtb3ZlIGFsbCBQQVRIIG1ldGhvZHMgYmV0d2VlbiBjbGlwKCkg
YW5kIGJlZ2luUGF0aCgpIGNhbGxzLgorICAgICAgICB2YXIgbGFzdEluZGV4T2ZCZWdpblBhdGgg
PSB0aGlzLl9sYXN0SW5kZXhPZkFueUNhbGwoWyJiZWdpblBhdGgiXSk7CisgICAgICAgIHdoaWxl
IChsYXN0SW5kZXhPZkJlZ2luUGF0aCAhPT0gLTEpIHsKKyAgICAgICAgICAgIHZhciBpbmRleCA9
IHRoaXMuX2xhc3RJbmRleE9mQW55Q2FsbChbImNsaXAiXSwgbGFzdEluZGV4T2ZCZWdpblBhdGgg
LSAxKTsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRSZXNvdXJjZS5QYXRoTWV0aG9kcywgaW5kZXggKyAxLCBsYXN0SW5kZXhPZkJl
Z2luUGF0aCk7CisgICAgICAgICAgICBsYXN0SW5kZXhPZkJlZ2luUGF0aCA9IHRoaXMuX2xhc3RJ
bmRleE9mQW55Q2FsbChbImJlZ2luUGF0aCJdLCBpbmRleCAtIDEpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUmVtb3ZlIGFsbCBUUkFTRk9STUFUSU9OIE1BVFJJWCBtZXRob2RzIGJlZm9yZSBy
ZXN0b3JlKCkgb3Igc2V0VHJhbnNmb3JtKCkgYnV0IGFmdGVyIGFueSBQQVRIIG9yIGNvcnJlc3Bv
bmRpbmcgc2F2ZSgpIG1ldGhvZC4KKyAgICAgICAgdmFyIGxhc3RSZXN0b3JlID0gdGhpcy5fbGFz
dEluZGV4T2ZBbnlDYWxsKFsicmVzdG9yZSIsICJzZXRUcmFuc2Zvcm0iXSk7CisgICAgICAgIHdo
aWxlIChsYXN0UmVzdG9yZSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHZhciBzYXZlQ2FsbEluZGV4
ID0gdGhpcy5fbGFzdEluZGV4T2ZNYXRjaGluZ1NhdmVDYWxsKGxhc3RSZXN0b3JlIC0gMSk7Cisg
ICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9sYXN0SW5kZXhPZkFueUNhbGwoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMsIGxhc3RSZXN0b3JlIC0gMSk7Cisg
ICAgICAgICAgICBpbmRleCA9IE1hdGgubWF4KGluZGV4LCBzYXZlQ2FsbEluZGV4KTsKKyAgICAg
ICAgICAgIHRoaXMuX3JlbW92ZUNhbGxzRnJvbUxvZyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRS
ZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMsIGluZGV4ICsgMSwgbGFzdFJlc3Rv
cmUpOworICAgICAgICAgICAgbGFzdFJlc3RvcmUgPSB0aGlzLl9sYXN0SW5kZXhPZkFueUNhbGwo
WyJyZXN0b3JlIiwgInNldFRyYW5zZm9ybSJdLCBpbmRleCAtIDEpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUmVtb3ZlIGFsbCBzYXZlLXJlc3RvcmUgY29uc2VjdXRpdmUgcGFpcnMuCisgICAg
ICAgIHZhciByZXN0b3JlQ2FsbHMgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fY2Fs
bHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIHZhciBmdW5jdGlvbk5h
bWUgPSB0aGlzLl9jYWxsc1tpXS5mdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgICAgIGlmIChmdW5j
dGlvbk5hbWUgPT09ICJyZXN0b3JlIikgeworICAgICAgICAgICAgICAgICsrcmVzdG9yZUNhbGxz
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGZ1bmN0aW9uTmFtZSA9PT0gInNhdmUiICYmIHJlc3RvcmVDYWxscyA+IDApIHsKKyAgICAg
ICAgICAgICAgICB2YXIgc2F2ZUNhbGxJbmRleCA9IGk7CisgICAgICAgICAgICAgICAgZm9yICh2
YXIgaiA9IGkgLSAxOyBqID49IDAgJiYgaSAtIGogPCByZXN0b3JlQ2FsbHM7IC0taikgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FsbHNbal0uZnVuY3Rpb25OYW1lKCkgPT09ICJz
YXZlIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVDYWxsSW5kZXggPSBqOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5fY2FsbHMuc3BsaWNlKHNhdmVDYWxs
SW5kZXgsIChpIC0gc2F2ZUNhbGxJbmRleCArIDEpICogMik7CisgICAgICAgICAgICAgICAgaSA9
IHNhdmVDYWxsSW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN0b3JlQ2FsbHMg
PSAwOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUFycmF5
LjxzdHJpbmc+fSBmdW5jdGlvbk5hbWVzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRl
eAorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gdG9JbmRleAorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgICovCisgICAgX3JlbW92ZUNhbGxzRnJvbUxvZzogZnVuY3Rpb24oZnVuY3Rpb25O
YW1lcywgZnJvbUluZGV4LCB0b0luZGV4KQorICAgIHsKKyAgICAgICAgdmFyIG9sZExlbmd0aCA9
IHRoaXMuX2NhbGxzLmxlbmd0aDsKKyAgICAgICAgaWYgKHR5cGVvZiB0b0luZGV4ICE9PSAibnVt
YmVyIikKKyAgICAgICAgICAgIHRvSW5kZXggPSBvbGRMZW5ndGg7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRvSW5kZXggPSBNYXRoLm1pbih0b0luZGV4LCBvbGRMZW5ndGgpOworICAgICAg
ICB2YXIgbmV3SW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXgsIG9sZExlbmd0aCk7CisgICAgICAg
IGZvciAodmFyIGkgPSBuZXdJbmRleDsgaSA8IHRvSW5kZXg7ICsraSkgeworICAgICAgICAgICAg
dmFyIGNhbGwgPSB0aGlzLl9jYWxsc1tpXTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbk5hbWVz
LmluZGV4T2YoY2FsbC5mdW5jdGlvbk5hbWUoKSkgPT09IC0xKQorICAgICAgICAgICAgICAgIHRo
aXMuX2NhbGxzW25ld0luZGV4KytdID0gY2FsbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3
SW5kZXggPj0gdG9JbmRleCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGhp
cy5fY2FsbHMuc3BsaWNlKG5ld0luZGV4LCB0b0luZGV4IC0gbmV3SW5kZXgpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xOTU1LDIxICsyMTYzLDMwIEBAIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHZhciBjdHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKICAgICAgICAgdmFyIHN0YXRlID0g
e307CisgICAgICAgIHN0YXRlLmF0dHJpYnV0ZXMgPSB7fTsKICAgICAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9u
KGF0dHJpYnV0ZSkgewotICAgICAgICAgICAgc3RhdGVbYXR0cmlidXRlXSA9IGN0eFthdHRyaWJ1
dGVdOworICAgICAgICAgICAgc3RhdGUuYXR0cmlidXRlc1thdHRyaWJ1dGVdID0gY3R4W2F0dHJp
YnV0ZV07CiAgICAgICAgIH0pOworICAgICAgICBpZiAoY3R4LmdldExpbmVEYXNoKQorICAgICAg
ICAgICAgc3RhdGUubGluZURhc2ggPSBjdHguZ2V0TGluZURhc2goKTsKICAgICAgICAgcmV0dXJu
IHN0YXRlOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0geyFPYmplY3QuPHN0cmlu
Zywgc3RyaW5nPn0gc3RhdGUKKyAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCBzdHJpbmc+
PX0gc3RhdGUKICAgICAgKi8KICAgICBfYXBwbHlBdHRyaWJ1dGVzU3RhdGU6IGZ1bmN0aW9uKHN0
YXRlKQogICAgIHsKKyAgICAgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdmFyIGN0eCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOwotICAgICAgICBPYmplY3Qua2V5
cyhzdGF0ZSkuZm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGUpIHsKLSAgICAgICAgICAgIGN0eFth
dHRyaWJ1dGVdID0gc3RhdGVbYXR0cmlidXRlXTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChz
dGF0ZS5hdHRyaWJ1dGVzKSB7CisgICAgICAgICAgICBPYmplY3Qua2V5cyhzdGF0ZS5hdHRyaWJ1
dGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGF0dHJpYnV0ZSkgeworICAgICAgICAgICAgICAgIGN0eFth
dHRyaWJ1dGVdID0gc3RhdGUuYXR0cmlidXRlc1thdHRyaWJ1dGVdOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN0eC5zZXRMaW5lRGFzaCkKKyAgICAgICAgICAgIGN0
eC5zZXRMaW5lRGFzaChzdGF0ZS5saW5lRGFzaCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTk4
Miw2ICsyMTk5LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIHdyYXBGdW5j
dGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogCisgICAgICAgICAgICAvLyBGSVhNRTogU2F2
ZSBzdGF0ZSBvZiB0aGUgQ2FudmFzR3JhZGllbnQgb2JqZWN0cy4KICAgICAgICAgICAgIHdyYXBG
dW5jdGlvbnNbImNyZWF0ZUxpbmVhckdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24u
cmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJlc291cmNlKTsKICAgICAgICAgICAgIHdyYXBGdW5jdGlv
bnNbImNyZWF0ZVJhZGlhbEdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3Vy
Y2VGYWN0b3J5TWV0aG9kKFJlc291cmNlKTsKICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNy
ZWF0ZVBhdHRlcm4iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRo
b2QoUmVzb3VyY2UpOwpAQCAtMjAwNiwxNCArMjIyNCwxMiBAQCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMuZm9yRWFjaChmdW5j
dGlvbihtZXRob2ROYW1lKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1l
ID09PSAic2V0VHJhbnNmb3JtIiA/IHRoaXMucHVzaENhbGxfc2V0VHJhbnNmb3JtIDogbnVsbDsK
LSAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1lLCBm
dW5jKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1lID09PSAiYmVnaW5QYXRoIiA/IHRo
aXMucHVzaENhbGxfYmVnaW5QYXRoIDogbnVsbDsKLSAgICAgICAgICAgICAgICBzdGF0ZU1vZGlm
eWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKTsKLSAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbWV0aG9kTmFtZTsgbWV0aG9kTmFtZSA9IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kc1tp
XTsgKytpKQorICAgICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKG1ldGhv
ZE5hbWUsIG1ldGhvZE5hbWUgPT09ICJzZXRUcmFuc2Zvcm0iID8gdGhpcy5wdXNoQ2FsbF9zZXRU
cmFuc2Zvcm0gOiBudWxsKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBtZXRob2ROYW1l
OyBtZXRob2ROYW1lID0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhv
ZHNbaV07ICsraSkKKyAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbiht
ZXRob2ROYW1lLCBtZXRob2ROYW1lID09PSAiYmVnaW5QYXRoIiA/IHRoaXMucHVzaENhbGxfYmVn
aW5QYXRoIDogbnVsbCk7CisKICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9u
KCJzYXZlIiwgdGhpcy5wdXNoQ2FsbF9zYXZlKTsKICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5n
V3JhcEZ1bmN0aW9uKCJyZXN0b3JlIiwgdGhpcy5wdXNoQ2FsbF9yZXN0b3JlKTsKICAgICAgICAg
ICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKCJjbGlwIik7CkBAIC0yNDAxLDIwICsyNjE3
LDEwIEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY29uc3Ry
dWN0Q2FudmFzMkRSZXBsYXlDb250ZXh0OiBmdW5jdGlvbihvcmlnaW5hbENvbnRleHQpCiAgICAg
ewotICAgICAgICB2YXIgcmVwbGF5Q29udGV4dCA9IG9yaWdpbmFsQ29udGV4dFsiX19yZXBsYXlD
b250ZXh0Il07Ci0gICAgICAgIGlmICghcmVwbGF5Q29udGV4dCkgewotICAgICAgICAgICAgdmFy
IGNhbnZhcyA9IG9yaWdpbmFsQ29udGV4dC5jYW52YXMuY2xvbmVOb2RlKHRydWUpOwotICAgICAg
ICAgICAgcmVwbGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
fSAqLyBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpKTsKLSAg
ICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcmlnaW5hbENvbnRleHQsICJfX3JlcGxh
eUNvbnRleHQiLCB7Ci0gICAgICAgICAgICAgICAgdmFsdWU6IHJlcGxheUNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgICAgIGVudW1lcmFibGU6
IGZhbHNlLAotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICB0aGlzLl9yZXBsYXlDb250ZXh0ID0gcmVwbGF5Q29udGV4dDsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGVhciB0aGUgY2FudmFzLgot
ICAgICAgICB9CisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyAyRCBjb250ZXh0IGVhY2ggdGltZSB0
byBzdGFydCB3aXRoIGFuIGVtcHR5IGNvbnRleHQgZHJhd2luZyBzdGF0ZSBzdGFjayAobWFuYWdl
ZCBieSBzYXZlKCkgYW5kIHJlc3RvcmUoKSBtZXRob2RzKS4KKyAgICAgICAgdmFyIGNhbnZhcyA9
IG9yaWdpbmFsQ29udGV4dC5jYW52YXMuY2xvbmVOb2RlKHRydWUpOworICAgICAgICB2YXIgcmVw
bGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyBSZXNv
dXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpKTsKKyAgICAgICAgdGhp
cy5fcmVwbGF5Q29udGV4dCA9IHJlcGxheUNvbnRleHQ7CiAgICAgICAgIHJldHVybiByZXBsYXlD
b250ZXh0OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlY2ZmNTA4NmUwMzA2YjQwODQxYWY2ZmU4OTI1ZmQ0
MGVlODNmMDk0Li43YjU2NTQ1OGE2YmNjMDFiOTIxY2MwMzJlODk1ZjUyZTRiODYwZDIzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMzAgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZhc10gZG8gbm90IGJs
b3cgdXAgdGhlIGNhcHR1cmluZyBsb2cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMDc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgZm9yIHRyYWNrIENhbnZhcyAyRCBBUEkgY2hhbmdl
cywgYXMgd2VsbCBhcyBiYXNpY3MgZm9yIHRoZSBjYXB0dXJpbmcuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvZmlsZXIvY2FudmFzLXByb2ZpbGVyLXRlc3QuanM6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcy4K
KyAgICAgICAgKGluaXRpYWxpemVfQ2FudmFzV2ViR0xQcm9maWxlclRlc3QuSW5zcGVjdG9yVGVz
dC5lbmFibGVDYW52YXNBZ2VudCk6CisgICAgICAgIChpbml0aWFsaXplX0NhbnZhc1dlYkdMUHJv
ZmlsZXJUZXN0KToKKyAgICAgICAgKGNyZWF0ZVdlYkdMQ29udGV4dCk6CisgICAgICAgIChjcmVh
dGVDYW52YXMyRENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9jYW52YXMy
ZC9jYW52YXMyZC1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1hcGktY2hhbmdlcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmls
ZXItY2FwdHVyaW5nLWJhc2ljcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1w
cm9maWxlci1nZXQtZXJyb3IuaHRtbDoKKwogMjAxMi0xMC0yOSAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBUZXN0IGV4cGVjdGF0aW9uIHVw
ZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMt
cHJvZmlsZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMt
cHJvZmlsZXItdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2Y0NDY4NGE5ODFlNjNkZWM5ZWZhNzAxOGU5
NzI4NzA2NzQ5ZjVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2NhbnZhcy1wcm9maWxlci10ZXN0LmpzCkBAIC0wLDAgKzEsNDMgQEAKK3ZhciBpbml0
aWFsaXplX0NhbnZhc1dlYkdMUHJvZmlsZXJUZXN0ID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3Rv
clRlc3QuZW5hYmxlQ2FudmFzQWdlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBmdW5j
dGlvbiBjYW52YXNBZ2VudEVuYWJsZWQoZXJyb3IpCisgICAgeworICAgICAgICBpZiAoIWVycm9y
KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjaykoKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVEIHRv
IGVuYWJsZSBDYW52YXNBZ2VudDogIiArIGVycm9yKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAg
Q2FudmFzQWdlbnQuZW5hYmxlKGNhbnZhc0FnZW50RW5hYmxlZCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXhjZXB0aW9uIHdoaWxlIGVuYWJs
aW5nIENhbnZhc0FnZW50IiwgZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgfQorfTsKKworfTsKKworZnVuY3Rpb24gY3JlYXRlV2ViR0xDb250ZXh0KG9wdF9j
YW52YXMpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKworICAgIHZh
ciBjYW52YXMgPSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
OworICAgIHZhciBjb250ZXh0SWRzID0gWyJleHBlcmltZW50YWwtd2ViZ2wiLCAid2Via2l0LTNk
IiwgIjNkIl07CisgICAgZm9yICh2YXIgaSA9IDAsIGNvbnRleHRJZDsgY29udGV4dElkID0gY29u
dGV4dElkc1tpXTsgKytpKSB7CisgICAgICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KGNv
bnRleHRJZCk7CisgICAgICAgIGlmIChnbCkKKyAgICAgICAgICAgIHJldHVybiBnbDsKKyAgICB9
CisgICAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUNhbnZhczJEQ29udGV4dChv
cHRfY2FudmFzKQoreworICAgIHZhciBjYW52YXMgPSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9jYW52YXMy
ZC9jYW52YXMyZC1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdjOTYyZWJhODQ4MzFmNjA1M2FhNDY3Y2JhNDFlMzViNTMyOGI5ZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2Fu
dmFzMmQtYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCB0byBj
YXRjaCBDYW52YXMgMkQgQVBJIGNoYW5nZXMuIElmIHRoaXMgdGVzdCBzaG91bGQgZXZlciBmYWls
LCB3ZSBzaG91bGQgcmUtZXhhbWluZSB0aGUgQ2FudmFzIDJEIHN0YXRlIHNhdmluZy9yZXN0b3Jp
bmcgbG9naWMgaW4gdGhlIEluamVjdGVkU2NyaXB0TW9kdWxlIHRvIGluY2x1ZGUgYW55IGxhdGVz
dCBjaGFuZ2VzIHRvIHRoZSBBUEkuCisKK05ldyBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMgdGhh
dCBzaG91bGQgYmUgbWFudWFsbHkgZXhhbWluZWQgKHNob3VsZCBiZSBlbXB0eSB0byBwYXNzIHRo
ZSB0ZXN0KToKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Nh
bnZhczJkL2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NjMzNTIwZWVkZWJiNmNhNzU4ODYxZTc5NWRhNjYwMDViYzg4MGVhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLWFwaS1j
aGFuZ2VzLmh0bWwKQEAgLTAsMCArMSwxNTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKwordmFyIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlID0g
e307CisKKy8qKgorICogQGNvbnN0CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMgPSBbCisg
ICAgInN0cm9rZVN0eWxlIiwKKyAgICAiZmlsbFN0eWxlIiwKKyAgICAiZ2xvYmFsQWxwaGEiLAor
ICAgICJsaW5lV2lkdGgiLAorICAgICJsaW5lQ2FwIiwKKyAgICAibGluZUpvaW4iLAorICAgICJt
aXRlckxpbWl0IiwKKyAgICAic2hhZG93T2Zmc2V0WCIsCisgICAgInNoYWRvd09mZnNldFkiLAor
ICAgICJzaGFkb3dCbHVyIiwKKyAgICAic2hhZG93Q29sb3IiLAorICAgICJnbG9iYWxDb21wb3Np
dGVPcGVyYXRpb24iLAorICAgICJmb250IiwKKyAgICAidGV4dEFsaWduIiwKKyAgICAidGV4dEJh
c2VsaW5lIiwKKyAgICAibGluZURhc2hPZmZzZXQiLAorICAgIC8vIEZJWE1FOiBUZW1wb3Jhcnkg
cHJvcGVydGllcyBpbXBsZW1lbnRlZCBpbiBKU0MsIGJ1dCBub3QgaW4gVjguCisgICAgIndlYmtp
dExpbmVEYXNoIiwKKyAgICAid2Via2l0TGluZURhc2hPZmZzZXQiCitdOworCisvKioKKyAqIEBj
b25zdAorICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICovCitDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZS5QYXRoTWV0aG9kcyA9IFsKKyAgICAiYmVnaW5QYXRoIiwKKyAgICAibW92
ZVRvIiwKKyAgICAiY2xvc2VQYXRoIiwKKyAgICAibGluZVRvIiwKKyAgICAicXVhZHJhdGljQ3Vy
dmVUbyIsCisgICAgImJlemllckN1cnZlVG8iLAorICAgICJhcmNUbyIsCisgICAgImFyYyIsCisg
ICAgInJlY3QiCitdOworCisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0FycmF5LjxzdHJpbmc+
fQorICovCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1h
dHJpeE1ldGhvZHMgPSBbCisgICAgInNjYWxlIiwKKyAgICAicm90YXRlIiwKKyAgICAidHJhbnNs
YXRlIiwKKyAgICAidHJhbnNmb3JtIiwKKyAgICAic2V0VHJhbnNmb3JtIgorXTsKKworLyoqCisg
KiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEUmVzb3VyY2UuSWdub3JlUHJvcGVydGllcyA9IFsKKyAgICAiY2FudmFzIiwKKyAg
ICAiY3JlYXRlTGluZWFyR3JhZGllbnQiLAorICAgICJjcmVhdGVSYWRpYWxHcmFkaWVudCIsCisg
ICAgImNyZWF0ZVBhdHRlcm4iLAorICAgICJzYXZlIiwKKyAgICAicmVzdG9yZSIsCisgICAgImNs
aXAiLAorICAgICJnZXRMaW5lRGFzaCIsCisgICAgInNldExpbmVEYXNoIiwKKyAgICAvLyBJZ25v
cmUgdGhlIHByb3BlcnRpZXMgYmVsb3cuCisgICAgImNsZWFyUmVjdCIsCisgICAgImNsZWFyU2hh
ZG93IiwKKyAgICAiY3JlYXRlSW1hZ2VEYXRhIiwKKyAgICAiZHJhd0ltYWdlIiwKKyAgICAiZHJh
d0ltYWdlRnJvbVJlY3QiLAorICAgICJmaWxsIiwKKyAgICAiZmlsbFJlY3QiLAorICAgICJmaWxs
VGV4dCIsCisgICAgImdldEltYWdlRGF0YSIsCisgICAgImlzUG9pbnRJblBhdGgiLAorICAgICJt
ZWFzdXJlVGV4dCIsCisgICAgInB1dEltYWdlRGF0YSIsCisgICAgInNldEFscGhhIiwKKyAgICAi
c2V0Q29tcG9zaXRlT3BlcmF0aW9uIiwKKyAgICAic2V0RmlsbENvbG9yIiwKKyAgICAic2V0TGlu
ZUNhcCIsCisgICAgInNldExpbmVKb2luIiwKKyAgICAic2V0TGluZVdpZHRoIiwKKyAgICAic2V0
TWl0ZXJMaW1pdCIsCisgICAgInNldFNoYWRvdyIsCisgICAgInNldFN0cm9rZUNvbG9yIiwKKyAg
ICAic3Ryb2tlIiwKKyAgICAic3Ryb2tlUmVjdCIsCisgICAgInN0cm9rZVRleHQiLAorICAgICJ3
ZWJraXRCYWNraW5nU3RvcmVQaXhlbFJhdGlvIiwKKyAgICAid2Via2l0R2V0SW1hZ2VEYXRhSEQi
LAorICAgICJ3ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQiLAorICAgICJ3ZWJraXRQdXRJbWFn
ZURhdGFIRCIKK107CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBjYW52YXMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICB2YXIgY3R4ID0gY2FudmFzLmdldENv
bnRleHQoIjJkIik7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgb3V0cHV0KCJFUlJPUjogQ291
bGQgbm90IGNyZWF0ZSBjYW52YXMgMkQgY29udGV4dC4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHZhciBwcm9wZXJ0eU5hbWVzID0gW107CisgICAgZm9yICh2YXIgcHJvcGVydHkg
aW4gY3R4KQorICAgICAgICBwcm9wZXJ0eU5hbWVzLnB1c2gocHJvcGVydHkpOworICAgIHByb3Bl
cnR5TmFtZXMuc29ydCgpOworCisgICAgb3V0cHV0KCJOZXcgcHJvcGVydGllcyBhbmQgZnVuY3Rp
b25zIHRoYXQgc2hvdWxkIGJlIG1hbnVhbGx5IGV4YW1pbmVkIChzaG91bGQgYmUgZW1wdHkgdG8g
cGFzcyB0aGUgdGVzdCk6Iik7CisgICAgdmFyIHRyYWNrZWRQcm9wZXJ0aWVzID0gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcy5jb25jYXQoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMsIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcywgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEUmVzb3VyY2UuSWdub3JlUHJvcGVydGllcyk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwcm9wZXJ0
eSA9IHByb3BlcnR5TmFtZXNbaV07CisgICAgICAgIGlmICh0cmFja2VkUHJvcGVydGllcy5pbmRl
eE9mKHByb3BlcnR5KSAhPT0gLTEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgb3V0
cHV0KHByb3BlcnR5KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHRyeSB7Cisg
ICAgICAgIHRlc3QoKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0
IHRvIGNhdGNoIENhbnZhcyAyRCBBUEkgY2hhbmdlcy4KK0lmIHRoaXMgdGVzdCBzaG91bGQgZXZl
ciBmYWlsLCB3ZSBzaG91bGQgcmUtZXhhbWluZSB0aGUgQ2FudmFzIDJEIHN0YXRlIHNhdmluZy9y
ZXN0b3JpbmcgbG9naWMgaW4gdGhlCitJbmplY3RlZFNjcmlwdE1vZHVsZSB0byBpbmNsdWRlIGFu
eSBsYXRlc3QgY2hhbmdlcyB0byB0aGUgQVBJLgorCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFz
MmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVyaW5nLWJh
c2ljcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI0YWY5ZTg0YTk3NWJiMTY3NGE5N2JkNDRk
NWFmNWYzZDU1ZmE0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1wcm9maWxlci1jYXB0dXJpbmctYmFzaWNzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3RzIENhbnZhcyAyRCBjYXB0dXJpbmcgYmFzaWNz
LgorCitCdWcgMTAwNzUyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvY2FudmFzMmQvY2FudmFzMmQtcHJvZmlsZXItY2FwdHVyaW5nLWJhc2ljcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNh
cHR1cmluZy1iYXNpY3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGZjNGQ3YTllM2M5ODQ5YzdiN2M3ZWRi
YmE2OTM4ZjdmOTZiN2EyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLXByb2ZpbGVyLWNhcHR1cmluZy1iYXNpY3MuaHRt
bApAQCAtMCwwICsxLDI5MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9jYW52YXMtcHJvZmlsZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCit2YXIgY3R4OwordmFyIHJhd0N0eDsKK3ZhciBjdHhSZXNvdXJjZTsKKwordmFy
IHNhbXBsZUF0dHJpYnV0ZXMxID0geworICAgICJzdHJva2VTdHlsZSI6ICIjMDAwMDAxIiwKKyAg
ICAiZmlsbFN0eWxlIjogIiMwMDAwMDIiLAorICAgICJnbG9iYWxBbHBoYSI6IDAuNSwKKyAgICAi
bGluZVdpZHRoIjogMiwKKyAgICAibGluZUNhcCI6ICJyb3VuZCIsCisgICAgImxpbmVKb2luIjog
ImJldmVsIiwKKyAgICAibWl0ZXJMaW1pdCI6IDEyLAorICAgICJzaGFkb3dPZmZzZXRYIjogMSwK
KyAgICAic2hhZG93T2Zmc2V0WSI6IDIsCisgICAgInNoYWRvd0JsdXIiOiAzLAorICAgICJzaGFk
b3dDb2xvciI6ICIjMDAwMDAzIiwKKyAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIjogInNv
dXJjZS1pbiIsCisgICAgImZvbnQiOiAiMTJweCBzYW5zLXNlcmlmIiwKKyAgICAidGV4dEFsaWdu
IjogImVuZCIsCisgICAgInRleHRCYXNlbGluZSI6ICJ0b3AiLAorICAgICJsaW5lRGFzaE9mZnNl
dCI6IDEKK307CisKK3ZhciBzYW1wbGVBdHRyaWJ1dGVzMiA9IHsKKyAgICAic3Ryb2tlU3R5bGUi
OiAiIzEwMDAwMSIsCisgICAgImZpbGxTdHlsZSI6ICIjMTAwMDAyIiwKKyAgICAiZ2xvYmFsQWxw
aGEiOiAwLAorICAgICJsaW5lV2lkdGgiOiAzLAorICAgICJsaW5lQ2FwIjogInNxdWFyZSIsCisg
ICAgImxpbmVKb2luIjogInJvdW5kIiwKKyAgICAibWl0ZXJMaW1pdCI6IDExLAorICAgICJzaGFk
b3dPZmZzZXRYIjogMywKKyAgICAic2hhZG93T2Zmc2V0WSI6IDQsCisgICAgInNoYWRvd0JsdXIi
OiAyLAorICAgICJzaGFkb3dDb2xvciI6ICIjMTAwMDAzIiwKKyAgICAiZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uIjogInhvciIsCisgICAgImZvbnQiOiAiMTNweCBzYW5zLXNlcmlmIiwKKyAgICAi
dGV4dEFsaWduIjogImxlZnQiLAorICAgICJ0ZXh0QmFzZWxpbmUiOiAibWlkZGxlIiwKKyAgICAi
bGluZURhc2hPZmZzZXQiOiAyCit9OworCitmdW5jdGlvbiBhc3NpZ25BdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCit7CisgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGF0dHJpYnV0ZXMpCisgICAgICAg
IGN0eFthdHRyaWJ1dGVdID0gYXR0cmlidXRlc1thdHRyaWJ1dGVdOworfQorCitmdW5jdGlvbiBh
c3NlcnRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCit7CisgICAgZm9yICh2YXIgYXR0cmlidXRlIGlu
IGF0dHJpYnV0ZXMpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGN0eFthdHRyaWJ1dGVdID09PSBh
dHRyaWJ1dGVzW2F0dHJpYnV0ZV0sICJFeHBlY3RlZCB2YWx1ZSBmb3IgYXR0cmlidXRlICIgKyBh
dHRyaWJ1dGUgKyAiOiAiICsgYXR0cmlidXRlc1thdHRyaWJ1dGVdICsgIiwgYnV0IHdhczogIiAr
IGN0eFthdHRyaWJ1dGVdKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9n
KGV4cGVjdGVkKQoreworICAgIHZhciBjYWxscyA9IGN0eFJlc291cmNlLmNhbGxzKCk7CisgICAg
aWYgKGNhbGxzLmxlbmd0aCAhPT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgdmFyIG5hbWVzID0gW107
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAgJiYgY2FsbHNbaV07ICsraSkKKyAgICAg
ICAgICAgIG5hbWVzLnB1c2goY2FsbHNbaV0uZnVuY3Rpb25OYW1lKCkpOworICAgICAgICBjb25z
b2xlLmVycm9yKCJFeHBlY3RlZCBzaXplIG9mIHRoZSAyRCBjb250ZXh0IGNhbGwgbG9nOiAiICsg
ZXhwZWN0ZWQgKyAiLCBidXQgd2FzOiAiICsgY2FsbHMubGVuZ3RoICsgIiwgbmFtZXM6ICIgKyBu
YW1lcyk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0RHJhd2luZ0F0dHJpYnV0ZXMoKQorewor
ICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKKyAgICBhc3NpZ25BdHRyaWJ1dGVzKHNh
bXBsZUF0dHJpYnV0ZXMxKTsKKyAgICBhc3NlcnRBdHRyaWJ1dGVzKHNhbXBsZUF0dHJpYnV0ZXMx
KTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7CisKKyAgICAvLyBTYXZlIHByZXZp
b3VzIGF0dHJpYnV0ZSB2YWx1ZXMgYW5kIHNldCBuZXcgdmFsdWVzLgorICAgIGN0eC5zYXZlKCk7
CisgICAgYXNzaWduQXR0cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVzMik7CisgICAgYXNzZXJ0QXR0
cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVzMik7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9n
KDEpOworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBhdHRyaWJ1dGUgdmFsdWVzLgorICAgIGN0
eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0QXR0cmlidXRlcyhzYW1wbGVBdHRyaWJ1dGVzMSk7Cisg
ICAgLy8gQ2FsbCBsb2cgc2hvdWxkIGJlIGVtcHR5IGFmdGVyIHNhdmUoKSBhbmQgcmVzdG9yZSgp
IGNhbGxzLgorICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygwKTsKK30KKworZnVuY3Rpb24g
dGVzdFNhdmVSZXN0b3JlU2VxdWVuY2UoKQoreworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxv
ZygwKTsKKyAgICBjdHgucmVzdG9yZSgpOworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0
TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZlKCk7CisgICAgYXNzZXJ0TnVtYmVy
T2ZDYWxsc0luTG9nKDEpOworICAgIGN0eC5zYXZlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxs
c0luTG9nKDIpOworICAgIGN0eC5zYXZlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9n
KDMpOworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDIp
OworICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEpOwor
ICAgIGN0eC5yZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAg
IGN0eC5yZXN0b3JlKCk7CisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNh
bGxzSW5Mb2coMCk7Cit9CisKK2Z1bmN0aW9uIGNhbGxQYXRoTWV0aG9kcygpCit7CisgICAgY3R4
LmJlZ2luUGF0aCgpOworICAgIGN0eC5saW5lV2lkdGggPSAyOworICAgIGN0eC5tb3ZlVG8oMTEs
IDEyKTsKKyAgICBjdHgubGluZVRvKDExMSwgMTEyKTsKKyAgICBjdHguc3Ryb2tlKCk7Cit9CisK
K2Z1bmN0aW9uIGNsZWFyQ29udGV4dFJlc291cmNlTG9nKCkKK3sKKyAgICB3aGlsZSAoY3R4UmVz
b3VyY2UuY2FsbHMoKS5sZW5ndGgpCisgICAgICAgIGN0eFJlc291cmNlLmNhbGxzKCkucG9wKCk7
CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworfQorCitmdW5jdGlvbiB0ZXN0UGF0
aE1ldGhvZHNTZXF1ZW5jZSgpCit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOwor
ICAgIGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygzKTsg
Ly8gW2JlZ2luUGF0aCxtb3ZlVG8sbGluZVRvXQorICAgIGNhbGxQYXRoTWV0aG9kcygpOworICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygzKTsgLy8gb2xkIG1ldGhvZHMgc2hvdWxkIGhhdmUg
YmVlbiBjbGVhcmVkCisgICAgY2xlYXJDb250ZXh0UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rp
b24gdGVzdENsaXBNZXRob2RzKCkKK3sKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMCk7
CisgICAgY3R4LnNhdmUoKTsKKyAgICBjYWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1i
ZXJPZkNhbGxzSW5Mb2coNCk7CisgICAgY3R4LmNsaXAoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNh
bGxzSW5Mb2coNSk7CisgICAgY2FsbFBhdGhNZXRob2RzKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZD
YWxsc0luTG9nKDgpOworICAgIGNhbGxQYXRoTWV0aG9kcygpOworICAgIGFzc2VydE51bWJlck9m
Q2FsbHNJbkxvZyg4KTsgLy8gdGhlIGxhc3QgY2FsbHMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhcmVk
CisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coNSk7IC8v
IFtzYXZlLGJlZ2luUGF0aCxtb3ZlVG8sbGluZVRvLHJlc3RvcmVdCisgICAgY3R4LmJlZ2luUGF0
aCgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygxKTsgLy8gW2JlZ2luUGF0aF0KKyAg
ICBjbGVhckNvbnRleHRSZXNvdXJjZUxvZygpOworfQorCitmdW5jdGlvbiB0ZXN0TWF0cml4TWV0
aG9kcygpCit7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZl
KCk7CisgICAgY3R4LnRyYW5zbGF0ZSgxMDAsIDIwMCk7CisgICAgY3R4LnNjYWxlKDAuOSwgMC45
KTsKKyAgICBjdHgucm90YXRlKDAuMik7CisgICAgY3R4LnRyYW5zbGF0ZSgtMTAwLCAtMjAwKTsK
KyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coNSk7CisgICAgY3R4LnNldFRyYW5zZm9ybSgx
LCAyLCAzLCA0LCA1LCA2KTsKKyAgICBjdHgucm90YXRlKDAuMyk7CisgICAgYXNzZXJ0TnVtYmVy
T2ZDYWxsc0luTG9nKDMpOyAvLyBbc2F2ZSxzZXRUcmFuc2Zvcm0scm90YXRlXQorICAgIGN0eC5y
ZXN0b3JlKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDApOworfQorCitmdW5jdGlv
biB0ZXN0TWF0cml4TWV0aG9kc1dpdGhQYXRoTWV0aG9kcygpCit7CisgICAgYXNzZXJ0TnVtYmVy
T2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZlKCk7CisgICAgY3R4LnRyYW5zbGF0ZSgxMDAs
IDIwMCk7CisgICAgY3R4LnNjYWxlKDAuOSwgMC45KTsKKyAgICBjdHgucm90YXRlKDAuMik7Cisg
ICAgY3R4LnRyYW5zbGF0ZSgtMTAwLCAtMjAwKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5M
b2coNSk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDEsIDEsIDEwLCAxMCk7
CisgICAgY3R4LnRyYW5zbGF0ZSgxLCAyKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2co
OCk7CisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coOCk7
IC8vIFtzYXZlLHRyYW5zbGF0ZSxzY2FsZSxyb3RhdGUsdHJhbnNsYXRlLGJlZ2luUGF0aCxyZWN0
LHJlc3RvcmVdCisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJ
bkxvZygxKTsgLy8gW2JlZ2luUGF0aF0KKyAgICBjbGVhckNvbnRleHRSZXNvdXJjZUxvZygpOwor
fQorCitmdW5jdGlvbiB0ZXN0TmVzdGVkU2F2ZVJlc3RvcmVDYWxscygpCit7CisgICAgYXNzZXJ0
TnVtYmVyT2ZDYWxsc0luTG9nKDApOworICAgIGN0eC5zYXZlKCk7CisgICAgY3R4LnRyYW5zbGF0
ZSgxMDAsIDIwMCk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDEsIDEsIDEw
LCAxMCk7CisgICAgY3R4LmNsaXAoKTsKKyAgICBjdHguc2F2ZSgpOworICAgIGN0eC5yb3RhdGUo
MC4yKTsKKyAgICBjYWxsUGF0aE1ldGhvZHMoKTsKKyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5M
b2coMTApOyAvLyBbc2F2ZSx0cmFuc2xhdGUsYmVnaW5QYXRoLHJlY3QsY2xpcCxzYXZlLHJvdGF0
ZSxiZWdpblBhdGgsbW92ZVRvLGxpbmVUb10KKyAgICBjdHgucmVzdG9yZSgpOworICAgIGFzc2Vy
dE51bWJlck9mQ2FsbHNJbkxvZygxMSk7CisgICAgY3R4LnJlc3RvcmUoKTsKKyAgICBhc3NlcnRO
dW1iZXJPZkNhbGxzSW5Mb2coOSk7IC8vIFtzYXZlLHRyYW5zbGF0ZSxzYXZlLHJvdGF0ZSxiZWdp
blBhdGgsbW92ZVRvLGxpbmVUbyxyZXN0b3JlLHJlc3RvcmVdCisgICAgY3R4LnJlc3RvcmUoKTsK
KyAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coOSk7IC8vIG5vIGVmZmVjdAorICAgIGN0eC5z
ZXRUcmFuc2Zvcm0oMSwgMiwgMywgNCwgNSwgNik7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0lu
TG9nKDEwKTsgLy8gbm90aGluZyB0byByZW1vdmUgZnJvbSB0aGUgbG9nCisgICAgY3R4LmJlZ2lu
UGF0aCgpOworICAgIGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygyKTsgLy8gW3NldFRyYW5zZm9y
bSxiZWdpblBhdGhdCisgICAgY2xlYXJDb250ZXh0UmVzb3VyY2VMb2coKTsKK30KKworZnVuY3Rp
b24gdGVzdERlZXBOZXN0ZWRTYXZlUmVzdG9yZUNhbGxzKCkKK3sKKyAgICBhc3NlcnROdW1iZXJP
ZkNhbGxzSW5Mb2coMCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAg
ICAgIGN0eC5zYXZlKCk7CisgICAgICAgIGN0eC50cmFuc2xhdGUoMSwgMik7CisgICAgfQorICAg
IGFzc2VydE51bWJlck9mQ2FsbHNJbkxvZygyMCk7CisgICAgY2FsbFBhdGhNZXRob2RzKCk7Cisg
ICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDIzKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyArK2kpIHsKKyAgICAgICAgY3R4LnJvdGF0ZSgxKTsKKyAgICAgICAgY3R4LnNjYWxlKDIp
OworICAgICAgICBjdHguY2xpcCgpOworICAgICAgICBjdHgudHJhbnNmb3JtKDMpOworICAgICAg
ICBjdHgucmVzdG9yZSgpOworICAgICAgICBhc3NlcnROdW1iZXJPZkNhbGxzSW5Mb2coMjQgKyBp
KTsKKyAgICB9CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDMzKTsKKyAgICBjdHguYmVn
aW5QYXRoKCk7CisgICAgYXNzZXJ0TnVtYmVyT2ZDYWxsc0luTG9nKDEpOyAvLyBub3cgY2xlYXIg
dXAgdGhlIGxvZworICAgIGNsZWFyQ29udGV4dFJlc291cmNlTG9nKCk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFuZFJ1bkNhbnZhczJEUHJvZ3JhbSgpCit7CisgICAgY3R4ID0gY3JlYXRlQ2FudmFz
MkRDb250ZXh0KCk7CisgICAgY29uc29sZS5hc3NlcnQoY3R4LCAiRmFpbGVkIHRvIGNyZWF0ZSAy
RCBjb250ZXh0Iik7CisKKyAgICBjdHhSZXNvdXJjZSA9IGN0eFsiX19yZXNvdXJjZU9iamVjdCJd
OworICAgIGNvbnNvbGUuYXNzZXJ0KGN0eFJlc291cmNlLCAiMkQgY29udGV4dCBpcyBub3Qgd3Jh
cHBlZCIpOworCisgICAgcmF3Q3R4ID0gY3R4UmVzb3VyY2Uud3JhcHBlZE9iamVjdCgpOworICAg
IGNvbnNvbGUuYXNzZXJ0KHJhd0N0eCwgIk5vIHJhdyAyRCBjb250ZXh0IGZvdW5kIik7CisgICAg
Y29uc29sZS5hc3NlcnQoY3R4ICE9PSByYXdDdHgsICJQcm94eSBhbmQgUkFXIGNvbnRleHRzIHNo
b3VsZCBub3QgYmUgdGhlIHNhbWUiKTsKKworICAgIHRlc3REcmF3aW5nQXR0cmlidXRlcygpOwor
ICAgIHRlc3RTYXZlUmVzdG9yZVNlcXVlbmNlKCk7CisgICAgdGVzdFBhdGhNZXRob2RzU2VxdWVu
Y2UoKTsKKyAgICB0ZXN0Q2xpcE1ldGhvZHMoKTsKKyAgICB0ZXN0TWF0cml4TWV0aG9kcygpOwor
ICAgIHRlc3RNYXRyaXhNZXRob2RzV2l0aFBhdGhNZXRob2RzKCk7CisgICAgdGVzdE5lc3RlZFNh
dmVSZXN0b3JlQ2FsbHMoKTsKKyAgICB0ZXN0RGVlcE5lc3RlZFNhdmVSZXN0b3JlQ2FsbHMoKTsK
KworICAgIHJldHVybiAiU1VDQ0VTUyI7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIElu
c3BlY3RvclRlc3QuZW5hYmxlQ2FudmFzQWdlbnQoc3RlcDEpOworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoImNyZWF0
ZUFuZFJ1bkNhbnZhczJEUHJvZ3JhbSgpIiwgc3RlcDIpOworICAgIH0KKyAgICBmdW5jdGlvbiBz
dGVwMihlcnJvcikKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJc
IlNVQ0NFU1NcIiIsIGVycm9yKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+CitUZXN0cyBDYW52YXMgMkQgY2FwdHVyaW5nIGJhc2ljcy4KKzwvcD4KKzxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NTIiPkJ1ZyAx
MDA3NTI8L2E+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJy
b3IuaHRtbAppbmRleCA1ZGQyNTk3N2RiOWRmMjAyMGQ3YWE5YTM4YTQ2ZDYxZTgxZTcyNzlmLi41
YmNjMDQxNDk1YzRkNGE4OGFlMTA4NDJiMTI5ZTNiNTA5MzFjMWM2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9y
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXBy
b2ZpbGVyLWdldC1lcnJvci5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJ3ZWJnbC1wcm9maWxlci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vY2FudmFzLXByb2ZpbGVyLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KIAogdmFyIGdsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBmM2Y1ZWJiODQyYTQ5NTg0ODRhNWQ1Yjk3ZmJm
MGVhNTcxYjdkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVz
dC5qcworKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLXZhciBpbml0aWFsaXplX0NhbnZh
c1dlYkdMUHJvZmlsZXJUZXN0ID0gZnVuY3Rpb24oKSB7Ci0KLUluc3BlY3RvclRlc3QuZW5hYmxl
Q2FudmFzQWdlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjYW52YXNB
Z2VudEVuYWJsZWQoZXJyb3IpCi0gICAgewotICAgICAgICBpZiAoIWVycm9yKQotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjaykoKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVEIHRvIGVuYWJsZSBDYW52
YXNBZ2VudDogIiArIGVycm9yKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdHJ5IHsKLSAgICAgICAgQ2FudmFzQWdlbnQu
ZW5hYmxlKGNhbnZhc0FnZW50RW5hYmxlZCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXhjZXB0aW9uIHdoaWxlIGVuYWJsaW5nIENhbnZhc0Fn
ZW50IiwgZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQot
fTsKLQotfTsKLQotZnVuY3Rpb24gY3JlYXRlV2ViR0xDb250ZXh0KG9wdF9jYW52YXMpCi17Ci0g
ICAgdmFyIGNhbnZhcyA9IG9wdF9jYW52YXMgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7Ci0gICAgdmFyIGNvbnRleHRJZHMgPSBbImV4cGVyaW1lbnRhbC13ZWJnbCIsICJ3ZWJr
aXQtM2QiLCAiM2QiXTsKLSAgICBmb3IgKHZhciBpID0gMCwgY29udGV4dElkOyBjb250ZXh0SWQg
PSBjb250ZXh0SWRzW2ldOyArK2kpIHsKLSAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRl
eHQoY29udGV4dElkKTsKLSAgICAgICAgaWYgKGdsKQotICAgICAgICAgICAgcmV0dXJuIGdsOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLX0KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>