<?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>48761</bug_id>
          
          <creation_ts>2010-11-01 08:45:34 -0700</creation_ts>
          <short_desc>Web Inspector: [Extensions API] expose API to create properties watch sidebar panes</short_desc>
          <delta_ts>2011-04-08 01:27:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302713</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-11-01 08:45:34 -0700</bug_when>
    <thetext>A common task for extensions would be to display a tree of properties of an object on the inspected page. While it would be possible for extension to re-implement object display and marshaling logic we have in InjectedScript, RemoteObject and PropertiesSection, we would like to provide a simple way for extension to add a sidebar pane similar to our property / expression watch sidebar panes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302740</commentid>
    <comment_count>1</comment_count>
      <attachid>72515</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-11-01 09:20:19 -0700</bug_when>
    <thetext>Created attachment 72515
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302773</commentid>
    <comment_count>2</comment_count>
      <attachid>72515</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-01 10:36:37 -0700</bug_when>
    <thetext>Comment on attachment 72515
patch

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

&gt; WebCore/inspector/front-end/ExtensionAPI.js:271
&gt; +    setObject: function(expression, rootTitle)

expression -&gt; jsonObject

&gt; WebCore/inspector/front-end/ExtensionPanel.js:118
&gt; +WebInspector.LocalJSONObject = function(value)

I&apos;d suggest that you move LocalJSONObject into RemoteObject.js and update the factory method there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302807</commentid>
    <comment_count>3</comment_count>
      <attachid>72528</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-11-01 11:32:43 -0700</bug_when>
    <thetext>Created attachment 72528
patch to land

- Moved LocalJSONObject to RemoteObject.js, added RemoteObject.fromLocalObject()
- setObject(expression,...) =&gt; setObject(jsonObject,...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307538</commentid>
    <comment_count>4</comment_count>
      <attachid>72515</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-10 14:02:48 -0800</bug_when>
    <thetext>Comment on attachment 72515
patch

Cleared Pavel Feldman&apos;s review+ from obsolete attachment 72515 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382076</commentid>
    <comment_count>5</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-04-08 01:27:06 -0700</bug_when>
    <thetext>Patch laneded at r71107: http://trac.webkit.org/changeset/71107</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72515</attachid>
            <date>2010-11-01 09:20:19 -0700</date>
            <delta_ts>2010-11-10 14:02:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>extensions-watch.diff</filename>
            <type>text/plain</type>
            <size>20784</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMmEzMzEzLi4zZTI4M2Y3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEt
MDEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0ZW5z
aW9ucyBBUEldIGV4cG9zZSBBUEkgdG8gY3JlYXRlIHByb3BlcnRpZXMgd2F0Y2ggc2lkZWJhciBw
YW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3
NjEKKworICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXZlbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2V4dGVuc2lvbnMtdGVzdC5qczogQWRkZWQgZ2VuZXJpYyB3YXkgdG8gZGlzcGF0Y2ggbWVz
c2FnZXMgdG8gZnJvbnQtZW5kIGFuZCByZWNlaXZlIGNhbGxiYWNrcy4KKyAgICAgICAgKGluaXRp
YWxpemVfRXh0ZW5zaW9uc1Rlc3QuSW5zcGVjdG9yVGVzdC5kaXNwYXRjaE9uTWVzc2FnZSk6Cisg
ICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNUZXN0Lkluc3BlY3RvclRlc3QuZHVtcFNpZGVi
YXJDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9uLW1haW4uanM6CisgICAgICAgIChkaXNw
YXRjaE9uRnJvbnRlbmQuY2FsbGJhY2tXcmFwcGVyKToKKyAgICAgICAgKGRpc3BhdGNoT25Gcm9u
dGVuZCk6CisKIDIwMTAtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBVcGRhdGluZyBpbnNwZWN0b3IgdGVzdCBleHBl
Y3RhdGlvbiBhcyBhIGZvbGxvdyB1cCB0byByNzEwMTAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dAppbmRleCBjN2E3OTIwLi5kODg2MzEz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3Rl
ZC50eHQKQEAgLTI3LDYgKzI3LDcgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQog
ICAgIHBhbmVscyA6IHsKICAgICAgICAgZWxlbWVudHMgOiB7CiAgICAgICAgICAgICBjcmVhdGVT
aWRlYmFyUGFuZSA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIGNyZWF0ZVdhdGNoRXhwcmVzc2lv
blNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgogICAgICAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2Vk
IDogewogICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgogICAgICAgICAg
ICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgpAQCAtMzQsNiArMzUsNyBAQCBSVU5O
SU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QVBJCiAgICAgICAgIH0KICAgICAgICAgc2NyaXB0cyA6
IHsKICAgICAgICAgICAgIGNyZWF0ZVNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgorICAgICAgICAg
ICAgY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUgOiA8ZnVuY3Rpb24+CiAgICAgICAg
ICAgICBvblNlbGVjdGlvbkNoYW5nZWQgOiB7CiAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIg
OiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1ldmVudHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXZlbnRzLWV4cGVj
dGVkLnR4dAppbmRleCA4YmNmMDAwLi5jYTE0M2E4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBA
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjcwOiBbb2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50
XQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY2OTogW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVu
dF0KIFRlc3RzIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJCiAKIFBhZ2UgcmVsb2FkZWQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKaW5kZXggYmQ1
YTk1Mi4uMTVjNjY1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4
cGVjdGVkLnR4dApAQCAtOCw2ICs4LDcgQEAgZG9uZSBjcmVhdGVQYW5lbAogUGFuZWwgY3JlYXRl
ZAogewogICAgIGNyZWF0ZVNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgorICAgIGNyZWF0ZVdhdGNo
RXhwcmVzc2lvblNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgogICAgIG9uU2VsZWN0aW9uQ2hhbmdl
ZCA6IHsKICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgIHJlbW92ZUxp
c3RlbmVyIDogPGZ1bmN0aW9uPgpAQCAtMjMsNSArMjQsMjIgQEAgU2lkZWJhciBjcmVhdGVkCiAg
ICAgc2V0SGVpZ2h0IDogPGZ1bmN0aW9uPgogICAgIHNldEV4cGFuZGVkIDogPGZ1bmN0aW9uPgog
fQorUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEV4dGVuc2lvbldhdGNoU2lkZWJhckV4cHJl
c3Npb24KK1NpZGViYXIgY29udGVudDogdGl0bGVmMDogImV4cHJlc3Npb24iZjE6IHVuZGVmaW5l
ZGYyOiBudWxsZjM6IE9iamVjdGY0OiBBcnJheVswXWY1OiBBcnJheVszXWY2OiBPYmplY3RmNzog
NDJmODogTG9jYXRpb25mOTogSFRNTENvbGxlY3Rpb25bMjZdZjEwOiBmdW5jdGlvbiAoKSB7fV9f
cHJvdG9fXzogT2JqZWN0CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0RXh0ZW5zaW9uV2F0
Y2hTaWRlYmFyT2JqZWN0CitXYXRjaCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50
cyBkdW1wIGZvbGxvd3M6Cit7CisgICAgMCA6IHsKKyAgICAgICAgc2V0SGVpZ2h0IDogPGZ1bmN0
aW9uPgorICAgICAgICBzZXRFeHBhbmRlZCA6IDxmdW5jdGlvbj4KKyAgICAgICAgc2V0RXhwcmVz
c2lvbiA6IDxmdW5jdGlvbj4KKyAgICAgICAgc2V0T2JqZWN0IDogPGZ1bmN0aW9uPgorICAgICAg
ICBvblVwZGF0ZWQgOiB7CisgICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAg
ICAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICB9CisgICAgfQor
fQorU2lkZWJhciBjb250ZW50OiBmMDogIm9iamVjdCJmMTogdW5kZWZpbmVkZjI6IG51bGxmMzog
eyB9ZjQ6IFswXWY1OiBbM11mNjogey4uLn1mNzogNDIKIEFsbCB0ZXN0cyBkb25lLgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwppbmRleCBjZDlmMjkzLi4zMWI2Mjk1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKQEAgLTE3LDE0ICsx
NywxNyBAQCBmdW5jdGlvbiBleHRlbnNpb25GdW5jdGlvbnMoKQogdmFyIGluaXRpYWxpemVfRXh0
ZW5zaW9uc1Rlc3QgPSBmdW5jdGlvbigpCiB7CiAKLUluc3BlY3RvclRlc3QuZGlzcGF0Y2hPbk1l
c3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlSWQsIGNhbGxiYWNrKQorSW5zcGVjdG9yVGVzdC5kaXNw
YXRjaE9uTWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VJZCwgY2FsbGJhY2ssIHJlY3VycmluZykK
IHsKICAgICBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoZXZl
bnQuZGF0YSA9PT0gbWVzc2FnZUlkKSB7CisgICAgICAgIGlmIChldmVudC5kYXRhICE9PSBtZXNz
YWdlSWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghcmVjdXJyaW5nKQogICAg
ICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBvbk1lc3NhZ2Us
IGZhbHNlKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICAgICAgaWYgKGV2ZW50LnBvcnRzICYmIGV2ZW50LnBvcnRzWzBdKQorICAg
ICAgICAgICAgZXZlbnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoIiIpOwogICAgIH0KICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uTWVzc2FnZSwgZmFsc2UpOwogfQpAQCAt
NDcsNiArNTAsMTYgQEAgSW5zcGVjdG9yVGVzdC5ydW5FeHRlbnNpb25UZXN0cyA9IGZ1bmN0aW9u
KCkKICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcoYWRkRXh0ZW5zaW9u
KTsKIH0KIAorSW5zcGVjdG9yVGVzdC5kdW1wU2lkZWJhckNvbnRlbnQgPSBmdW5jdGlvbigpCit7
CisgICAgdmFyIHNpZGViYXJQYW5lcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zaWRl
YmFyUGFuZXM7CisgICAgLy8gdGhlIHNpZGViYXIgb2YgaW50ZXJlc3QgaXMgcHJlc3VtZWQgdG8g
YWx3YXlzIGJlIGxhc3QuCisgICAgdmFyIHNpZGViYXIgPSBzaWRlYmFyUGFuZXNbT2JqZWN0Lmtl
eXMoc2lkZWJhclBhbmVzKS5wb3AoKV07CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNp
ZGViYXIgY29udGVudDogIiArIHNpZGViYXIuYm9keUVsZW1lbnQudGV4dENvbnRlbnQpOworfQor
CitJbnNwZWN0b3JUZXN0LmRpc3BhdGNoT25NZXNzYWdlKCJkdW1wLXNpZGViYXItY29udGVudCIs
IEluc3BlY3RvclRlc3QuZHVtcFNpZGViYXJDb250ZW50LCB0cnVlKTsKKwogfQogCiB2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNp
b25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sCmluZGV4IDFi
NTQxMmEuLjA4ZjAyMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNp
b25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMuaHRtbApAQCAt
MjUsNiArMjUsNTggQEAgZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RDcmVhdGVTaWRlYmFyKG5leHRU
ZXN0KQogICAgIHdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5jcmVhdGVTaWRlYmFyUGFuZSgi
VGVzdCBTaWRlYmFyIiwgImV4dGVuc2lvbi1zaWRlYmFyLmh0bWwiLCBjYWxsYmFja0FuZE5leHRU
ZXN0KG9uU2lkZWJhckNyZWF0ZWQsIG5leHRUZXN0KSk7CiB9CiAKK2Z1bmN0aW9uIGV4dGVuc2lv
bl9kdW1wU2lkZWJhckNvbnRlbnQobmV4dFRlc3QpCit7CisgICAgZGlzcGF0Y2hPbkZyb250ZW5k
KCJkdW1wLXNpZGViYXItY29udGVudCIsIG5leHRUZXN0KTsKK30KKworZnVuY3Rpb24gZXh0ZW5z
aW9uX3Rlc3RFeHRlbnNpb25XYXRjaFNpZGViYXJPYmplY3QobmV4dFRlc3QpCit7CisgICAgZnVu
Y3Rpb24gb25TaWRlYmFyQ3JlYXRlZChzaWRlYmFyKQorICAgIHsKKyAgICAgICAgb3V0cHV0KCJX
YXRjaCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1wIGZvbGxvd3M6Iik7
CisgICAgICAgIGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRz
KSk7CisgICAgICAgIHNpZGViYXIub25VcGRhdGVkLmFkZExpc3RlbmVyKGJpbmQoZXh0ZW5zaW9u
X2R1bXBTaWRlYmFyQ29udGVudCwgdGhpcywgbmV4dFRlc3QpKTsKKyAgICAgICAgc2lkZWJhci5z
ZXRPYmplY3QoeworICAgICAgICAgICAgZjA6ICJvYmplY3QiLAorICAgICAgICAgICAgZjE6IHVu
ZGVmaW5lZCwKKyAgICAgICAgICAgIGYyOiBudWxsLAorICAgICAgICAgICAgZjM6IHt9LAorICAg
ICAgICAgICAgZjQ6IFtdLAorICAgICAgICAgICAgZjU6IFsiYWEiLCAiYmIiLCAiY2MiXSwKKyAg
ICAgICAgICAgIGY2OiB7IGY2MDogNDIsIGY2MTogImZvbyIsIGY2MjogW10gfSwKKyAgICAgICAg
ICAgIGY3OiA0MgorICAgICAgICB9KTsKKyAgICB9CisgICAgd2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLmNyZWF0ZVdhdGNoRXhwcmVzc2lvblNpZGViYXJQYW5lKCJXYXRjaCBUZXN0OiBPYmpl
Y3QiLCBvblNpZGViYXJDcmVhdGVkKTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RFeHRl
bnNpb25XYXRjaFNpZGViYXJFeHByZXNzaW9uKG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9u
U2lkZWJhckNyZWF0ZWQoc2lkZWJhcikKKyAgICB7CisgICAgICAgIHNpZGViYXIub25VcGRhdGVk
LmFkZExpc3RlbmVyKGJpbmQoZXh0ZW5zaW9uX2R1bXBTaWRlYmFyQ29udGVudCwgdGhpcywgbmV4
dFRlc3QpKTsKKyAgICAgICAgZnVuY3Rpb24gZXhwcmVzc2lvbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgZjA6ICdleHByZXNzaW9uJywKKyAgICAg
ICAgICAgICAgICBmMTogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgIGYyOiBudWxsLAorICAg
ICAgICAgICAgICAgIGYzOiB7fSwKKyAgICAgICAgICAgICAgICBmNDogW10sCisgICAgICAgICAg
ICAgICAgZjU6IFsiYWEiLCAiYmIiLCAiY2MiXSwKKyAgICAgICAgICAgICAgICBmNjogeyBmNjA6
IDQyLCBmNjE6ICJmb28iLCBmNjI6IFtdIH0sCisgICAgICAgICAgICAgICAgZjc6IDQyLAorICAg
ICAgICAgICAgICAgIGY4OiB3aW5kb3cubG9jYXRpb24sCisgICAgICAgICAgICAgICAgZjk6IGRv
Y3VtZW50LmJvZHkuY2hpbGRyZW4sCisgICAgICAgICAgICAgICAgZjEwOiBmdW5jdGlvbigpIHt9
CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHNpZGViYXIuc2V0RXhwcmVzc2lv
bigiKCIgKyBleHByZXNzaW9uLnRvU3RyaW5nKCkgKyAiKSgpOyIsICJ0aXRsZSIpOworICAgIH0K
KyAgICB3ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lk
ZWJhclBhbmUoIldhdGNoIFRlc3Q6IEV4cHJlc3Npb24iLCBvblNpZGViYXJDcmVhdGVkKTsKK30K
KwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24tbWFpbi5qcwppbmRleCAx
NjY5NzMzLi5kMGYxYzJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2V4dGVuc2lvbi1tYWluLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvZXh0ZW5zaW9uLW1haW4uanMKQEAgLTQwLDYgKzQwLDE5IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
dGVzdCwgbmFtZSkKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGRpc3BhdGNoT25Gcm9udGVuZChtZXNz
YWdlLCBjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFja1dyYXBwZXIoKQorICAgIHsK
KyAgICAgICAgY2hhbm5lbC5wb3J0MS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgY2Fs
bGJhY2tXcmFwcGVyLCBmYWxzZSk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorICAgIHZh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgY2hhbm5lbC5wb3J0MS5zdGFy
dCgpOworICAgIGNoYW5uZWwucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGNhbGxi
YWNrV3JhcHBlciwgZmFsc2UpOworICAgIHRvcC5wb3N0TWVzc2FnZShtZXNzYWdlLCBbIGNoYW5u
ZWwucG9ydDIgXSwgIioiKTsKK30KKwogZnVuY3Rpb24gY2FsbGJhY2tBbmROZXh0VGVzdChjYWxs
YmFjaywgbmV4dFRlc3QpCiB7CiAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxYWE2
YS4uZDJiYmE0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0xMS0wMSAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gZXhwb3NlIEFQSSB0
byBjcmVhdGUgcHJvcGVydGllcyB3YXRjaCBzaWRlYmFyIHBhbmVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc2MQorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5q
ZWN0ZWRFeHRlbnNpb25BUEkuUGFuZWxJbXBsLnByb3RvdHlwZS5jcmVhdGVTaWRlYmFyUGFuZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUGFuZWxJbXBsLnBy
b3RvdHlwZS5jcmVhdGVXYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZS5jYWxsYmFja1dyYXBwZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLlBhbmVsSW1wbC5w
cm90b3R5cGUuY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5p
bmplY3RlZEV4dGVuc2lvbkFQSS5XYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZUltcGwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLldhdGNoRXhwcmVzc2lvblNp
ZGViYXJQYW5lSW1wbC5wcm90b3R5cGUuc2V0RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmVJbXBs
LnByb3RvdHlwZS5zZXRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRl
YmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRlYmFyUGFu
ZS5wcm90b3R5cGUuc2V0T2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25X
YXRjaFNpZGViYXJQYW5lLnByb3RvdHlwZS5zZXRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FeHRlbnNpb25XYXRjaFNpZGViYXJQYW5lLnByb3RvdHlwZS5fb25FdmFsdWF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRlYmFyUGFuZS5wcm90b3R5
cGUuX3NldE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QucHJvdG90eXBlLmdldCBkZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlw
ZS5nZXQgdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3Rv
dHlwZS5nZXQgaGFzQ2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxvY2FsSlNPTk9i
amVjdC5wcm90b3R5cGUuZ2V0T3duUHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZS5nZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Mb2NhbEpTT05PYmplY3QucHJvdG90eXBlLmlzRXJyb3IpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkV4dGVuc2lvblNlcnZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2Vy
dmVyLnByb3RvdHlwZS5ub3RpZnlFeHRlbnNpb25XYXRjaFNpZGViYXJVcGRhdGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkNyZWF0ZVNpZGVi
YXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29u
Q3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX2NyZWF0ZVNpZGViYXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uU2V0V2F0Y2hTaWRlYmFyQ29u
dGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoK
KyAgICAgICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IuKToKKwogMjAxMC0xMS0wMSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBSb2IgQnVpcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BUEkuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJ
LmpzCmluZGV4IDVkMDkwYjAuLjlkOTQ1YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvbkFQSS5qcwpAQCAtMTk3LDYgKzE5NywxOSBAQCBQYW5lbEltcGwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFeHRlbnNpb25TaWRlYmFyUGFu
ZShpZCkpOwogICAgICAgICB9CiAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7
IGNvbW1hbmQ6ICJjcmVhdGVTaWRlYmFyUGFuZSIsIHBhbmVsOiB0aGlzLl9pZCwgaWQ6IGlkLCB0
aXRsZTogdGl0bGUsIHVybDogZXhwYW5kVVJMKHVybCkgfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tX
cmFwcGVyKTsKKyAgICB9LAorCisgICAgY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmU6
IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBpZCA9ICJ3YXRj
aC1zaWRlYmFyLSIgKyBleHRlbnNpb25TZXJ2ZXIubmV4dE9iamVjdElkKCk7CisgICAgICAgIGZ1
bmN0aW9uIGNhbGxiYWNrV3JhcHBlcihyZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChyZXN1bHQuaXNFcnJvcikKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBXYXRjaEV4cHJlc3Np
b25TaWRlYmFyUGFuZShpZCkpOworICAgICAgICB9CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5z
ZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJjcmVhdGVXYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZSIs
IHBhbmVsOiB0aGlzLl9pZCwgaWQ6IGlkLCB0aXRsZTogdGl0bGUgfSwgY2FsbGJhY2sgJiYgY2Fs
bGJhY2tXcmFwcGVyKTsKICAgICB9CiB9CiAKQEAgLTIwNCw2ICsyMTcsNyBAQCBmdW5jdGlvbiBQ
YW5lbChpZCkKIHsKICAgICB2YXIgaW1wbCA9IG5ldyBQYW5lbEltcGwoaWQpOwogICAgIHRoaXMu
Y3JlYXRlU2lkZWJhclBhbmUgPSBiaW5kKGltcGwuY3JlYXRlU2lkZWJhclBhbmUsIGltcGwpOwor
ICAgIHRoaXMuY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUgPSBiaW5kKGltcGwuY3Jl
YXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUsIGltcGwpOwogICAgIHRoaXMub25TZWxlY3Rp
b25DaGFuZ2VkID0gbmV3IEV2ZW50U2luaygicGFuZWwtb2JqZWN0U2VsZWN0ZWQtIiArIGlkKTsK
IH0KIApAQCAtMjM1LDEzICsyNDksNDAgQEAgRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsLnByb3Rv
dHlwZSA9IHsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIEV4dGVuc2lvblNpZGViYXJQYW5lKGlkKQor
ZnVuY3Rpb24gRXh0ZW5zaW9uU2lkZWJhclBhbmUoaWQsIGltcGwpCiB7Ci0gICAgdmFyIGltcGwg
PSBuZXcgRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsKGlkKTsKKyAgICBpZiAoIWltcGwpCisgICAg
ICAgIGltcGwgPSBuZXcgRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsKGlkKTsKICAgICB0aGlzLnNl
dEhlaWdodCA9IGJpbmQoaW1wbC5zZXRIZWlnaHQsIGltcGwpOwogICAgIHRoaXMuc2V0RXhwYW5k
ZWQgPSBiaW5kKGltcGwuc2V0RXhwYW5kZWQsIGltcGwpOwogfQogCitmdW5jdGlvbiBXYXRjaEV4
cHJlc3Npb25TaWRlYmFyUGFuZUltcGwoaWQpCit7CisgICAgRXh0ZW5zaW9uU2lkZWJhclBhbmVJ
bXBsLmNhbGwodGhpcywgaWQpOworfQorCitXYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZUltcGwu
cHJvdG90eXBlID0geworICAgIHNldEV4cHJlc3Npb246IGZ1bmN0aW9uKGV4cHJlc3Npb24sIHJv
b3RUaXRsZSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNv
bW1hbmQ6ICJzZXRXYXRjaFNpZGViYXJDb250ZW50IiwgaWQ6IHRoaXMuX2lkLCBleHByZXNzaW9u
OiBleHByZXNzaW9uLCByb290VGl0bGU6IHJvb3RUaXRsZSwgZXZhbHVhdGVPblBhZ2U6IHRydWUg
fSk7CisgICAgfSwKKworICAgIHNldE9iamVjdDogZnVuY3Rpb24oZXhwcmVzc2lvbiwgcm9vdFRp
dGxlKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFu
ZDogInNldFdhdGNoU2lkZWJhckNvbnRlbnQiLCBpZDogdGhpcy5faWQsIGV4cHJlc3Npb246IGV4
cHJlc3Npb24sIHJvb3RUaXRsZTogcm9vdFRpdGxlIH0pOworICAgIH0KK30KKworZnVuY3Rpb24g
V2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUoaWQpCit7CisgICAgdmFyIGltcGwgPSBuZXcgV2F0
Y2hFeHByZXNzaW9uU2lkZWJhclBhbmVJbXBsKGlkKTsKKyAgICBFeHRlbnNpb25TaWRlYmFyUGFu
ZS5jYWxsKHRoaXMsIGlkLCBpbXBsKTsKKyAgICB0aGlzLnNldEV4cHJlc3Npb24gPSBiaW5kKGlt
cGwuc2V0RXhwcmVzc2lvbiwgaW1wbCk7CisgICAgdGhpcy5zZXRPYmplY3QgPSBiaW5kKGltcGwu
c2V0T2JqZWN0LCBpbXBsKTsKKyAgICB0aGlzLm9uVXBkYXRlZCA9IG5ldyBFdmVudFNpbmsoIndh
dGNoLXNpZGViYXItdXBkYXRlZC0iICsgaWQpOworfQorCiBmdW5jdGlvbiBBdWRpdHMoKQogewog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVs
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzCmluZGV4
IGJhNWZhOGUuLjQ4OWYyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25QYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uUGFuZWwuanMKQEAgLTgwLDMgKzgwLDkyIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25Q
YW5lbC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5FeHRlbnNpb25QYW5lbC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKKworV2ViSW5z
cGVjdG9yLkV4dGVuc2lvbldhdGNoU2lkZWJhclBhbmUgPSBmdW5jdGlvbih0aXRsZSwgaWQpCit7
CisgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLmNhbGwodGhpcywgdGl0bGUpOworICAgIHRo
aXMuX2lkID0gaWQ7Cit9CisKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25XYXRjaFNpZGViYXJQYW5l
LnByb3RvdHlwZSA9IHsKKyAgICBzZXRPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgdGl0bGUpCisg
ICAgeworICAgICAgICB0aGlzLl9zZXRPYmplY3QobmV3IFdlYkluc3BlY3Rvci5Mb2NhbEpTT05P
YmplY3Qob2JqZWN0KSwgdGl0bGUpOworICAgIH0sCisKKyAgICBzZXRFeHByZXNzaW9uOiBmdW5j
dGlvbihleHByZXNzaW9uLCB0aXRsZSkKKyAgICB7CisgICAgICAgIEluamVjdGVkU2NyaXB0QWNj
ZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZShleHByZXNzaW9uLCB0aGlzLl9vbkV2YWx1YXRlLmJp
bmQodGhpcywgdGl0bGUpKTsKKyAgICB9LAorCisgICAgX29uRXZhbHVhdGU6IGZ1bmN0aW9uKHRp
dGxlLCByZXN1bHQpCisgICAgeworICAgICAgICB0aGlzLl9zZXRPYmplY3QoV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpLCB0aXRsZSk7CisgICAgfSwKKworICAg
IF9zZXRPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgdGl0bGUpCisgICAgeworICAgICAgICB0aGlz
LmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHZhciBzZWN0aW9uID0gbmV3
IFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbihvYmplY3QsIHRpdGxlLCBudWxs
LCB0cnVlKTsKKyAgICAgICAgaWYgKCF0aXRsZSkKKyAgICAgICAgICAgIHNlY3Rpb24uaGVhZGVy
RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgc2VjdGlvbi5leHBhbmRl
ZCA9IHRydWU7CisgICAgICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VjdGlvbi5l
bGVtZW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlFeHRl
bnNpb25XYXRjaFNpZGViYXJVcGRhdGVkKHRoaXMuX2lkKTsKKyAgICB9Cit9CisKK1dlYkluc3Bl
Y3Rvci5Mb2NhbEpTT05PYmplY3QgPSBmdW5jdGlvbih2YWx1ZSkKK3sKKyAgICB0aGlzLl92YWx1
ZSA9IHZhbHVlOworfQorCitXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9
IHsKKyAgICBnZXQgZGVzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHR5cGUgPSB0aGlz
LnR5cGU7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSAiYXJyYXki
OgorICAgICAgICAgICAgICAgIHJldHVybiAiWyIgKyB0aGlzLl92YWx1ZS5sZW5ndGggKyAiXSI7
CisgICAgICAgICAgICBjYXNlICJvYmplY3QiOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
Lmhhc0NoaWxkcmVuID8gInsuLi59IiA6ICJ7IH0iOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5fdmFsdWUpOworICAgICAg
ICB9CisgICAgfSwKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl92
YWx1ZSA9PT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiAibnVsbCI7CisgICAgICAgIGlmICh0
aGlzLl92YWx1ZSBpbnN0YW5jZW9mIEFycmF5KQorICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7
CisgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fdmFsdWU7CisgICAgfSwKKworICAgIGdldCBo
YXNDaGlsZHJlbigpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3ZhbHVlID09
PSAib2JqZWN0IiAmJiB0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0aGlzLl92
YWx1ZSkubGVuZ3RoOworICAgIH0sCisKKyAgICBnZXRPd25Qcm9wZXJ0aWVzOiBmdW5jdGlvbihh
YmJyZXZpYXRlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmdldFByb3Bl
cnRpZXMoZmFsc2UsIGFiYnJldmlhdGUsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgZ2V0UHJv
cGVydGllczogZnVuY3Rpb24oaWdub3JlSGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUsIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eShwcm9wTmFtZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
UHJvcGVydHkocHJvcE5hbWUsIG5ldyBXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0KHRoaXMu
X3ZhbHVlW3Byb3BOYW1lXSkpOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKE9iamVjdC5r
ZXlzKHRoaXMuX3ZhbHVlKS5tYXAoYnVpbGRQcm9wZXJ0eS5iaW5kKHRoaXMpKSk7CisgICAgfSwK
KworICAgIGlzRXJyb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IDVl
NTkzZjcuLmRjMWU4M2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvblNlcnZlci5qcwpAQCAtNDIsMTAgKzQyLDEyIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25T
ZXJ2ZXIgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRQYWdlVGlt
aW5ncyIsIHRoaXMuX29uR2V0UGFnZVRpbWluZ3MuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVn
aXN0ZXJIYW5kbGVyKCJjcmVhdGVQYW5lbCIsIHRoaXMuX29uQ3JlYXRlUGFuZWwuYmluZCh0aGlz
KSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJjcmVhdGVTaWRlYmFyUGFuZSIsIHRoaXMu
X29uQ3JlYXRlU2lkZWJhci5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIo
ImNyZWF0ZVdhdGNoRXhwcmVzc2lvblNpZGViYXJQYW5lIiwgdGhpcy5fb25DcmVhdGVXYXRjaEV4
cHJlc3Npb25TaWRlYmFyUGFuZS5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRs
ZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFu
ZGxlcigiZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9vbkV2YWx1YXRlT25JbnNwZWN0
ZWRQYWdlLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0U2lkZWJh
ckhlaWdodCIsIHRoaXMuX29uU2V0U2lkZWJhckhlaWdodC5iaW5kKHRoaXMpKTsKICAgICB0aGlz
Ll9yZWdpc3RlckhhbmRsZXIoInNldFNpZGViYXJFeHBhbmRlZCIsIHRoaXMuX29uU2V0U2lkZWJh
ckV4cGFuc2lvbi5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInNldFdh
dGNoU2lkZWJhckNvbnRlbnQiLCB0aGlzLl9vblNldFdhdGNoU2lkZWJhckNvbnRlbnQuYmluZCh0
aGlzKSk7CiAKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImFkZEF1ZGl0Q2F0ZWdvcnkiLCB0
aGlzLl9vbkFkZEF1ZGl0Q2F0ZWdvcnkuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJI
YW5kbGVyKCJhZGRBdWRpdFJlc3VsdCIsIHRoaXMuX29uQWRkQXVkaXRSZXN1bHQuYmluZCh0aGlz
KSk7CkBAIC05MCw2ICs5MiwxMSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbigicmVzZXQiKTsKICAgICB9
LAogCisgICAgbm90aWZ5RXh0ZW5zaW9uV2F0Y2hTaWRlYmFyVXBkYXRlZDogZnVuY3Rpb24oaWQp
CisgICAgeworICAgICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKCJ3YXRjaC1zaWRlYmFyLXVw
ZGF0ZWQtIiArIGlkKTsKKyAgICB9LAorCiAgICAgc3RhcnRBdWRpdFJ1bjogZnVuY3Rpb24oY2F0
ZWdvcnksIGF1ZGl0UnVuKQogICAgIHsKICAgICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRp
dFJ1bi5pZF0gPSBhdWRpdFJ1bjsKQEAgLTE2MSw3ICsxNjgsMjIgQEAgV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMu
T0soKTsKICAgICB9LAogCi0gICAgX29uQ3JlYXRlU2lkZWJhcjogZnVuY3Rpb24obWVzc2FnZSwg
cG9ydCkKKyAgICBfb25DcmVhdGVTaWRlYmFyOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgdmFyIHNpZGViYXIgPSB0aGlzLl9jcmVhdGVTaWRlYmFyKG1lc3NhZ2UsIFdlYkluc3Bl
Y3Rvci5TaWRlYmFyUGFuZSk7CisgICAgICAgIGlmIChzaWRlYmFyLmlzRXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gc2lkZWJhcjsKKyAgICAgICAgdGhpcy5fY3JlYXRlQ2xpZW50SWZyYW1lKHNp
ZGViYXIuYm9keUVsZW1lbnQsIG1lc3NhZ2UudXJsKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXR1cy5PSygpOworICAgIH0sCisKKyAgICBfb25DcmVhdGVXYXRjaEV4cHJlc3Npb25TaWRlYmFy
UGFuZTogZnVuY3Rpb24obWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBzaWRlYmFyID0gdGhp
cy5fY3JlYXRlU2lkZWJhcihtZXNzYWdlLCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRl
YmFyUGFuZSk7CisgICAgICAgIHJldHVybiBzaWRlYmFyLmlzRXJyb3IgPyBzaWRlYmFyIDogdGhp
cy5fc3RhdHVzLk9LKCk7CisgICAgfSwKKworICAgIF9jcmVhdGVTaWRlYmFyOiBmdW5jdGlvbiht
ZXNzYWdlLCBjb25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIHZhciBwYW5lbCA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHNbbWVzc2FnZS5wYW5lbF07CiAgICAgICAgIGlmICghcGFuZWwpCkBAIC0xNjks
MTIgKzE5MSwxMiBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKCFwYW5lbC5zaWRlYmFyRWxlbWVudCB8fCAhcGFuZWwuc2lkZWJhclBhbmVz
KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVFNVUFBPUlRFRCgpOwogICAg
ICAgICB2YXIgaWQgPSBtZXNzYWdlLmlkOwotICAgICAgICB2YXIgc2lkZWJhciA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmUobWVzc2FnZS50aXRsZSk7CisgICAgICAgIHZhciBzaWRlYmFy
ID0gbmV3IGNvbnN0cnVjdG9yKG1lc3NhZ2UudGl0bGUsIG1lc3NhZ2UuaWQpOwogICAgICAgICB0
aGlzLl9jbGllbnRPYmplY3RzW2lkXSA9IHNpZGViYXI7CiAgICAgICAgIHBhbmVsLnNpZGViYXJQ
YW5lc1tpZF0gPSBzaWRlYmFyOwogICAgICAgICBwYW5lbC5zaWRlYmFyRWxlbWVudC5hcHBlbmRD
aGlsZChzaWRlYmFyLmVsZW1lbnQpOwotICAgICAgICB0aGlzLl9jcmVhdGVDbGllbnRJZnJhbWUo
c2lkZWJhci5ib2R5RWxlbWVudCwgbWVzc2FnZS51cmwpOwotICAgICAgICByZXR1cm4gdGhpcy5f
c3RhdHVzLk9LKCk7CisKKyAgICAgICAgcmV0dXJuIHNpZGViYXI7CiAgICAgfSwKIAogICAgIF9j
cmVhdGVDbGllbnRJZnJhbWU6IGZ1bmN0aW9uKHBhcmVudCwgdXJsLCByZXF1ZXN0SWQsIHBvcnQp
CkBAIC0yMDUsNiArMjI3LDE3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlID0gewogICAgICAgICAgICAgc2lkZWJhci5jb2xsYXBzZSgpOwogICAgIH0sCiAKKyAgICBf
b25TZXRXYXRjaFNpZGViYXJDb250ZW50OiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgdmFyIHNpZGViYXIgPSB0aGlzLl9jbGllbnRPYmplY3RzW21lc3NhZ2UuaWRdOworICAgICAg
ICBpZiAoIXNpZGViYXIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9V
TkQobWVzc2FnZS5pZCk7CisgICAgICAgIGlmIChtZXNzYWdlLmV2YWx1YXRlT25QYWdlKQorICAg
ICAgICAgICAgc2lkZWJhci5zZXRFeHByZXNzaW9uKG1lc3NhZ2UuZXhwcmVzc2lvbiwgbWVzc2Fn
ZS5yb290VGl0bGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaWRlYmFyLnNldE9iamVj
dChtZXNzYWdlLmV4cHJlc3Npb24sIG1lc3NhZ2Uucm9vdFRpdGxlKTsKKyAgICB9LAorCiAgICAg
X29uTG9nOiBmdW5jdGlvbihtZXNzYWdlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmxv
ZyhtZXNzYWdlLm1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0luamVjdGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVj
dGVkU2NyaXB0LmpzCmluZGV4IDJkNjBmNjkuLmZmZjY2ODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTUyLDcgKzUyLDYgQEAgSW5qZWN0
ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG9iamVjdElkOwogICAgICAg
ICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmplY3QgPT09
ICJmdW5jdGlvbiIgfHwgdGhpcy5faXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpKSB7CiAgICAg
ICAgICAgICAgICAgdmFyIGlkID0gdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQrKzsKLSAgICAgICAg
ICAgICAgICBvYmplY3RJZCA9IGlkOwogICAgICAgICAgICAgICAgIHRoaXMuX2lkVG9XcmFwcGVk
T2JqZWN0W2lkXSA9IG9iamVjdDsKICAgICAKICAgICAgICAgICAgICAgICB2YXIgZ3JvdXAgPSB0
aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72528</attachid>
            <date>2010-11-01 11:32:43 -0700</date>
            <delta_ts>2010-11-01 11:32:43 -0700</delta_ts>
            <desc>patch to land</desc>
            <filename>extensions-watch.diff</filename>
            <type>text/plain</type>
            <size>22045</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiODQzZmZhLi4yYzFiMzg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEt
MDEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNp
b25zIEFQSV0gZXhwb3NlIEFQSSB0byBjcmVhdGUgcHJvcGVydGllcyB3YXRjaCBzaWRlYmFyIHBh
bmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc2
MQorCisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1ldmVudHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy10ZXN0LmpzOiBBZGRlZCBnZW5lcmljIHdheSB0byBkaXNwYXRjaCBtZXNz
YWdlcyB0byBmcm9udC1lbmQgYW5kIHJlY2VpdmUgY2FsbGJhY2tzLgorICAgICAgICAoaW5pdGlh
bGl6ZV9FeHRlbnNpb25zVGVzdC5JbnNwZWN0b3JUZXN0LmRpc3BhdGNoT25NZXNzYWdlKToKKyAg
ICAgICAgKGluaXRpYWxpemVfRXh0ZW5zaW9uc1Rlc3QuSW5zcGVjdG9yVGVzdC5kdW1wU2lkZWJh
ckNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24tbWFpbi5qczoKKyAgICAgICAgKGRpc3Bh
dGNoT25Gcm9udGVuZC5jYWxsYmFja1dyYXBwZXIpOgorICAgICAgICAoZGlzcGF0Y2hPbkZyb250
ZW5kKToKKwogMjAxMC0xMS0wMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dAppbmRleCBjN2E3OTIwLi5kODg2MzEzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKQEAg
LTI3LDYgKzI3LDcgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAgIHBhbmVs
cyA6IHsKICAgICAgICAgZWxlbWVudHMgOiB7CiAgICAgICAgICAgICBjcmVhdGVTaWRlYmFyUGFu
ZSA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIGNyZWF0ZVdhdGNoRXhwcmVzc2lvblNpZGViYXJQ
YW5lIDogPGZ1bmN0aW9uPgogICAgICAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2VkIDogewogICAg
ICAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgogICAgICAgICAgICAgICAgIHJl
bW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgpAQCAtMzQsNiArMzUsNyBAQCBSVU5OSU5HIFRFU1Q6
IGV4dGVuc2lvbl90ZXN0QVBJCiAgICAgICAgIH0KICAgICAgICAgc2NyaXB0cyA6IHsKICAgICAg
ICAgICAgIGNyZWF0ZVNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgY3JlYXRl
V2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICBvblNl
bGVjdGlvbkNoYW5nZWQgOiB7CiAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rp
b24+CiAgICAgICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1ldmVudHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXZlbnRzLWV4cGVjdGVkLnR4dApp
bmRleCA4YmNmMDAwLi5jYTE0M2E4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjcwOiBbb2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50XQorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDY2OTogW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVudF0KIFRlc3Rz
IFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJCiAKIFBhZ2UgcmVsb2FkZWQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKaW5kZXggYmQ1YTk1Mi4uMTVj
NjY1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4
dApAQCAtOCw2ICs4LDcgQEAgZG9uZSBjcmVhdGVQYW5lbAogUGFuZWwgY3JlYXRlZAogewogICAg
IGNyZWF0ZVNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgorICAgIGNyZWF0ZVdhdGNoRXhwcmVzc2lv
blNpZGViYXJQYW5lIDogPGZ1bmN0aW9uPgogICAgIG9uU2VsZWN0aW9uQ2hhbmdlZCA6IHsKICAg
ICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDog
PGZ1bmN0aW9uPgpAQCAtMjMsNSArMjQsMjIgQEAgU2lkZWJhciBjcmVhdGVkCiAgICAgc2V0SGVp
Z2h0IDogPGZ1bmN0aW9uPgogICAgIHNldEV4cGFuZGVkIDogPGZ1bmN0aW9uPgogfQorUlVOTklO
RyBURVNUOiBleHRlbnNpb25fdGVzdEV4dGVuc2lvbldhdGNoU2lkZWJhckV4cHJlc3Npb24KK1Np
ZGViYXIgY29udGVudDogdGl0bGVmMDogImV4cHJlc3Npb24iZjE6IHVuZGVmaW5lZGYyOiBudWxs
ZjM6IE9iamVjdGY0OiBBcnJheVswXWY1OiBBcnJheVszXWY2OiBPYmplY3RmNzogNDJmODogTG9j
YXRpb25mOTogSFRNTENvbGxlY3Rpb25bMjZdZjEwOiBmdW5jdGlvbiAoKSB7fV9fcHJvdG9fXzog
T2JqZWN0CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0RXh0ZW5zaW9uV2F0Y2hTaWRlYmFy
T2JqZWN0CitXYXRjaCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1wIGZv
bGxvd3M6Cit7CisgICAgMCA6IHsKKyAgICAgICAgc2V0SGVpZ2h0IDogPGZ1bmN0aW9uPgorICAg
ICAgICBzZXRFeHBhbmRlZCA6IDxmdW5jdGlvbj4KKyAgICAgICAgc2V0RXhwcmVzc2lvbiA6IDxm
dW5jdGlvbj4KKyAgICAgICAgc2V0T2JqZWN0IDogPGZ1bmN0aW9uPgorICAgICAgICBvblVwZGF0
ZWQgOiB7CisgICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAg
IHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICB9CisgICAgfQorfQorU2lkZWJh
ciBjb250ZW50OiBmMDogIm9iamVjdCJmMTogdW5kZWZpbmVkZjI6IG51bGxmMzogeyB9ZjQ6IFsw
XWY1OiBbM11mNjogey4uLn1mNzogNDIKIEFsbCB0ZXN0cyBkb25lLgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwppbmRleCBjZDlmMjkzLi4zMWI2Mjk1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKQEAgLTE3LDE0ICsxNywxNyBAQCBm
dW5jdGlvbiBleHRlbnNpb25GdW5jdGlvbnMoKQogdmFyIGluaXRpYWxpemVfRXh0ZW5zaW9uc1Rl
c3QgPSBmdW5jdGlvbigpCiB7CiAKLUluc3BlY3RvclRlc3QuZGlzcGF0Y2hPbk1lc3NhZ2UgPSBm
dW5jdGlvbihtZXNzYWdlSWQsIGNhbGxiYWNrKQorSW5zcGVjdG9yVGVzdC5kaXNwYXRjaE9uTWVz
c2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VJZCwgY2FsbGJhY2ssIHJlY3VycmluZykKIHsKICAgICBm
dW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoZXZlbnQuZGF0YSA9
PT0gbWVzc2FnZUlkKSB7CisgICAgICAgIGlmIChldmVudC5kYXRhICE9PSBtZXNzYWdlSWQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghcmVjdXJyaW5nKQogICAgICAgICAgICAg
d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBvbk1lc3NhZ2UsIGZhbHNlKTsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgaWYgKGV2ZW50LnBvcnRzICYmIGV2ZW50LnBvcnRzWzBdKQorICAgICAgICAgICAg
ZXZlbnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoIiIpOwogICAgIH0KICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uTWVzc2FnZSwgZmFsc2UpOwogfQpAQCAtNDcsNiArNTAs
MTYgQEAgSW5zcGVjdG9yVGVzdC5ydW5FeHRlbnNpb25UZXN0cyA9IGZ1bmN0aW9uKCkKICAgICBJ
bnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcoYWRkRXh0ZW5zaW9uKTsKIH0KIAor
SW5zcGVjdG9yVGVzdC5kdW1wU2lkZWJhckNvbnRlbnQgPSBmdW5jdGlvbigpCit7CisgICAgdmFy
IHNpZGViYXJQYW5lcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zaWRlYmFyUGFuZXM7
CisgICAgLy8gdGhlIHNpZGViYXIgb2YgaW50ZXJlc3QgaXMgcHJlc3VtZWQgdG8gYWx3YXlzIGJl
IGxhc3QuCisgICAgdmFyIHNpZGViYXIgPSBzaWRlYmFyUGFuZXNbT2JqZWN0LmtleXMoc2lkZWJh
clBhbmVzKS5wb3AoKV07CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNpZGViYXIgY29u
dGVudDogIiArIHNpZGViYXIuYm9keUVsZW1lbnQudGV4dENvbnRlbnQpOworfQorCitJbnNwZWN0
b3JUZXN0LmRpc3BhdGNoT25NZXNzYWdlKCJkdW1wLXNpZGViYXItY29udGVudCIsIEluc3BlY3Rv
clRlc3QuZHVtcFNpZGViYXJDb250ZW50LCB0cnVlKTsKKwogfQogCiB2YXIgdGVzdCA9IGZ1bmN0
aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sCmluZGV4IDFiNTQxMmEuLjA4
ZjAyMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMuaHRtbApAQCAtMjUsNiArMjUs
NTggQEAgZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RDcmVhdGVTaWRlYmFyKG5leHRUZXN0KQogICAg
IHdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5jcmVhdGVTaWRlYmFyUGFuZSgiVGVzdCBTaWRl
YmFyIiwgImV4dGVuc2lvbi1zaWRlYmFyLmh0bWwiLCBjYWxsYmFja0FuZE5leHRUZXN0KG9uU2lk
ZWJhckNyZWF0ZWQsIG5leHRUZXN0KSk7CiB9CiAKK2Z1bmN0aW9uIGV4dGVuc2lvbl9kdW1wU2lk
ZWJhckNvbnRlbnQobmV4dFRlc3QpCit7CisgICAgZGlzcGF0Y2hPbkZyb250ZW5kKCJkdW1wLXNp
ZGViYXItY29udGVudCIsIG5leHRUZXN0KTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RF
eHRlbnNpb25XYXRjaFNpZGViYXJPYmplY3QobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25T
aWRlYmFyQ3JlYXRlZChzaWRlYmFyKQorICAgIHsKKyAgICAgICAgb3V0cHV0KCJXYXRjaCBzaWRl
YmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1wIGZvbGxvd3M6Iik7CisgICAgICAg
IGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7CisgICAg
ICAgIHNpZGViYXIub25VcGRhdGVkLmFkZExpc3RlbmVyKGJpbmQoZXh0ZW5zaW9uX2R1bXBTaWRl
YmFyQ29udGVudCwgdGhpcywgbmV4dFRlc3QpKTsKKyAgICAgICAgc2lkZWJhci5zZXRPYmplY3Qo
eworICAgICAgICAgICAgZjA6ICJvYmplY3QiLAorICAgICAgICAgICAgZjE6IHVuZGVmaW5lZCwK
KyAgICAgICAgICAgIGYyOiBudWxsLAorICAgICAgICAgICAgZjM6IHt9LAorICAgICAgICAgICAg
ZjQ6IFtdLAorICAgICAgICAgICAgZjU6IFsiYWEiLCAiYmIiLCAiY2MiXSwKKyAgICAgICAgICAg
IGY2OiB7IGY2MDogNDIsIGY2MTogImZvbyIsIGY2MjogW10gfSwKKyAgICAgICAgICAgIGY3OiA0
MgorICAgICAgICB9KTsKKyAgICB9CisgICAgd2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmNy
ZWF0ZVdhdGNoRXhwcmVzc2lvblNpZGViYXJQYW5lKCJXYXRjaCBUZXN0OiBPYmplY3QiLCBvblNp
ZGViYXJDcmVhdGVkKTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RFeHRlbnNpb25XYXRj
aFNpZGViYXJFeHByZXNzaW9uKG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9uU2lkZWJhckNy
ZWF0ZWQoc2lkZWJhcikKKyAgICB7CisgICAgICAgIHNpZGViYXIub25VcGRhdGVkLmFkZExpc3Rl
bmVyKGJpbmQoZXh0ZW5zaW9uX2R1bXBTaWRlYmFyQ29udGVudCwgdGhpcywgbmV4dFRlc3QpKTsK
KyAgICAgICAgZnVuY3Rpb24gZXhwcmVzc2lvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICAgICAgZjA6ICdleHByZXNzaW9uJywKKyAgICAgICAgICAgICAg
ICBmMTogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgIGYyOiBudWxsLAorICAgICAgICAgICAg
ICAgIGYzOiB7fSwKKyAgICAgICAgICAgICAgICBmNDogW10sCisgICAgICAgICAgICAgICAgZjU6
IFsiYWEiLCAiYmIiLCAiY2MiXSwKKyAgICAgICAgICAgICAgICBmNjogeyBmNjA6IDQyLCBmNjE6
ICJmb28iLCBmNjI6IFtdIH0sCisgICAgICAgICAgICAgICAgZjc6IDQyLAorICAgICAgICAgICAg
ICAgIGY4OiB3aW5kb3cubG9jYXRpb24sCisgICAgICAgICAgICAgICAgZjk6IGRvY3VtZW50LmJv
ZHkuY2hpbGRyZW4sCisgICAgICAgICAgICAgICAgZjEwOiBmdW5jdGlvbigpIHt9CisgICAgICAg
ICAgICB9OworICAgICAgICB9CisgICAgICAgIHNpZGViYXIuc2V0RXhwcmVzc2lvbigiKCIgKyBl
eHByZXNzaW9uLnRvU3RyaW5nKCkgKyAiKSgpOyIsICJ0aXRsZSIpOworICAgIH0KKyAgICB3ZWJJ
bnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUo
IldhdGNoIFRlc3Q6IEV4cHJlc3Npb24iLCBvblNpZGViYXJDcmVhdGVkKTsKK30KKwogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24tbWFpbi5qcwppbmRleCAxNjY5NzMzLi5k
MGYxYzJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVu
c2lvbi1tYWluLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5z
aW9uLW1haW4uanMKQEAgLTQwLDYgKzQwLDE5IEBAIGZ1bmN0aW9uIHJ1blRlc3QodGVzdCwgbmFt
ZSkKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGRpc3BhdGNoT25Gcm9udGVuZChtZXNzYWdlLCBjYWxs
YmFjaykKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFja1dyYXBwZXIoKQorICAgIHsKKyAgICAgICAg
Y2hhbm5lbC5wb3J0MS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgY2FsbGJhY2tXcmFw
cGVyLCBmYWxzZSk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorICAgIHZhciBjaGFubmVs
ID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgY2hhbm5lbC5wb3J0MS5zdGFydCgpOworICAg
IGNoYW5uZWwucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGNhbGxiYWNrV3JhcHBl
ciwgZmFsc2UpOworICAgIHRvcC5wb3N0TWVzc2FnZShtZXNzYWdlLCBbIGNoYW5uZWwucG9ydDIg
XSwgIioiKTsKK30KKwogZnVuY3Rpb24gY2FsbGJhY2tBbmROZXh0VGVzdChjYWxsYmFjaywgbmV4
dFRlc3QpCiB7CiAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc3YTlkMS4uNTk1ZmQy
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MyBAQAorMjAxMC0xMS0wMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbnMgQVBJXSBleHBvc2UgQVBJIHRvIGNyZWF0ZSBw
cm9wZXJ0aWVzIHdhdGNoIHNpZGViYXIgcGFuZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzYxCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvbkFQSS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVu
c2lvbkFQSS5QYW5lbEltcGwucHJvdG90eXBlLmNyZWF0ZVNpZGViYXJQYW5lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5QYW5lbEltcGwucHJvdG90eXBlLmNy
ZWF0ZVdhdGNoRXhwcmVzc2lvblNpZGViYXJQYW5lLmNhbGxiYWNrV3JhcHBlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUGFuZWxJbXBsLnByb3RvdHlwZS5j
cmVhdGVXYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
aW5qZWN0ZWRFeHRlbnNpb25BUEkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0
ZW5zaW9uQVBJLldhdGNoRXhwcmVzc2lvblNpZGViYXJQYW5lSW1wbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmVJ
bXBsLnByb3RvdHlwZS5zZXRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmpl
Y3RlZEV4dGVuc2lvbkFQSS5XYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZUltcGwucHJvdG90eXBl
LnNldE9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5l
bC5qczogQWRkZWQgRXh0ZW5zaW9uV2F0Y2hTaWRlYmFyUGFuZQorICAgICAgICAoV2ViSW5zcGVj
dG9yLkV4dGVuc2lvbldhdGNoU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbldhdGNoU2lkZWJhclBhbmUucHJvdG90eXBlLnNldE9iamVjdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRlYmFyUGFuZS5wcm90b3R5cGUuc2V0RXhwcmVz
c2lvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uV2F0Y2hTaWRlYmFyUGFuZS5w
cm90b3R5cGUuX29uRXZhbHVhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbldh
dGNoU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZXRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblNlcnZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnBy
b3RvdHlwZS5ub3RpZnlFeHRlbnNpb25XYXRjaFNpZGViYXJVcGRhdGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkNyZWF0ZVNpZGViYXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uQ3JlYXRl
V2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVu
c2lvblNlcnZlci5wcm90b3R5cGUuX2NyZWF0ZVNpZGViYXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uU2V0V2F0Y2hTaWRlYmFyQ29udGVudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAg
ICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1JlbW90ZU9iamVjdC5qczogQWRkZWQgYSB3cmFwcGVyIGZvciBsb2NhbCBKU09OIG9i
amVjdCB0byBzaW11bGF0ZSBSZW1vdGVPYmplY3QgaW50ZXJmYWNlLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTG9jYWxPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkxvY2FsSlNPTk9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2Jq
ZWN0LnByb3RvdHlwZS5nZXQgZGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxv
Y2FsSlNPTk9iamVjdC5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkxvY2FsSlNPTk9iamVjdC5wcm90b3R5cGUuZ2V0IGhhc0NoaWxkcmVuKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QucHJvdG90eXBlLmdldE93blByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkxvY2FsSlNPTk9iamVjdC5wcm90b3R5cGUuZ2V0UHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZS5p
c0Vycm9yKToKKwogMjAxMC0xMC0yOCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IDVkMDkwYjAuLjdkNmQ3NmMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcwpAQCAtMTk3LDYgKzE5Nywx
OSBAQCBQYW5lbEltcGwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5l
dyBFeHRlbnNpb25TaWRlYmFyUGFuZShpZCkpOwogICAgICAgICB9CiAgICAgICAgIGV4dGVuc2lv
blNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJjcmVhdGVTaWRlYmFyUGFuZSIsIHBhbmVs
OiB0aGlzLl9pZCwgaWQ6IGlkLCB0aXRsZTogdGl0bGUsIHVybDogZXhwYW5kVVJMKHVybCkgfSwg
Y2FsbGJhY2sgJiYgY2FsbGJhY2tXcmFwcGVyKTsKKyAgICB9LAorCisgICAgY3JlYXRlV2F0Y2hF
eHByZXNzaW9uU2lkZWJhclBhbmU6IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIHZhciBpZCA9ICJ3YXRjaC1zaWRlYmFyLSIgKyBleHRlbnNpb25TZXJ2ZXIubmV4dE9i
amVjdElkKCk7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrV3JhcHBlcihyZXN1bHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcikKKyAgICAgICAgICAgICAgICBj
YWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxi
YWNrKG5ldyBXYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZShpZCkpOworICAgICAgICB9CisgICAg
ICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJjcmVhdGVXYXRjaEV4
cHJlc3Npb25TaWRlYmFyUGFuZSIsIHBhbmVsOiB0aGlzLl9pZCwgaWQ6IGlkLCB0aXRsZTogdGl0
bGUgfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tXcmFwcGVyKTsKICAgICB9CiB9CiAKQEAgLTIwNCw2
ICsyMTcsNyBAQCBmdW5jdGlvbiBQYW5lbChpZCkKIHsKICAgICB2YXIgaW1wbCA9IG5ldyBQYW5l
bEltcGwoaWQpOwogICAgIHRoaXMuY3JlYXRlU2lkZWJhclBhbmUgPSBiaW5kKGltcGwuY3JlYXRl
U2lkZWJhclBhbmUsIGltcGwpOworICAgIHRoaXMuY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJh
clBhbmUgPSBiaW5kKGltcGwuY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUsIGltcGwp
OwogICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50U2luaygicGFuZWwtb2Jq
ZWN0U2VsZWN0ZWQtIiArIGlkKTsKIH0KIApAQCAtMjM1LDEzICsyNDksNDAgQEAgRXh0ZW5zaW9u
U2lkZWJhclBhbmVJbXBsLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIEV4dGVu
c2lvblNpZGViYXJQYW5lKGlkKQorZnVuY3Rpb24gRXh0ZW5zaW9uU2lkZWJhclBhbmUoaWQsIGlt
cGwpCiB7Ci0gICAgdmFyIGltcGwgPSBuZXcgRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsKGlkKTsK
KyAgICBpZiAoIWltcGwpCisgICAgICAgIGltcGwgPSBuZXcgRXh0ZW5zaW9uU2lkZWJhclBhbmVJ
bXBsKGlkKTsKICAgICB0aGlzLnNldEhlaWdodCA9IGJpbmQoaW1wbC5zZXRIZWlnaHQsIGltcGwp
OwogICAgIHRoaXMuc2V0RXhwYW5kZWQgPSBiaW5kKGltcGwuc2V0RXhwYW5kZWQsIGltcGwpOwog
fQogCitmdW5jdGlvbiBXYXRjaEV4cHJlc3Npb25TaWRlYmFyUGFuZUltcGwoaWQpCit7CisgICAg
RXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsLmNhbGwodGhpcywgaWQpOworfQorCitXYXRjaEV4cHJl
c3Npb25TaWRlYmFyUGFuZUltcGwucHJvdG90eXBlID0geworICAgIHNldEV4cHJlc3Npb246IGZ1
bmN0aW9uKGV4cHJlc3Npb24sIHJvb3RUaXRsZSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblNl
cnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJzZXRXYXRjaFNpZGViYXJDb250ZW50IiwgaWQ6
IHRoaXMuX2lkLCBleHByZXNzaW9uOiBleHByZXNzaW9uLCByb290VGl0bGU6IHJvb3RUaXRsZSwg
ZXZhbHVhdGVPblBhZ2U6IHRydWUgfSk7CisgICAgfSwKKworICAgIHNldE9iamVjdDogZnVuY3Rp
b24oanNvbk9iamVjdCwgcm9vdFRpdGxlKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU2VydmVy
LnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInNldFdhdGNoU2lkZWJhckNvbnRlbnQiLCBpZDogdGhp
cy5faWQsIGV4cHJlc3Npb246IGpzb25PYmplY3QsIHJvb3RUaXRsZTogcm9vdFRpdGxlIH0pOwor
ICAgIH0KK30KKworZnVuY3Rpb24gV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUoaWQpCit7Cisg
ICAgdmFyIGltcGwgPSBuZXcgV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmVJbXBsKGlkKTsKKyAg
ICBFeHRlbnNpb25TaWRlYmFyUGFuZS5jYWxsKHRoaXMsIGlkLCBpbXBsKTsKKyAgICB0aGlzLnNl
dEV4cHJlc3Npb24gPSBiaW5kKGltcGwuc2V0RXhwcmVzc2lvbiwgaW1wbCk7CisgICAgdGhpcy5z
ZXRPYmplY3QgPSBiaW5kKGltcGwuc2V0T2JqZWN0LCBpbXBsKTsKKyAgICB0aGlzLm9uVXBkYXRl
ZCA9IG5ldyBFdmVudFNpbmsoIndhdGNoLXNpZGViYXItdXBkYXRlZC0iICsgaWQpOworfQorCiBm
dW5jdGlvbiBBdWRpdHMoKQogewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvblBhbmVsLmpzCmluZGV4IGJhNWZhOGUuLjRiNDJlNjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5lbC5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMKQEAgLTgwLDMgKzgwLDM5IEBAIFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25QYW5lbC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25QYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVs
LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkV4dGVuc2lvbldhdGNoU2lkZWJhclBhbmUgPSBm
dW5jdGlvbih0aXRsZSwgaWQpCit7CisgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLmNhbGwo
dGhpcywgdGl0bGUpOworICAgIHRoaXMuX2lkID0gaWQ7Cit9CisKK1dlYkluc3BlY3Rvci5FeHRl
bnNpb25XYXRjaFNpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKKyAgICBzZXRPYmplY3Q6IGZ1bmN0
aW9uKG9iamVjdCwgdGl0bGUpCisgICAgeworICAgICAgICB0aGlzLl9zZXRPYmplY3QoV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTG9jYWxPYmplY3Qob2JqZWN0KSwgdGl0bGUpOworICAg
IH0sCisKKyAgICBzZXRFeHByZXNzaW9uOiBmdW5jdGlvbihleHByZXNzaW9uLCB0aXRsZSkKKyAg
ICB7CisgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZShl
eHByZXNzaW9uLCB0aGlzLl9vbkV2YWx1YXRlLmJpbmQodGhpcywgdGl0bGUpKTsKKyAgICB9LAor
CisgICAgX29uRXZhbHVhdGU6IGZ1bmN0aW9uKHRpdGxlLCByZXN1bHQpCisgICAgeworICAgICAg
ICB0aGlzLl9zZXRPYmplY3QoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChy
ZXN1bHQpLCB0aXRsZSk7CisgICAgfSwKKworICAgIF9zZXRPYmplY3Q6IGZ1bmN0aW9uKG9iamVj
dCwgdGl0bGUpCisgICAgeworICAgICAgICB0aGlzLmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgICAgIHZhciBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0
aWVzU2VjdGlvbihvYmplY3QsIHRpdGxlLCBudWxsLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0aXRs
ZSkKKyAgICAgICAgICAgIHNlY3Rpb24uaGVhZGVyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRk
ZW4iKTsKKyAgICAgICAgc2VjdGlvbi5leHBhbmRlZCA9IHRydWU7CisgICAgICAgIHRoaXMuYm9k
eUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlFeHRlbnNpb25XYXRjaFNpZGViYXJVcGRhdGVkKHRo
aXMuX2lkKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25XYXRjaFNpZGViYXJQ
YW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNl
cnZlci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMK
aW5kZXggNWU1OTNmNy4uZGMxZTgzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC00MiwxMCArNDIsMTIgQEAgV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblNlcnZlciA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImdl
dFBhZ2VUaW1pbmdzIiwgdGhpcy5fb25HZXRQYWdlVGltaW5ncy5iaW5kKHRoaXMpKTsKICAgICB0
aGlzLl9yZWdpc3RlckhhbmRsZXIoImNyZWF0ZVBhbmVsIiwgdGhpcy5fb25DcmVhdGVQYW5lbC5i
aW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImNyZWF0ZVNpZGViYXJQYW5l
IiwgdGhpcy5fb25DcmVhdGVTaWRlYmFyLmJpbmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVy
SGFuZGxlcigiY3JlYXRlV2F0Y2hFeHByZXNzaW9uU2lkZWJhclBhbmUiLCB0aGlzLl9vbkNyZWF0
ZVdhdGNoRXhwcmVzc2lvblNpZGViYXJQYW5lLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lz
dGVySGFuZGxlcigibG9nIiwgdGhpcy5fb25Mb2cuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVn
aXN0ZXJIYW5kbGVyKCJldmFsdWF0ZU9uSW5zcGVjdGVkUGFnZSIsIHRoaXMuX29uRXZhbHVhdGVP
bkluc3BlY3RlZFBhZ2UuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJz
ZXRTaWRlYmFySGVpZ2h0IiwgdGhpcy5fb25TZXRTaWRlYmFySGVpZ2h0LmJpbmQodGhpcykpOwog
ICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0U2lkZWJhckV4cGFuZGVkIiwgdGhpcy5fb25T
ZXRTaWRlYmFyRXhwYW5zaW9uLmJpbmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxl
cigic2V0V2F0Y2hTaWRlYmFyQ29udGVudCIsIHRoaXMuX29uU2V0V2F0Y2hTaWRlYmFyQ29udGVu
dC5iaW5kKHRoaXMpKTsKIAogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiYWRkQXVkaXRDYXRl
Z29yeSIsIHRoaXMuX29uQWRkQXVkaXRDYXRlZ29yeS5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9y
ZWdpc3RlckhhbmRsZXIoImFkZEF1ZGl0UmVzdWx0IiwgdGhpcy5fb25BZGRBdWRpdFJlc3VsdC5i
aW5kKHRoaXMpKTsKQEAgLTkwLDYgKzkyLDExIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKCJyZXNldCIp
OwogICAgIH0sCiAKKyAgICBub3RpZnlFeHRlbnNpb25XYXRjaFNpZGViYXJVcGRhdGVkOiBmdW5j
dGlvbihpZCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oIndhdGNoLXNp
ZGViYXItdXBkYXRlZC0iICsgaWQpOworICAgIH0sCisKICAgICBzdGFydEF1ZGl0UnVuOiBmdW5j
dGlvbihjYXRlZ29yeSwgYXVkaXRSdW4pCiAgICAgewogICAgICAgICB0aGlzLl9jbGllbnRPYmpl
Y3RzW2F1ZGl0UnVuLmlkXSA9IGF1ZGl0UnVuOwpAQCAtMTYxLDcgKzE2OCwyMiBAQCBXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3N0YXR1cy5PSygpOwogICAgIH0sCiAKLSAgICBfb25DcmVhdGVTaWRlYmFyOiBmdW5jdGlvbiht
ZXNzYWdlLCBwb3J0KQorICAgIF9vbkNyZWF0ZVNpZGViYXI6IGZ1bmN0aW9uKG1lc3NhZ2UpCisg
ICAgeworICAgICAgICB2YXIgc2lkZWJhciA9IHRoaXMuX2NyZWF0ZVNpZGViYXIobWVzc2FnZSwg
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lKTsKKyAgICAgICAgaWYgKHNpZGViYXIuaXNFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBzaWRlYmFyOworICAgICAgICB0aGlzLl9jcmVhdGVDbGllbnRJ
ZnJhbWUoc2lkZWJhci5ib2R5RWxlbWVudCwgbWVzc2FnZS51cmwpOworICAgICAgICByZXR1cm4g
dGhpcy5fc3RhdHVzLk9LKCk7CisgICAgfSwKKworICAgIF9vbkNyZWF0ZVdhdGNoRXhwcmVzc2lv
blNpZGViYXJQYW5lOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIHNpZGVi
YXIgPSB0aGlzLl9jcmVhdGVTaWRlYmFyKG1lc3NhZ2UsIFdlYkluc3BlY3Rvci5FeHRlbnNpb25X
YXRjaFNpZGViYXJQYW5lKTsKKyAgICAgICAgcmV0dXJuIHNpZGViYXIuaXNFcnJvciA/IHNpZGVi
YXIgOiB0aGlzLl9zdGF0dXMuT0soKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVNpZGViYXI6IGZ1
bmN0aW9uKG1lc3NhZ2UsIGNvbnN0cnVjdG9yKQogICAgIHsKICAgICAgICAgdmFyIHBhbmVsID0g
V2ViSW5zcGVjdG9yLnBhbmVsc1ttZXNzYWdlLnBhbmVsXTsKICAgICAgICAgaWYgKCFwYW5lbCkK
QEAgLTE2OSwxMiArMTkxLDEyIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIXBhbmVsLnNpZGViYXJFbGVtZW50IHx8ICFwYW5lbC5zaWRl
YmFyUGFuZXMpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9UU1VQUE9SVEVE
KCk7CiAgICAgICAgIHZhciBpZCA9IG1lc3NhZ2UuaWQ7Ci0gICAgICAgIHZhciBzaWRlYmFyID0g
bmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZShtZXNzYWdlLnRpdGxlKTsKKyAgICAgICAgdmFy
IHNpZGViYXIgPSBuZXcgY29uc3RydWN0b3IobWVzc2FnZS50aXRsZSwgbWVzc2FnZS5pZCk7CiAg
ICAgICAgIHRoaXMuX2NsaWVudE9iamVjdHNbaWRdID0gc2lkZWJhcjsKICAgICAgICAgcGFuZWwu
c2lkZWJhclBhbmVzW2lkXSA9IHNpZGViYXI7CiAgICAgICAgIHBhbmVsLnNpZGViYXJFbGVtZW50
LmFwcGVuZENoaWxkKHNpZGViYXIuZWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZUNsaWVu
dElmcmFtZShzaWRlYmFyLmJvZHlFbGVtZW50LCBtZXNzYWdlLnVybCk7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9zdGF0dXMuT0soKTsKKworICAgICAgICByZXR1cm4gc2lkZWJhcjsKICAgICB9LAog
CiAgICAgX2NyZWF0ZUNsaWVudElmcmFtZTogZnVuY3Rpb24ocGFyZW50LCB1cmwsIHJlcXVlc3RJ
ZCwgcG9ydCkKQEAgLTIwNSw2ICsyMjcsMTcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzaWRlYmFyLmNvbGxhcHNlKCk7CiAgICAgfSwK
IAorICAgIF9vblNldFdhdGNoU2lkZWJhckNvbnRlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAg
eworICAgICAgICB2YXIgc2lkZWJhciA9IHRoaXMuX2NsaWVudE9iamVjdHNbbWVzc2FnZS5pZF07
CisgICAgICAgIGlmICghc2lkZWJhcikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMu
RV9OT1RGT1VORChtZXNzYWdlLmlkKTsKKyAgICAgICAgaWYgKG1lc3NhZ2UuZXZhbHVhdGVPblBh
Z2UpCisgICAgICAgICAgICBzaWRlYmFyLnNldEV4cHJlc3Npb24obWVzc2FnZS5leHByZXNzaW9u
LCBtZXNzYWdlLnJvb3RUaXRsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNpZGViYXIu
c2V0T2JqZWN0KG1lc3NhZ2UuZXhwcmVzc2lvbiwgbWVzc2FnZS5yb290VGl0bGUpOworICAgIH0s
CisKICAgICBfb25Mb2c6IGZ1bmN0aW9uKG1lc3NhZ2UpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IubG9nKG1lc3NhZ2UubWVzc2FnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5qZWN0ZWRTY3JpcHQuanMKaW5kZXggMmQ2MGY2OS4uZmZmNjY4MCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwpAQCAtNTIsNyArNTIsNiBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgb2JqZWN0SWQ7
CiAgICAgICAgICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIG9i
amVjdCA9PT0gImZ1bmN0aW9uIiB8fCB0aGlzLl9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iamVjdCkp
IHsKICAgICAgICAgICAgICAgICB2YXIgaWQgPSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCsrOwot
ICAgICAgICAgICAgICAgIG9iamVjdElkID0gaWQ7CiAgICAgICAgICAgICAgICAgdGhpcy5faWRU
b1dyYXBwZWRPYmplY3RbaWRdID0gb2JqZWN0OwogICAgIAogICAgICAgICAgICAgICAgIHZhciBn
cm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMKaW5kZXggMDAzZDQ4My4uNGQ2NzM2YyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCkBAIC00MSw2
ICs0MSwxMSBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSA9
IGZ1bmN0aW9uKHZhbHVlKQogICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dChudWxsLCB0eXBlb2YgdmFsdWUsIHZhbHVlKTsKIH0KIAorV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5mcm9tTG9jYWxPYmplY3QgPSBmdW5jdGlvbih2YWx1ZSkKK3sKKyAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QodmFsdWUpOworfQorCiBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlID0gZnVuY3Rpb24obm9kZSwgY2FsbGJhY2spCiB7CiAg
ICAgZnVuY3Rpb24gbXljYWxsYmFjayhvYmplY3QpCkBAIC0xMzYsMyArMTQxLDYyIEBAIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQogICAg
IHRoaXMubmFtZSA9IG5hbWU7CiAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogfQorCisvLyBUaGUg
YmVsb3cgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIGxvY2FsIG9iamVjdCB0aGF0IHByb3ZpZGVzIGFu
IGludGVyZmFjZSBjb21hcHRpYmxlCisvLyB3aXRoIFJlbW90ZU9iamVjdCwgdG8gYmUgdXNlZCBi
eSB0aGUgVUkgY29kZSAocHJpbWFyaWx5IE9iamVjdFByb3BlcnRpZXNTZWN0aW9uKS4KKy8vIE5v
dGUgdGhhdCBvbmx5IEpTT04tY29tcGxpYW50IG9iamVjdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0
ZWQsIGFzIHRoZXJlJ3Mgbm8gcHJvdmlzaW9uCisvLyBmb3IgdHJhdmVyc2luZyBwcm90b3R5cGVz
LCBleHRyYWN0aW5nIGNsYXNzIG5hbWVzIHZpYSBjb25zdHVjdG9yLCBoYW5kbGluZyBwcm9wZXJ0
aWVzCisvLyBvciBmdW5jdGlvbnMuCisKK1dlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QgPSBm
dW5jdGlvbih2YWx1ZSkKK3sKKyAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOworfQorCitXZWJJbnNw
ZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZGVzY3JpcHRpb24o
KQorICAgIHsKKyAgICAgICAgdmFyIHR5cGUgPSB0aGlzLnR5cGU7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgorICAgICAgICAgICAgICAgIHJldHVy
biAiWyIgKyB0aGlzLl92YWx1ZS5sZW5ndGggKyAiXSI7CisgICAgICAgICAgICBjYXNlICJvYmpl
Y3QiOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuID8gInsuLi59IiA6
ICJ7IH0iOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNP
Ti5zdHJpbmdpZnkodGhpcy5fdmFsdWUpOworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCB0
eXBlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gbnVsbCkKKyAgICAgICAg
ICAgIHJldHVybiAibnVsbCI7CisgICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIEFy
cmF5KQorICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7CisgICAgICAgIHJldHVybiB0eXBlb2Yg
dGhpcy5fdmFsdWU7CisgICAgfSwKKworICAgIGdldCBoYXNDaGlsZHJlbigpCisgICAgeworICAg
ICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3ZhbHVlID09PSAib2JqZWN0IiAmJiB0aGlzLl92YWx1
ZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZSkubGVuZ3RoOworICAgIH0sCisK
KyAgICBnZXRPd25Qcm9wZXJ0aWVzOiBmdW5jdGlvbihhYmJyZXZpYXRlLCBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLmdldFByb3BlcnRpZXMoZmFsc2UsIGFiYnJldmlhdGUs
IGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgZ2V0UHJvcGVydGllczogZnVuY3Rpb24oaWdub3Jl
SGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gYnVpbGRQcm9wZXJ0eShwcm9wTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkocHJvcE5hbWUsIG5ldyBX
ZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0KHRoaXMuX3ZhbHVlW3Byb3BOYW1lXSkpOworICAg
ICAgICB9CisgICAgICAgIGNhbGxiYWNrKE9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlKS5tYXAoYnVp
bGRQcm9wZXJ0eS5iaW5kKHRoaXMpKSk7CisgICAgfSwKKworICAgIGlzRXJyb3I6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>