<?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>66767</bug_id>
          
          <creation_ts>2011-08-23 05:33:51 -0700</creation_ts>
          <short_desc>Web Inspector: [Extensions API] provide access to page resources</short_desc>
          <delta_ts>2011-08-23 08:36:21 -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>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455339</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 05:33:51 -0700</bug_when>
    <thetext>Expose interface to query resources of the inspected page, retrieve and be able to modify their content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455342</commentid>
    <comment_count>1</comment_count>
      <attachid>104829</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 05:35:41 -0700</bug_when>
    <thetext>Created attachment 104829
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455385</commentid>
    <comment_count>2</comment_count>
      <attachid>104837</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 06:45:00 -0700</bug_when>
    <thetext>Created attachment 104837
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455387</commentid>
    <comment_count>3</comment_count>
      <attachid>104838</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 06:47:46 -0700</bug_when>
    <thetext>Created attachment 104838
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455394</commentid>
    <comment_count>4</comment_count>
      <attachid>104842</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 07:01:10 -0700</bug_when>
    <thetext>Created attachment 104842
patch (properly rebased the diff)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455407</commentid>
    <comment_count>5</comment_count>
      <attachid>104846</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 08:04:23 -0700</bug_when>
    <thetext>Created attachment 104846
patch (normalize test output)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455416</commentid>
    <comment_count>6</comment_count>
      <attachid>104846</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 08:25:12 -0700</bug_when>
    <thetext>Comment on attachment 104846
patch (normalize test output)

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

&gt; Source/WebCore/inspector/front-end/ExtensionAPI.js:522
&gt; +            interface.__defineGetter__(member, bind(descriptor.get, implementation));

This won&apos;t compile. Could you please avoid using __defineGetter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455422</commentid>
    <comment_count>7</comment_count>
      <attachid>104846</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 08:36:12 -0700</bug_when>
    <thetext>Comment on attachment 104846
patch (normalize test output)

Clearing flags on attachment: 104846

Committed r93605: &lt;http://trac.webkit.org/changeset/93605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455423</commentid>
    <comment_count>8</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 08:36:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104829</attachid>
            <date>2011-08-23 05:35:41 -0700</date>
            <delta_ts>2011-08-23 06:45:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extensions-resources.diff</filename>
            <type>text/plain</type>
            <size>25230</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjAzZWZjLi42N2JlZjE4IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDgt
MjMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHByb3ZpZGUgYWNjZXNzIHRvIHBhZ2UgcmVzb3Vy
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LXJlc291cmNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9y
ZXNvdXJjZXMvQWhlbS50dGY6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3Vy
Y2VzL3Rlc3Qtc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAgICAgKF9fdGVzdF9mdW5jdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisKIDIwMTEtMDgtMjIgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtBUk1dIFNraXAgZmxha3kg
dGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRl
bnNpb25zLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9u
cy9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKaW5kZXggMzVkNWViZC4uYjQ0NGUyZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVu
c2lvbnMtYXBpLWV4cGVjdGVkLnR4dApAQCAtOCw4ICs4LDE3IEBAIFJVTk5JTkcgVEVTVDogZXh0
ZW5zaW9uX3Rlc3RBUEkKICAgICAgICAgYWRkQ2F0ZWdvcnkgOiA8ZnVuY3Rpb24+CiAgICAgfQog
ICAgIGluc3BlY3RlZFdpbmRvdyA6IHsKKyAgICAgICAgb25SZXNvdXJjZUFkZGVkIDogeworICAg
ICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CisgICAgICAgICAgICByZW1vdmVMaXN0
ZW5lciA6IDxmdW5jdGlvbj4KKyAgICAgICAgfQorICAgICAgICBvblJlc291cmNlQ29udGVudENv
bW1pdHRlZCA6IHsKKyAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAg
ICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KICAgICAgICAgcmVs
b2FkIDogPGZ1bmN0aW9uPgogICAgICAgICBldmFsIDogPGZ1bmN0aW9uPgorICAgICAgICBnZXRS
ZXNvdXJjZXMgOiA8ZnVuY3Rpb24+CiAgICAgfQogICAgIHBhbmVscyA6IHsKICAgICAgICAgZWxl
bWVudHMgOiB7CkBAIC00MiwxMCArNTEsNiBAQCBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0
QVBJCiAgICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgICAgIHJl
bW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgogICAgICAgICB9Ci0gICAgICAgIG9uQ29udGVudEVk
aXRlZCA6IHsKLSAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICAg
ICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+Ci0gICAgICAgIH0KICAgICAgICAgZ2V0SEFS
IDogPGZ1bmN0aW9uPgogICAgICAgICBhZGRSZXF1ZXN0SGVhZGVycyA6IDxmdW5jdGlvbj4KICAg
ICB9CkBAIC02MiwxMCArNjcsNiBAQCBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QVBJCiAg
ICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgICAgIHJlbW92ZUxp
c3RlbmVyIDogPGZ1bmN0aW9uPgogICAgICAgICB9Ci0gICAgICAgIG9uQ29udGVudEVkaXRlZCA6
IHsKLSAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICAgICAgcmVt
b3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+Ci0gICAgICAgIH0KICAgICAgICAgZ2V0SEFSIDogPGZ1
bmN0aW9uPgogICAgICAgICBhZGRSZXF1ZXN0SGVhZGVycyA6IDxmdW5jdGlvbj4KICAgICB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLW5l
dHdvcmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1uZXR3b3JrLWV4cGVjdGVkLnR4dAppbmRleCA2NWMxZjU5Li5lYjlmOGFhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLW5ldHdv
cmstZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtbmV0d29yay1leHBlY3RlZC50eHQKQEAgLTI4LDcgKzI4LDUgQEAgUlVOTklORyBU
RVNUOiBleHRlbnNpb25fdGVzdEdldFJlc291cmNlQ29udGVudEVuY29kZWQKIH0KIFJVTk5JTkcg
VEVTVDogZXh0ZW5zaW9uX3Rlc3RSZXF1ZXN0Tm90aWZpY2F0aW9uCiBSZXF1ZXN0IGZpbmlzaGVk
OiAuLi4vaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLmh0bWwKLVJVTk5J
TkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RSZXNvdXJjZUNvbnRlbnRFZGl0ZWQKLWNvbnRlbnQgZm9y
IHJlc291cmNlIC4uLi9leHRlbnNpb25zL3Jlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyBlZGl0
ZWQ6IGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgfQogQWxsIHRlc3RzIGRvbmUuCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
bmV0d29yay5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9u
cy1uZXR3b3JrLmh0bWwKaW5kZXggYjZiMTNmMC4uZWYwYzI1MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLmh0bWwK
QEAgLTc2LDMwICs3Niw2IEBAIGZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0UmVzb3VyY2VDb250
ZW50RW5jb2RlZChuZXh0VGVzdCkKICAgICB9KTsKIH0KIAotZnVuY3Rpb24gZXh0ZW5zaW9uX3Rl
c3RSZXNvdXJjZUNvbnRlbnRFZGl0ZWQobmV4dFRlc3QpCi17Ci0gICAgZnVuY3Rpb24gb25Db250
ZW50RWRpdGVkKHVybCwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHdlYkluc3BlY3Rvci5uZXR3
b3JrLm9uQ29udGVudEVkaXRlZC5yZW1vdmVMaXN0ZW5lcihvbkNvbnRlbnRFZGl0ZWQpOwotICAg
ICAgICB2YXIgdXJsVGFpbCA9IHVybC5yZXBsYWNlKC8uKigoXC9bXi9dKil7M30kKS8sIi4uLiQx
Iik7Ci0gICAgICAgIG91dHB1dCgiY29udGVudCBmb3IgcmVzb3VyY2UgIiArIHVybFRhaWwgKyAi
IGVkaXRlZDogIiArIGNvbnRlbnQpOwotICAgICAgICBuZXh0VGVzdCgpOwotICAgIH0gICAKLSAg
ICB3ZWJJbnNwZWN0b3IubmV0d29yay5vbkNvbnRlbnRFZGl0ZWQuYWRkTGlzdGVuZXIob25Db250
ZW50RWRpdGVkKTsKLQotICAgIGZ1bmN0aW9uIGZpbmRBbmRFZGl0UmVzb3VyY2UoKQotICAgIHsK
LSAgICAgICAgdmFyIHJlc291cmNlcyA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlc291cmNl
czsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGlmICgvYXVkaXRzLXN0eWxlMS5jc3MkLy50ZXN0KHJlc291cmNlc1tpXS51
cmwpKSB7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VzW2ldLnNldENvbnRlbnQoImJvZHkgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgfSIsIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGV2YWx1YXRlT25Gcm9udGVu
ZCgiKCIgKyBmaW5kQW5kRWRpdFJlc291cmNlICsgIikoKSIpOwotfQotCiB2YXIgdGVzdCA9IGZ1
bmN0aW9uKCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UoSW5zcGVjdG9yVGVzdC5y
dW5FeHRlbnNpb25UZXN0cyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0
ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0OWQ3MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtcmVzb3VyY2Vz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTog
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGFwcGxpY2F0aW9uCitUZXN0cyBy
ZXNvdXJjZS1yZWxhdGVkIG1ldGhvZHMgb2YgV2ViSW5zcGVjdG9yIGV4dGVuc2lvbiBBUEkKKwor
CitTdGFydGVkIGV4dGVuc2lvbi4KK1J1bm5pbmcgdGVzdHMuLi4KK1JVTk5JTkcgVEVTVDogZXh0
ZW5zaW9uX3Rlc3RHZXRBbGxSZXNvdXJjZXMKK3BhZ2UgcmVzb3VyY2VzOiAKK2V4dGVuc2lvbnMt
cmVzb3VyY2VzLmh0bWw6IGRvY3VtZW50CitleHRlbnNpb25zLXRlc3QuanM6IHNjcmlwdAordGVz
dC1zY3JpcHQuanM6IHNjcmlwdAoraW5zcGVjdG9yLXRlc3QuanM6IHNjcmlwdAorYXVkaXRzLXN0
eWxlMS5jc3M6IHN0eWxlc2hlZXQKK2FiZS5wbmc6IGltYWdlCitSVU5OSU5HIFRFU1Q6IGV4dGVu
c2lvbl90ZXN0R2V0UmVzb3VyY2VDb250ZW50Cit7CisgICAgMCA6ICJmdW5jdGlvbiBfX3Rlc3Rf
ZnVuY3Rpb24oKQoreworfQorCisiCisgICAgMSA6ICIiCit9CitSVU5OSU5HIFRFU1Q6IGV4dGVu
c2lvbl90ZXN0T25Db250ZW50Q29tbWl0dGVkCitsb2c6IEV4dGVuc2lvbiBzZXJ2ZXIgZXJyb3I6
IE9wZXJhdGlvbiBmYWlsZWQ6IFJlc291cmNlIGlzIG5vdCBlZGl0YWJsZQorY29udGVudCBjb21t
aXR0ZWQgZm9yIHJlc291cmNlIGZpbGU6Ly8vdXNyL2xvY2FsL2dvb2dsZS9ob21lL2Nhc2VxL3Ny
Yy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zL3Jlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyAodHlwZTogc3R5bGVzaGVldCks
IG5ldyBjb250ZW50OiBkaXYudGVzdCB7IHdpZHRoOiAyMjBweDsgaGVpZ2h0OiA0MnB4OyB9CitS
VU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25SZXNvdXJjZUFkZGVkCityZXNvdXJjZSBhZGRl
ZDogZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0OiBzY3JpcHQKK1JVTk5JTkcgVEVTVDogZXh0
ZW5zaW9uX3Rlc3RTZXRSZXNvdXJjZUNvbnRlbnQKK2Rpdi50ZXN0IHdpZHRoIGFmdGVyIHN0eWxl
c2hlZXQgZWRpdGVkIChzaG91bGQgYmUgMTI2KTogMTI2CitBbGwgdGVzdHMgZG9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNv
dXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
cmVzb3VyY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMxNDQ2
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwKQEAgLTAsMCArMSwxMTcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiBleHRl
bnNpb25fdGVzdEdldEFsbFJlc291cmNlcyhuZXh0VGVzdCkKK3sKKyAgICBmdW5jdGlvbiBjYWxs
YmFjayhyZXNvdXJjZXMpCisgICAgeworICAgICAgIG91dHB1dCgicGFnZSByZXNvdXJjZXM6ICIp
OworICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgIHZhciB1cmwgPSByZXNvdXJjZXNbaV0udXJsLnJlcGxhY2UoLy4qWy9dLywgIiIp
OworICAgICAgICAgICBvdXRwdXQodXJsICsgIjogIiArIHJlc291cmNlc1tpXS50eXBlKTsKKyAg
ICAgICB9CisgICAgfQorICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cuZ2V0UmVzb3Vy
Y2VzKGNhbGxiYWNrQW5kTmV4dFRlc3QoY2FsbGJhY2ssIG5leHRUZXN0KSk7Cit9CisKK2Z1bmN0
aW9uIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UocmVnZXhwLCBjYWxsYmFjaykKK3sKKyAgICBm
dW5jdGlvbiBvblJlc291cmNlcyhyZXNvdXJjZXMpCisgICAgeworICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgIGlmIChyZWdleHAu
dGVzdChyZXNvdXJjZXNbaV0udXJsKSkgeworICAgICAgICAgICAgICAgY2FsbGJhY2socmVzb3Vy
Y2VzW2ldKQorICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICB9CisgICAgICAgfQor
ICAgICAgIHRocm93ICJGYWlsZWQgdG8gZmluZCBhIHJlc291cmNlOiAiICsgcmVnZXhwLnRvU3Ry
aW5nKCk7CisgICAgfQorICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cuZ2V0UmVzb3Vy
Y2VzKG9uUmVzb3VyY2VzKTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RHZXRSZXNvdXJj
ZUNvbnRlbnQobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25Db250ZW50KCkKKyAgICB7Cisg
ICAgICAgIGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7
CisgICAgfQorICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UoL3Rlc3Qtc2NyaXB0XC5qcyQv
LCBmdW5jdGlvbihyZXNvdXJjZSkgeworICAgICAgICByZXNvdXJjZS5nZXRDb250ZW50KGNhbGxi
YWNrQW5kTmV4dFRlc3Qob25Db250ZW50LCBuZXh0VGVzdCkpOworICAgIH0pOworfQorCitmdW5j
dGlvbiBleHRlbnNpb25fdGVzdFNldFJlc291cmNlQ29udGVudChuZXh0VGVzdCkKK3sKKyAgICBm
dW5jdGlvbiBjYWxsYmFjaygpCisgICAgeworICAgICAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVk
V2luZG93LmV2YWwoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0LWRpdicpLmNsaWVudFdp
ZHRoIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICBvdXRwdXQoImRpdi50ZXN0IHdp
ZHRoIGFmdGVyIHN0eWxlc2hlZXQgZWRpdGVkIChzaG91bGQgYmUgMTI2KTogIiArIHJlc3VsdCk7
CisgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisgICAgZXh0ZW5z
aW9uX3J1bldpdGhSZXNvdXJjZSgvYXVkaXRzLXN0eWxlMVwuY3NzJC8sIGZ1bmN0aW9uKHJlc291
cmNlKSB7CisgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQoImRpdi50ZXN0IHsgd2lkdGg6IDEy
NnB4OyBoZWlnaHQ6IDQycHg7IH0iLCBmYWxzZSwgY2FsbGJhY2spOworICAgIH0pOworfQorCitm
dW5jdGlvbiBleHRlbnNpb25fdGVzdE9uQ29udGVudENvbW1pdHRlZChuZXh0VGVzdCkKK3sKKyAg
ICB2YXIgZXhwZWN0ZWRfY29udGVudCA9ICJkaXYudGVzdCB7IHdpZHRoOiAyMjBweDsgaGVpZ2h0
OiA0MnB4OyB9IjsKKworICAgIGZ1bmN0aW9uIG9uQ29udGVudENvbW1pdHRlZChyZXNvdXJjZSwg
Y29udGVudCkKKyAgICB7CisgICAgICAgIG91dHB1dCgiY29udGVudCBjb21taXR0ZWQgZm9yIHJl
c291cmNlICIgKyByZXNvdXJjZS51cmwgKyAiICh0eXBlOiAiICsgcmVzb3VyY2UudHlwZSArICIp
LCBuZXcgY29udGVudDogIiArIGNvbnRlbnQpOworICAgICAgICBpZiAoIS9hdWRpdHMtc3R5bGUx
XC5jc3MkLy50ZXN0KHJlc291cmNlLnVybCkgfHwgY29udGVudCAhPT0gZXhwZWN0ZWRfY29udGVu
dCkKKyAgICAgICAgICAgIG91dHB1dCgiRkFJTDogc3RyYXkgb25Db250ZW50RWRpdGVkIGV2ZW50
Iik7CisgICAgICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cub25SZXNvdXJjZUNvbnRl
bnRDb21taXR0ZWQucmVtb3ZlTGlzdGVuZXIob25Db250ZW50Q29tbWl0dGVkKTsKKyAgICAgICAg
bmV4dFRlc3QoKTsKKyAgICB9CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5vblJl
c291cmNlQ29udGVudENvbW1pdHRlZC5hZGRMaXN0ZW5lcihvbkNvbnRlbnRDb21taXR0ZWQpOwor
ICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UoL2F1ZGl0cy1zdHlsZTFcLmNzcyQvLCBmdW5j
dGlvbihyZXNvdXJjZSkgeworICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KCJkaXYudGVzdCB7
IHdpZHRoOiAxNDBweDsgaGVpZ2h0OiA0MnB4OyB9IiwgZmFsc2UpOworICAgIH0pOworICAgIC8v
IFRoZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gcHJvZHVjZSBhIGNvbnNvbGUgbWVzc2FnZSB0aGF0
IHdpbGwgYmUgbG9nZ2VkLCBzbyBzeW5jaHJvbml6ZSB0aGUgb3V0cHV0IG5vdy4KKyAgICBldmFs
dWF0ZU9uRnJvbnRlbmQoIkluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhy
ZXBseSkiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZXh0ZW5zaW9uX3J1bldpdGhSZXNvdXJjZSgv
dGVzdC1zY3JpcHRcLmpzJC8sIGZ1bmN0aW9uKHJlc291cmNlKSB7CisgICAgICAgICAgICByZXNv
dXJjZS5zZXRDb250ZW50KCJmdW5jdGlvbiBmdW5jdGlvbjEoKXt9IiwgdHJ1ZSk7CisgICAgICAg
IH0pOworICAgICAgICBleHRlbnNpb25fcnVuV2l0aFJlc291cmNlKC9hdWRpdHMtc3R5bGUxXC5j
c3MkLywgZnVuY3Rpb24ocmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHJlc291cmNlLnNldENvbnRl
bnQoZXhwZWN0ZWRfY29udGVudCwgdHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitm
dW5jdGlvbiBleHRlbnNpb25fdGVzdE9uUmVzb3VyY2VBZGRlZChuZXh0VGVzdCkKK3sKKyAgICBm
dW5jdGlvbiBvblJlc291cmNlQWRkZWQocmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgdXJs
ID0gcmVzb3VyY2UudXJsLnJlcGxhY2UoLzsuKi8sICIiKTsKKyAgICAgICAgb3V0cHV0KCJyZXNv
dXJjZSBhZGRlZDogIiArIHVybCArICI6ICIgKyByZXNvdXJjZS50eXBlKTsKKyAgICAgICAgd2Vi
SW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5vblJlc291cmNlQWRkZWQucmVtb3ZlTGlzdGVuZXIo
b25SZXNvdXJjZUFkZGVkKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9CisgICAgd2ViSW5z
cGVjdG9yLmluc3BlY3RlZFdpbmRvdy5vblJlc291cmNlQWRkZWQuYWRkTGlzdGVuZXIob25SZXNv
dXJjZUFkZGVkKTsKKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImFkZFJl
c291cmNlKCkiKTsKK30KKworZnVuY3Rpb24gYWRkUmVzb3VyY2UoKQoreworICAgIHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBzY3JpcHQuc3JjID0g
ImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdDtmdW5jdGlvbiB0ZXN0X2Z1bmMoKXt9IjsKKyAg
ICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7Cit9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgcmVzb3VyY2UtcmVsYXRl
ZCBtZXRob2RzIG9mIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJPC9wPgorPGltZyBzcmM9InJl
c291cmNlcy9hYmUucG5nIj4KKzxkaXYgaWQ9InRlc3QtZGl2IiBjbGFzcz0idGVzdCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0
ZW5zaW9ucy9yZXNvdXJjZXMvQWhlbS50dGYgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy9yZXNvdXJjZXMvQWhlbS50dGYKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rl
c3Qtc2NyaXB0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2Vz
L3Rlc3Qtc2NyaXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOTlk
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9y
ZXNvdXJjZXMvdGVzdC1zY3JpcHQuanMKQEAgLTAsMCArMSw0IEBACitmdW5jdGlvbiBfX3Rlc3Rf
ZnVuY3Rpb24oKQoreworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDE5ZjkyN2Yu
LjQzYjEzZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0xNjAyLDkgKzE2MDIsOSBA
QCBodHRwL3Rlc3RzL21pc2MvaWZyYW1lLXJlcGFyZW50aW5nLWlkLWNvbGxpc2lvbi5odG1sCiAj
IHdoYXQgaGFwcGVucyB0byB0aGVtIGluIHRoZSBib3RzOyB0aGUgZGVidWcgYm90cyBhcmUgZmFp
bGluZyBvbmx5IGEKICMgZmV3IHRlc3RzLCBidXQgdGhlIHJlbGVhc2UgYm90IGlzIGdldHRpbmcg
dGltZW91dHMgaW4gcHJldHR5IG11Y2gKICMgYWxsIG9mIHRoZW0uCi1odHRwL3Rlc3RzL2luc3Bl
Y3RvcgorIyBodHRwL3Rlc3RzL2luc3BlY3RvcgogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxl
ZAotaW5zcGVjdG9yLworIyBpbnNwZWN0b3IvCiAKICMgU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29j
a2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUwMDk5CiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgwNTI0NDcuLjA4
NDM4MDU5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMjMgIEFuZHJleSBL
b3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBb
RXh0ZW5zaW9ucyBBUEldIHByb3ZpZGUgYWNjZXNzIHRvIHBhZ2UgcmVzb3VyY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9l
eHRlbnNpb25zL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVj
dGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2lua0ltcGwucHJvdG90eXBlLmFkZExpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVxdWVzdEltcGwucHJvdG90eXBlLmdldENv
bnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3Bl
Y3RlZFdpbmRvdy5yZXNvdXJjZURpc3BhdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmpl
Y3RlZEV4dGVuc2lvbkFQSS5JbnNwZWN0ZWRXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUuZ2V0UmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5JbnNwZWN0
ZWRXaW5kb3cucHJvdG90eXBlLmdldFJlc291cmNlcy5jYWxsYmFja1dyYXBwZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLlJlc291cmNlSW1wbC5wcm90b3R5
cGUuZ2V0IHVybCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEku
UmVzb3VyY2VJbXBsLnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
aW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVzb3VyY2VJbXBsLnByb3RvdHlwZS5nZXRDb250ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5SZXNvdXJjZUltcGwu
cHJvdG90eXBlLnNldENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fbm90aWZ5
UmVzb3VyY2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnBy
b3RvdHlwZS5ub3RpZnlSZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX21ha2VSZXNvdXJjZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25HZXRQYWdlUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9n
ZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZl
ci5wcm90b3R5cGUuX29uR2V0UmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vblNldFJlc291cmNl
Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZS5pbml0RXh0ZW5zaW9ucyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuYWRkUmV2aXNp
b24pOgorCiAyMDExLTA4LTIxICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KIAogICAgICAgICBGaXggJ21ha2UgZGlzdCcgZm9yIFdlYktpdEdUSysuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IGYx
OWViNDkuLmFlYWYxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uQVBJLmpzCkBAIC00OCw3ICs0OCw3IEBAIEV2ZW50U2lua0ltcGwucHJv
dG90eXBlID0gewogICAgIGFkZExpc3RlbmVyOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHRo
cm93IG5ldyAiYWRkTGlzdGVuZXI6IGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIjsKKyAgICAg
ICAgICAgIHRocm93ICJhZGRMaXN0ZW5lcjogY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iOwog
ICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkKICAgICAgICAgICAgIGV4
dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJzdWJzY3JpYmUiLCB0eXBlOiB0
aGlzLl90eXBlIH0pOwogICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChjYWxsYmFjayk7CkBA
IC0xMTUsNyArMTE1LDYgQEAgZnVuY3Rpb24gTmV0d29yaygpCiAgICAgdGhpcy5vblJlcXVlc3RG
aW5pc2hlZCA9IG5ldyBFdmVudFNpbmsoIm5ldHdvcmstcmVxdWVzdC1maW5pc2hlZCIsIHJlcXVl
c3REaXNwYXRjaCk7CiAgICAgZGVmaW5lRGVwcmVjYXRlZFByb3BlcnR5KHRoaXMsICJuZXR3b3Jr
IiwgIm9uRmluaXNoZWQiLCAib25SZXF1ZXN0RmluaXNoZWQiKTsKICAgICB0aGlzLm9uTmF2aWdh
dGVkID0gbmV3IEV2ZW50U2luaygiaW5zcGVjdGVkVVJMQ2hhbmdlZCIpOwotICAgIHRoaXMub25D
b250ZW50RWRpdGVkID0gbmV3IEV2ZW50U2luaygicmVzb3VyY2UtY29udGVudC1lZGl0ZWQiKTsK
IH0KIAogTmV0d29yay5wcm90b3R5cGUgPSB7CkBAIC0xNTEsNyArMTUwLDcgQEAgUmVxdWVzdElt
cGwucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXNwb25z
ZS5jb250ZW50LCByZXNwb25zZS5lbmNvZGluZyk7CiAgICAgICAgIH0KLSAgICAgICAgZXh0ZW5z
aW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogImdldFJlc291cmNlQ29udGVudCIsIGlk
OiB0aGlzLl9pZCB9LCBjYWxsYmFjayAmJiBjYWxsYmFja1dyYXBwZXIpOworICAgICAgICBleHRl
bnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAiZ2V0UmVxdWVzdENvbnRlbnQiLCBp
ZDogdGhpcy5faWQgfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tXcmFwcGVyKTsKICAgICB9CiB9Owog
CkBAIC0zNTgsNiArMzU3LDEyIEBAIEF1ZGl0UmVzdWx0Tm9kZS5wcm90b3R5cGUgPSB7CiAKIGZ1
bmN0aW9uIEluc3BlY3RlZFdpbmRvdygpCiB7CisgICAgZnVuY3Rpb24gcmVzb3VyY2VEaXNwYXRj
aChtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlyZShuZXcgUmVzb3VyY2UobWVzc2Fn
ZS5hcmd1bWVudHNbMF0pLCBtZXNzYWdlLmFyZ3VtZW50c1sxXSk7CisgICAgfQorICAgIHRoaXMu
b25SZXNvdXJjZUFkZGVkID0gbmV3IEV2ZW50U2luaygicmVzb3VyY2UtYWRkZWQiLCByZXNvdXJj
ZURpc3BhdGNoKTsKKyAgICB0aGlzLm9uUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkID0gbmV3IEV2
ZW50U2luaygicmVzb3VyY2UtY29udGVudC1jb21taXR0ZWQiLCByZXNvdXJjZURpc3BhdGNoKTsK
IH0KIAogSW5zcGVjdGVkV2luZG93LnByb3RvdHlwZSA9IHsKQEAgLTM3OCwxNyArMzgzLDUzIEBA
IEluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBleHRlbnNpb25T
ZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAiZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCBl
eHByZXNzaW9uOiBleHByZXNzaW9uIH0sIGNhbGxiYWNrICYmIGNhbGxiYWNrV3JhcHBlcik7CiAg
ICAgfSwKIAotICAgIGZ1bmN0aW9uIGdldFJlc291cmNlcyhjYWxsYmFjaykKKyAgICBnZXRSZXNv
dXJjZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gd3JhcFJl
c291cmNlCisgICAgICAgIGZ1bmN0aW9uIHdyYXBSZXNvdXJjZShyZXNvdXJjZURhdGEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVzb3VyY2UocmVzb3VyY2VEYXRhKTsKKyAg
ICAgICAgfQogICAgICAgICBmdW5jdGlvbiBjYWxsYmFja1dyYXBwZXIocmVzb3VyY2VzKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXNvdXJjZXMuZm9yRWFjaCh3cmFwUmVzb3Vy
Y2UpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc291cmNlcy5tYXAod3JhcFJlc291cmNlKSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7
IGNvbW1hbmQ6ICJnZXRQYWdlUmVzb3VyY2VzIiB9LCBjYWxsYmFjayAmJiBjYWxsYmFja1dyYXBw
ZXIpOwogICAgIH0KIH0KIAorZnVuY3Rpb24gUmVzb3VyY2VJbXBsKHJlc291cmNlRGF0YSkKK3sK
KyAgICB0aGlzLl91cmwgPSByZXNvdXJjZURhdGEudXJsCisgICAgdGhpcy5fdHlwZSA9IHJlc291
cmNlRGF0YS50eXBlOworfQorCitSZXNvdXJjZUltcGwucHJvdG90eXBlID0geworICAgIGdldCB1
cmwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKKyAgICB9LAorCisgICAgZ2V0
IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfSwKKworICAg
IGdldENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2tXcmFwcGVyKHJlc3BvbnNlKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFj
ayhyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5lbmNvZGluZyk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogImdldFJl
c291cmNlQ29udGVudCIsIHVybDogdGhpcy5fdXJsIH0sIGNhbGxiYWNrICYmIGNhbGxiYWNrV3Jh
cHBlcik7CisgICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKGNvbnRlbnQsIGNvbW1p
dCwgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gZXh0ZW5zaW9uU2VydmVyLnNlbmRS
ZXF1ZXN0KHsgY29tbWFuZDogInNldFJlc291cmNlQ29udGVudCIsIHVybDogdGhpcy5fdXJsLCBj
b250ZW50OiBjb250ZW50LCBjb21taXQ6IGNvbW1pdCB9LCBjYWxsYmFjayk7CisgICAgfQorfTsK
KwogZnVuY3Rpb24gVGltZWxpbmVJbXBsKCkKIHsKICAgICB0aGlzLm9uRXZlbnRSZWNvcmRlZCA9
IG5ldyBFdmVudFNpbmsoInRpbWVsaW5lLWV2ZW50LXJlY29yZGVkIik7CkBAIC00NjUsOSArNTA2
LDE4IEBAIGZ1bmN0aW9uIHBvcHVsYXRlSW50ZXJmYWNlQ2xhc3MoaW50ZXJmYWNlLCBpbXBsZW1l
bnRhdGlvbikKICAgICBmb3IgKHZhciBtZW1iZXIgaW4gaW1wbGVtZW50YXRpb24pIHsKICAgICAg
ICAgaWYgKG1lbWJlci5jaGFyQXQoMCkgPT09ICJfIikKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB2YXIgdmFsdWUgPSBpbXBsZW1lbnRhdGlvblttZW1iZXJdOwotICAgICAgICBpbnRl
cmZhY2VbbWVtYmVyXSA9IHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIiA/IGJpbmQodmFsdWUs
IGltcGxlbWVudGF0aW9uKQotICAgICAgICAgICAgOiBpbnRlcmZhY2VbbWVtYmVyXSA9IGltcGxl
bWVudGF0aW9uW21lbWJlcl07CisgICAgICAgIHZhciBkZXNjcmlwdG9yID0gbnVsbDsKKyAgICAg
ICAgLy8gVHJhdmVyc2UgcHJvdG90eXBlIGNoYWluIHVudGlsIHdlIGZpbmQgdGhlIG93bmVyLgor
ICAgICAgICBmb3IgKHZhciBvd25lciA9IGltcGxlbWVudGF0aW9uOyBvd25lciAmJiAhZGVzY3Jp
cHRvcjsgb3duZXIgPSBvd25lci5fX3Byb3RvX18pCisgICAgICAgICAgICBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgbWVtYmVyKTsKKyAgICAgICAg
aWYgKCFkZXNjcmlwdG9yKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0eXBl
b2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIGludGVyZmFj
ZVttZW1iZXJdID0gYmluZChkZXNjcmlwdG9yLnZhbHVlLCBpbXBsZW1lbnRhdGlvbik7CisgICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgICAgIGludGVyZmFjZS5fX2RlZmluZUdldHRlcl9fKG1lbWJlciwgYmluZChkZXNjcmlwdG9y
LmdldCwgaW1wbGVtZW50YXRpb24pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KGludGVyZmFjZSwgbWVtYmVyLCBkZXNjcmlwdG9yKTsKICAgICB9CiB9
CiAKQEAgLTUwMiw2ICs1NTIsNyBAQCB2YXIgRXh0ZW5zaW9uU2lkZWJhclBhbmUgPSBkZWNsYXJl
SW50ZXJmYWNlQ2xhc3MoRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsKTsKIHZhciBQYW5lbCA9IGRl
Y2xhcmVJbnRlcmZhY2VDbGFzcyhQYW5lbEltcGwpOwogdmFyIFBhbmVsV2l0aFNpZGViYXIgPSBk
ZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUGFuZWxXaXRoU2lkZWJhckltcGwpOwogdmFyIFJlcXVlc3Qg
PSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUmVxdWVzdEltcGwpOwordmFyIFJlc291cmNlID0gZGVj
bGFyZUludGVyZmFjZUNsYXNzKFJlc291cmNlSW1wbCk7CiB2YXIgVGltZWxpbmUgPSBkZWNsYXJl
SW50ZXJmYWNlQ2xhc3MoVGltZWxpbmVJbXBsKTsKIAogdmFyIGV4dGVuc2lvblNlcnZlciA9IG5l
dyBFeHRlbnNpb25TZXJ2ZXJDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggYzIzNjE4ZS4uZTVlZjQ0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25TZXJ2ZXIuanMKQEAgLTQxLDE2ICs0MSwxOSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2FsbG93ZWRPcmlnaW5zID0ge307CiAgICAg
dGhpcy5fc3RhdHVzID0gbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNpb25TdGF0dXMoKTsKIAorICAg
IHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9v
bkV2YWx1YXRlT25JbnNwZWN0ZWRQYWdlLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVy
SGFuZGxlcigiYWRkUmVxdWVzdEhlYWRlcnMiLCB0aGlzLl9vbkFkZFJlcXVlc3RIZWFkZXJzLmJp
bmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiYWRkQXVkaXRDYXRlZ29yeSIs
IHRoaXMuX29uQWRkQXVkaXRDYXRlZ29yeS5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3Rl
ckhhbmRsZXIoImFkZEF1ZGl0UmVzdWx0IiwgdGhpcy5fb25BZGRBdWRpdFJlc3VsdC5iaW5kKHRo
aXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImNyZWF0ZVBhbmVsIiwgdGhpcy5fb25D
cmVhdGVQYW5lbC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImNyZWF0
ZVNpZGViYXJQYW5lIiwgdGhpcy5fb25DcmVhdGVTaWRlYmFyUGFuZS5iaW5kKHRoaXMpKTsKLSAg
ICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImV2YWx1YXRlT25JbnNwZWN0ZWRQYWdlIiwgdGhpcy5f
b25FdmFsdWF0ZU9uSW5zcGVjdGVkUGFnZS5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3Rl
ckhhbmRsZXIoImdldEhBUiIsIHRoaXMuX29uR2V0SEFSLmJpbmQodGhpcykpOworICAgIHRoaXMu
X3JlZ2lzdGVySGFuZGxlcigiZ2V0UGFnZVJlc291cmNlcyIsIHRoaXMuX29uR2V0UGFnZVJlc291
cmNlcy5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImdldFJlcXVlc3RD
b250ZW50IiwgdGhpcy5fb25HZXRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICB0aGlz
Ll9yZWdpc3RlckhhbmRsZXIoImdldFJlc291cmNlQ29udGVudCIsIHRoaXMuX29uR2V0UmVzb3Vy
Y2VDb250ZW50LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigibG9nIiwg
dGhpcy5fb25Mb2cuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJyZWxv
YWQiLCB0aGlzLl9vblJlbG9hZC5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRs
ZXIoInNldFJlc291cmNlQ29udGVudCIsIHRoaXMuX29uU2V0UmVzb3VyY2VDb250ZW50LmJpbmQo
dGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0U2lkZWJhckhlaWdodCIsIHRo
aXMuX29uU2V0U2lkZWJhckhlaWdodC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3Rlckhh
bmRsZXIoInNldFNpZGViYXJDb250ZW50IiwgdGhpcy5fb25TZXRTaWRlYmFyQ29udGVudC5iaW5k
KHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInNldFNpZGViYXJQYWdlIiwgdGhp
cy5fb25TZXRTaWRlYmFyUGFnZS5iaW5kKHRoaXMpKTsKQEAgLTExNyw5ICsxMjAsMTUgQEAgV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9jbGllbnRPYmplY3RzW2F1ZGl0UnVuLmlkXTsKICAgICB9LAogCi0gICAgbm90aWZ5UmVz
b3VyY2VDb250ZW50RWRpdGVkOiBmdW5jdGlvbih1cmwsIGNvbnRlbnQpCisgICAgX25vdGlmeVJl
c291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fcG9zdE5v
dGlmaWNhdGlvbigicmVzb3VyY2UtY29udGVudC1lZGl0ZWQiLCB1cmwsIGNvbnRlbnQpOworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC5kYXRhOworICAgICAgICB0aGlzLl9wb3N0Tm90aWZp
Y2F0aW9uKCJyZXNvdXJjZS1hZGRlZCIsIHRoaXMuX21ha2VSZXNvdXJjZShyZXNvdXJjZSkpOwor
ICAgIH0sCisKKyAgICBub3RpZnlSZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQ6IGZ1bmN0aW9uKHJl
c291cmNlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbigi
cmVzb3VyY2UtY29udGVudC1jb21taXR0ZWQiLCB0aGlzLl9tYWtlUmVzb3VyY2UocmVzb3VyY2Up
LCBjb250ZW50KTsKICAgICB9LAogCiAgICAgX25vdGlmeVJlcXVlc3RGaW5pc2hlZDogZnVuY3Rp
b24oZXZlbnQpCkBAIC0zMTAsNyArMzE5LDI2IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gaGFyTG9nOwogICAgIH0sCiAKLSAgICBf
b25HZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2UsIHBvcnQpCisgICAgX21ha2VS
ZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgdXJsOiByZXNvdXJjZS51cmwsCisgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyhyZXNvdXJjZS50eXBlKQorICAgICAgICB9OworICAg
IH0sCisKKyAgICBfb25HZXRQYWdlUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2VzID0gW107CisgICAgICAgIGZ1bmN0aW9uIHB1c2hSZXNvdXJjZURhdGEo
cmVzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc291cmNlcy5wdXNoKHRoaXMuX21h
a2VSZXNvdXJjZShyZXNvdXJjZSkpOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXMocHVzaFJlc291cmNlRGF0YS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlczsKKyAgICB9LAorCisgICAgX2dldFJlc291
cmNlQ29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIG1lc3NhZ2UsIHBvcnQpCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBvbkNvbnRlbnRBdmFpbGFibGUoY29udGVudCwgZW5jb2RlZCkKICAgICAg
ICAgewpAQCAtMzIwLDEwICszNDgsMzYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hD
YWxsYmFjayhtZXNzYWdlLnJlcXVlc3RJZCwgcG9ydCwgcmVzcG9uc2UpOwogICAgICAgICB9Cisg
ICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRo
aXMpKTsKKyAgICB9LAorCisgICAgX29uR2V0UmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKG1lc3Nh
Z2UsIHBvcnQpCisgICAgewogICAgICAgICB2YXIgcmVxdWVzdCA9IHRoaXMuX3JlcXVlc3RCeUlk
KG1lc3NhZ2UuaWQpOwogICAgICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS5pZCk7Ci0gICAgICAgIHJlcXVlc3QucmVx
dWVzdENvbnRlbnQob25Db250ZW50QXZhaWxhYmxlLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
Ll9nZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdCwgbWVzc2FnZSwgcG9ydCk7CisgICAgfSwKKwor
ICAgIF9vbkdldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9ydCkKKyAgICB7
CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5y
ZXNvdXJjZUZvclVSTChtZXNzYWdlLnVybCk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS51cmwpOworICAg
ICAgICB0aGlzLl9nZXRSZXNvdXJjZUNvbnRlbnQocmVzb3VyY2UsIG1lc3NhZ2UsIHBvcnQpOwor
ICAgIH0sCisKKyAgICBfb25TZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2UsIHBv
cnQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxsYmFja1dyYXBwZXIoZXJyb3IpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGVycm9yID8gdGhpcy5fc3RhdHVzLkVf
RkFJTEVEKGVycm9yKSA6IHRoaXMuX3N0YXR1cy5PSygpOworICAgICAgICAgICAgdGhpcy5fZGlz
cGF0Y2hDYWxsYmFjayhtZXNzYWdlLnJlcXVlc3RJZCwgcG9ydCwgcmVzcG9uc2UpOworICAgICAg
ICB9CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2Rl
bC5yZXNvdXJjZUZvclVSTChtZXNzYWdlLnVybCk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS51cmwpOwor
ICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KG1lc3NhZ2UuY29udGVudCwgbWVzc2FnZS5jb21t
aXQsIGNhbGxiYWNrV3JhcHBlci5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgX3JlcXVlc3RJ
ZDogZnVuY3Rpb24ocmVxdWVzdCkKQEAgLTM3NSw2ICs0MjksNyBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhlIG5ldHdvcmtNYW5hZ2Vy
IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYWZ0ZXIgdGhlIEV4dGVuc2lvblNlcnZlciBpcyBjb25zdHJ1
Y3RlZCwgYnV0IGJlZm9yZSBpbml0RXh0ZW5zaW9ucygpIGlzIGNhbGxlZC4KICAgICAgICAgV2Vi
SW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VGaW5pc2hlZCwgdGhpcy5fbm90aWZ5UmVx
dWVzdEZpbmlzaGVkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1v
ZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50
VHlwZXMuSW5zcGVjdGVkVVJMQ2hhbmdlZCwgdGhpcy5faW5zcGVjdGVkVVJMQ2hhbmdlZCwgdGhp
cyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRk
ZWQsIHRoaXMuX25vdGlmeVJlc291cmNlQWRkZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0
b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFuYWdlci5FdmVudFR5cGVzLlRpbWVsaW5lRXZlbnRSZWNvcmRlZCwgdGhpcy5fYWRkUmVjb3Jk
VG9UaW1lbGluZSwgdGhpcyk7CiAKICAgICAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uUmVnaXN0cnku
Z2V0RXh0ZW5zaW9uc0FzeW5jKCk7CkBAIC01MDEsNiArNTU2LDcgQEAgV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblNlcnZlci5fc3RhdHVzZXMgPQogICAgIEVfQkFEQVJHVFlQRTogIkludmFsaWQgdHlw
ZSBmb3IgYXJndW1lbnQgJXM6IGdvdCAlcywgZXhwZWN0ZWQgJXMiLAogICAgIEVfTk9URk9VTkQ6
ICJPYmplY3Qgbm90IGZvdW5kOiAlcyIsCiAgICAgRV9OT1RTVVBQT1JURUQ6ICJPYmplY3QgZG9l
cyBub3Qgc3VwcG9ydCByZXF1ZXN0ZWQgb3BlcmF0aW9uOiAlcyIsCisgICAgRV9GQUlMRUQ6ICJP
cGVyYXRpb24gZmFpbGVkOiAlcyIKIH0KIAogV2ViSW5zcGVjdG9yLkV4dGVuc2lvblN0YXR1cyA9
IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlLmpzCmluZGV4IDlkZjZhMzUuLjIyMjEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtODMzLDcgKzgzMyw3IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFyZXN0b3JpbmdIaXN0
b3J5KQogICAgICAgICAgICAgdGhpcy5fcGVyc2lzdFJldmlzaW9uKCk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VDb250ZW50RWRpdGVkKHRoaXMu
dXJsLCBuZXdDb250ZW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5u
b3RpZnlSZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQodGhpcywgbmV3Q29udGVudCk7CiAgICAgfSwK
IAogICAgIF9wZXJzaXN0UmV2aXNpb246IGZ1bmN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104837</attachid>
            <date>2011-08-23 06:45:00 -0700</date>
            <delta_ts>2011-08-23 06:47:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extensions-resources.diff</filename>
            <type>text/plain</type>
            <size>27224</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjhkNTRjLi40NjgwYjg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDgt
MjMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHByb3ZpZGUgYWNjZXNzIHRvIHBhZ2UgcmVzb3Vy
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LXJlc291cmNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9y
ZXNvdXJjZXMvQWhlbS50dGY6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3Vy
Y2VzL3Rlc3Qtc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAgICAgKF9fdGVzdF9mdW5jdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisKIDIwMTEtMDgtMjMgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLiBSZW1vdmUgYSBub24tZXhpc3RlbnQgdGVzdCBmcm9tIHRoZSBza2lwcGVkIGxpc3Qu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
ZXh0ZW5zaW9uLW1haW4uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvZXh0ZW5zaW9uLW1haW4uanMKaW5kZXggZTI4YWI4OS4uZDUyN2MyZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1t
YWluLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9l
eHRlbnNpb24tbWFpbi5qcwpAQCAtMSwzICsxLDEwIEBACitmdW5jdGlvbiB0cmltVVJMKHVybCkK
K3sKKyAgICBpZiAoL15kYXRhOi8udGVzdCh1cmwpKQorICAgICAgICByZXR1cm4gdXJsLnJlcGxh
Y2UoLzsuKiQvLCAiLi4uIik7CisgICAgcmV0dXJuIHVybC5yZXBsYWNlKC8uKlwvLywgIi4uLi8i
KTsKK30KKwogZnVuY3Rpb24gZHVtcE9iamVjdChvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9w
cywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCiB7CiAgICAgcHJlZml4ID0gcHJlZml4IHx8ICIi
OwpAQCAtNiw5ICsxMywxMCBAQCBmdW5jdGlvbiBkdW1wT2JqZWN0KG9iamVjdCwgbm9uZGV0ZXJt
aW5pc3RpY1Byb3BzLCBwcmVmaXgsIGZpcnN0TGluZVByZWZpeCkKICAgICBmb3IgKHZhciBwcm9w
IGluIG9iamVjdCkgewogICAgICAgICB2YXIgcHJlZml4V2l0aE5hbWUgPSBwcmVmaXggKyAiICAg
ICIgKyBwcm9wICsgIiA6ICI7CiAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBvYmplY3RbcHJvcF07
Ci0gICAgICAgIGlmIChub25kZXRlcm1pbmlzdGljUHJvcHMgJiYgcHJvcCBpbiBub25kZXRlcm1p
bmlzdGljUHJvcHMpCi0gICAgICAgICAgICBvdXRwdXQocHJlZml4V2l0aE5hbWUgKyAiPCIgKyB0
eXBlb2YgcHJvcFZhbHVlICsgIj4iKTsKLSAgICAgICAgZWxzZSBpZiAocHJvcFZhbHVlID09PSBu
dWxsKQorICAgICAgICBpZiAobm9uZGV0ZXJtaW5pc3RpY1Byb3BzICYmIHByb3AgaW4gbm9uZGV0
ZXJtaW5pc3RpY1Byb3BzKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBub25kZXRlcm1pbmlz
dGljUHJvcHNbcHJvcF0gPT09ICJ1cmwiID8gdHJpbVVSTChwcm9wVmFsdWUpIDogIjwiICsgdHlw
ZW9mIHByb3BWYWx1ZSArICI+IjsKKyAgICAgICAgICAgIG91dHB1dChwcmVmaXhXaXRoTmFtZSAr
IHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgPT09IG51bGwpCiAgICAgICAg
ICAgICBvdXRwdXQocHJlZml4V2l0aE5hbWUgKyAibnVsbCIpOwogICAgICAgICBlbHNlIGlmICh0
eXBlb2YgcHJvcFZhbHVlID09PSAib2JqZWN0IikKICAgICAgICAgICAgIGR1bXBPYmplY3QocHJv
cFZhbHVlLCBub25kZXRlcm1pbmlzdGljUHJvcHMsIHByZWZpeCArICIgICAgIiwgcHJlZml4V2l0
aE5hbWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0CmluZGV4IDM1ZDVlYmQuLmI0NDRlMmUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXBp
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRl
bnNpb25zLWFwaS1leHBlY3RlZC50eHQKQEAgLTgsOCArOCwxNyBAQCBSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0QVBJCiAgICAgICAgIGFkZENhdGVnb3J5IDogPGZ1bmN0aW9uPgogICAgIH0K
ICAgICBpbnNwZWN0ZWRXaW5kb3cgOiB7CisgICAgICAgIG9uUmVzb3VyY2VBZGRlZCA6IHsKKyAg
ICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgcmVtb3ZlTGlz
dGVuZXIgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICAgICAgb25SZXNvdXJjZUNvbnRlbnRD
b21taXR0ZWQgOiB7CisgICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICAg
ICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICB9CiAgICAgICAgIHJl
bG9hZCA6IDxmdW5jdGlvbj4KICAgICAgICAgZXZhbCA6IDxmdW5jdGlvbj4KKyAgICAgICAgZ2V0
UmVzb3VyY2VzIDogPGZ1bmN0aW9uPgogICAgIH0KICAgICBwYW5lbHMgOiB7CiAgICAgICAgIGVs
ZW1lbnRzIDogewpAQCAtNDIsMTAgKzUxLDYgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVz
dEFQSQogICAgICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICBy
ZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgfQotICAgICAgICBvbkNvbnRlbnRF
ZGl0ZWQgOiB7Ci0gICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICAgICAg
ICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICB9CiAgICAgICAgIGdldEhB
UiA6IDxmdW5jdGlvbj4KICAgICAgICAgYWRkUmVxdWVzdEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAg
ICAgfQpAQCAtNjIsMTAgKzY3LDYgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQog
ICAgICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICByZW1vdmVM
aXN0ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgfQotICAgICAgICBvbkNvbnRlbnRFZGl0ZWQg
OiB7Ci0gICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJl
bW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICB9CiAgICAgICAgIGdldEhBUiA6IDxm
dW5jdGlvbj4KICAgICAgICAgYWRkUmVxdWVzdEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1u
ZXR3b3JrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtbmV0d29yay1leHBlY3RlZC50eHQKaW5kZXggNjVjMWY1OS4uZWI5ZjhhYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3
b3JrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9l
eHRlbnNpb25zLW5ldHdvcmstZXhwZWN0ZWQudHh0CkBAIC0yOCw3ICsyOCw1IEBAIFJVTk5JTkcg
VEVTVDogZXh0ZW5zaW9uX3Rlc3RHZXRSZXNvdXJjZUNvbnRlbnRFbmNvZGVkCiB9CiBSVU5OSU5H
IFRFU1Q6IGV4dGVuc2lvbl90ZXN0UmVxdWVzdE5vdGlmaWNhdGlvbgogUmVxdWVzdCBmaW5pc2hl
ZDogLi4uL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCi1SVU5O
SU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0UmVzb3VyY2VDb250ZW50RWRpdGVkCi1jb250ZW50IGZv
ciByZXNvdXJjZSAuLi4vZXh0ZW5zaW9ucy9yZXNvdXJjZXMvYXVkaXRzLXN0eWxlMS5jc3MgZWRp
dGVkOiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IH0KIEFsbCB0ZXN0cyBkb25lLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LW5ldHdvcmsuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lv
bnMtbmV0d29yay5odG1sCmluZGV4IGI2YjEzZjAuLmVmMGMyNTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1s
CkBAIC03NiwzMCArNzYsNiBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldFJlc291cmNlQ29u
dGVudEVuY29kZWQobmV4dFRlc3QpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGV4dGVuc2lvbl90
ZXN0UmVzb3VyY2VDb250ZW50RWRpdGVkKG5leHRUZXN0KQotewotICAgIGZ1bmN0aW9uIG9uQ29u
dGVudEVkaXRlZCh1cmwsIGNvbnRlbnQpCi0gICAgewotICAgICAgICB3ZWJJbnNwZWN0b3IubmV0
d29yay5vbkNvbnRlbnRFZGl0ZWQucmVtb3ZlTGlzdGVuZXIob25Db250ZW50RWRpdGVkKTsKLSAg
ICAgICAgdmFyIHVybFRhaWwgPSB1cmwucmVwbGFjZSgvLiooKFwvW14vXSopezN9JCkvLCIuLi4k
MSIpOwotICAgICAgICBvdXRwdXQoImNvbnRlbnQgZm9yIHJlc291cmNlICIgKyB1cmxUYWlsICsg
IiBlZGl0ZWQ6ICIgKyBjb250ZW50KTsKLSAgICAgICAgbmV4dFRlc3QoKTsKLSAgICB9ICAgCi0g
ICAgd2ViSW5zcGVjdG9yLm5ldHdvcmsub25Db250ZW50RWRpdGVkLmFkZExpc3RlbmVyKG9uQ29u
dGVudEVkaXRlZCk7Ci0KLSAgICBmdW5jdGlvbiBmaW5kQW5kRWRpdFJlc291cmNlKCkKLSAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXNvdXJj
ZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoL2F1ZGl0cy1zdHlsZTEuY3NzJC8udGVzdChyZXNvdXJjZXNbaV0u
dXJsKSkgewotICAgICAgICAgICAgICAgIHJlc291cmNlc1tpXS5zZXRDb250ZW50KCJib2R5IHsg
YmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IH0iLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBldmFsdWF0ZU9uRnJvbnRl
bmQoIigiICsgZmluZEFuZEVkaXRSZXNvdXJjZSArICIpKCkiKTsKLX0KLQogdmFyIHRlc3QgPSBm
dW5jdGlvbigpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKEluc3BlY3RvclRlc3Qu
cnVuRXh0ZW5zaW9uVGVzdHMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTc1MTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNl
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3NCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBhcHBsaWNhdGlvbgorVGVzdHMg
cmVzb3VyY2UtcmVsYXRlZCBtZXRob2RzIG9mIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJCisK
KworU3RhcnRlZCBleHRlbnNpb24uCitSdW5uaW5nIHRlc3RzLi4uCitSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0R2V0QWxsUmVzb3VyY2VzCitwYWdlIHJlc291cmNlczoKK3sKKyAgICAwIDog
eworICAgICAgICAwIDogeworICAgICAgICAgICAgdXJsIDogLi4uL2V4dGVuc2lvbnMtcmVzb3Vy
Y2VzLmh0bWwKKyAgICAgICAgICAgIHR5cGUgOiAiZG9jdW1lbnQiCisgICAgICAgICAgICBnZXRD
b250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgc2V0Q29udGVudCA6IDxmdW5jdGlvbj4K
KyAgICAgICAgfQorICAgICAgICAxIDogeworICAgICAgICAgICAgdXJsIDogLi4uL2V4dGVuc2lv
bnMtdGVzdC5qcworICAgICAgICAgICAgdHlwZSA6ICJzY3JpcHQiCisgICAgICAgICAgICBnZXRD
b250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgc2V0Q29udGVudCA6IDxmdW5jdGlvbj4K
KyAgICAgICAgfQorICAgICAgICAyIDogeworICAgICAgICAgICAgdXJsIDogLi4uL3Rlc3Qtc2Ny
aXB0LmpzCisgICAgICAgICAgICB0eXBlIDogInNjcmlwdCIKKyAgICAgICAgICAgIGdldENvbnRl
bnQgOiA8ZnVuY3Rpb24+CisgICAgICAgICAgICBzZXRDb250ZW50IDogPGZ1bmN0aW9uPgorICAg
ICAgICB9CisgICAgICAgIDMgOiB7CisgICAgICAgICAgICB1cmwgOiAuLi4vaW5zcGVjdG9yLXRl
c3QuanMKKyAgICAgICAgICAgIHR5cGUgOiAic2NyaXB0IgorICAgICAgICAgICAgZ2V0Q29udGVu
dCA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAg
ICAgIH0KKyAgICAgICAgNCA6IHsKKyAgICAgICAgICAgIHVybCA6IC4uLi9hdWRpdHMtc3R5bGUx
LmNzcworICAgICAgICAgICAgdHlwZSA6ICJzdHlsZXNoZWV0IgorICAgICAgICAgICAgZ2V0Q29u
dGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+Cisg
ICAgICAgIH0KKyAgICAgICAgNSA6IHsKKyAgICAgICAgICAgIHVybCA6IC4uLi9hYmUucG5nCisg
ICAgICAgICAgICB0eXBlIDogImltYWdlIgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5j
dGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAg
ICB9Cit9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0UmVzb3VyY2VDb250ZW50Cit7
CisgICAgMCA6ICJmdW5jdGlvbiBfX3Rlc3RfZnVuY3Rpb24oKQoreworfQorCisiCisgICAgMSA6
ICIiCit9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25Db250ZW50Q29tbWl0dGVkCits
b2c6IEV4dGVuc2lvbiBzZXJ2ZXIgZXJyb3I6IE9wZXJhdGlvbiBmYWlsZWQ6IFJlc291cmNlIGlz
IG5vdCBlZGl0YWJsZQorY29udGVudCBjb21taXR0ZWQgZm9yIHJlc291cmNlIGZpbGU6Ly8vdXNy
L2xvY2FsL2dvb2dsZS9ob21lL2Nhc2VxL3NyYy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvV2Vi
S2l0L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL3Jlc291cmNlcy9hdWRpdHMtc3R5
bGUxLmNzcyAodHlwZTogc3R5bGVzaGVldCksIG5ldyBjb250ZW50OiBkaXYudGVzdCB7IHdpZHRo
OiAyMjBweDsgaGVpZ2h0OiA0MnB4OyB9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25S
ZXNvdXJjZUFkZGVkCityZXNvdXJjZSBhZGRlZDoKK3sKKyAgICAwIDogeworICAgICAgICB1cmwg
OiBkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQuLi4KKyAgICAgICAgdHlwZSA6ICJzY3JpcHQi
CisgICAgICAgIGdldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIHNldENvbnRlbnQgOiA8
ZnVuY3Rpb24+CisgICAgfQorfQorUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdFNldFJlc291
cmNlQ29udGVudAorZGl2LnRlc3Qgd2lkdGggYWZ0ZXIgc3R5bGVzaGVldCBlZGl0ZWQgKHNob3Vs
ZCBiZSAxMjYpOiAxMjYKK0FsbCB0ZXN0cyBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDJhYmQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMu
aHRtbApAQCAtMCwwICsxLDExNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2F1ZGl0cy1z
dHlsZTEuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJyZXNvdXJjZXMvdGVzdC1zY3JpcHQuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0QWxsUmVz
b3VyY2VzKG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlcykKKyAg
ICB7CisgICAgICAgIG91dHB1dCgicGFnZSByZXNvdXJjZXM6Iik7CisgICAgICAgIGR1bXBPYmpl
Y3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgeyB1cmw6ICJ1cmwiIH0p
OworICAgIH0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmdldFJlc291cmNlcyhj
YWxsYmFja0FuZE5leHRUZXN0KGNhbGxiYWNrLCBuZXh0VGVzdCkpOworfQorCitmdW5jdGlvbiBl
eHRlbnNpb25fcnVuV2l0aFJlc291cmNlKHJlZ2V4cCwgY2FsbGJhY2spCit7CisgICAgZnVuY3Rp
b24gb25SZXNvdXJjZXMocmVzb3VyY2VzKQorICAgIHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICBpZiAocmVnZXhwLnRlc3Qo
cmVzb3VyY2VzW2ldLnVybCkpIHsKKyAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc291cmNlc1tp
XSkKKyAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgfQorICAgICAgIH0KKyAgICAg
ICB0aHJvdyAiRmFpbGVkIHRvIGZpbmQgYSByZXNvdXJjZTogIiArIHJlZ2V4cC50b1N0cmluZygp
OworICAgIH0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmdldFJlc291cmNlcyhv
blJlc291cmNlcyk7Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0UmVzb3VyY2VDb250
ZW50KG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9uQ29udGVudCgpCisgICAgeworICAgICAg
ICBkdW1wT2JqZWN0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOworICAg
IH0KKyAgICBleHRlbnNpb25fcnVuV2l0aFJlc291cmNlKC90ZXN0LXNjcmlwdFwuanMkLywgZnVu
Y3Rpb24ocmVzb3VyY2UpIHsKKyAgICAgICAgcmVzb3VyY2UuZ2V0Q29udGVudChjYWxsYmFja0Fu
ZE5leHRUZXN0KG9uQ29udGVudCwgbmV4dFRlc3QpKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g
ZXh0ZW5zaW9uX3Rlc3RTZXRSZXNvdXJjZUNvbnRlbnQobmV4dFRlc3QpCit7CisgICAgZnVuY3Rp
b24gY2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRv
dy5ldmFsKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1kaXYnKS5jbGllbnRXaWR0aCIs
IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgb3V0cHV0KCJkaXYudGVzdCB3aWR0aCBh
ZnRlciBzdHlsZXNoZWV0IGVkaXRlZCAoc2hvdWxkIGJlIDEyNik6ICIgKyByZXN1bHQpOworICAg
ICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGV4dGVuc2lvbl9y
dW5XaXRoUmVzb3VyY2UoL2F1ZGl0cy1zdHlsZTFcLmNzcyQvLCBmdW5jdGlvbihyZXNvdXJjZSkg
eworICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KCJkaXYudGVzdCB7IHdpZHRoOiAxMjZweDsg
aGVpZ2h0OiA0MnB4OyB9IiwgZmFsc2UsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gZXh0ZW5zaW9uX3Rlc3RPbkNvbnRlbnRDb21taXR0ZWQobmV4dFRlc3QpCit7CisgICAgdmFy
IGV4cGVjdGVkX2NvbnRlbnQgPSAiZGl2LnRlc3QgeyB3aWR0aDogMjIwcHg7IGhlaWdodDogNDJw
eDsgfSI7CisKKyAgICBmdW5jdGlvbiBvbkNvbnRlbnRDb21taXR0ZWQocmVzb3VyY2UsIGNvbnRl
bnQpCisgICAgeworICAgICAgICBvdXRwdXQoImNvbnRlbnQgY29tbWl0dGVkIGZvciByZXNvdXJj
ZSAiICsgcmVzb3VyY2UudXJsICsgIiAodHlwZTogIiArIHJlc291cmNlLnR5cGUgKyAiKSwgbmV3
IGNvbnRlbnQ6ICIgKyBjb250ZW50KTsKKyAgICAgICAgaWYgKCEvYXVkaXRzLXN0eWxlMVwuY3Nz
JC8udGVzdChyZXNvdXJjZS51cmwpIHx8IGNvbnRlbnQgIT09IGV4cGVjdGVkX2NvbnRlbnQpCisg
ICAgICAgICAgICBvdXRwdXQoIkZBSUw6IHN0cmF5IG9uQ29udGVudEVkaXRlZCBldmVudCIpOwor
ICAgICAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93Lm9uUmVzb3VyY2VDb250ZW50Q29t
bWl0dGVkLnJlbW92ZUxpc3RlbmVyKG9uQ29udGVudENvbW1pdHRlZCk7CisgICAgICAgIG5leHRU
ZXN0KCk7CisgICAgfQorICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cub25SZXNvdXJj
ZUNvbnRlbnRDb21taXR0ZWQuYWRkTGlzdGVuZXIob25Db250ZW50Q29tbWl0dGVkKTsKKyAgICBl
eHRlbnNpb25fcnVuV2l0aFJlc291cmNlKC9hdWRpdHMtc3R5bGUxXC5jc3MkLywgZnVuY3Rpb24o
cmVzb3VyY2UpIHsKKyAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudCgiZGl2LnRlc3QgeyB3aWR0
aDogMTQwcHg7IGhlaWdodDogNDJweDsgfSIsIGZhbHNlKTsKKyAgICB9KTsKKyAgICAvLyBUaGUg
bmV4dCBzdGVwIGlzIGdvaW5nIHRvIHByb2R1Y2UgYSBjb25zb2xlIG1lc3NhZ2UgdGhhdCB3aWxs
IGJlIGxvZ2dlZCwgc28gc3luY2hyb25pemUgdGhlIG91dHB1dCBub3cuCisgICAgZXZhbHVhdGVP
bkZyb250ZW5kKCJJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMocmVwbHkp
IiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UoL3Rlc3Qt
c2NyaXB0XC5qcyQvLCBmdW5jdGlvbihyZXNvdXJjZSkgeworICAgICAgICAgICAgcmVzb3VyY2Uu
c2V0Q29udGVudCgiZnVuY3Rpb24gZnVuY3Rpb24xKCl7fSIsIHRydWUpOworICAgICAgICB9KTsK
KyAgICAgICAgZXh0ZW5zaW9uX3J1bldpdGhSZXNvdXJjZSgvYXVkaXRzLXN0eWxlMVwuY3NzJC8s
IGZ1bmN0aW9uKHJlc291cmNlKSB7CisgICAgICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KGV4
cGVjdGVkX2NvbnRlbnQsIHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gZXh0ZW5zaW9uX3Rlc3RPblJlc291cmNlQWRkZWQobmV4dFRlc3QpCit7CisgICAgZnVuY3Rp
b24gb25SZXNvdXJjZUFkZGVkKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgb3V0cHV0KCJyZXNv
dXJjZSBhZGRlZDoiKTsKKyAgICAgICAgZHVtcE9iamVjdChBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMpLCB7IHVybDogInVybCIgfSk7CisgICAgICAgIHdlYkluc3BlY3Rvci5p
bnNwZWN0ZWRXaW5kb3cub25SZXNvdXJjZUFkZGVkLnJlbW92ZUxpc3RlbmVyKG9uUmVzb3VyY2VB
ZGRlZCk7CisKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9CisgICAgd2ViSW5zcGVjdG9yLmlu
c3BlY3RlZFdpbmRvdy5vblJlc291cmNlQWRkZWQuYWRkTGlzdGVuZXIob25SZXNvdXJjZUFkZGVk
KTsKKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImFkZFJlc291cmNlKCki
KTsKK30KKworZnVuY3Rpb24gYWRkUmVzb3VyY2UoKQoreworICAgIHZhciBzY3JpcHQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBzY3JpcHQuc3JjID0gImRhdGE6YXBw
bGljYXRpb24vamF2YXNjcmlwdDtmdW5jdGlvbiB0ZXN0X2Z1bmMoKXt9IjsKKyAgICBkb2N1bWVu
dC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgcmVzb3VyY2UtcmVsYXRlZCBtZXRob2Rz
IG9mIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJPC9wPgorPGltZyBzcmM9InJlc291cmNlcy9h
YmUucG5nIj4KKzxkaXYgaWQ9InRlc3QtZGl2IiBjbGFzcz0idGVzdCI+PC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9y
ZXNvdXJjZXMvQWhlbS50dGYgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNv
dXJjZXMvQWhlbS50dGYKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0
LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2Ny
aXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOTlkN2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMv
dGVzdC1zY3JpcHQuanMKQEAgLTAsMCArMSw0IEBACitmdW5jdGlvbiBfX3Rlc3RfZnVuY3Rpb24o
KQoreworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDI1MTUxYmUuLjQ1OTVmZjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0xNjAyLDkgKzE2MDIsOSBAQCBodHRwL3Rl
c3RzL21pc2MvaWZyYW1lLXJlcGFyZW50aW5nLWlkLWNvbGxpc2lvbi5odG1sCiAjIHdoYXQgaGFw
cGVucyB0byB0aGVtIGluIHRoZSBib3RzOyB0aGUgZGVidWcgYm90cyBhcmUgZmFpbGluZyBvbmx5
IGEKICMgZmV3IHRlc3RzLCBidXQgdGhlIHJlbGVhc2UgYm90IGlzIGdldHRpbmcgdGltZW91dHMg
aW4gcHJldHR5IG11Y2gKICMgYWxsIG9mIHRoZW0uCi1odHRwL3Rlc3RzL2luc3BlY3RvcgorIyBo
dHRwL3Rlc3RzL2luc3BlY3RvcgogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZAotaW5zcGVj
dG9yLworIyBpbnNwZWN0b3IvCiAKICMgU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29ja2V0IHByb3Rv
Y29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUwMDk5CiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU4M2IxMjIuLmY3YTMxZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wOC0yMyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25z
IEFQSV0gcHJvdmlkZSBhY2Nlc3MgdG8gcGFnZSByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzY3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25BUEkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNp
b25BUEkuRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUuYWRkTGlzdGVuZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5p
bmplY3RlZEV4dGVuc2lvbkFQSS5SZXF1ZXN0SW1wbC5wcm90b3R5cGUuZ2V0Q29udGVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93
LnJlc291cmNlRGlzcGF0Y2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5z
aW9uQVBJLkluc3BlY3RlZFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRF
eHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93LnByb3RvdHlwZS5nZXRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3BlY3RlZFdpbmRvdy5w
cm90b3R5cGUuZ2V0UmVzb3VyY2VzLmNhbGxiYWNrV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVzb3VyY2VJbXBsLnByb3RvdHlwZS5nZXQgdXJs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5SZXNvdXJjZUlt
cGwucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4
dGVuc2lvbkFQSS5SZXNvdXJjZUltcGwucHJvdG90eXBlLmdldENvbnRlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLlJlc291cmNlSW1wbC5wcm90b3R5cGUu
c2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9ub3RpZnlSZXNvdXJjZUFk
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLm5v
dGlmeVJlc291cmNlQ29udGVudENvbW1pdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fbWFrZVJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFBhZ2VSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX2dldFJlc291cmNl
Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZS5fb25HZXRSZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLnByb3RvdHlwZS5fb25HZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uU2V0UmVzb3VyY2VDb250ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLmluaXRFeHRl
bnNpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5hZGRSZXZpc2lvbik6CisKIDIw
MTEtMDgtMjMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MzU3OS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKaW5kZXggZjE5ZWI0OS4u
MjJmMjJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BUEkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BUEkuanMKQEAgLTQ4LDcgKzQ4LDcgQEAgRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUg
PSB7CiAgICAgYWRkTGlzdGVuZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAg
aWYgKHR5cGVvZiBjYWxsYmFjayAhPSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhyb3cgbmV3
ICJhZGRMaXN0ZW5lcjogY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iOworICAgICAgICAgICAg
dGhyb3cgImFkZExpc3RlbmVyOiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiI7CiAgICAgICAg
IGlmICh0aGlzLl9saXN0ZW5lcnMubGVuZ3RoID09PSAwKQogICAgICAgICAgICAgZXh0ZW5zaW9u
U2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInN1YnNjcmliZSIsIHR5cGU6IHRoaXMuX3R5
cGUgfSk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTsKQEAgLTExNSw3
ICsxMTUsNiBAQCBmdW5jdGlvbiBOZXR3b3JrKCkKICAgICB0aGlzLm9uUmVxdWVzdEZpbmlzaGVk
ID0gbmV3IEV2ZW50U2luaygibmV0d29yay1yZXF1ZXN0LWZpbmlzaGVkIiwgcmVxdWVzdERpc3Bh
dGNoKTsKICAgICBkZWZpbmVEZXByZWNhdGVkUHJvcGVydHkodGhpcywgIm5ldHdvcmsiLCAib25G
aW5pc2hlZCIsICJvblJlcXVlc3RGaW5pc2hlZCIpOwogICAgIHRoaXMub25OYXZpZ2F0ZWQgPSBu
ZXcgRXZlbnRTaW5rKCJpbnNwZWN0ZWRVUkxDaGFuZ2VkIik7Ci0gICAgdGhpcy5vbkNvbnRlbnRF
ZGl0ZWQgPSBuZXcgRXZlbnRTaW5rKCJyZXNvdXJjZS1jb250ZW50LWVkaXRlZCIpOwogfQogCiBO
ZXR3b3JrLnByb3RvdHlwZSA9IHsKQEAgLTE1MSw3ICsxNTAsNyBAQCBSZXF1ZXN0SW1wbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlLmNvbnRl
bnQsIHJlc3BvbnNlLmVuY29kaW5nKTsKICAgICAgICAgfQotICAgICAgICBleHRlbnNpb25TZXJ2
ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAiZ2V0UmVzb3VyY2VDb250ZW50IiwgaWQ6IHRoaXMu
X2lkIH0sIGNhbGxiYWNrICYmIGNhbGxiYWNrV3JhcHBlcik7CisgICAgICAgIGV4dGVuc2lvblNl
cnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJnZXRSZXF1ZXN0Q29udGVudCIsIGlkOiB0aGlz
Ll9pZCB9LCBjYWxsYmFjayAmJiBjYWxsYmFja1dyYXBwZXIpOwogICAgIH0KIH07CiAKQEAgLTM1
OCw2ICszNTcsMTYgQEAgQXVkaXRSZXN1bHROb2RlLnByb3RvdHlwZSA9IHsKIAogZnVuY3Rpb24g
SW5zcGVjdGVkV2luZG93KCkKIHsKKyAgICBmdW5jdGlvbiByZXNvdXJjZURpc3BhdGNoKG1lc3Nh
Z2UpCisgICAgeworICAgICAgICB0aGlzLl9maXJlKG5ldyBSZXNvdXJjZShtZXNzYWdlLmFyZ3Vt
ZW50c1swXSkpOworICAgIH0KKyAgICBmdW5jdGlvbiByZXNvdXJjZUNvbnRlbnREaXNwYXRjaCht
ZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlyZShuZXcgUmVzb3VyY2UobWVzc2FnZS5h
cmd1bWVudHNbMF0pLCBtZXNzYWdlLmFyZ3VtZW50c1sxXSk7CisgICAgfQorICAgIHRoaXMub25S
ZXNvdXJjZUFkZGVkID0gbmV3IEV2ZW50U2luaygicmVzb3VyY2UtYWRkZWQiLCByZXNvdXJjZURp
c3BhdGNoKTsKKyAgICB0aGlzLm9uUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkID0gbmV3IEV2ZW50
U2luaygicmVzb3VyY2UtY29udGVudC1jb21taXR0ZWQiLCByZXNvdXJjZUNvbnRlbnREaXNwYXRj
aCk7CiB9CiAKIEluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUgPSB7CkBAIC0zNzgsMTcgKzM4Nyw1
MyBAQCBJbnNwZWN0ZWRXaW5kb3cucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZXh0ZW5z
aW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogImV2YWx1YXRlT25JbnNwZWN0ZWRQYWdl
IiwgZXhwcmVzc2lvbjogZXhwcmVzc2lvbiB9LCBjYWxsYmFjayAmJiBjYWxsYmFja1dyYXBwZXIp
OwogICAgIH0sCiAKLSAgICBmdW5jdGlvbiBnZXRSZXNvdXJjZXMoY2FsbGJhY2spCisgICAgZ2V0
UmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHdy
YXBSZXNvdXJjZQorICAgICAgICBmdW5jdGlvbiB3cmFwUmVzb3VyY2UocmVzb3VyY2VEYXRhKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKHJlc291cmNlRGF0YSk7
CisgICAgICAgIH0KICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKHJlc291cmNlcykK
ICAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2socmVzb3VyY2VzLmZvckVhY2god3JhcFJl
c291cmNlKSk7CisgICAgICAgICAgICBjYWxsYmFjayhyZXNvdXJjZXMubWFwKHdyYXBSZXNvdXJj
ZSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVl
c3QoeyBjb21tYW5kOiAiZ2V0UGFnZVJlc291cmNlcyIgfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tX
cmFwcGVyKTsKICAgICB9CiB9CiAKK2Z1bmN0aW9uIFJlc291cmNlSW1wbChyZXNvdXJjZURhdGEp
Cit7CisgICAgdGhpcy5fdXJsID0gcmVzb3VyY2VEYXRhLnVybAorICAgIHRoaXMuX3R5cGUgPSBy
ZXNvdXJjZURhdGEudHlwZTsKK30KKworUmVzb3VyY2VJbXBsLnByb3RvdHlwZSA9IHsKKyAgICBn
ZXQgdXJsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91cmw7CisgICAgfSwKKworICAg
IGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlOworICAgIH0sCisK
KyAgICBnZXRDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0
aW9uIGNhbGxiYWNrV3JhcHBlcihyZXNwb25zZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2Fs
bGJhY2socmVzcG9uc2UuY29udGVudCwgcmVzcG9uc2UuZW5jb2RpbmcpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJn
ZXRSZXNvdXJjZUNvbnRlbnQiLCB1cmw6IHRoaXMuX3VybCB9LCBjYWxsYmFjayAmJiBjYWxsYmFj
a1dyYXBwZXIpOworICAgIH0sCisKKyAgICBzZXRDb250ZW50OiBmdW5jdGlvbihjb250ZW50LCBj
b21taXQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvblNlcnZlci5z
ZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJzZXRSZXNvdXJjZUNvbnRlbnQiLCB1cmw6IHRoaXMuX3Vy
bCwgY29udGVudDogY29udGVudCwgY29tbWl0OiBjb21taXQgfSwgY2FsbGJhY2spOworICAgIH0K
K307CisKIGZ1bmN0aW9uIFRpbWVsaW5lSW1wbCgpCiB7CiAgICAgdGhpcy5vbkV2ZW50UmVjb3Jk
ZWQgPSBuZXcgRXZlbnRTaW5rKCJ0aW1lbGluZS1ldmVudC1yZWNvcmRlZCIpOwpAQCAtNDY1LDkg
KzUxMCwxOCBAQCBmdW5jdGlvbiBwb3B1bGF0ZUludGVyZmFjZUNsYXNzKGludGVyZmFjZSwgaW1w
bGVtZW50YXRpb24pCiAgICAgZm9yICh2YXIgbWVtYmVyIGluIGltcGxlbWVudGF0aW9uKSB7CiAg
ICAgICAgIGlmIChtZW1iZXIuY2hhckF0KDApID09PSAiXyIpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgdmFyIHZhbHVlID0gaW1wbGVtZW50YXRpb25bbWVtYmVyXTsKLSAgICAgICAg
aW50ZXJmYWNlW21lbWJlcl0gPSB0eXBlb2YgdmFsdWUgPT09ICJmdW5jdGlvbiIgPyBiaW5kKHZh
bHVlLCBpbXBsZW1lbnRhdGlvbikKLSAgICAgICAgICAgIDogaW50ZXJmYWNlW21lbWJlcl0gPSBp
bXBsZW1lbnRhdGlvblttZW1iZXJdOworICAgICAgICB2YXIgZGVzY3JpcHRvciA9IG51bGw7Cisg
ICAgICAgIC8vIFRyYXZlcnNlIHByb3RvdHlwZSBjaGFpbiB1bnRpbCB3ZSBmaW5kIHRoZSBvd25l
ci4KKyAgICAgICAgZm9yICh2YXIgb3duZXIgPSBpbXBsZW1lbnRhdGlvbjsgb3duZXIgJiYgIWRl
c2NyaXB0b3I7IG93bmVyID0gb3duZXIuX19wcm90b19fKQorICAgICAgICAgICAgZGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3duZXIsIG1lbWJlcik7CisgICAg
ICAgIGlmICghZGVzY3JpcHRvcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
dHlwZW9mIGRlc2NyaXB0b3IudmFsdWUgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBpbnRl
cmZhY2VbbWVtYmVyXSA9IGJpbmQoZGVzY3JpcHRvci52YWx1ZSwgaW1wbGVtZW50YXRpb24pOwor
ICAgICAgICBlbHNlIGlmICh0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICJmdW5jdGlvbiIpCisg
ICAgICAgICAgICBpbnRlcmZhY2UuX19kZWZpbmVHZXR0ZXJfXyhtZW1iZXIsIGJpbmQoZGVzY3Jp
cHRvci5nZXQsIGltcGxlbWVudGF0aW9uKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShpbnRlcmZhY2UsIG1lbWJlciwgZGVzY3JpcHRvcik7CiAgICAg
fQogfQogCkBAIC01MDIsNiArNTU2LDcgQEAgdmFyIEV4dGVuc2lvblNpZGViYXJQYW5lID0gZGVj
bGFyZUludGVyZmFjZUNsYXNzKEV4dGVuc2lvblNpZGViYXJQYW5lSW1wbCk7CiB2YXIgUGFuZWwg
PSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUGFuZWxJbXBsKTsKIHZhciBQYW5lbFdpdGhTaWRlYmFy
ID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKFBhbmVsV2l0aFNpZGViYXJJbXBsKTsKIHZhciBSZXF1
ZXN0ID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKFJlcXVlc3RJbXBsKTsKK3ZhciBSZXNvdXJjZSA9
IGRlY2xhcmVJbnRlcmZhY2VDbGFzcyhSZXNvdXJjZUltcGwpOwogdmFyIFRpbWVsaW5lID0gZGVj
bGFyZUludGVyZmFjZUNsYXNzKFRpbWVsaW5lSW1wbCk7CiAKIHZhciBleHRlbnNpb25TZXJ2ZXIg
PSBuZXcgRXh0ZW5zaW9uU2VydmVyQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGMyMzYxOGUuLjA4
NmIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uU2VydmVyLmpzCkBAIC00OCw5ICs0OCwxMiBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU2VydmVyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiY3JlYXRl
U2lkZWJhclBhbmUiLCB0aGlzLl9vbkNyZWF0ZVNpZGViYXJQYW5lLmJpbmQodGhpcykpOwogICAg
IHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9v
bkV2YWx1YXRlT25JbnNwZWN0ZWRQYWdlLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVy
SGFuZGxlcigiZ2V0SEFSIiwgdGhpcy5fb25HZXRIQVIuYmluZCh0aGlzKSk7CisgICAgdGhpcy5f
cmVnaXN0ZXJIYW5kbGVyKCJnZXRQYWdlUmVzb3VyY2VzIiwgdGhpcy5fb25HZXRQYWdlUmVzb3Vy
Y2VzLmJpbmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZ2V0UmVxdWVzdENv
bnRlbnQiLCB0aGlzLl9vbkdldFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOwogICAgIHRoaXMu
X3JlZ2lzdGVySGFuZGxlcigiZ2V0UmVzb3VyY2VDb250ZW50IiwgdGhpcy5fb25HZXRSZXNvdXJj
ZUNvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJsb2ciLCB0
aGlzLl9vbkxvZy5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInJlbG9h
ZCIsIHRoaXMuX29uUmVsb2FkLmJpbmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxl
cigic2V0UmVzb3VyY2VDb250ZW50IiwgdGhpcy5fb25TZXRSZXNvdXJjZUNvbnRlbnQuYmluZCh0
aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJzZXRTaWRlYmFySGVpZ2h0IiwgdGhp
cy5fb25TZXRTaWRlYmFySGVpZ2h0LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFu
ZGxlcigic2V0U2lkZWJhckNvbnRlbnQiLCB0aGlzLl9vblNldFNpZGViYXJDb250ZW50LmJpbmQo
dGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0U2lkZWJhclBhZ2UiLCB0aGlz
Ll9vblNldFNpZGViYXJQYWdlLmJpbmQodGhpcykpOwpAQCAtMTE3LDkgKzEyMCwxNSBAQCBXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRo
aXMuX2NsaWVudE9iamVjdHNbYXVkaXRSdW4uaWRdOwogICAgIH0sCiAKLSAgICBub3RpZnlSZXNv
dXJjZUNvbnRlbnRFZGl0ZWQ6IGZ1bmN0aW9uKHVybCwgY29udGVudCkKKyAgICBfbm90aWZ5UmVz
b3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9wb3N0Tm90
aWZpY2F0aW9uKCJyZXNvdXJjZS1jb250ZW50LWVkaXRlZCIsIHVybCwgY29udGVudCk7CisgICAg
ICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHRoaXMuX3Bvc3ROb3RpZmlj
YXRpb24oInJlc291cmNlLWFkZGVkIiwgdGhpcy5fbWFrZVJlc291cmNlKHJlc291cmNlKSk7Cisg
ICAgfSwKKworICAgIG5vdGlmeVJlc291cmNlQ29udGVudENvbW1pdHRlZDogZnVuY3Rpb24ocmVz
b3VyY2UsIGNvbnRlbnQpCisgICAgeworICAgICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKCJy
ZXNvdXJjZS1jb250ZW50LWNvbW1pdHRlZCIsIHRoaXMuX21ha2VSZXNvdXJjZShyZXNvdXJjZSks
IGNvbnRlbnQpOwogICAgIH0sCiAKICAgICBfbm90aWZ5UmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlv
bihldmVudCkKQEAgLTMxMCw3ICszMTksMjYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBoYXJMb2c7CiAgICAgfSwKIAotICAgIF9v
bkdldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9ydCkKKyAgICBfbWFrZVJl
c291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICB1cmw6IHJlc291cmNlLnVybCwKKyAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLnRvU3RyaW5nKHJlc291cmNlLnR5cGUpCisgICAgICAgIH07CisgICAg
fSwKKworICAgIF9vbkdldFBhZ2VSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciByZXNvdXJjZXMgPSBbXTsKKyAgICAgICAgZnVuY3Rpb24gcHVzaFJlc291cmNlRGF0YShy
ZXNvdXJjZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzb3VyY2VzLnB1c2godGhpcy5fbWFr
ZVJlc291cmNlKHJlc291cmNlKSk7CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNlcyhwdXNoUmVzb3VyY2VEYXRhLmJpbmQodGhp
cykpOworICAgICAgICByZXR1cm4gcmVzb3VyY2VzOworICAgIH0sCisKKyAgICBfZ2V0UmVzb3Vy
Y2VDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSwgbWVzc2FnZSwgcG9ydCkKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIG9uQ29udGVudEF2YWlsYWJsZShjb250ZW50LCBlbmNvZGVkKQogICAgICAg
ICB7CkBAIC0zMjAsMTAgKzM0OCwzNiBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaENh
bGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBwb3J0LCByZXNwb25zZSk7CiAgICAgICAgIH0KKyAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQob25Db250ZW50QXZhaWxhYmxlLmJpbmQodGhp
cykpOworICAgIH0sCisKKyAgICBfb25HZXRSZXF1ZXN0Q29udGVudDogZnVuY3Rpb24obWVzc2Fn
ZSwgcG9ydCkKKyAgICB7CiAgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdEJ5SWQo
bWVzc2FnZS5pZCk7CiAgICAgICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNzYWdlLmlkKTsKLSAgICAgICAgcmVxdWVzdC5yZXF1
ZXN0Q29udGVudChvbkNvbnRlbnRBdmFpbGFibGUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMu
X2dldFJlc291cmNlQ29udGVudChyZXF1ZXN0LCBtZXNzYWdlLCBwb3J0KTsKKyAgICB9LAorCisg
ICAgX29uR2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihtZXNzYWdlLCBwb3J0KQorICAgIHsK
KyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJl
c291cmNlRm9yVVJMKG1lc3NhZ2UudXJsKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNzYWdlLnVybCk7CisgICAg
ICAgIHRoaXMuX2dldFJlc291cmNlQ29udGVudChyZXNvdXJjZSwgbWVzc2FnZSwgcG9ydCk7Cisg
ICAgfSwKKworICAgIF9vblNldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9y
dCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrV3JhcHBlcihlcnJvcikKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gZXJyb3IgPyB0aGlzLl9zdGF0dXMuRV9G
QUlMRUQoZXJyb3IpIDogdGhpcy5fc3RhdHVzLk9LKCk7CisgICAgICAgICAgICB0aGlzLl9kaXNw
YXRjaENhbGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBwb3J0LCByZXNwb25zZSk7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LnJlc291cmNlRm9yVVJMKG1lc3NhZ2UudXJsKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNzYWdlLnVybCk7Cisg
ICAgICAgIHJlc291cmNlLnNldENvbnRlbnQobWVzc2FnZS5jb250ZW50LCBtZXNzYWdlLmNvbW1p
dCwgY2FsbGJhY2tXcmFwcGVyLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICBfcmVxdWVzdElk
OiBmdW5jdGlvbihyZXF1ZXN0KQpAQCAtMzc1LDYgKzQyOSw3IEBAIFdlYkluc3BlY3Rvci5FeHRl
bnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGUgbmV0d29ya01hbmFnZXIg
aXMgbm9ybWFsbHkgY3JlYXRlZCBhZnRlciB0aGUgRXh0ZW5zaW9uU2VydmVyIGlzIGNvbnN0cnVj
dGVkLCBidXQgYmVmb3JlIGluaXRFeHRlbnNpb25zKCkgaXMgY2FsbGVkLgogICAgICAgICBXZWJJ
bnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZUZpbmlzaGVkLCB0aGlzLl9ub3RpZnlSZXF1
ZXN0RmluaXNoZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRU
eXBlcy5JbnNwZWN0ZWRVUkxDaGFuZ2VkLCB0aGlzLl9pbnNwZWN0ZWRVUkxDaGFuZ2VkLCB0aGlz
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRl
ZCwgdGhpcy5fbm90aWZ5UmVzb3VyY2VBZGRlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLkV2ZW50VHlwZXMuVGltZWxpbmVFdmVudFJlY29yZGVkLCB0aGlzLl9hZGRSZWNvcmRU
b1RpbWVsaW5lLCB0aGlzKTsKIAogICAgICAgICBJbnNwZWN0b3JFeHRlbnNpb25SZWdpc3RyeS5n
ZXRFeHRlbnNpb25zQXN5bmMoKTsKQEAgLTUwMSw2ICs1NTYsNyBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLl9zdGF0dXNlcyA9CiAgICAgRV9CQURBUkdUWVBFOiAiSW52YWxpZCB0eXBl
IGZvciBhcmd1bWVudCAlczogZ290ICVzLCBleHBlY3RlZCAlcyIsCiAgICAgRV9OT1RGT1VORDog
Ik9iamVjdCBub3QgZm91bmQ6ICVzIiwKICAgICBFX05PVFNVUFBPUlRFRDogIk9iamVjdCBkb2Vz
IG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBvcGVyYXRpb246ICVzIiwKKyAgICBFX0ZBSUxFRDogIk9w
ZXJhdGlvbiBmYWlsZWQ6ICVzIgogfQogCiBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU3RhdHVzID0g
ZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2UuanMKaW5kZXggOWRmNmEzNS4uMjIyMTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC04MzMsNyArODMzLDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXJlc3RvcmluZ0hpc3Rv
cnkpCiAgICAgICAgICAgICB0aGlzLl9wZXJzaXN0UmV2aXNpb24oKTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlSZXNvdXJjZUNvbnRlbnRFZGl0ZWQodGhpcy51
cmwsIG5ld0NvbnRlbnQpOworICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5v
dGlmeVJlc291cmNlQ29udGVudENvbW1pdHRlZCh0aGlzLCBuZXdDb250ZW50KTsKICAgICB9LAog
CiAgICAgX3BlcnNpc3RSZXZpc2lvbjogZnVuY3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104838</attachid>
            <date>2011-08-23 06:47:46 -0700</date>
            <delta_ts>2011-08-23 07:01:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extensions-resources.diff</filename>
            <type>text/plain</type>
            <size>26551</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjhkNTRjLi44YzY4YzA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgt
MjMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHByb3ZpZGUgYWNjZXNzIHRvIHBhZ2UgcmVzb3Vy
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LXJlc291cmNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9y
ZXNvdXJjZXMvQWhlbS50dGY6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3Vy
Y2VzL3Rlc3Qtc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAgICAgKF9fdGVzdF9mdW5jdGlvbik6CisK
IDIwMTEtMDgtMjMgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBSZW1vdmUgYSBub24tZXhpc3RlbnQgdGVz
dCBmcm9tIHRoZSBza2lwcGVkIGxpc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9uLW1haW4uanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9uLW1haW4uanMKaW5kZXggZTI4
YWI4OS4uZDUyN2MyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24tbWFpbi5qcwpAQCAtMSwzICsxLDEwIEBA
CitmdW5jdGlvbiB0cmltVVJMKHVybCkKK3sKKyAgICBpZiAoL15kYXRhOi8udGVzdCh1cmwpKQor
ICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoLzsuKiQvLCAiLi4uIik7CisgICAgcmV0dXJuIHVy
bC5yZXBsYWNlKC8uKlwvLywgIi4uLi8iKTsKK30KKwogZnVuY3Rpb24gZHVtcE9iamVjdChvYmpl
Y3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCiB7CiAg
ICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwpAQCAtNiw5ICsxMywxMCBAQCBmdW5jdGlvbiBkdW1w
T2JqZWN0KG9iamVjdCwgbm9uZGV0ZXJtaW5pc3RpY1Byb3BzLCBwcmVmaXgsIGZpcnN0TGluZVBy
ZWZpeCkKICAgICBmb3IgKHZhciBwcm9wIGluIG9iamVjdCkgewogICAgICAgICB2YXIgcHJlZml4
V2l0aE5hbWUgPSBwcmVmaXggKyAiICAgICIgKyBwcm9wICsgIiA6ICI7CiAgICAgICAgIHZhciBw
cm9wVmFsdWUgPSBvYmplY3RbcHJvcF07Ci0gICAgICAgIGlmIChub25kZXRlcm1pbmlzdGljUHJv
cHMgJiYgcHJvcCBpbiBub25kZXRlcm1pbmlzdGljUHJvcHMpCi0gICAgICAgICAgICBvdXRwdXQo
cHJlZml4V2l0aE5hbWUgKyAiPCIgKyB0eXBlb2YgcHJvcFZhbHVlICsgIj4iKTsKLSAgICAgICAg
ZWxzZSBpZiAocHJvcFZhbHVlID09PSBudWxsKQorICAgICAgICBpZiAobm9uZGV0ZXJtaW5pc3Rp
Y1Byb3BzICYmIHByb3AgaW4gbm9uZGV0ZXJtaW5pc3RpY1Byb3BzKSB7CisgICAgICAgICAgICB2
YXIgdmFsdWUgPSBub25kZXRlcm1pbmlzdGljUHJvcHNbcHJvcF0gPT09ICJ1cmwiID8gdHJpbVVS
TChwcm9wVmFsdWUpIDogIjwiICsgdHlwZW9mIHByb3BWYWx1ZSArICI+IjsKKyAgICAgICAgICAg
IG91dHB1dChwcmVmaXhXaXRoTmFtZSArIHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9w
VmFsdWUgPT09IG51bGwpCiAgICAgICAgICAgICBvdXRwdXQocHJlZml4V2l0aE5hbWUgKyAibnVs
bCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAib2JqZWN0IikKICAg
ICAgICAgICAgIGR1bXBPYmplY3QocHJvcFZhbHVlLCBub25kZXRlcm1pbmlzdGljUHJvcHMsIHBy
ZWZpeCArICIgICAgIiwgcHJlZml4V2l0aE5hbWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0Cmlu
ZGV4IDM1ZDVlYmQuLmI0NDRlMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKQEAgLTgsOCAr
OCwxNyBAQCBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QVBJCiAgICAgICAgIGFkZENhdGVn
b3J5IDogPGZ1bmN0aW9uPgogICAgIH0KICAgICBpbnNwZWN0ZWRXaW5kb3cgOiB7CisgICAgICAg
IG9uUmVzb3VyY2VBZGRlZCA6IHsKKyAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9u
PgorICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAg
ICAgICAgb25SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQgOiB7CisgICAgICAgICAgICBhZGRMaXN0
ZW5lciA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9u
PgorICAgICAgICB9CiAgICAgICAgIHJlbG9hZCA6IDxmdW5jdGlvbj4KICAgICAgICAgZXZhbCA6
IDxmdW5jdGlvbj4KKyAgICAgICAgZ2V0UmVzb3VyY2VzIDogPGZ1bmN0aW9uPgogICAgIH0KICAg
ICBwYW5lbHMgOiB7CiAgICAgICAgIGVsZW1lbnRzIDogewpAQCAtNDIsMTAgKzUxLDYgQEAgUlVO
TklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAgICAgICAgICAgYWRkTGlzdGVuZXIgOiA8
ZnVuY3Rpb24+CiAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KICAgICAg
ICAgfQotICAgICAgICBvbkNvbnRlbnRFZGl0ZWQgOiB7Ci0gICAgICAgICAgICBhZGRMaXN0ZW5l
ciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgot
ICAgICAgICB9CiAgICAgICAgIGdldEhBUiA6IDxmdW5jdGlvbj4KICAgICAgICAgYWRkUmVxdWVz
dEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpAQCAtNjIsMTAgKzY3LDYgQEAgUlVOTklORyBU
RVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAgICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rp
b24+CiAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgfQot
ICAgICAgICBvbkNvbnRlbnRFZGl0ZWQgOiB7Ci0gICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxm
dW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAg
ICB9CiAgICAgICAgIGdldEhBUiA6IDxmdW5jdGlvbj4KICAgICAgICAgYWRkUmVxdWVzdEhlYWRl
cnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay1leHBlY3RlZC50eHQKaW5k
ZXggNjVjMWY1OS4uZWI5ZjhhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLW5ldHdvcmstZXhwZWN0ZWQudHh0CkBA
IC0yOCw3ICsyOCw1IEBAIFJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RHZXRSZXNvdXJjZUNv
bnRlbnRFbmNvZGVkCiB9CiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0UmVxdWVzdE5vdGlm
aWNhdGlvbgogUmVxdWVzdCBmaW5pc2hlZDogLi4uL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVu
c2lvbnMtbmV0d29yay5odG1sCi1SVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0UmVzb3VyY2VD
b250ZW50RWRpdGVkCi1jb250ZW50IGZvciByZXNvdXJjZSAuLi4vZXh0ZW5zaW9ucy9yZXNvdXJj
ZXMvYXVkaXRzLXN0eWxlMS5jc3MgZWRpdGVkOiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmxh
Y2s7IH0KIEFsbCB0ZXN0cyBkb25lLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLW5ldHdvcmsuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCmluZGV4IGI2YjEzZjAuLmVm
MGMyNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVu
c2lvbnMtbmV0d29yay5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
L2V4dGVuc2lvbnMtbmV0d29yay5odG1sCkBAIC03NiwzMCArNzYsNiBAQCBmdW5jdGlvbiBleHRl
bnNpb25fdGVzdEdldFJlc291cmNlQ29udGVudEVuY29kZWQobmV4dFRlc3QpCiAgICAgfSk7CiB9
CiAKLWZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0UmVzb3VyY2VDb250ZW50RWRpdGVkKG5leHRUZXN0
KQotewotICAgIGZ1bmN0aW9uIG9uQ29udGVudEVkaXRlZCh1cmwsIGNvbnRlbnQpCi0gICAgewot
ICAgICAgICB3ZWJJbnNwZWN0b3IubmV0d29yay5vbkNvbnRlbnRFZGl0ZWQucmVtb3ZlTGlzdGVu
ZXIob25Db250ZW50RWRpdGVkKTsKLSAgICAgICAgdmFyIHVybFRhaWwgPSB1cmwucmVwbGFjZSgv
LiooKFwvW14vXSopezN9JCkvLCIuLi4kMSIpOwotICAgICAgICBvdXRwdXQoImNvbnRlbnQgZm9y
IHJlc291cmNlICIgKyB1cmxUYWlsICsgIiBlZGl0ZWQ6ICIgKyBjb250ZW50KTsKLSAgICAgICAg
bmV4dFRlc3QoKTsKLSAgICB9ICAgCi0gICAgd2ViSW5zcGVjdG9yLm5ldHdvcmsub25Db250ZW50
RWRpdGVkLmFkZExpc3RlbmVyKG9uQ29udGVudEVkaXRlZCk7Ci0KLSAgICBmdW5jdGlvbiBmaW5k
QW5kRWRpdFJlc291cmNlKCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZXMgPSBXZWJJbnNw
ZWN0b3IubmV0d29ya0xvZy5yZXNvdXJjZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoL2F1ZGl0cy1zdHlsZTEu
Y3NzJC8udGVzdChyZXNvdXJjZXNbaV0udXJsKSkgewotICAgICAgICAgICAgICAgIHJlc291cmNl
c1tpXS5zZXRDb250ZW50KCJib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IH0iLCB0cnVl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSAgICBldmFsdWF0ZU9uRnJvbnRlbmQoIigiICsgZmluZEFuZEVkaXRSZXNvdXJjZSArICIp
KCkiKTsKLX0KLQogdmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5y
ZWxvYWRQYWdlKEluc3BlY3RvclRlc3QucnVuRXh0ZW5zaW9uVGVzdHMpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1y
ZXNvdXJjZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJiYTc1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLXJlc291cmNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3NCBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBhcHBsaWNhdGlvbgorVGVzdHMgcmVzb3VyY2UtcmVsYXRlZCBtZXRob2RzIG9mIFdlYklu
c3BlY3RvciBleHRlbnNpb24gQVBJCisKKworU3RhcnRlZCBleHRlbnNpb24uCitSdW5uaW5nIHRl
c3RzLi4uCitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0QWxsUmVzb3VyY2VzCitwYWdl
IHJlc291cmNlczoKK3sKKyAgICAwIDogeworICAgICAgICAwIDogeworICAgICAgICAgICAgdXJs
IDogLi4uL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwKKyAgICAgICAgICAgIHR5cGUgOiAiZG9j
dW1lbnQiCisgICAgICAgICAgICBnZXRDb250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICAgICAg
c2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAgfQorICAgICAgICAxIDogeworICAgICAg
ICAgICAgdXJsIDogLi4uL2V4dGVuc2lvbnMtdGVzdC5qcworICAgICAgICAgICAgdHlwZSA6ICJz
Y3JpcHQiCisgICAgICAgICAgICBnZXRDb250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICAgICAg
c2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAgfQorICAgICAgICAyIDogeworICAgICAg
ICAgICAgdXJsIDogLi4uL3Rlc3Qtc2NyaXB0LmpzCisgICAgICAgICAgICB0eXBlIDogInNjcmlw
dCIKKyAgICAgICAgICAgIGdldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgICAgICBzZXRD
b250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICB9CisgICAgICAgIDMgOiB7CisgICAgICAgICAg
ICB1cmwgOiAuLi4vaW5zcGVjdG9yLXRlc3QuanMKKyAgICAgICAgICAgIHR5cGUgOiAic2NyaXB0
IgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHNldENv
bnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICAgICAgNCA6IHsKKyAgICAgICAgICAg
IHVybCA6IC4uLi9hdWRpdHMtc3R5bGUxLmNzcworICAgICAgICAgICAgdHlwZSA6ICJzdHlsZXNo
ZWV0IgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHNl
dENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICAgICAgNSA6IHsKKyAgICAgICAg
ICAgIHVybCA6IC4uLi9hYmUucG5nCisgICAgICAgICAgICB0eXBlIDogImltYWdlIgorICAgICAg
ICAgICAgZ2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8
ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0R2V0UmVzb3VyY2VDb250ZW50Cit7CisgICAgMCA6ICJmdW5jdGlvbiBfX3Rlc3RfZnVuY3Rp
b24oKQoreworfQorCisiCisgICAgMSA6ICIiCit9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0T25Db250ZW50Q29tbWl0dGVkCitsb2c6IEV4dGVuc2lvbiBzZXJ2ZXIgZXJyb3I6IE9wZXJh
dGlvbiBmYWlsZWQ6IFJlc291cmNlIGlzIG5vdCBlZGl0YWJsZQorY29udGVudCBjb21taXR0ZWQg
Zm9yIHJlc291cmNlIGZpbGU6Ly8vdXNyL2xvY2FsL2dvb2dsZS9ob21lL2Nhc2VxL3NyYy9jaHJv
bWl1bS9zcmMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNp
b25zL3Jlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyAodHlwZTogc3R5bGVzaGVldCksIG5ldyBj
b250ZW50OiBkaXYudGVzdCB7IHdpZHRoOiAyMjBweDsgaGVpZ2h0OiA0MnB4OyB9CitSVU5OSU5H
IFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25SZXNvdXJjZUFkZGVkCityZXNvdXJjZSBhZGRlZDoKK3sK
KyAgICAwIDogeworICAgICAgICB1cmwgOiBkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQuLi4K
KyAgICAgICAgdHlwZSA6ICJzY3JpcHQiCisgICAgICAgIGdldENvbnRlbnQgOiA8ZnVuY3Rpb24+
CisgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgfQorfQorUlVOTklORyBURVNU
OiBleHRlbnNpb25fdGVzdFNldFJlc291cmNlQ29udGVudAorZGl2LnRlc3Qgd2lkdGggYWZ0ZXIg
c3R5bGVzaGVldCBlZGl0ZWQgKHNob3VsZCBiZSAxMjYpOiAxMjYKK0FsbCB0ZXN0cyBkb25lLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LXJlc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5z
aW9ucy1yZXNvdXJjZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
ZDJhYmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApAQCAtMCwwICsxLDExNSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL2F1ZGl0cy1zdHlsZTEuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvdGVzdC1zY3JpcHQuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9u
IGV4dGVuc2lvbl90ZXN0R2V0QWxsUmVzb3VyY2VzKG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKHJlc291cmNlcykKKyAgICB7CisgICAgICAgIG91dHB1dCgicGFnZSByZXNvdXJj
ZXM6Iik7CisgICAgICAgIGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
dW1lbnRzKSwgeyB1cmw6ICJ1cmwiIH0pOworICAgIH0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVj
dGVkV2luZG93LmdldFJlc291cmNlcyhjYWxsYmFja0FuZE5leHRUZXN0KGNhbGxiYWNrLCBuZXh0
VGVzdCkpOworfQorCitmdW5jdGlvbiBleHRlbnNpb25fcnVuV2l0aFJlc291cmNlKHJlZ2V4cCwg
Y2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gb25SZXNvdXJjZXMocmVzb3VyY2VzKQorICAgIHsK
KyAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICBpZiAocmVnZXhwLnRlc3QocmVzb3VyY2VzW2ldLnVybCkpIHsKKyAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc291cmNlc1tpXSkKKyAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgfQorICAgICAgIH0KKyAgICAgICB0aHJvdyAiRmFpbGVkIHRvIGZpbmQgYSByZXNvdXJj
ZTogIiArIHJlZ2V4cC50b1N0cmluZygpOworICAgIH0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVj
dGVkV2luZG93LmdldFJlc291cmNlcyhvblJlc291cmNlcyk7Cit9CisKK2Z1bmN0aW9uIGV4dGVu
c2lvbl90ZXN0R2V0UmVzb3VyY2VDb250ZW50KG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9u
Q29udGVudCgpCisgICAgeworICAgICAgICBkdW1wT2JqZWN0KEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGFyZ3VtZW50cykpOworICAgIH0KKyAgICBleHRlbnNpb25fcnVuV2l0aFJlc291cmNl
KC90ZXN0LXNjcmlwdFwuanMkLywgZnVuY3Rpb24ocmVzb3VyY2UpIHsKKyAgICAgICAgcmVzb3Vy
Y2UuZ2V0Q29udGVudChjYWxsYmFja0FuZE5leHRUZXN0KG9uQ29udGVudCwgbmV4dFRlc3QpKTsK
KyAgICB9KTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RTZXRSZXNvdXJjZUNvbnRlbnQo
bmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgd2Vi
SW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGVzdC1kaXYnKS5jbGllbnRXaWR0aCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAg
b3V0cHV0KCJkaXYudGVzdCB3aWR0aCBhZnRlciBzdHlsZXNoZWV0IGVkaXRlZCAoc2hvdWxkIGJl
IDEyNik6ICIgKyByZXN1bHQpOworICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgfSk7
CisgICAgfQorICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UoL2F1ZGl0cy1zdHlsZTFcLmNz
cyQvLCBmdW5jdGlvbihyZXNvdXJjZSkgeworICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KCJk
aXYudGVzdCB7IHdpZHRoOiAxMjZweDsgaGVpZ2h0OiA0MnB4OyB9IiwgZmFsc2UsIGNhbGxiYWNr
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RPbkNvbnRlbnRDb21taXR0
ZWQobmV4dFRlc3QpCit7CisgICAgdmFyIGV4cGVjdGVkX2NvbnRlbnQgPSAiZGl2LnRlc3QgeyB3
aWR0aDogMjIwcHg7IGhlaWdodDogNDJweDsgfSI7CisKKyAgICBmdW5jdGlvbiBvbkNvbnRlbnRD
b21taXR0ZWQocmVzb3VyY2UsIGNvbnRlbnQpCisgICAgeworICAgICAgICBvdXRwdXQoImNvbnRl
bnQgY29tbWl0dGVkIGZvciByZXNvdXJjZSAiICsgcmVzb3VyY2UudXJsICsgIiAodHlwZTogIiAr
IHJlc291cmNlLnR5cGUgKyAiKSwgbmV3IGNvbnRlbnQ6ICIgKyBjb250ZW50KTsKKyAgICAgICAg
aWYgKCEvYXVkaXRzLXN0eWxlMVwuY3NzJC8udGVzdChyZXNvdXJjZS51cmwpIHx8IGNvbnRlbnQg
IT09IGV4cGVjdGVkX2NvbnRlbnQpCisgICAgICAgICAgICBvdXRwdXQoIkZBSUw6IHN0cmF5IG9u
Q29udGVudEVkaXRlZCBldmVudCIpOworICAgICAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2lu
ZG93Lm9uUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLnJlbW92ZUxpc3RlbmVyKG9uQ29udGVudENv
bW1pdHRlZCk7CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorICAgIHdlYkluc3BlY3Rvci5p
bnNwZWN0ZWRXaW5kb3cub25SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQuYWRkTGlzdGVuZXIob25D
b250ZW50Q29tbWl0dGVkKTsKKyAgICBleHRlbnNpb25fcnVuV2l0aFJlc291cmNlKC9hdWRpdHMt
c3R5bGUxXC5jc3MkLywgZnVuY3Rpb24ocmVzb3VyY2UpIHsKKyAgICAgICAgcmVzb3VyY2Uuc2V0
Q29udGVudCgiZGl2LnRlc3QgeyB3aWR0aDogMTQwcHg7IGhlaWdodDogNDJweDsgfSIsIGZhbHNl
KTsKKyAgICB9KTsKKyAgICAvLyBUaGUgbmV4dCBzdGVwIGlzIGdvaW5nIHRvIHByb2R1Y2UgYSBj
b25zb2xlIG1lc3NhZ2UgdGhhdCB3aWxsIGJlIGxvZ2dlZCwgc28gc3luY2hyb25pemUgdGhlIG91
dHB1dCBub3cuCisgICAgZXZhbHVhdGVPbkZyb250ZW5kKCJJbnNwZWN0b3JUZXN0LnJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXMocmVwbHkpIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGV4dGVuc2lv
bl9ydW5XaXRoUmVzb3VyY2UoL3Rlc3Qtc2NyaXB0XC5qcyQvLCBmdW5jdGlvbihyZXNvdXJjZSkg
eworICAgICAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudCgiZnVuY3Rpb24gZnVuY3Rpb24xKCl7
fSIsIHRydWUpOworICAgICAgICB9KTsKKyAgICAgICAgZXh0ZW5zaW9uX3J1bldpdGhSZXNvdXJj
ZSgvYXVkaXRzLXN0eWxlMVwuY3NzJC8sIGZ1bmN0aW9uKHJlc291cmNlKSB7CisgICAgICAgICAg
ICByZXNvdXJjZS5zZXRDb250ZW50KGV4cGVjdGVkX2NvbnRlbnQsIHRydWUpOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RPblJlc291cmNlQWRkZWQo
bmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25SZXNvdXJjZUFkZGVkKHJlc291cmNlKQorICAg
IHsKKyAgICAgICAgb3V0cHV0KCJyZXNvdXJjZSBhZGRlZDoiKTsKKyAgICAgICAgZHVtcE9iamVj
dChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLCB7IHVybDogInVybCIgfSk7
CisgICAgICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cub25SZXNvdXJjZUFkZGVkLnJl
bW92ZUxpc3RlbmVyKG9uUmVzb3VyY2VBZGRlZCk7CisKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAg
ICB9CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5vblJlc291cmNlQWRkZWQuYWRk
TGlzdGVuZXIob25SZXNvdXJjZUFkZGVkKTsKKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2lu
ZG93LmV2YWwoImFkZFJlc291cmNlKCkiKTsKK30KKworZnVuY3Rpb24gYWRkUmVzb3VyY2UoKQor
eworICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAg
ICBzY3JpcHQuc3JjID0gImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdDtmdW5jdGlvbiB0ZXN0
X2Z1bmMoKXt9IjsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMg
cmVzb3VyY2UtcmVsYXRlZCBtZXRob2RzIG9mIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJPC9w
PgorPGltZyBzcmM9InJlc291cmNlcy9hYmUucG5nIj4KKzxkaXYgaWQ9InRlc3QtZGl2IiBjbGFz
cz0idGVzdCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvQWhlbS50dGYgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvQWhlbS50dGYKb2xkIG1vZGUgMTAwNzU1Cm5l
dyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVu
c2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhkOTlkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvdGVzdC1zY3JpcHQuanMKQEAgLTAsMCArMSw0IEBACitm
dW5jdGlvbiBfX3Rlc3RfZnVuY3Rpb24oKQoreworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgzYjEyMi4u
ZjdhMzFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTA4LTIzICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
W0V4dGVuc2lvbnMgQVBJXSBwcm92aWRlIGFjY2VzcyB0byBwYWdlIHJlc291cmNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY3NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmpl
Y3RlZEV4dGVuc2lvbkFQSS5FdmVudFNpbmtJbXBsLnByb3RvdHlwZS5hZGRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLlJlcXVlc3RJbXBsLnByb3RvdHlwZS5nZXRD
b250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5JbnNw
ZWN0ZWRXaW5kb3cucmVzb3VyY2VEaXNwYXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5q
ZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5pbmplY3RlZEV4dGVuc2lvbkFQSS5JbnNwZWN0ZWRXaW5kb3cucHJvdG90eXBlLmdldFJlc291
cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVj
dGVkV2luZG93LnByb3RvdHlwZS5nZXRSZXNvdXJjZXMuY2FsbGJhY2tXcmFwcGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5SZXNvdXJjZUltcGwucHJvdG90
eXBlLmdldCB1cmwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJ
LlJlc291cmNlSW1wbC5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmluamVjdGVkRXh0ZW5zaW9uQVBJLlJlc291cmNlSW1wbC5wcm90b3R5cGUuZ2V0Q29udGVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVzb3VyY2VJbXBs
LnByb3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvblNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlm
eVJlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUubm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9tYWtlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0UGFnZVJlc291
cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5f
Z2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlLl9vbkdldFJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFJlc291cmNlQ29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25TZXRSZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUuaW5pdEV4dGVuc2lvbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmFkZFJldmlz
aW9uKToKKwogMjAxMS0wOC0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkzNTc5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcwppbmRl
eCBmMTllYjQ5Li4yMmYyMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcwpAQCAtNDgsNyArNDgsNyBAQCBFdmVudFNpbmtJbXBs
LnByb3RvdHlwZSA9IHsKICAgICBhZGRMaXN0ZW5lcjogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAg
ewogICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9ICJmdW5jdGlvbiIpCi0gICAgICAgICAg
ICB0aHJvdyBuZXcgImFkZExpc3RlbmVyOiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiI7Cisg
ICAgICAgICAgICB0aHJvdyAiYWRkTGlzdGVuZXI6IGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9u
IjsKICAgICAgICAgaWYgKHRoaXMuX2xpc3RlbmVycy5sZW5ndGggPT09IDApCiAgICAgICAgICAg
ICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAic3Vic2NyaWJlIiwgdHlw
ZTogdGhpcy5fdHlwZSB9KTsKICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goY2FsbGJhY2sp
OwpAQCAtMTE1LDcgKzExNSw2IEBAIGZ1bmN0aW9uIE5ldHdvcmsoKQogICAgIHRoaXMub25SZXF1
ZXN0RmluaXNoZWQgPSBuZXcgRXZlbnRTaW5rKCJuZXR3b3JrLXJlcXVlc3QtZmluaXNoZWQiLCBy
ZXF1ZXN0RGlzcGF0Y2gpOwogICAgIGRlZmluZURlcHJlY2F0ZWRQcm9wZXJ0eSh0aGlzLCAibmV0
d29yayIsICJvbkZpbmlzaGVkIiwgIm9uUmVxdWVzdEZpbmlzaGVkIik7CiAgICAgdGhpcy5vbk5h
dmlnYXRlZCA9IG5ldyBFdmVudFNpbmsoImluc3BlY3RlZFVSTENoYW5nZWQiKTsKLSAgICB0aGlz
Lm9uQ29udGVudEVkaXRlZCA9IG5ldyBFdmVudFNpbmsoInJlc291cmNlLWNvbnRlbnQtZWRpdGVk
Iik7CiB9CiAKIE5ldHdvcmsucHJvdG90eXBlID0gewpAQCAtMTUxLDcgKzE1MCw3IEBAIFJlcXVl
c3RJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgY2FsbGJhY2socmVz
cG9uc2UuY29udGVudCwgcmVzcG9uc2UuZW5jb2RpbmcpOwogICAgICAgICB9Ci0gICAgICAgIGV4
dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJnZXRSZXNvdXJjZUNvbnRlbnQi
LCBpZDogdGhpcy5faWQgfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tXcmFwcGVyKTsKKyAgICAgICAg
ZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogImdldFJlcXVlc3RDb250ZW50
IiwgaWQ6IHRoaXMuX2lkIH0sIGNhbGxiYWNrICYmIGNhbGxiYWNrV3JhcHBlcik7CiAgICAgfQog
fTsKIApAQCAtMzU4LDYgKzM1NywxNiBAQCBBdWRpdFJlc3VsdE5vZGUucHJvdG90eXBlID0gewog
CiBmdW5jdGlvbiBJbnNwZWN0ZWRXaW5kb3coKQogeworICAgIGZ1bmN0aW9uIHJlc291cmNlRGlz
cGF0Y2gobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2ZpcmUobmV3IFJlc291cmNlKG1l
c3NhZ2UuYXJndW1lbnRzWzBdKSk7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlc291cmNlQ29udGVu
dERpc3BhdGNoKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlzLl9maXJlKG5ldyBSZXNvdXJj
ZShtZXNzYWdlLmFyZ3VtZW50c1swXSksIG1lc3NhZ2UuYXJndW1lbnRzWzFdKTsKKyAgICB9Cisg
ICAgdGhpcy5vblJlc291cmNlQWRkZWQgPSBuZXcgRXZlbnRTaW5rKCJyZXNvdXJjZS1hZGRlZCIs
IHJlc291cmNlRGlzcGF0Y2gpOworICAgIHRoaXMub25SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQg
PSBuZXcgRXZlbnRTaW5rKCJyZXNvdXJjZS1jb250ZW50LWNvbW1pdHRlZCIsIHJlc291cmNlQ29u
dGVudERpc3BhdGNoKTsKIH0KIAogSW5zcGVjdGVkV2luZG93LnByb3RvdHlwZSA9IHsKQEAgLTM3
OCwxNyArMzg3LDUzIEBAIEluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAiZXZhbHVhdGVPbklu
c3BlY3RlZFBhZ2UiLCBleHByZXNzaW9uOiBleHByZXNzaW9uIH0sIGNhbGxiYWNrICYmIGNhbGxi
YWNrV3JhcHBlcik7CiAgICAgfSwKIAotICAgIGZ1bmN0aW9uIGdldFJlc291cmNlcyhjYWxsYmFj
aykKKyAgICBnZXRSZXNvdXJjZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gd3JhcFJlc291cmNlCisgICAgICAgIGZ1bmN0aW9uIHdyYXBSZXNvdXJjZShyZXNv
dXJjZURhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVzb3VyY2UocmVz
b3VyY2VEYXRhKTsKKyAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBjYWxsYmFja1dyYXBwZXIo
cmVzb3VyY2VzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXNvdXJjZXMuZm9y
RWFjaCh3cmFwUmVzb3VyY2UpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc291cmNlcy5tYXAo
d3JhcFJlc291cmNlKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGV4dGVuc2lvblNlcnZl
ci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJnZXRQYWdlUmVzb3VyY2VzIiB9LCBjYWxsYmFjayAm
JiBjYWxsYmFja1dyYXBwZXIpOwogICAgIH0KIH0KIAorZnVuY3Rpb24gUmVzb3VyY2VJbXBsKHJl
c291cmNlRGF0YSkKK3sKKyAgICB0aGlzLl91cmwgPSByZXNvdXJjZURhdGEudXJsCisgICAgdGhp
cy5fdHlwZSA9IHJlc291cmNlRGF0YS50eXBlOworfQorCitSZXNvdXJjZUltcGwucHJvdG90eXBl
ID0geworICAgIGdldCB1cmwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKKyAg
ICB9LAorCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7
CisgICAgfSwKKworICAgIGdldENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKHJlc3BvbnNlKQorICAgICAgICB7CisgICAg
ICAgICAgICBjYWxsYmFjayhyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5lbmNvZGluZyk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsg
Y29tbWFuZDogImdldFJlc291cmNlQ29udGVudCIsIHVybDogdGhpcy5fdXJsIH0sIGNhbGxiYWNr
ICYmIGNhbGxiYWNrV3JhcHBlcik7CisgICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9u
KGNvbnRlbnQsIGNvbW1pdCwgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gZXh0ZW5z
aW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInNldFJlc291cmNlQ29udGVudCIsIHVy
bDogdGhpcy5fdXJsLCBjb250ZW50OiBjb250ZW50LCBjb21taXQ6IGNvbW1pdCB9LCBjYWxsYmFj
ayk7CisgICAgfQorfTsKKwogZnVuY3Rpb24gVGltZWxpbmVJbXBsKCkKIHsKICAgICB0aGlzLm9u
RXZlbnRSZWNvcmRlZCA9IG5ldyBFdmVudFNpbmsoInRpbWVsaW5lLWV2ZW50LXJlY29yZGVkIik7
CkBAIC00NjUsOSArNTEwLDE4IEBAIGZ1bmN0aW9uIHBvcHVsYXRlSW50ZXJmYWNlQ2xhc3MoaW50
ZXJmYWNlLCBpbXBsZW1lbnRhdGlvbikKICAgICBmb3IgKHZhciBtZW1iZXIgaW4gaW1wbGVtZW50
YXRpb24pIHsKICAgICAgICAgaWYgKG1lbWJlci5jaGFyQXQoMCkgPT09ICJfIikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgdmFsdWUgPSBpbXBsZW1lbnRhdGlvblttZW1iZXJd
OwotICAgICAgICBpbnRlcmZhY2VbbWVtYmVyXSA9IHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9u
IiA/IGJpbmQodmFsdWUsIGltcGxlbWVudGF0aW9uKQotICAgICAgICAgICAgOiBpbnRlcmZhY2Vb
bWVtYmVyXSA9IGltcGxlbWVudGF0aW9uW21lbWJlcl07CisgICAgICAgIHZhciBkZXNjcmlwdG9y
ID0gbnVsbDsKKyAgICAgICAgLy8gVHJhdmVyc2UgcHJvdG90eXBlIGNoYWluIHVudGlsIHdlIGZp
bmQgdGhlIG93bmVyLgorICAgICAgICBmb3IgKHZhciBvd25lciA9IGltcGxlbWVudGF0aW9uOyBv
d25lciAmJiAhZGVzY3JpcHRvcjsgb3duZXIgPSBvd25lci5fX3Byb3RvX18pCisgICAgICAgICAg
ICBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgbWVt
YmVyKTsKKyAgICAgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgICAgIGludGVyZmFjZVttZW1iZXJdID0gYmluZChkZXNjcmlwdG9yLnZhbHVlLCBpbXBsZW1l
bnRhdGlvbik7CisgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PT0gImZ1
bmN0aW9uIikKKyAgICAgICAgICAgIGludGVyZmFjZS5fX2RlZmluZUdldHRlcl9fKG1lbWJlciwg
YmluZChkZXNjcmlwdG9yLmdldCwgaW1wbGVtZW50YXRpb24pKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGludGVyZmFjZSwgbWVtYmVyLCBkZXNjcmlw
dG9yKTsKICAgICB9CiB9CiAKQEAgLTUwMiw2ICs1NTYsNyBAQCB2YXIgRXh0ZW5zaW9uU2lkZWJh
clBhbmUgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsKTsK
IHZhciBQYW5lbCA9IGRlY2xhcmVJbnRlcmZhY2VDbGFzcyhQYW5lbEltcGwpOwogdmFyIFBhbmVs
V2l0aFNpZGViYXIgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUGFuZWxXaXRoU2lkZWJhckltcGwp
OwogdmFyIFJlcXVlc3QgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUmVxdWVzdEltcGwpOwordmFy
IFJlc291cmNlID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKFJlc291cmNlSW1wbCk7CiB2YXIgVGlt
ZWxpbmUgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoVGltZWxpbmVJbXBsKTsKIAogdmFyIGV4dGVu
c2lvblNlcnZlciA9IG5ldyBFeHRlbnNpb25TZXJ2ZXJDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXgg
YzIzNjE4ZS4uMDg2YjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTQ4LDkgKzQ4LDEyIEBAIFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5k
bGVyKCJjcmVhdGVTaWRlYmFyUGFuZSIsIHRoaXMuX29uQ3JlYXRlU2lkZWJhclBhbmUuYmluZCh0
aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJldmFsdWF0ZU9uSW5zcGVjdGVkUGFn
ZSIsIHRoaXMuX29uRXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UuYmluZCh0aGlzKSk7CiAgICAgdGhp
cy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRIQVIiLCB0aGlzLl9vbkdldEhBUi5iaW5kKHRoaXMpKTsK
KyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImdldFBhZ2VSZXNvdXJjZXMiLCB0aGlzLl9vbkdl
dFBhZ2VSZXNvdXJjZXMuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJn
ZXRSZXF1ZXN0Q29udGVudCIsIHRoaXMuX29uR2V0UmVxdWVzdENvbnRlbnQuYmluZCh0aGlzKSk7
CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRSZXNvdXJjZUNvbnRlbnQiLCB0aGlzLl9v
bkdldFJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRs
ZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFu
ZGxlcigicmVsb2FkIiwgdGhpcy5fb25SZWxvYWQuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fcmVn
aXN0ZXJIYW5kbGVyKCJzZXRSZXNvdXJjZUNvbnRlbnQiLCB0aGlzLl9vblNldFJlc291cmNlQ29u
dGVudC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInNldFNpZGViYXJI
ZWlnaHQiLCB0aGlzLl9vblNldFNpZGViYXJIZWlnaHQuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5f
cmVnaXN0ZXJIYW5kbGVyKCJzZXRTaWRlYmFyQ29udGVudCIsIHRoaXMuX29uU2V0U2lkZWJhckNv
bnRlbnQuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJzZXRTaWRlYmFy
UGFnZSIsIHRoaXMuX29uU2V0U2lkZWJhclBhZ2UuYmluZCh0aGlzKSk7CkBAIC0xMTcsOSArMTIw
LDE1IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAg
ICBkZWxldGUgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1bi5pZF07CiAgICAgfSwKIAotICAg
IG5vdGlmeVJlc291cmNlQ29udGVudEVkaXRlZDogZnVuY3Rpb24odXJsLCBjb250ZW50KQorICAg
IF9ub3RpZnlSZXNvdXJjZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRo
aXMuX3Bvc3ROb3RpZmljYXRpb24oInJlc291cmNlLWNvbnRlbnQtZWRpdGVkIiwgdXJsLCBjb250
ZW50KTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5f
cG9zdE5vdGlmaWNhdGlvbigicmVzb3VyY2UtYWRkZWQiLCB0aGlzLl9tYWtlUmVzb3VyY2UocmVz
b3VyY2UpKTsKKyAgICB9LAorCisgICAgbm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkOiBm
dW5jdGlvbihyZXNvdXJjZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Bvc3ROb3Rp
ZmljYXRpb24oInJlc291cmNlLWNvbnRlbnQtY29tbWl0dGVkIiwgdGhpcy5fbWFrZVJlc291cmNl
KHJlc291cmNlKSwgY29udGVudCk7CiAgICAgfSwKIAogICAgIF9ub3RpZnlSZXF1ZXN0RmluaXNo
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMzEwLDcgKzMxOSwyNiBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGhhckxvZzsKICAgICB9
LAogCi0gICAgX29uR2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihtZXNzYWdlLCBwb3J0KQor
ICAgIF9tYWtlUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIHVybDogcmVzb3VyY2UudXJsLAorICAgICAgICAgICAgdHlwZTog
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcocmVzb3VyY2UudHlwZSkKKyAgICAg
ICAgfTsKKyAgICB9LAorCisgICAgX29uR2V0UGFnZVJlc291cmNlczogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IFtdOworICAgICAgICBmdW5jdGlvbiBwdXNoUmVz
b3VyY2VEYXRhKHJlc291cmNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXNvdXJjZXMucHVz
aCh0aGlzLl9tYWtlUmVzb3VyY2UocmVzb3VyY2UpKTsKKyAgICAgICAgfQorICAgICAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKHB1c2hSZXNvdXJjZURh
dGEuYmluZCh0aGlzKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZXM7CisgICAgfSwKKworICAg
IF9nZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBtZXNzYWdlLCBwb3J0KQog
ICAgIHsKICAgICAgICAgZnVuY3Rpb24gb25Db250ZW50QXZhaWxhYmxlKGNvbnRlbnQsIGVuY29k
ZWQpCiAgICAgICAgIHsKQEAgLTMyMCwxMCArMzQ4LDM2IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIHRoaXMu
X2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIHBvcnQsIHJlc3BvbnNlKTsKICAg
ICAgICAgfQorICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudChvbkNvbnRlbnRBdmFpbGFi
bGUuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9vbkdldFJlcXVlc3RDb250ZW50OiBmdW5j
dGlvbihtZXNzYWdlLCBwb3J0KQorICAgIHsKICAgICAgICAgdmFyIHJlcXVlc3QgPSB0aGlzLl9y
ZXF1ZXN0QnlJZChtZXNzYWdlLmlkKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3NhZ2UuaWQpOwotICAgICAgICBy
ZXF1ZXN0LnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5fZ2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3QsIG1lc3NhZ2UsIHBvcnQpOwor
ICAgIH0sCisKKyAgICBfb25HZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2UsIHBv
cnQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
cmVlTW9kZWwucmVzb3VyY2VGb3JVUkwobWVzc2FnZS51cmwpOworICAgICAgICBpZiAoIXJlc291
cmNlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3NhZ2Uu
dXJsKTsKKyAgICAgICAgdGhpcy5fZ2V0UmVzb3VyY2VDb250ZW50KHJlc291cmNlLCBtZXNzYWdl
LCBwb3J0KTsKKyAgICB9LAorCisgICAgX29uU2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbiht
ZXNzYWdlLCBwb3J0KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKGVy
cm9yKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBlcnJvciA/IHRoaXMu
X3N0YXR1cy5FX0ZBSUxFRChlcnJvcikgOiB0aGlzLl9zdGF0dXMuT0soKTsKKyAgICAgICAgICAg
IHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIHBvcnQsIHJlc3BvbnNl
KTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwobWVzc2FnZS51cmwpOworICAgICAgICBpZiAoIXJl
c291cmNlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3Nh
Z2UudXJsKTsKKyAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudChtZXNzYWdlLmNvbnRlbnQsIG1l
c3NhZ2UuY29tbWl0LCBjYWxsYmFja1dyYXBwZXIuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAg
IF9yZXF1ZXN0SWQ6IGZ1bmN0aW9uKHJlcXVlc3QpCkBAIC0zNzUsNiArNDI5LDcgQEAgV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFRoZSBuZXR3
b3JrTWFuYWdlciBpcyBub3JtYWxseSBjcmVhdGVkIGFmdGVyIHRoZSBFeHRlbnNpb25TZXJ2ZXIg
aXMgY29uc3RydWN0ZWQsIGJ1dCBiZWZvcmUgaW5pdEV4dGVuc2lvbnMoKSBpcyBjYWxsZWQuCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlRmluaXNoZWQsIHRoaXMu
X25vdGlmeVJlcXVlc3RGaW5pc2hlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5FdmVudFR5cGVzLkluc3BlY3RlZFVSTENoYW5nZWQsIHRoaXMuX2luc3BlY3RlZFVSTENo
YW5nZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5S
ZXNvdXJjZUFkZGVkLCB0aGlzLl9ub3RpZnlSZXNvdXJjZUFkZGVkLCB0aGlzKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1hbmFnZXIuRXZlbnRUeXBlcy5UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMu
X2FkZFJlY29yZFRvVGltZWxpbmUsIHRoaXMpOwogCiAgICAgICAgIEluc3BlY3RvckV4dGVuc2lv
blJlZ2lzdHJ5LmdldEV4dGVuc2lvbnNBc3luYygpOwpAQCAtNTAxLDYgKzU1Niw3IEBAIFdlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIuX3N0YXR1c2VzID0KICAgICBFX0JBREFSR1RZUEU6ICJJ
bnZhbGlkIHR5cGUgZm9yIGFyZ3VtZW50ICVzOiBnb3QgJXMsIGV4cGVjdGVkICVzIiwKICAgICBF
X05PVEZPVU5EOiAiT2JqZWN0IG5vdCBmb3VuZDogJXMiLAogICAgIEVfTk9UU1VQUE9SVEVEOiAi
T2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIG9wZXJhdGlvbjogJXMiLAorICAgIEVf
RkFJTEVEOiAiT3BlcmF0aW9uIGZhaWxlZDogJXMiCiB9CiAKIFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TdGF0dXMgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZS5qcwppbmRleCA5ZGY2YTM1Li4yMjIxMjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTgzMyw3ICs4MzMsNyBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghcmVz
dG9yaW5nSGlzdG9yeSkKICAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RSZXZpc2lvbigpOwotICAg
ICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVJlc291cmNlQ29udGVudEVk
aXRlZCh0aGlzLnVybCwgbmV3Q29udGVudCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNp
b25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkKHRoaXMsIG5ld0NvbnRlbnQp
OwogICAgIH0sCiAKICAgICBfcGVyc2lzdFJldmlzaW9uOiBmdW5jdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104842</attachid>
            <date>2011-08-23 07:01:10 -0700</date>
            <delta_ts>2011-08-23 08:04:23 -0700</delta_ts>
            <desc>patch (properly rebased the diff)</desc>
            <filename>extensions-resources1.diff</filename>
            <type>text/plain</type>
            <size>26731</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjhkNTRjLi5kNGE1N2JkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgt
MjMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHByb3ZpZGUgYWNjZXNzIHRvIHBhZ2UgcmVzb3Vy
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzOgorICAgICAgICAo
dHJpbVVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
bmV0d29yay1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1uZXR3b3JrLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvQWhlbS50dGY6CisgICAgICAgICogaW5z
cGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKF9fdGVzdF9mdW5jdGlvbik6CisKIDIwMTEtMDgtMjMgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBS
ZW1vdmUgYSBub24tZXhpc3RlbnQgdGVzdCBmcm9tIHRoZSBza2lwcGVkIGxpc3QuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9u
LW1haW4uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0
ZW5zaW9uLW1haW4uanMKaW5kZXggZTI4YWI4OS4uZDUyN2MyZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24t
bWFpbi5qcwpAQCAtMSwzICsxLDEwIEBACitmdW5jdGlvbiB0cmltVVJMKHVybCkKK3sKKyAgICBp
ZiAoL15kYXRhOi8udGVzdCh1cmwpKQorICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoLzsuKiQv
LCAiLi4uIik7CisgICAgcmV0dXJuIHVybC5yZXBsYWNlKC8uKlwvLywgIi4uLi8iKTsKK30KKwog
ZnVuY3Rpb24gZHVtcE9iamVjdChvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4
LCBmaXJzdExpbmVQcmVmaXgpCiB7CiAgICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwpAQCAtNiw5
ICsxMywxMCBAQCBmdW5jdGlvbiBkdW1wT2JqZWN0KG9iamVjdCwgbm9uZGV0ZXJtaW5pc3RpY1By
b3BzLCBwcmVmaXgsIGZpcnN0TGluZVByZWZpeCkKICAgICBmb3IgKHZhciBwcm9wIGluIG9iamVj
dCkgewogICAgICAgICB2YXIgcHJlZml4V2l0aE5hbWUgPSBwcmVmaXggKyAiICAgICIgKyBwcm9w
ICsgIiA6ICI7CiAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBvYmplY3RbcHJvcF07Ci0gICAgICAg
IGlmIChub25kZXRlcm1pbmlzdGljUHJvcHMgJiYgcHJvcCBpbiBub25kZXRlcm1pbmlzdGljUHJv
cHMpCi0gICAgICAgICAgICBvdXRwdXQocHJlZml4V2l0aE5hbWUgKyAiPCIgKyB0eXBlb2YgcHJv
cFZhbHVlICsgIj4iKTsKLSAgICAgICAgZWxzZSBpZiAocHJvcFZhbHVlID09PSBudWxsKQorICAg
ICAgICBpZiAobm9uZGV0ZXJtaW5pc3RpY1Byb3BzICYmIHByb3AgaW4gbm9uZGV0ZXJtaW5pc3Rp
Y1Byb3BzKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBub25kZXRlcm1pbmlzdGljUHJvcHNb
cHJvcF0gPT09ICJ1cmwiID8gdHJpbVVSTChwcm9wVmFsdWUpIDogIjwiICsgdHlwZW9mIHByb3BW
YWx1ZSArICI+IjsKKyAgICAgICAgICAgIG91dHB1dChwcmVmaXhXaXRoTmFtZSArIHZhbHVlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgPT09IG51bGwpCiAgICAgICAgICAgICBvdXRw
dXQocHJlZml4V2l0aE5hbWUgKyAibnVsbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlb2YgcHJv
cFZhbHVlID09PSAib2JqZWN0IikKICAgICAgICAgICAgIGR1bXBPYmplY3QocHJvcFZhbHVlLCBu
b25kZXRlcm1pbmlzdGljUHJvcHMsIHByZWZpeCArICIgICAgIiwgcHJlZml4V2l0aE5hbWUpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1h
cGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5z
aW9ucy1hcGktZXhwZWN0ZWQudHh0CmluZGV4IDM1ZDVlYmQuLmI0NDRlMmUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWFw
aS1leHBlY3RlZC50eHQKQEAgLTgsOCArOCwxNyBAQCBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0QVBJCiAgICAgICAgIGFkZENhdGVnb3J5IDogPGZ1bmN0aW9uPgogICAgIH0KICAgICBpbnNw
ZWN0ZWRXaW5kb3cgOiB7CisgICAgICAgIG9uUmVzb3VyY2VBZGRlZCA6IHsKKyAgICAgICAgICAg
IGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8
ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICAgICAgb25SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQg
OiB7CisgICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHJl
bW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICB9CiAgICAgICAgIHJlbG9hZCA6IDxm
dW5jdGlvbj4KICAgICAgICAgZXZhbCA6IDxmdW5jdGlvbj4KKyAgICAgICAgZ2V0UmVzb3VyY2Vz
IDogPGZ1bmN0aW9uPgogICAgIH0KICAgICBwYW5lbHMgOiB7CiAgICAgICAgIGVsZW1lbnRzIDog
ewpAQCAtNDIsMTAgKzUxLDYgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAg
ICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICByZW1vdmVMaXN0
ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgfQotICAgICAgICBvbkNvbnRlbnRFZGl0ZWQgOiB7
Ci0gICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92
ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICB9CiAgICAgICAgIGdldEhBUiA6IDxmdW5j
dGlvbj4KICAgICAgICAgYWRkUmVxdWVzdEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpAQCAt
NjIsMTAgKzY3LDYgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAgICAgICAg
ICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lciA6
IDxmdW5jdGlvbj4KICAgICAgICAgfQotICAgICAgICBvbkNvbnRlbnRFZGl0ZWQgOiB7Ci0gICAg
ICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92ZUxpc3Rl
bmVyIDogPGZ1bmN0aW9uPgotICAgICAgICB9CiAgICAgICAgIGdldEhBUiA6IDxmdW5jdGlvbj4K
ICAgICAgICAgYWRkUmVxdWVzdEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
bmV0d29yay1leHBlY3RlZC50eHQKaW5kZXggNjVjMWY1OS4uZWI5ZjhhYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LW5ldHdvcmstZXhwZWN0ZWQudHh0CkBAIC0yOCw3ICsyOCw1IEBAIFJVTk5JTkcgVEVTVDogZXh0
ZW5zaW9uX3Rlc3RHZXRSZXNvdXJjZUNvbnRlbnRFbmNvZGVkCiB9CiBSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0UmVxdWVzdE5vdGlmaWNhdGlvbgogUmVxdWVzdCBmaW5pc2hlZDogLi4uL2lu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCi1SVU5OSU5HIFRFU1Q6
IGV4dGVuc2lvbl90ZXN0UmVzb3VyY2VDb250ZW50RWRpdGVkCi1jb250ZW50IGZvciByZXNvdXJj
ZSAuLi4vZXh0ZW5zaW9ucy9yZXNvdXJjZXMvYXVkaXRzLXN0eWxlMS5jc3MgZWRpdGVkOiBib2R5
IHsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IH0KIEFsbCB0ZXN0cyBkb25lLgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLW5ldHdvcmsu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29y
ay5odG1sCmluZGV4IGI2YjEzZjAuLmVmMGMyNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCkBAIC03Niwz
MCArNzYsNiBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldFJlc291cmNlQ29udGVudEVuY29k
ZWQobmV4dFRlc3QpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0UmVzb3Vy
Y2VDb250ZW50RWRpdGVkKG5leHRUZXN0KQotewotICAgIGZ1bmN0aW9uIG9uQ29udGVudEVkaXRl
ZCh1cmwsIGNvbnRlbnQpCi0gICAgewotICAgICAgICB3ZWJJbnNwZWN0b3IubmV0d29yay5vbkNv
bnRlbnRFZGl0ZWQucmVtb3ZlTGlzdGVuZXIob25Db250ZW50RWRpdGVkKTsKLSAgICAgICAgdmFy
IHVybFRhaWwgPSB1cmwucmVwbGFjZSgvLiooKFwvW14vXSopezN9JCkvLCIuLi4kMSIpOwotICAg
ICAgICBvdXRwdXQoImNvbnRlbnQgZm9yIHJlc291cmNlICIgKyB1cmxUYWlsICsgIiBlZGl0ZWQ6
ICIgKyBjb250ZW50KTsKLSAgICAgICAgbmV4dFRlc3QoKTsKLSAgICB9ICAgCi0gICAgd2ViSW5z
cGVjdG9yLm5ldHdvcmsub25Db250ZW50RWRpdGVkLmFkZExpc3RlbmVyKG9uQ29udGVudEVkaXRl
ZCk7Ci0KLSAgICBmdW5jdGlvbiBmaW5kQW5kRWRpdFJlc291cmNlKCkKLSAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXNvdXJjZXM7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoL2F1ZGl0cy1zdHlsZTEuY3NzJC8udGVzdChyZXNvdXJjZXNbaV0udXJsKSkgewot
ICAgICAgICAgICAgICAgIHJlc291cmNlc1tpXS5zZXRDb250ZW50KCJib2R5IHsgYmFja2dyb3Vu
ZC1jb2xvcjogYmxhY2s7IH0iLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBldmFsdWF0ZU9uRnJvbnRlbmQoIigiICsg
ZmluZEFuZEVkaXRSZXNvdXJjZSArICIpKCkiKTsKLX0KLQogdmFyIHRlc3QgPSBmdW5jdGlvbigp
CiB7CiAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKEluc3BlY3RvclRlc3QucnVuRXh0ZW5z
aW9uVGVzdHMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTc1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3NCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBhcHBsaWNhdGlvbgorVGVzdHMgcmVzb3VyY2Ut
cmVsYXRlZCBtZXRob2RzIG9mIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJCisKKworU3RhcnRl
ZCBleHRlbnNpb24uCitSdW5uaW5nIHRlc3RzLi4uCitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0R2V0QWxsUmVzb3VyY2VzCitwYWdlIHJlc291cmNlczoKK3sKKyAgICAwIDogeworICAgICAg
ICAwIDogeworICAgICAgICAgICAgdXJsIDogLi4uL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwK
KyAgICAgICAgICAgIHR5cGUgOiAiZG9jdW1lbnQiCisgICAgICAgICAgICBnZXRDb250ZW50IDog
PGZ1bmN0aW9uPgorICAgICAgICAgICAgc2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAg
fQorICAgICAgICAxIDogeworICAgICAgICAgICAgdXJsIDogLi4uL2V4dGVuc2lvbnMtdGVzdC5q
cworICAgICAgICAgICAgdHlwZSA6ICJzY3JpcHQiCisgICAgICAgICAgICBnZXRDb250ZW50IDog
PGZ1bmN0aW9uPgorICAgICAgICAgICAgc2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAg
fQorICAgICAgICAyIDogeworICAgICAgICAgICAgdXJsIDogLi4uL3Rlc3Qtc2NyaXB0LmpzCisg
ICAgICAgICAgICB0eXBlIDogInNjcmlwdCIKKyAgICAgICAgICAgIGdldENvbnRlbnQgOiA8ZnVu
Y3Rpb24+CisgICAgICAgICAgICBzZXRDb250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICB9Cisg
ICAgICAgIDMgOiB7CisgICAgICAgICAgICB1cmwgOiAuLi4vaW5zcGVjdG9yLXRlc3QuanMKKyAg
ICAgICAgICAgIHR5cGUgOiAic2NyaXB0IgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5j
dGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAg
ICAgICAgNCA6IHsKKyAgICAgICAgICAgIHVybCA6IC4uLi9hdWRpdHMtc3R5bGUxLmNzcworICAg
ICAgICAgICAgdHlwZSA6ICJzdHlsZXNoZWV0IgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxm
dW5jdGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0K
KyAgICAgICAgNSA6IHsKKyAgICAgICAgICAgIHVybCA6IC4uLi9hYmUucG5nCisgICAgICAgICAg
ICB0eXBlIDogImltYWdlIgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAg
ICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9CitS
VU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0UmVzb3VyY2VDb250ZW50Cit7CisgICAgMCA6
ICJmdW5jdGlvbiBfX3Rlc3RfZnVuY3Rpb24oKQoreworfQorCisiCisgICAgMSA6ICIiCit9CitS
VU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25Db250ZW50Q29tbWl0dGVkCitsb2c6IEV4dGVu
c2lvbiBzZXJ2ZXIgZXJyb3I6IE9wZXJhdGlvbiBmYWlsZWQ6IFJlc291cmNlIGlzIG5vdCBlZGl0
YWJsZQorY29udGVudCBjb21taXR0ZWQgZm9yIHJlc291cmNlIGZpbGU6Ly8vdXNyL2xvY2FsL2dv
b2dsZS9ob21lL2Nhc2VxL3NyYy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL3Jlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyAo
dHlwZTogc3R5bGVzaGVldCksIG5ldyBjb250ZW50OiBkaXYudGVzdCB7IHdpZHRoOiAyMjBweDsg
aGVpZ2h0OiA0MnB4OyB9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25SZXNvdXJjZUFk
ZGVkCityZXNvdXJjZSBhZGRlZDoKK3sKKyAgICAwIDogeworICAgICAgICB1cmwgOiBkYXRhOmFw
cGxpY2F0aW9uL2phdmFzY3JpcHQuLi4KKyAgICAgICAgdHlwZSA6ICJzY3JpcHQiCisgICAgICAg
IGdldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+
CisgICAgfQorfQorUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdFNldFJlc291cmNlQ29udGVu
dAorZGl2LnRlc3Qgd2lkdGggYWZ0ZXIgc3R5bGVzaGVldCBlZGl0ZWQgKHNob3VsZCBiZSAxMjYp
OiAxMjYKK0FsbCB0ZXN0cyBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDJhYmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApAQCAt
MCwwICsxLDExNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2F1ZGl0cy1zdHlsZTEuY3Nz
IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJy
ZXNvdXJjZXMvdGVzdC1zY3JpcHQuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0QWxsUmVzb3VyY2VzKG5l
eHRUZXN0KQoreworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlcykKKyAgICB7CisgICAg
ICAgIG91dHB1dCgicGFnZSByZXNvdXJjZXM6Iik7CisgICAgICAgIGR1bXBPYmplY3QoQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgeyB1cmw6ICJ1cmwiIH0pOworICAgIH0K
KyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmdldFJlc291cmNlcyhjYWxsYmFja0Fu
ZE5leHRUZXN0KGNhbGxiYWNrLCBuZXh0VGVzdCkpOworfQorCitmdW5jdGlvbiBleHRlbnNpb25f
cnVuV2l0aFJlc291cmNlKHJlZ2V4cCwgY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gb25SZXNv
dXJjZXMocmVzb3VyY2VzKQorICAgIHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291
cmNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICBpZiAocmVnZXhwLnRlc3QocmVzb3VyY2Vz
W2ldLnVybCkpIHsKKyAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc291cmNlc1tpXSkKKyAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICB0aHJvdyAi
RmFpbGVkIHRvIGZpbmQgYSByZXNvdXJjZTogIiArIHJlZ2V4cC50b1N0cmluZygpOworICAgIH0K
KyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmdldFJlc291cmNlcyhvblJlc291cmNl
cyk7Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0UmVzb3VyY2VDb250ZW50KG5leHRU
ZXN0KQoreworICAgIGZ1bmN0aW9uIG9uQ29udGVudCgpCisgICAgeworICAgICAgICBkdW1wT2Jq
ZWN0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOworICAgIH0KKyAgICBl
eHRlbnNpb25fcnVuV2l0aFJlc291cmNlKC90ZXN0LXNjcmlwdFwuanMkLywgZnVuY3Rpb24ocmVz
b3VyY2UpIHsKKyAgICAgICAgcmVzb3VyY2UuZ2V0Q29udGVudChjYWxsYmFja0FuZE5leHRUZXN0
KG9uQ29udGVudCwgbmV4dFRlc3QpKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9u
X3Rlc3RTZXRSZXNvdXJjZUNvbnRlbnQobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gY2FsbGJh
Y2soKQorICAgIHsKKyAgICAgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1kaXYnKS5jbGllbnRXaWR0aCIsIGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgb3V0cHV0KCJkaXYudGVzdCB3aWR0aCBhZnRlciBzdHls
ZXNoZWV0IGVkaXRlZCAoc2hvdWxkIGJlIDEyNik6ICIgKyByZXN1bHQpOworICAgICAgICAgICAg
bmV4dFRlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVz
b3VyY2UoL2F1ZGl0cy1zdHlsZTFcLmNzcyQvLCBmdW5jdGlvbihyZXNvdXJjZSkgeworICAgICAg
ICByZXNvdXJjZS5zZXRDb250ZW50KCJkaXYudGVzdCB7IHdpZHRoOiAxMjZweDsgaGVpZ2h0OiA0
MnB4OyB9IiwgZmFsc2UsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZXh0ZW5z
aW9uX3Rlc3RPbkNvbnRlbnRDb21taXR0ZWQobmV4dFRlc3QpCit7CisgICAgdmFyIGV4cGVjdGVk
X2NvbnRlbnQgPSAiZGl2LnRlc3QgeyB3aWR0aDogMjIwcHg7IGhlaWdodDogNDJweDsgfSI7CisK
KyAgICBmdW5jdGlvbiBvbkNvbnRlbnRDb21taXR0ZWQocmVzb3VyY2UsIGNvbnRlbnQpCisgICAg
eworICAgICAgICBvdXRwdXQoImNvbnRlbnQgY29tbWl0dGVkIGZvciByZXNvdXJjZSAiICsgcmVz
b3VyY2UudXJsICsgIiAodHlwZTogIiArIHJlc291cmNlLnR5cGUgKyAiKSwgbmV3IGNvbnRlbnQ6
ICIgKyBjb250ZW50KTsKKyAgICAgICAgaWYgKCEvYXVkaXRzLXN0eWxlMVwuY3NzJC8udGVzdChy
ZXNvdXJjZS51cmwpIHx8IGNvbnRlbnQgIT09IGV4cGVjdGVkX2NvbnRlbnQpCisgICAgICAgICAg
ICBvdXRwdXQoIkZBSUw6IHN0cmF5IG9uQ29udGVudEVkaXRlZCBldmVudCIpOworICAgICAgICB3
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93Lm9uUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLnJl
bW92ZUxpc3RlbmVyKG9uQ29udGVudENvbW1pdHRlZCk7CisgICAgICAgIG5leHRUZXN0KCk7Cisg
ICAgfQorICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cub25SZXNvdXJjZUNvbnRlbnRD
b21taXR0ZWQuYWRkTGlzdGVuZXIob25Db250ZW50Q29tbWl0dGVkKTsKKyAgICBleHRlbnNpb25f
cnVuV2l0aFJlc291cmNlKC9hdWRpdHMtc3R5bGUxXC5jc3MkLywgZnVuY3Rpb24ocmVzb3VyY2Up
IHsKKyAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudCgiZGl2LnRlc3QgeyB3aWR0aDogMTQwcHg7
IGhlaWdodDogNDJweDsgfSIsIGZhbHNlKTsKKyAgICB9KTsKKyAgICAvLyBUaGUgbmV4dCBzdGVw
IGlzIGdvaW5nIHRvIHByb2R1Y2UgYSBjb25zb2xlIG1lc3NhZ2UgdGhhdCB3aWxsIGJlIGxvZ2dl
ZCwgc28gc3luY2hyb25pemUgdGhlIG91dHB1dCBub3cuCisgICAgZXZhbHVhdGVPbkZyb250ZW5k
KCJJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMocmVwbHkpIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UoL3Rlc3Qtc2NyaXB0XC5q
cyQvLCBmdW5jdGlvbihyZXNvdXJjZSkgeworICAgICAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVu
dCgiZnVuY3Rpb24gZnVuY3Rpb24xKCl7fSIsIHRydWUpOworICAgICAgICB9KTsKKyAgICAgICAg
ZXh0ZW5zaW9uX3J1bldpdGhSZXNvdXJjZSgvYXVkaXRzLXN0eWxlMVwuY3NzJC8sIGZ1bmN0aW9u
KHJlc291cmNlKSB7CisgICAgICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KGV4cGVjdGVkX2Nv
bnRlbnQsIHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZXh0ZW5z
aW9uX3Rlc3RPblJlc291cmNlQWRkZWQobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25SZXNv
dXJjZUFkZGVkKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgb3V0cHV0KCJyZXNvdXJjZSBhZGRl
ZDoiKTsKKyAgICAgICAgZHVtcE9iamVjdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1
bWVudHMpLCB7IHVybDogInVybCIgfSk7CisgICAgICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRX
aW5kb3cub25SZXNvdXJjZUFkZGVkLnJlbW92ZUxpc3RlbmVyKG9uUmVzb3VyY2VBZGRlZCk7CisK
KyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdp
bmRvdy5vblJlc291cmNlQWRkZWQuYWRkTGlzdGVuZXIob25SZXNvdXJjZUFkZGVkKTsKKyAgICB3
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImFkZFJlc291cmNlKCkiKTsKK30KKwor
ZnVuY3Rpb24gYWRkUmVzb3VyY2UoKQoreworICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBzY3JpcHQuc3JjID0gImRhdGE6YXBwbGljYXRpb24v
amF2YXNjcmlwdDtmdW5jdGlvbiB0ZXN0X2Z1bmMoKXt9IjsKKyAgICBkb2N1bWVudC5oZWFkLmFw
cGVuZENoaWxkKHNjcmlwdCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdHMgcmVzb3VyY2UtcmVsYXRlZCBtZXRob2RzIG9mIFdlYklu
c3BlY3RvciBleHRlbnNpb24gQVBJPC9wPgorPGltZyBzcmM9InJlc291cmNlcy9hYmUucG5nIj4K
KzxkaXYgaWQ9InRlc3QtZGl2IiBjbGFzcz0idGVzdCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMv
QWhlbS50dGYgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvQWhl
bS50dGYKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOTlkN2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvdGVzdC1zY3Jp
cHQuanMKQEAgLTAsMCArMSw0IEBACitmdW5jdGlvbiBfX3Rlc3RfZnVuY3Rpb24oKQoreworfQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZTgzYjEyMi4uNGE4N2ZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDExLTA4LTIzICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbnMgQVBJXSBwcm92aWRlIGFjY2VzcyB0
byBwYWdlIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjY3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5o
dG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5FdmVudFNpbmtJbXBsLnBy
b3RvdHlwZS5hZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRl
bnNpb25BUEkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLlJl
cXVlc3RJbXBsLnByb3RvdHlwZS5nZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5p
bmplY3RlZEV4dGVuc2lvbkFQSS5JbnNwZWN0ZWRXaW5kb3cucmVzb3VyY2VEaXNwYXRjaCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93
LnJlc291cmNlQ29udGVudERpc3BhdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3Rl
ZEV4dGVuc2lvbkFQSS5JbnNwZWN0ZWRXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmlu
amVjdGVkRXh0ZW5zaW9uQVBJLkluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUuZXZhbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93LnBy
b3RvdHlwZS5nZXRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0
ZW5zaW9uQVBJLkluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUuZ2V0UmVzb3VyY2VzLmNhbGxiYWNr
V3JhcHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVz
b3VyY2VJbXBsLnByb3RvdHlwZS5nZXQgdXJsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmpl
Y3RlZEV4dGVuc2lvbkFQSS5SZXNvdXJjZUltcGwucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5SZXNvdXJjZUltcGwucHJvdG90
eXBlLmdldENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9u
QVBJLlJlc291cmNlSW1wbC5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU2VydmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlLl9ub3RpZnlSZXNvdXJjZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLm5vdGlmeVJlc291cmNlQ29udGVudENvbW1pdHRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fbWFrZVJl
c291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBl
Ll9vbkdldFBhZ2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNl
cnZlci5wcm90b3R5cGUuX2dldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25HZXRSZXF1ZXN0Q29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25HZXRSZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUuX29uU2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlLmluaXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5hZGRSZXZpc2lvbik6CisKIDIwMTEtMDgtMjMgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI5MzU3OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uQVBJLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25BUEkuanMKaW5kZXggYzNlMjBjZS4uMjJmMjJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKQEAgLTQ4LDcgKzQ4LDcg
QEAgRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgYWRkTGlzdGVuZXI6IGZ1bmN0aW9u
KGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPSAiZnVuY3Rp
b24iKQotICAgICAgICAgICAgdGhyb3cgbmV3ICJhZGRMaXN0ZW5lcjogY2FsbGJhY2sgaXMgbm90
IGEgZnVuY3Rpb24iOworICAgICAgICAgICAgdGhyb3cgImFkZExpc3RlbmVyOiBjYWxsYmFjayBp
cyBub3QgYSBmdW5jdGlvbiI7CiAgICAgICAgIGlmICh0aGlzLl9saXN0ZW5lcnMubGVuZ3RoID09
PSAwKQogICAgICAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDog
InN1YnNjcmliZSIsIHR5cGU6IHRoaXMuX3R5cGUgfSk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVy
cy5wdXNoKGNhbGxiYWNrKTsKQEAgLTExNSw3ICsxMTUsNiBAQCBmdW5jdGlvbiBOZXR3b3JrKCkK
ICAgICB0aGlzLm9uUmVxdWVzdEZpbmlzaGVkID0gbmV3IEV2ZW50U2luaygibmV0d29yay1yZXF1
ZXN0LWZpbmlzaGVkIiwgcmVxdWVzdERpc3BhdGNoKTsKICAgICBkZWZpbmVEZXByZWNhdGVkUHJv
cGVydHkodGhpcywgIm5ldHdvcmsiLCAib25GaW5pc2hlZCIsICJvblJlcXVlc3RGaW5pc2hlZCIp
OwogICAgIHRoaXMub25OYXZpZ2F0ZWQgPSBuZXcgRXZlbnRTaW5rKCJpbnNwZWN0ZWRVUkxDaGFu
Z2VkIik7Ci0gICAgdGhpcy5vbkNvbnRlbnRFZGl0ZWQgPSBuZXcgRXZlbnRTaW5rKCJyZXNvdXJj
ZS1jb250ZW50LWVkaXRlZCIpOwogfQogCiBOZXR3b3JrLnByb3RvdHlwZSA9IHsKQEAgLTE1MSw3
ICsxNTAsNyBAQCBSZXF1ZXN0SW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc3BvbnNlLmNvbnRlbnQsIHJlc3BvbnNlLmVuY29kaW5nKTsKICAgICAg
ICAgfQotICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAiZ2V0
UmVzb3VyY2VDb250ZW50IiwgaWQ6IHRoaXMuX2lkIH0sIGNhbGxiYWNrICYmIGNhbGxiYWNrV3Jh
cHBlcik7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJn
ZXRSZXF1ZXN0Q29udGVudCIsIGlkOiB0aGlzLl9pZCB9LCBjYWxsYmFjayAmJiBjYWxsYmFja1dy
YXBwZXIpOwogICAgIH0KIH07CiAKQEAgLTM1OCw2ICszNTcsMTYgQEAgQXVkaXRSZXN1bHROb2Rl
LnByb3RvdHlwZSA9IHsKIAogZnVuY3Rpb24gSW5zcGVjdGVkV2luZG93KCkKIHsKKyAgICBmdW5j
dGlvbiByZXNvdXJjZURpc3BhdGNoKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlzLl9maXJl
KG5ldyBSZXNvdXJjZShtZXNzYWdlLmFyZ3VtZW50c1swXSkpOworICAgIH0KKyAgICBmdW5jdGlv
biByZXNvdXJjZUNvbnRlbnREaXNwYXRjaChtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
ZmlyZShuZXcgUmVzb3VyY2UobWVzc2FnZS5hcmd1bWVudHNbMF0pLCBtZXNzYWdlLmFyZ3VtZW50
c1sxXSk7CisgICAgfQorICAgIHRoaXMub25SZXNvdXJjZUFkZGVkID0gbmV3IEV2ZW50U2luaygi
cmVzb3VyY2UtYWRkZWQiLCByZXNvdXJjZURpc3BhdGNoKTsKKyAgICB0aGlzLm9uUmVzb3VyY2VD
b250ZW50Q29tbWl0dGVkID0gbmV3IEV2ZW50U2luaygicmVzb3VyY2UtY29udGVudC1jb21taXR0
ZWQiLCByZXNvdXJjZUNvbnRlbnREaXNwYXRjaCk7CiB9CiAKIEluc3BlY3RlZFdpbmRvdy5wcm90
b3R5cGUgPSB7CkBAIC0zNzYsOSArMzg1LDU1IEBAIEluc3BlY3RlZFdpbmRvdy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBjYWxsYmFjayh2YWx1ZSwgcmVzdWx0LmlzRXhjZXB0aW9uKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29t
bWFuZDogImV2YWx1YXRlT25JbnNwZWN0ZWRQYWdlIiwgZXhwcmVzc2lvbjogZXhwcmVzc2lvbiB9
LCBjYWxsYmFjayAmJiBjYWxsYmFja1dyYXBwZXIpOworICAgIH0sCisKKyAgICBnZXRSZXNvdXJj
ZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gd3JhcFJlc291
cmNlKHJlc291cmNlRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNv
dXJjZShyZXNvdXJjZURhdGEpOworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNr
V3JhcHBlcihyZXNvdXJjZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc291
cmNlcy5tYXAod3JhcFJlc291cmNlKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGV4dGVu
c2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJnZXRQYWdlUmVzb3VyY2VzIiB9LCBj
YWxsYmFjayAmJiBjYWxsYmFja1dyYXBwZXIpOwogICAgIH0KIH0KIAorZnVuY3Rpb24gUmVzb3Vy
Y2VJbXBsKHJlc291cmNlRGF0YSkKK3sKKyAgICB0aGlzLl91cmwgPSByZXNvdXJjZURhdGEudXJs
CisgICAgdGhpcy5fdHlwZSA9IHJlc291cmNlRGF0YS50eXBlOworfQorCitSZXNvdXJjZUltcGwu
cHJvdG90eXBlID0geworICAgIGdldCB1cmwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3VybDsKKyAgICB9LAorCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3R5cGU7CisgICAgfSwKKworICAgIGdldENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKHJlc3BvbnNlKQorICAgICAg
ICB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5lbmNv
ZGluZyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZXh0ZW5zaW9uU2VydmVyLnNlbmRS
ZXF1ZXN0KHsgY29tbWFuZDogImdldFJlc291cmNlQ29udGVudCIsIHVybDogdGhpcy5fdXJsIH0s
IGNhbGxiYWNrICYmIGNhbGxiYWNrV3JhcHBlcik7CisgICAgfSwKKworICAgIHNldENvbnRlbnQ6
IGZ1bmN0aW9uKGNvbnRlbnQsIGNvbW1pdCwgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1
cm4gZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInNldFJlc291cmNlQ29u
dGVudCIsIHVybDogdGhpcy5fdXJsLCBjb250ZW50OiBjb250ZW50LCBjb21taXQ6IGNvbW1pdCB9
LCBjYWxsYmFjayk7CisgICAgfQorfTsKKwogZnVuY3Rpb24gVGltZWxpbmVJbXBsKCkKIHsKICAg
ICB0aGlzLm9uRXZlbnRSZWNvcmRlZCA9IG5ldyBFdmVudFNpbmsoInRpbWVsaW5lLWV2ZW50LXJl
Y29yZGVkIik7CkBAIC00NTUsOSArNTEwLDE4IEBAIGZ1bmN0aW9uIHBvcHVsYXRlSW50ZXJmYWNl
Q2xhc3MoaW50ZXJmYWNlLCBpbXBsZW1lbnRhdGlvbikKICAgICBmb3IgKHZhciBtZW1iZXIgaW4g
aW1wbGVtZW50YXRpb24pIHsKICAgICAgICAgaWYgKG1lbWJlci5jaGFyQXQoMCkgPT09ICJfIikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgdmFsdWUgPSBpbXBsZW1lbnRhdGlv
blttZW1iZXJdOwotICAgICAgICBpbnRlcmZhY2VbbWVtYmVyXSA9IHR5cGVvZiB2YWx1ZSA9PT0g
ImZ1bmN0aW9uIiA/IGJpbmQodmFsdWUsIGltcGxlbWVudGF0aW9uKQotICAgICAgICAgICAgOiBp
bnRlcmZhY2VbbWVtYmVyXSA9IGltcGxlbWVudGF0aW9uW21lbWJlcl07CisgICAgICAgIHZhciBk
ZXNjcmlwdG9yID0gbnVsbDsKKyAgICAgICAgLy8gVHJhdmVyc2UgcHJvdG90eXBlIGNoYWluIHVu
dGlsIHdlIGZpbmQgdGhlIG93bmVyLgorICAgICAgICBmb3IgKHZhciBvd25lciA9IGltcGxlbWVu
dGF0aW9uOyBvd25lciAmJiAhZGVzY3JpcHRvcjsgb3duZXIgPSBvd25lci5fX3Byb3RvX18pCisg
ICAgICAgICAgICBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihv
d25lciwgbWVtYmVyKTsKKyAgICAgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgIGludGVyZmFjZVttZW1iZXJdID0gYmluZChkZXNjcmlwdG9yLnZhbHVl
LCBpbXBsZW1lbnRhdGlvbik7CisgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLmdl
dCA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIGludGVyZmFjZS5fX2RlZmluZUdldHRlcl9f
KG1lbWJlciwgYmluZChkZXNjcmlwdG9yLmdldCwgaW1wbGVtZW50YXRpb24pKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGludGVyZmFjZSwgbWVtYmVy
LCBkZXNjcmlwdG9yKTsKICAgICB9CiB9CiAKQEAgLTQ5Miw2ICs1NTYsNyBAQCB2YXIgRXh0ZW5z
aW9uU2lkZWJhclBhbmUgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoRXh0ZW5zaW9uU2lkZWJhclBh
bmVJbXBsKTsKIHZhciBQYW5lbCA9IGRlY2xhcmVJbnRlcmZhY2VDbGFzcyhQYW5lbEltcGwpOwog
dmFyIFBhbmVsV2l0aFNpZGViYXIgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUGFuZWxXaXRoU2lk
ZWJhckltcGwpOwogdmFyIFJlcXVlc3QgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUmVxdWVzdElt
cGwpOwordmFyIFJlc291cmNlID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKFJlc291cmNlSW1wbCk7
CiB2YXIgVGltZWxpbmUgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoVGltZWxpbmVJbXBsKTsKIAog
dmFyIGV4dGVuc2lvblNlcnZlciA9IG5ldyBFeHRlbnNpb25TZXJ2ZXJDbGllbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIu
anMKaW5kZXggYzIzNjE4ZS4uMDg2YjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTQ4LDkgKzQ4LDEyIEBA
IFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcmVn
aXN0ZXJIYW5kbGVyKCJjcmVhdGVTaWRlYmFyUGFuZSIsIHRoaXMuX29uQ3JlYXRlU2lkZWJhclBh
bmUuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJldmFsdWF0ZU9uSW5z
cGVjdGVkUGFnZSIsIHRoaXMuX29uRXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UuYmluZCh0aGlzKSk7
CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRIQVIiLCB0aGlzLl9vbkdldEhBUi5iaW5k
KHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImdldFBhZ2VSZXNvdXJjZXMiLCB0
aGlzLl9vbkdldFBhZ2VSZXNvdXJjZXMuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fcmVnaXN0ZXJI
YW5kbGVyKCJnZXRSZXF1ZXN0Q29udGVudCIsIHRoaXMuX29uR2V0UmVxdWVzdENvbnRlbnQuYmlu
ZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRSZXNvdXJjZUNvbnRlbnQi
LCB0aGlzLl9vbkdldFJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdp
c3RlckhhbmRsZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3Jl
Z2lzdGVySGFuZGxlcigicmVsb2FkIiwgdGhpcy5fb25SZWxvYWQuYmluZCh0aGlzKSk7CisgICAg
dGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJzZXRSZXNvdXJjZUNvbnRlbnQiLCB0aGlzLl9vblNldFJl
c291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInNl
dFNpZGViYXJIZWlnaHQiLCB0aGlzLl9vblNldFNpZGViYXJIZWlnaHQuYmluZCh0aGlzKSk7CiAg
ICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJzZXRTaWRlYmFyQ29udGVudCIsIHRoaXMuX29uU2V0
U2lkZWJhckNvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJz
ZXRTaWRlYmFyUGFnZSIsIHRoaXMuX29uU2V0U2lkZWJhclBhZ2UuYmluZCh0aGlzKSk7CkBAIC0x
MTcsOSArMTIwLDE1IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0g
ewogICAgICAgICBkZWxldGUgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1bi5pZF07CiAgICAg
fSwKIAotICAgIG5vdGlmeVJlc291cmNlQ29udGVudEVkaXRlZDogZnVuY3Rpb24odXJsLCBjb250
ZW50KQorICAgIF9ub3RpZnlSZXNvdXJjZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oInJlc291cmNlLWNvbnRlbnQtZWRpdGVkIiwg
dXJsLCBjb250ZW50KTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQuZGF0YTsKKyAgICAg
ICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbigicmVzb3VyY2UtYWRkZWQiLCB0aGlzLl9tYWtlUmVz
b3VyY2UocmVzb3VyY2UpKTsKKyAgICB9LAorCisgICAgbm90aWZ5UmVzb3VyY2VDb250ZW50Q29t
bWl0dGVkOiBmdW5jdGlvbihyZXNvdXJjZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3Bvc3ROb3RpZmljYXRpb24oInJlc291cmNlLWNvbnRlbnQtY29tbWl0dGVkIiwgdGhpcy5fbWFr
ZVJlc291cmNlKHJlc291cmNlKSwgY29udGVudCk7CiAgICAgfSwKIAogICAgIF9ub3RpZnlSZXF1
ZXN0RmluaXNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMzEwLDcgKzMxOSwyNiBAQCBXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGhhckxv
ZzsKICAgICB9LAogCi0gICAgX29uR2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihtZXNzYWdl
LCBwb3J0KQorICAgIF9tYWtlUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHVybDogcmVzb3VyY2UudXJsLAorICAgICAgICAg
ICAgdHlwZTogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcocmVzb3VyY2UudHlw
ZSkKKyAgICAgICAgfTsKKyAgICB9LAorCisgICAgX29uR2V0UGFnZVJlc291cmNlczogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IFtdOworICAgICAgICBmdW5jdGlv
biBwdXNoUmVzb3VyY2VEYXRhKHJlc291cmNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXNv
dXJjZXMucHVzaCh0aGlzLl9tYWtlUmVzb3VyY2UocmVzb3VyY2UpKTsKKyAgICAgICAgfQorICAg
ICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKHB1c2hS
ZXNvdXJjZURhdGEuYmluZCh0aGlzKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZXM7CisgICAg
fSwKKworICAgIF9nZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBtZXNzYWdl
LCBwb3J0KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gb25Db250ZW50QXZhaWxhYmxlKGNvbnRl
bnQsIGVuY29kZWQpCiAgICAgICAgIHsKQEAgLTMyMCwxMCArMzQ4LDM2IEBAIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgIHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIHBvcnQsIHJlc3Bv
bnNlKTsKICAgICAgICAgfQorICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudChvbkNvbnRl
bnRBdmFpbGFibGUuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9vbkdldFJlcXVlc3RDb250
ZW50OiBmdW5jdGlvbihtZXNzYWdlLCBwb3J0KQorICAgIHsKICAgICAgICAgdmFyIHJlcXVlc3Qg
PSB0aGlzLl9yZXF1ZXN0QnlJZChtZXNzYWdlLmlkKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0KQog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3NhZ2UuaWQpOwot
ICAgICAgICByZXF1ZXN0LnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5fZ2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3QsIG1lc3NhZ2Us
IHBvcnQpOworICAgIH0sCisKKyAgICBfb25HZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKG1l
c3NhZ2UsIHBvcnQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwobWVzc2FnZS51cmwpOworICAgICAgICBp
ZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5E
KG1lc3NhZ2UudXJsKTsKKyAgICAgICAgdGhpcy5fZ2V0UmVzb3VyY2VDb250ZW50KHJlc291cmNl
LCBtZXNzYWdlLCBwb3J0KTsKKyAgICB9LAorCisgICAgX29uU2V0UmVzb3VyY2VDb250ZW50OiBm
dW5jdGlvbihtZXNzYWdlLCBwb3J0KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tX
cmFwcGVyKGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBlcnJv
ciA/IHRoaXMuX3N0YXR1cy5FX0ZBSUxFRChlcnJvcikgOiB0aGlzLl9zdGF0dXMuT0soKTsKKyAg
ICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIHBvcnQs
IHJlc3BvbnNlKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwobWVzc2FnZS51cmwpOworICAgICAg
ICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZP
VU5EKG1lc3NhZ2UudXJsKTsKKyAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudChtZXNzYWdlLmNv
bnRlbnQsIG1lc3NhZ2UuY29tbWl0LCBjYWxsYmFja1dyYXBwZXIuYmluZCh0aGlzKSk7CiAgICAg
fSwKIAogICAgIF9yZXF1ZXN0SWQ6IGZ1bmN0aW9uKHJlcXVlc3QpCkBAIC0zNzUsNiArNDI5LDcg
QEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8v
IFRoZSBuZXR3b3JrTWFuYWdlciBpcyBub3JtYWxseSBjcmVhdGVkIGFmdGVyIHRoZSBFeHRlbnNp
b25TZXJ2ZXIgaXMgY29uc3RydWN0ZWQsIGJ1dCBiZWZvcmUgaW5pdEV4dGVuc2lvbnMoKSBpcyBj
YWxsZWQuCiAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlRmluaXNo
ZWQsIHRoaXMuX25vdGlmeVJlcXVlc3RGaW5pc2hlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkluc3BlY3RlZFVSTENoYW5nZWQsIHRoaXMuX2luc3Bl
Y3RlZFVSTENoYW5nZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVl
TW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZl
bnRUeXBlcy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9ub3RpZnlSZXNvdXJjZUFkZGVkLCB0aGlzKTsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnRUeXBlcy5UaW1lbGluZUV2ZW50UmVjb3Jk
ZWQsIHRoaXMuX2FkZFJlY29yZFRvVGltZWxpbmUsIHRoaXMpOwogCiAgICAgICAgIEluc3BlY3Rv
ckV4dGVuc2lvblJlZ2lzdHJ5LmdldEV4dGVuc2lvbnNBc3luYygpOwpAQCAtNTAxLDYgKzU1Niw3
IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIuX3N0YXR1c2VzID0KICAgICBFX0JBREFS
R1RZUEU6ICJJbnZhbGlkIHR5cGUgZm9yIGFyZ3VtZW50ICVzOiBnb3QgJXMsIGV4cGVjdGVkICVz
IiwKICAgICBFX05PVEZPVU5EOiAiT2JqZWN0IG5vdCBmb3VuZDogJXMiLAogICAgIEVfTk9UU1VQ
UE9SVEVEOiAiT2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIG9wZXJhdGlvbjogJXMi
LAorICAgIEVfRkFJTEVEOiAiT3BlcmF0aW9uIGZhaWxlZDogJXMiCiB9CiAKIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TdGF0dXMgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCA5ZGY2YTM1Li4yMjIxMjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTgzMyw3
ICs4MzMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICghcmVzdG9yaW5nSGlzdG9yeSkKICAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RSZXZpc2lv
bigpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVJlc291cmNl
Q29udGVudEVkaXRlZCh0aGlzLnVybCwgbmV3Q29udGVudCk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkKHRoaXMsIG5l
d0NvbnRlbnQpOwogICAgIH0sCiAKICAgICBfcGVyc2lzdFJldmlzaW9uOiBmdW5jdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104846</attachid>
            <date>2011-08-23 08:04:23 -0700</date>
            <delta_ts>2011-08-23 08:36:12 -0700</delta_ts>
            <desc>patch (normalize test output)</desc>
            <filename>extensions-resources.diff</filename>
            <type>text/plain</type>
            <size>26912</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjhkNTRjLi5kNGE1N2JkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgt
MjMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHByb3ZpZGUgYWNjZXNzIHRvIHBhZ2UgcmVzb3Vy
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzOgorICAgICAgICAo
dHJpbVVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hcGkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
bmV0d29yay1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1uZXR3b3JrLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9yZXNvdXJjZXMvQWhlbS50dGY6CisgICAgICAgICogaW5z
cGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2VzL3Rlc3Qtc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKF9fdGVzdF9mdW5jdGlvbik6CisKIDIwMTEtMDgtMjMgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBS
ZW1vdmUgYSBub24tZXhpc3RlbnQgdGVzdCBmcm9tIHRoZSBza2lwcGVkIGxpc3QuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9u
LW1haW4uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0
ZW5zaW9uLW1haW4uanMKaW5kZXggZTI4YWI4OS4uZDUyN2MyZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24t
bWFpbi5qcwpAQCAtMSwzICsxLDEwIEBACitmdW5jdGlvbiB0cmltVVJMKHVybCkKK3sKKyAgICBp
ZiAoL15kYXRhOi8udGVzdCh1cmwpKQorICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoLzsuKiQv
LCAiLi4uIik7CisgICAgcmV0dXJuIHVybC5yZXBsYWNlKC8uKlwvLywgIi4uLi8iKTsKK30KKwog
ZnVuY3Rpb24gZHVtcE9iamVjdChvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4
LCBmaXJzdExpbmVQcmVmaXgpCiB7CiAgICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwpAQCAtNiw5
ICsxMywxMCBAQCBmdW5jdGlvbiBkdW1wT2JqZWN0KG9iamVjdCwgbm9uZGV0ZXJtaW5pc3RpY1By
b3BzLCBwcmVmaXgsIGZpcnN0TGluZVByZWZpeCkKICAgICBmb3IgKHZhciBwcm9wIGluIG9iamVj
dCkgewogICAgICAgICB2YXIgcHJlZml4V2l0aE5hbWUgPSBwcmVmaXggKyAiICAgICIgKyBwcm9w
ICsgIiA6ICI7CiAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBvYmplY3RbcHJvcF07Ci0gICAgICAg
IGlmIChub25kZXRlcm1pbmlzdGljUHJvcHMgJiYgcHJvcCBpbiBub25kZXRlcm1pbmlzdGljUHJv
cHMpCi0gICAgICAgICAgICBvdXRwdXQocHJlZml4V2l0aE5hbWUgKyAiPCIgKyB0eXBlb2YgcHJv
cFZhbHVlICsgIj4iKTsKLSAgICAgICAgZWxzZSBpZiAocHJvcFZhbHVlID09PSBudWxsKQorICAg
ICAgICBpZiAobm9uZGV0ZXJtaW5pc3RpY1Byb3BzICYmIHByb3AgaW4gbm9uZGV0ZXJtaW5pc3Rp
Y1Byb3BzKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBub25kZXRlcm1pbmlzdGljUHJvcHNb
cHJvcF0gPT09ICJ1cmwiID8gdHJpbVVSTChwcm9wVmFsdWUpIDogIjwiICsgdHlwZW9mIHByb3BW
YWx1ZSArICI+IjsKKyAgICAgICAgICAgIG91dHB1dChwcmVmaXhXaXRoTmFtZSArIHZhbHVlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgPT09IG51bGwpCiAgICAgICAgICAgICBvdXRw
dXQocHJlZml4V2l0aE5hbWUgKyAibnVsbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlb2YgcHJv
cFZhbHVlID09PSAib2JqZWN0IikKICAgICAgICAgICAgIGR1bXBPYmplY3QocHJvcFZhbHVlLCBu
b25kZXRlcm1pbmlzdGljUHJvcHMsIHByZWZpeCArICIgICAgIiwgcHJlZml4V2l0aE5hbWUpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1h
cGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5z
aW9ucy1hcGktZXhwZWN0ZWQudHh0CmluZGV4IDM1ZDVlYmQuLmI0NDRlMmUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWFw
aS1leHBlY3RlZC50eHQKQEAgLTgsOCArOCwxNyBAQCBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0QVBJCiAgICAgICAgIGFkZENhdGVnb3J5IDogPGZ1bmN0aW9uPgogICAgIH0KICAgICBpbnNw
ZWN0ZWRXaW5kb3cgOiB7CisgICAgICAgIG9uUmVzb3VyY2VBZGRlZCA6IHsKKyAgICAgICAgICAg
IGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8
ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICAgICAgb25SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQg
OiB7CisgICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHJl
bW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICB9CiAgICAgICAgIHJlbG9hZCA6IDxm
dW5jdGlvbj4KICAgICAgICAgZXZhbCA6IDxmdW5jdGlvbj4KKyAgICAgICAgZ2V0UmVzb3VyY2Vz
IDogPGZ1bmN0aW9uPgogICAgIH0KICAgICBwYW5lbHMgOiB7CiAgICAgICAgIGVsZW1lbnRzIDog
ewpAQCAtNDIsMTAgKzUxLDYgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAg
ICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICByZW1vdmVMaXN0
ZW5lciA6IDxmdW5jdGlvbj4KICAgICAgICAgfQotICAgICAgICBvbkNvbnRlbnRFZGl0ZWQgOiB7
Ci0gICAgICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92
ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICB9CiAgICAgICAgIGdldEhBUiA6IDxmdW5j
dGlvbj4KICAgICAgICAgYWRkUmVxdWVzdEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpAQCAt
NjIsMTAgKzY3LDYgQEAgUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogICAgICAgICAg
ICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CiAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lciA6
IDxmdW5jdGlvbj4KICAgICAgICAgfQotICAgICAgICBvbkNvbnRlbnRFZGl0ZWQgOiB7Ci0gICAg
ICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92ZUxpc3Rl
bmVyIDogPGZ1bmN0aW9uPgotICAgICAgICB9CiAgICAgICAgIGdldEhBUiA6IDxmdW5jdGlvbj4K
ICAgICAgICAgYWRkUmVxdWVzdEhlYWRlcnMgOiA8ZnVuY3Rpb24+CiAgICAgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
bmV0d29yay1leHBlY3RlZC50eHQKaW5kZXggNjVjMWY1OS4uZWI5ZjhhYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1uZXR3b3JrLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LW5ldHdvcmstZXhwZWN0ZWQudHh0CkBAIC0yOCw3ICsyOCw1IEBAIFJVTk5JTkcgVEVTVDogZXh0
ZW5zaW9uX3Rlc3RHZXRSZXNvdXJjZUNvbnRlbnRFbmNvZGVkCiB9CiBSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0UmVxdWVzdE5vdGlmaWNhdGlvbgogUmVxdWVzdCBmaW5pc2hlZDogLi4uL2lu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCi1SVU5OSU5HIFRFU1Q6
IGV4dGVuc2lvbl90ZXN0UmVzb3VyY2VDb250ZW50RWRpdGVkCi1jb250ZW50IGZvciByZXNvdXJj
ZSAuLi4vZXh0ZW5zaW9ucy9yZXNvdXJjZXMvYXVkaXRzLXN0eWxlMS5jc3MgZWRpdGVkOiBib2R5
IHsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IH0KIEFsbCB0ZXN0cyBkb25lLgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLW5ldHdvcmsu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29y
ay5odG1sCmluZGV4IGI2YjEzZjAuLmVmMGMyNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtbmV0d29yay5odG1sCkBAIC03Niwz
MCArNzYsNiBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldFJlc291cmNlQ29udGVudEVuY29k
ZWQobmV4dFRlc3QpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0UmVzb3Vy
Y2VDb250ZW50RWRpdGVkKG5leHRUZXN0KQotewotICAgIGZ1bmN0aW9uIG9uQ29udGVudEVkaXRl
ZCh1cmwsIGNvbnRlbnQpCi0gICAgewotICAgICAgICB3ZWJJbnNwZWN0b3IubmV0d29yay5vbkNv
bnRlbnRFZGl0ZWQucmVtb3ZlTGlzdGVuZXIob25Db250ZW50RWRpdGVkKTsKLSAgICAgICAgdmFy
IHVybFRhaWwgPSB1cmwucmVwbGFjZSgvLiooKFwvW14vXSopezN9JCkvLCIuLi4kMSIpOwotICAg
ICAgICBvdXRwdXQoImNvbnRlbnQgZm9yIHJlc291cmNlICIgKyB1cmxUYWlsICsgIiBlZGl0ZWQ6
ICIgKyBjb250ZW50KTsKLSAgICAgICAgbmV4dFRlc3QoKTsKLSAgICB9ICAgCi0gICAgd2ViSW5z
cGVjdG9yLm5ldHdvcmsub25Db250ZW50RWRpdGVkLmFkZExpc3RlbmVyKG9uQ29udGVudEVkaXRl
ZCk7Ci0KLSAgICBmdW5jdGlvbiBmaW5kQW5kRWRpdFJlc291cmNlKCkKLSAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXNvdXJjZXM7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoL2F1ZGl0cy1zdHlsZTEuY3NzJC8udGVzdChyZXNvdXJjZXNbaV0udXJsKSkgewot
ICAgICAgICAgICAgICAgIHJlc291cmNlc1tpXS5zZXRDb250ZW50KCJib2R5IHsgYmFja2dyb3Vu
ZC1jb2xvcjogYmxhY2s7IH0iLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBldmFsdWF0ZU9uRnJvbnRlbmQoIigiICsg
ZmluZEFuZEVkaXRSZXNvdXJjZSArICIpKCkiKTsKLX0KLQogdmFyIHRlc3QgPSBmdW5jdGlvbigp
CiB7CiAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKEluc3BlY3RvclRlc3QucnVuRXh0ZW5z
aW9uVGVzdHMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTc1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3NCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBhcHBsaWNhdGlvbgorVGVzdHMgcmVzb3VyY2Ut
cmVsYXRlZCBtZXRob2RzIG9mIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJCisKKworU3RhcnRl
ZCBleHRlbnNpb24uCitSdW5uaW5nIHRlc3RzLi4uCitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0R2V0QWxsUmVzb3VyY2VzCitwYWdlIHJlc291cmNlczoKK3sKKyAgICAwIDogeworICAgICAg
ICAwIDogeworICAgICAgICAgICAgdXJsIDogLi4uL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwK
KyAgICAgICAgICAgIHR5cGUgOiAiZG9jdW1lbnQiCisgICAgICAgICAgICBnZXRDb250ZW50IDog
PGZ1bmN0aW9uPgorICAgICAgICAgICAgc2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAg
fQorICAgICAgICAxIDogeworICAgICAgICAgICAgdXJsIDogLi4uL2V4dGVuc2lvbnMtdGVzdC5q
cworICAgICAgICAgICAgdHlwZSA6ICJzY3JpcHQiCisgICAgICAgICAgICBnZXRDb250ZW50IDog
PGZ1bmN0aW9uPgorICAgICAgICAgICAgc2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAgICAgICAg
fQorICAgICAgICAyIDogeworICAgICAgICAgICAgdXJsIDogLi4uL3Rlc3Qtc2NyaXB0LmpzCisg
ICAgICAgICAgICB0eXBlIDogInNjcmlwdCIKKyAgICAgICAgICAgIGdldENvbnRlbnQgOiA8ZnVu
Y3Rpb24+CisgICAgICAgICAgICBzZXRDb250ZW50IDogPGZ1bmN0aW9uPgorICAgICAgICB9Cisg
ICAgICAgIDMgOiB7CisgICAgICAgICAgICB1cmwgOiAuLi4vaW5zcGVjdG9yLXRlc3QuanMKKyAg
ICAgICAgICAgIHR5cGUgOiAic2NyaXB0IgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5j
dGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAg
ICAgICAgNCA6IHsKKyAgICAgICAgICAgIHVybCA6IC4uLi9hdWRpdHMtc3R5bGUxLmNzcworICAg
ICAgICAgICAgdHlwZSA6ICJzdHlsZXNoZWV0IgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxm
dW5jdGlvbj4KKyAgICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0K
KyAgICAgICAgNSA6IHsKKyAgICAgICAgICAgIHVybCA6IC4uLi9hYmUucG5nCisgICAgICAgICAg
ICB0eXBlIDogImltYWdlIgorICAgICAgICAgICAgZ2V0Q29udGVudCA6IDxmdW5jdGlvbj4KKyAg
ICAgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9CitS
VU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0UmVzb3VyY2VDb250ZW50Cit7CisgICAgMCA6
ICJmdW5jdGlvbiBfX3Rlc3RfZnVuY3Rpb24oKQoreworfQorCisiCisgICAgMSA6ICIiCit9CitS
VU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25Db250ZW50Q29tbWl0dGVkCitsb2c6IEV4dGVu
c2lvbiBzZXJ2ZXIgZXJyb3I6IE9wZXJhdGlvbiBmYWlsZWQ6IFJlc291cmNlIGlzIG5vdCBlZGl0
YWJsZQorY29udGVudCBjb21taXR0ZWQgZm9yIHJlc291cmNlIGZpbGU6Ly8vdXNyL2xvY2FsL2dv
b2dsZS9ob21lL2Nhc2VxL3NyYy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL3Jlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyAo
dHlwZTogc3R5bGVzaGVldCksIG5ldyBjb250ZW50OiBkaXYudGVzdCB7IHdpZHRoOiAyMjBweDsg
aGVpZ2h0OiA0MnB4OyB9CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0T25SZXNvdXJjZUFk
ZGVkCityZXNvdXJjZSBhZGRlZDoKK3sKKyAgICAwIDogeworICAgICAgICB1cmwgOiBkYXRhOmFw
cGxpY2F0aW9uL2phdmFzY3JpcHQuLi4KKyAgICAgICAgdHlwZSA6ICJzY3JpcHQiCisgICAgICAg
IGdldENvbnRlbnQgOiA8ZnVuY3Rpb24+CisgICAgICAgIHNldENvbnRlbnQgOiA8ZnVuY3Rpb24+
CisgICAgfQorfQorUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdFNldFJlc291cmNlQ29udGVu
dAorZGl2LnRlc3Qgd2lkdGggYWZ0ZXIgc3R5bGVzaGVldCBlZGl0ZWQgKHNob3VsZCBiZSAxMjYp
OiAxMjYKK0FsbCB0ZXN0cyBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzdjMTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApAQCAt
MCwwICsxLDEyMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2F1ZGl0cy1zdHlsZTEuY3Nz
IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJy
ZXNvdXJjZXMvdGVzdC1zY3JpcHQuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0QWxsUmVzb3VyY2VzKG5l
eHRUZXN0KQoreworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlcykKKyAgICB7CisgICAg
ICAgIGZ1bmN0aW9uIGNvbXBhcmVSZXNvdXJjZXMoYSwgYikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHRyaW1VUkwoYS51cmwpLmxvY2FsZUNvbXBhcmUodHJpbVVSTChiLnVybCkpOwor
ICAgICAgICB9CisgICAgICAgIHJlc291cmNlcy5zb3J0KGNvbXBhcmVSZXNvdXJjZXMpOworICAg
ICAgICBvdXRwdXQoInBhZ2UgcmVzb3VyY2VzOiIpOworICAgICAgICBkdW1wT2JqZWN0KEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksIHsgdXJsOiAidXJsIiB9KTsKKyAgICB9
CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5nZXRSZXNvdXJjZXMoY2FsbGJhY2tB
bmROZXh0VGVzdChjYWxsYmFjaywgbmV4dFRlc3QpKTsKK30KKworZnVuY3Rpb24gZXh0ZW5zaW9u
X3J1bldpdGhSZXNvdXJjZShyZWdleHAsIGNhbGxiYWNrKQoreworICAgIGZ1bmN0aW9uIG9uUmVz
b3VyY2VzKHJlc291cmNlcykKKyAgICB7CisgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNv
dXJjZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgaWYgKHJlZ2V4cC50ZXN0KHJlc291cmNl
c1tpXS51cmwpKSB7CisgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNvdXJjZXNbaV0pCisgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgdGhyb3cg
IkZhaWxlZCB0byBmaW5kIGEgcmVzb3VyY2U6ICIgKyByZWdleHAudG9TdHJpbmcoKTsKKyAgICB9
CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5nZXRSZXNvdXJjZXMob25SZXNvdXJj
ZXMpOworfQorCitmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldFJlc291cmNlQ29udGVudChuZXh0
VGVzdCkKK3sKKyAgICBmdW5jdGlvbiBvbkNvbnRlbnQoKQorICAgIHsKKyAgICAgICAgZHVtcE9i
amVjdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTsKKyAgICB9CisgICAg
ZXh0ZW5zaW9uX3J1bldpdGhSZXNvdXJjZSgvdGVzdC1zY3JpcHRcLmpzJC8sIGZ1bmN0aW9uKHJl
c291cmNlKSB7CisgICAgICAgIHJlc291cmNlLmdldENvbnRlbnQoY2FsbGJhY2tBbmROZXh0VGVz
dChvbkNvbnRlbnQsIG5leHRUZXN0KSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lv
bl90ZXN0U2V0UmVzb3VyY2VDb250ZW50KG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKCkKKyAgICB7CisgICAgICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cuZXZhbCgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QtZGl2JykuY2xpZW50V2lkdGgiLCBmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgICAgICAgIG91dHB1dCgiZGl2LnRlc3Qgd2lkdGggYWZ0ZXIgc3R5
bGVzaGVldCBlZGl0ZWQgKHNob3VsZCBiZSAxMjYpOiAiICsgcmVzdWx0KTsKKyAgICAgICAgICAg
IG5leHRUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBleHRlbnNpb25fcnVuV2l0aFJl
c291cmNlKC9hdWRpdHMtc3R5bGUxXC5jc3MkLywgZnVuY3Rpb24ocmVzb3VyY2UpIHsKKyAgICAg
ICAgcmVzb3VyY2Uuc2V0Q29udGVudCgiZGl2LnRlc3QgeyB3aWR0aDogMTI2cHg7IGhlaWdodDog
NDJweDsgfSIsIGZhbHNlLCBjYWxsYmFjayk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGV4dGVu
c2lvbl90ZXN0T25Db250ZW50Q29tbWl0dGVkKG5leHRUZXN0KQoreworICAgIHZhciBleHBlY3Rl
ZF9jb250ZW50ID0gImRpdi50ZXN0IHsgd2lkdGg6IDIyMHB4OyBoZWlnaHQ6IDQycHg7IH0iOwor
CisgICAgZnVuY3Rpb24gb25Db250ZW50Q29tbWl0dGVkKHJlc291cmNlLCBjb250ZW50KQorICAg
IHsKKyAgICAgICAgb3V0cHV0KCJjb250ZW50IGNvbW1pdHRlZCBmb3IgcmVzb3VyY2UgIiArIHRy
aW1VUkwocmVzb3VyY2UudXJsKSArICIgKHR5cGU6ICIgKyByZXNvdXJjZS50eXBlICsgIiksIG5l
dyBjb250ZW50OiAiICsgY29udGVudCk7CisgICAgICAgIGlmICghL2F1ZGl0cy1zdHlsZTFcLmNz
cyQvLnRlc3QocmVzb3VyY2UudXJsKSB8fCBjb250ZW50ICE9PSBleHBlY3RlZF9jb250ZW50KQor
ICAgICAgICAgICAgb3V0cHV0KCJGQUlMOiBzdHJheSBvbkNvbnRlbnRFZGl0ZWQgZXZlbnQiKTsK
KyAgICAgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5vblJlc291cmNlQ29udGVudENv
bW1pdHRlZC5yZW1vdmVMaXN0ZW5lcihvbkNvbnRlbnRDb21taXR0ZWQpOworICAgICAgICBuZXh0
VGVzdCgpOworICAgIH0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93Lm9uUmVzb3Vy
Y2VDb250ZW50Q29tbWl0dGVkLmFkZExpc3RlbmVyKG9uQ29udGVudENvbW1pdHRlZCk7CisgICAg
ZXh0ZW5zaW9uX3J1bldpdGhSZXNvdXJjZSgvYXVkaXRzLXN0eWxlMVwuY3NzJC8sIGZ1bmN0aW9u
KHJlc291cmNlKSB7CisgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQoImRpdi50ZXN0IHsgd2lk
dGg6IDE0MHB4OyBoZWlnaHQ6IDQycHg7IH0iLCBmYWxzZSk7CisgICAgfSk7CisgICAgLy8gVGhl
IG5leHQgc3RlcCBpcyBnb2luZyB0byBwcm9kdWNlIGEgY29uc29sZSBtZXNzYWdlIHRoYXQgd2ls
bCBiZSBsb2dnZWQsIHNvIHN5bmNocm9uaXplIHRoZSBvdXRwdXQgbm93LgorICAgIGV2YWx1YXRl
T25Gcm9udGVuZCgiSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHJlcGx5
KSIsIGZ1bmN0aW9uKCkgeworICAgICAgICBleHRlbnNpb25fcnVuV2l0aFJlc291cmNlKC90ZXN0
LXNjcmlwdFwuanMkLywgZnVuY3Rpb24ocmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHJlc291cmNl
LnNldENvbnRlbnQoImZ1bmN0aW9uIGZ1bmN0aW9uMSgpe30iLCB0cnVlKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGV4dGVuc2lvbl9ydW5XaXRoUmVzb3VyY2UoL2F1ZGl0cy1zdHlsZTFcLmNzcyQv
LCBmdW5jdGlvbihyZXNvdXJjZSkgeworICAgICAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudChl
eHBlY3RlZF9jb250ZW50LCB0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIGV4dGVuc2lvbl90ZXN0T25SZXNvdXJjZUFkZGVkKG5leHRUZXN0KQoreworICAgIGZ1bmN0
aW9uIG9uUmVzb3VyY2VBZGRlZChyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIG91dHB1dCgicmVz
b3VyY2UgYWRkZWQ6Iik7CisgICAgICAgIGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJndW1lbnRzKSwgeyB1cmw6ICJ1cmwiIH0pOworICAgICAgICB3ZWJJbnNwZWN0b3Iu
aW5zcGVjdGVkV2luZG93Lm9uUmVzb3VyY2VBZGRlZC5yZW1vdmVMaXN0ZW5lcihvblJlc291cmNl
QWRkZWQpOworCisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorICAgIHdlYkluc3BlY3Rvci5p
bnNwZWN0ZWRXaW5kb3cub25SZXNvdXJjZUFkZGVkLmFkZExpc3RlbmVyKG9uUmVzb3VyY2VBZGRl
ZCk7CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJhZGRSZXNvdXJjZSgp
Iik7Cit9CisKK2Z1bmN0aW9uIGFkZFJlc291cmNlKCkKK3sKKyAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgc2NyaXB0LnNyYyA9ICJkYXRhOmFw
cGxpY2F0aW9uL2phdmFzY3JpcHQ7ZnVuY3Rpb24gdGVzdF9mdW5jKCl7fSI7CisgICAgZG9jdW1l
bnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIHJlc291cmNlLXJlbGF0ZWQgbWV0aG9k
cyBvZiBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uIEFQSTwvcD4KKzxpbWcgc3JjPSJyZXNvdXJjZXMv
YWJlLnBuZyI+Cis8ZGl2IGlkPSJ0ZXN0LWRpdiIgY2xhc3M9InRlc3QiPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMv
cmVzb3VyY2VzL0FoZW0udHRmIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVz
b3VyY2VzL0FoZW0udHRmCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL3Jlc291cmNlcy90ZXN0LXNjcmlw
dC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL3Jlc291cmNlcy90ZXN0LXNj
cmlwdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk5ZDdmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvcmVzb3VyY2Vz
L3Rlc3Qtc2NyaXB0LmpzCkBAIC0wLDAgKzEsNCBAQAorZnVuY3Rpb24gX190ZXN0X2Z1bmN0aW9u
KCkKK3sKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU4M2IxMjIuLjRhODdmZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MCBAQAorMjAxMS0wOC0yMyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gcHJvdmlk
ZSBhY2Nlc3MgdG8gcGFnZSByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1y
ZXNvdXJjZXMuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25B
UEkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuRXZlbnRT
aW5rSW1wbC5wcm90b3R5cGUuYWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmlu
amVjdGVkRXh0ZW5zaW9uQVBJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVu
c2lvbkFQSS5SZXF1ZXN0SW1wbC5wcm90b3R5cGUuZ2V0Q29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93LnJlc291cmNlRGlz
cGF0Y2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3Bl
Y3RlZFdpbmRvdy5yZXNvdXJjZUNvbnRlbnREaXNwYXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5JbnNwZWN0ZWRXaW5kb3cucHJvdG90eXBlLmV2
YWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3BlY3Rl
ZFdpbmRvdy5wcm90b3R5cGUuZ2V0UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5p
bmplY3RlZEV4dGVuc2lvbkFQSS5JbnNwZWN0ZWRXaW5kb3cucHJvdG90eXBlLmdldFJlc291cmNl
cy5jYWxsYmFja1dyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5z
aW9uQVBJLlJlc291cmNlSW1wbC5wcm90b3R5cGUuZ2V0IHVybCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVzb3VyY2VJbXBsLnByb3RvdHlwZS5nZXQgdHlw
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUmVzb3VyY2VJ
bXBsLnByb3RvdHlwZS5nZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3Rl
ZEV4dGVuc2lvbkFQSS5SZXNvdXJjZUltcGwucHJvdG90eXBlLnNldENvbnRlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU2VydmVyLnByb3RvdHlwZS5fbm90aWZ5UmVzb3VyY2VBZGRlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5ub3RpZnlSZXNvdXJjZUNvbnRlbnRD
b21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUuX21ha2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZS5fb25HZXRQYWdlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9nZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0UmVxdWVzdENvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29u
R2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlLl9vblNldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5pbml0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUuYWRkUmV2aXNpb24pOgorCiAyMDExLTA4LTIzICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByOTM1NzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IGMzZTIwY2UuLjIyZjIyZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCkBAIC00
OCw3ICs0OCw3IEBAIEV2ZW50U2lua0ltcGwucHJvdG90eXBlID0gewogICAgIGFkZExpc3RlbmVy
OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sg
IT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHRocm93IG5ldyAiYWRkTGlzdGVuZXI6IGNhbGxi
YWNrIGlzIG5vdCBhIGZ1bmN0aW9uIjsKKyAgICAgICAgICAgIHRocm93ICJhZGRMaXN0ZW5lcjog
Y2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iOwogICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJz
Lmxlbmd0aCA9PT0gMCkKICAgICAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7
IGNvbW1hbmQ6ICJzdWJzY3JpYmUiLCB0eXBlOiB0aGlzLl90eXBlIH0pOwogICAgICAgICB0aGlz
Ll9saXN0ZW5lcnMucHVzaChjYWxsYmFjayk7CkBAIC0xMTUsNyArMTE1LDYgQEAgZnVuY3Rpb24g
TmV0d29yaygpCiAgICAgdGhpcy5vblJlcXVlc3RGaW5pc2hlZCA9IG5ldyBFdmVudFNpbmsoIm5l
dHdvcmstcmVxdWVzdC1maW5pc2hlZCIsIHJlcXVlc3REaXNwYXRjaCk7CiAgICAgZGVmaW5lRGVw
cmVjYXRlZFByb3BlcnR5KHRoaXMsICJuZXR3b3JrIiwgIm9uRmluaXNoZWQiLCAib25SZXF1ZXN0
RmluaXNoZWQiKTsKICAgICB0aGlzLm9uTmF2aWdhdGVkID0gbmV3IEV2ZW50U2luaygiaW5zcGVj
dGVkVVJMQ2hhbmdlZCIpOwotICAgIHRoaXMub25Db250ZW50RWRpdGVkID0gbmV3IEV2ZW50U2lu
aygicmVzb3VyY2UtY29udGVudC1lZGl0ZWQiKTsKIH0KIAogTmV0d29yay5wcm90b3R5cGUgPSB7
CkBAIC0xNTEsNyArMTUwLDcgQEAgUmVxdWVzdEltcGwucHJvdG90eXBlID0gewogICAgICAgICB7
CiAgICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5lbmNvZGlu
Zyk7CiAgICAgICAgIH0KLSAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29t
bWFuZDogImdldFJlc291cmNlQ29udGVudCIsIGlkOiB0aGlzLl9pZCB9LCBjYWxsYmFjayAmJiBj
YWxsYmFja1dyYXBwZXIpOworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBj
b21tYW5kOiAiZ2V0UmVxdWVzdENvbnRlbnQiLCBpZDogdGhpcy5faWQgfSwgY2FsbGJhY2sgJiYg
Y2FsbGJhY2tXcmFwcGVyKTsKICAgICB9CiB9OwogCkBAIC0zNTgsNiArMzU3LDE2IEBAIEF1ZGl0
UmVzdWx0Tm9kZS5wcm90b3R5cGUgPSB7CiAKIGZ1bmN0aW9uIEluc3BlY3RlZFdpbmRvdygpCiB7
CisgICAgZnVuY3Rpb24gcmVzb3VyY2VEaXNwYXRjaChtZXNzYWdlKQorICAgIHsKKyAgICAgICAg
dGhpcy5fZmlyZShuZXcgUmVzb3VyY2UobWVzc2FnZS5hcmd1bWVudHNbMF0pKTsKKyAgICB9Cisg
ICAgZnVuY3Rpb24gcmVzb3VyY2VDb250ZW50RGlzcGF0Y2gobWVzc2FnZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2ZpcmUobmV3IFJlc291cmNlKG1lc3NhZ2UuYXJndW1lbnRzWzBdKSwgbWVzc2Fn
ZS5hcmd1bWVudHNbMV0pOworICAgIH0KKyAgICB0aGlzLm9uUmVzb3VyY2VBZGRlZCA9IG5ldyBF
dmVudFNpbmsoInJlc291cmNlLWFkZGVkIiwgcmVzb3VyY2VEaXNwYXRjaCk7CisgICAgdGhpcy5v
blJlc291cmNlQ29udGVudENvbW1pdHRlZCA9IG5ldyBFdmVudFNpbmsoInJlc291cmNlLWNvbnRl
bnQtY29tbWl0dGVkIiwgcmVzb3VyY2VDb250ZW50RGlzcGF0Y2gpOwogfQogCiBJbnNwZWN0ZWRX
aW5kb3cucHJvdG90eXBlID0gewpAQCAtMzc2LDkgKzM4NSw1NSBAQCBJbnNwZWN0ZWRXaW5kb3cu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FsbGJhY2sodmFsdWUsIHJlc3VsdC5pc0V4Y2Vw
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGV4dGVuc2lvblNlcnZlci5zZW5kUmVx
dWVzdCh7IGNvbW1hbmQ6ICJldmFsdWF0ZU9uSW5zcGVjdGVkUGFnZSIsIGV4cHJlc3Npb246IGV4
cHJlc3Npb24gfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tXcmFwcGVyKTsKKyAgICB9LAorCisgICAg
Z2V0UmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9u
IHdyYXBSZXNvdXJjZShyZXNvdXJjZURhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBuZXcgUmVzb3VyY2UocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlv
biBjYWxsYmFja1dyYXBwZXIocmVzb3VyY2VzKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxs
YmFjayhyZXNvdXJjZXMubWFwKHdyYXBSZXNvdXJjZSkpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAiZ2V0UGFnZVJlc291
cmNlcyIgfSwgY2FsbGJhY2sgJiYgY2FsbGJhY2tXcmFwcGVyKTsKICAgICB9CiB9CiAKK2Z1bmN0
aW9uIFJlc291cmNlSW1wbChyZXNvdXJjZURhdGEpCit7CisgICAgdGhpcy5fdXJsID0gcmVzb3Vy
Y2VEYXRhLnVybAorICAgIHRoaXMuX3R5cGUgPSByZXNvdXJjZURhdGEudHlwZTsKK30KKworUmVz
b3VyY2VJbXBsLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgdXJsKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl91cmw7CisgICAgfSwKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl90eXBlOworICAgIH0sCisKKyAgICBnZXRDb250ZW50OiBmdW5jdGlvbihj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrV3JhcHBlcihyZXNwb25z
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2UuY29udGVudCwgcmVz
cG9uc2UuZW5jb2RpbmcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvblNl
cnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJnZXRSZXNvdXJjZUNvbnRlbnQiLCB1cmw6IHRo
aXMuX3VybCB9LCBjYWxsYmFjayAmJiBjYWxsYmFja1dyYXBwZXIpOworICAgIH0sCisKKyAgICBz
ZXRDb250ZW50OiBmdW5jdGlvbihjb250ZW50LCBjb21taXQsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJzZXRS
ZXNvdXJjZUNvbnRlbnQiLCB1cmw6IHRoaXMuX3VybCwgY29udGVudDogY29udGVudCwgY29tbWl0
OiBjb21taXQgfSwgY2FsbGJhY2spOworICAgIH0KK307CisKIGZ1bmN0aW9uIFRpbWVsaW5lSW1w
bCgpCiB7CiAgICAgdGhpcy5vbkV2ZW50UmVjb3JkZWQgPSBuZXcgRXZlbnRTaW5rKCJ0aW1lbGlu
ZS1ldmVudC1yZWNvcmRlZCIpOwpAQCAtNDU1LDkgKzUxMCwxOCBAQCBmdW5jdGlvbiBwb3B1bGF0
ZUludGVyZmFjZUNsYXNzKGludGVyZmFjZSwgaW1wbGVtZW50YXRpb24pCiAgICAgZm9yICh2YXIg
bWVtYmVyIGluIGltcGxlbWVudGF0aW9uKSB7CiAgICAgICAgIGlmIChtZW1iZXIuY2hhckF0KDAp
ID09PSAiXyIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdmFyIHZhbHVlID0gaW1w
bGVtZW50YXRpb25bbWVtYmVyXTsKLSAgICAgICAgaW50ZXJmYWNlW21lbWJlcl0gPSB0eXBlb2Yg
dmFsdWUgPT09ICJmdW5jdGlvbiIgPyBiaW5kKHZhbHVlLCBpbXBsZW1lbnRhdGlvbikKLSAgICAg
ICAgICAgIDogaW50ZXJmYWNlW21lbWJlcl0gPSBpbXBsZW1lbnRhdGlvblttZW1iZXJdOworICAg
ICAgICB2YXIgZGVzY3JpcHRvciA9IG51bGw7CisgICAgICAgIC8vIFRyYXZlcnNlIHByb3RvdHlw
ZSBjaGFpbiB1bnRpbCB3ZSBmaW5kIHRoZSBvd25lci4KKyAgICAgICAgZm9yICh2YXIgb3duZXIg
PSBpbXBsZW1lbnRhdGlvbjsgb3duZXIgJiYgIWRlc2NyaXB0b3I7IG93bmVyID0gb3duZXIuX19w
cm90b19fKQorICAgICAgICAgICAgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Iob3duZXIsIG1lbWJlcik7CisgICAgICAgIGlmICghZGVzY3JpcHRvcikKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IudmFsdWUgPT09
ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBpbnRlcmZhY2VbbWVtYmVyXSA9IGJpbmQoZGVzY3Jp
cHRvci52YWx1ZSwgaW1wbGVtZW50YXRpb24pOworICAgICAgICBlbHNlIGlmICh0eXBlb2YgZGVz
Y3JpcHRvci5nZXQgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBpbnRlcmZhY2UuX19kZWZp
bmVHZXR0ZXJfXyhtZW1iZXIsIGJpbmQoZGVzY3JpcHRvci5nZXQsIGltcGxlbWVudGF0aW9uKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnRlcmZh
Y2UsIG1lbWJlciwgZGVzY3JpcHRvcik7CiAgICAgfQogfQogCkBAIC00OTIsNiArNTU2LDcgQEAg
dmFyIEV4dGVuc2lvblNpZGViYXJQYW5lID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKEV4dGVuc2lv
blNpZGViYXJQYW5lSW1wbCk7CiB2YXIgUGFuZWwgPSBkZWNsYXJlSW50ZXJmYWNlQ2xhc3MoUGFu
ZWxJbXBsKTsKIHZhciBQYW5lbFdpdGhTaWRlYmFyID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKFBh
bmVsV2l0aFNpZGViYXJJbXBsKTsKIHZhciBSZXF1ZXN0ID0gZGVjbGFyZUludGVyZmFjZUNsYXNz
KFJlcXVlc3RJbXBsKTsKK3ZhciBSZXNvdXJjZSA9IGRlY2xhcmVJbnRlcmZhY2VDbGFzcyhSZXNv
dXJjZUltcGwpOwogdmFyIFRpbWVsaW5lID0gZGVjbGFyZUludGVyZmFjZUNsYXNzKFRpbWVsaW5l
SW1wbCk7CiAKIHZhciBleHRlbnNpb25TZXJ2ZXIgPSBuZXcgRXh0ZW5zaW9uU2VydmVyQ2xpZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uU2VydmVyLmpzCmluZGV4IGMyMzYxOGUuLjA4NmIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC00OCw5
ICs0OCwxMiBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyID0gZnVuY3Rpb24oKQogICAg
IHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiY3JlYXRlU2lkZWJhclBhbmUiLCB0aGlzLl9vbkNyZWF0
ZVNpZGViYXJQYW5lLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZXZh
bHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9vbkV2YWx1YXRlT25JbnNwZWN0ZWRQYWdlLmJp
bmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZ2V0SEFSIiwgdGhpcy5fb25H
ZXRIQVIuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRQYWdlUmVz
b3VyY2VzIiwgdGhpcy5fb25HZXRQYWdlUmVzb3VyY2VzLmJpbmQodGhpcykpOworICAgIHRoaXMu
X3JlZ2lzdGVySGFuZGxlcigiZ2V0UmVxdWVzdENvbnRlbnQiLCB0aGlzLl9vbkdldFJlcXVlc3RD
b250ZW50LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZ2V0UmVzb3Vy
Y2VDb250ZW50IiwgdGhpcy5fb25HZXRSZXNvdXJjZUNvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAg
dGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJsb2ciLCB0aGlzLl9vbkxvZy5iaW5kKHRoaXMpKTsKICAg
ICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInJlbG9hZCIsIHRoaXMuX29uUmVsb2FkLmJpbmQodGhp
cykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0UmVzb3VyY2VDb250ZW50IiwgdGhp
cy5fb25TZXRSZXNvdXJjZUNvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJI
YW5kbGVyKCJzZXRTaWRlYmFySGVpZ2h0IiwgdGhpcy5fb25TZXRTaWRlYmFySGVpZ2h0LmJpbmQo
dGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0U2lkZWJhckNvbnRlbnQiLCB0
aGlzLl9vblNldFNpZGViYXJDb250ZW50LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVy
SGFuZGxlcigic2V0U2lkZWJhclBhZ2UiLCB0aGlzLl9vblNldFNpZGViYXJQYWdlLmJpbmQodGhp
cykpOwpAQCAtMTE3LDkgKzEyMCwxNSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2NsaWVudE9iamVjdHNbYXVkaXRSdW4u
aWRdOwogICAgIH0sCiAKLSAgICBub3RpZnlSZXNvdXJjZUNvbnRlbnRFZGl0ZWQ6IGZ1bmN0aW9u
KHVybCwgY29udGVudCkKKyAgICBfbm90aWZ5UmVzb3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKCJyZXNvdXJjZS1jb250ZW50
LWVkaXRlZCIsIHVybCwgY29udGVudCk7CisgICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LmRh
dGE7CisgICAgICAgIHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oInJlc291cmNlLWFkZGVkIiwgdGhp
cy5fbWFrZVJlc291cmNlKHJlc291cmNlKSk7CisgICAgfSwKKworICAgIG5vdGlmeVJlc291cmNl
Q29udGVudENvbW1pdHRlZDogZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQpCisgICAgeworICAg
ICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKCJyZXNvdXJjZS1jb250ZW50LWNvbW1pdHRlZCIs
IHRoaXMuX21ha2VSZXNvdXJjZShyZXNvdXJjZSksIGNvbnRlbnQpOwogICAgIH0sCiAKICAgICBf
bm90aWZ5UmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTMxMCw3ICszMTksMjYg
QEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiBoYXJMb2c7CiAgICAgfSwKIAotICAgIF9vbkdldFJlc291cmNlQ29udGVudDogZnVuY3Rp
b24obWVzc2FnZSwgcG9ydCkKKyAgICBfbWFrZVJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB1cmw6IHJlc291cmNlLnVybCwK
KyAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLnRvU3RyaW5nKHJl
c291cmNlLnR5cGUpCisgICAgICAgIH07CisgICAgfSwKKworICAgIF9vbkdldFBhZ2VSZXNvdXJj
ZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZXMgPSBbXTsKKyAgICAg
ICAgZnVuY3Rpb24gcHVzaFJlc291cmNlRGF0YShyZXNvdXJjZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVzb3VyY2VzLnB1c2godGhpcy5fbWFrZVJlc291cmNlKHJlc291cmNlKSk7CisgICAg
ICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291
cmNlcyhwdXNoUmVzb3VyY2VEYXRhLmJpbmQodGhpcykpOworICAgICAgICByZXR1cm4gcmVzb3Vy
Y2VzOworICAgIH0sCisKKyAgICBfZ2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihyZXNvdXJj
ZSwgbWVzc2FnZSwgcG9ydCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG9uQ29udGVudEF2YWls
YWJsZShjb250ZW50LCBlbmNvZGVkKQogICAgICAgICB7CkBAIC0zMjAsMTAgKzM0OCwzNiBAQCBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH07
CiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaENhbGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBw
b3J0LCByZXNwb25zZSk7CiAgICAgICAgIH0KKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRl
bnQob25Db250ZW50QXZhaWxhYmxlLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfb25HZXRS
ZXF1ZXN0Q29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9ydCkKKyAgICB7CiAgICAgICAgIHZh
ciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdEJ5SWQobWVzc2FnZS5pZCk7CiAgICAgICAgIGlmICgh
cmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNz
YWdlLmlkKTsKLSAgICAgICAgcmVxdWVzdC5yZXF1ZXN0Q29udGVudChvbkNvbnRlbnRBdmFpbGFi
bGUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2dldFJlc291cmNlQ29udGVudChyZXF1ZXN0
LCBtZXNzYWdlLCBwb3J0KTsKKyAgICB9LAorCisgICAgX29uR2V0UmVzb3VyY2VDb250ZW50OiBm
dW5jdGlvbihtZXNzYWdlLCBwb3J0KQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKG1lc3NhZ2UudXJsKTsK
KyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMu
RV9OT1RGT1VORChtZXNzYWdlLnVybCk7CisgICAgICAgIHRoaXMuX2dldFJlc291cmNlQ29udGVu
dChyZXNvdXJjZSwgbWVzc2FnZSwgcG9ydCk7CisgICAgfSwKKworICAgIF9vblNldFJlc291cmNl
Q29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9ydCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9u
IGNhbGxiYWNrV3JhcHBlcihlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHJlc3Bv
bnNlID0gZXJyb3IgPyB0aGlzLl9zdGF0dXMuRV9GQUlMRUQoZXJyb3IpIDogdGhpcy5fc3RhdHVz
Lk9LKCk7CisgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaENhbGxiYWNrKG1lc3NhZ2UucmVxdWVz
dElkLCBwb3J0LCByZXNwb25zZSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKG1lc3NhZ2UudXJs
KTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0
dXMuRV9OT1RGT1VORChtZXNzYWdlLnVybCk7CisgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQo
bWVzc2FnZS5jb250ZW50LCBtZXNzYWdlLmNvbW1pdCwgY2FsbGJhY2tXcmFwcGVyLmJpbmQodGhp
cykpOwogICAgIH0sCiAKICAgICBfcmVxdWVzdElkOiBmdW5jdGlvbihyZXF1ZXN0KQpAQCAtMzc1
LDYgKzQyOSw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBUaGUgbmV0d29ya01hbmFnZXIgaXMgbm9ybWFsbHkgY3JlYXRlZCBhZnRlciB0
aGUgRXh0ZW5zaW9uU2VydmVyIGlzIGNvbnN0cnVjdGVkLCBidXQgYmVmb3JlIGluaXRFeHRlbnNp
b25zKCkgaXMgY2FsbGVkLgogICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNv
dXJjZUZpbmlzaGVkLCB0aGlzLl9ub3RpZnlSZXF1ZXN0RmluaXNoZWQsIHRoaXMpOwogICAgICAg
ICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5JbnNwZWN0ZWRVUkxDaGFuZ2VkLCB0
aGlzLl9pbnNwZWN0ZWRVUkxDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fbm90aWZ5UmVzb3VyY2VBZGRl
ZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50VHlwZXMuVGltZWxpbmVF
dmVudFJlY29yZGVkLCB0aGlzLl9hZGRSZWNvcmRUb1RpbWVsaW5lLCB0aGlzKTsKIAogICAgICAg
ICBJbnNwZWN0b3JFeHRlbnNpb25SZWdpc3RyeS5nZXRFeHRlbnNpb25zQXN5bmMoKTsKQEAgLTUw
MSw2ICs1NTYsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLl9zdGF0dXNlcyA9CiAg
ICAgRV9CQURBUkdUWVBFOiAiSW52YWxpZCB0eXBlIGZvciBhcmd1bWVudCAlczogZ290ICVzLCBl
eHBlY3RlZCAlcyIsCiAgICAgRV9OT1RGT1VORDogIk9iamVjdCBub3QgZm91bmQ6ICVzIiwKICAg
ICBFX05PVFNVUFBPUlRFRDogIk9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBvcGVy
YXRpb246ICVzIiwKKyAgICBFX0ZBSUxFRDogIk9wZXJhdGlvbiBmYWlsZWQ6ICVzIgogfQogCiBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU3RhdHVzID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggOWRmNmEzNS4uMjIyMTIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
CkBAIC04MzMsNyArODMzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBpZiAoIXJlc3RvcmluZ0hpc3RvcnkpCiAgICAgICAgICAgICB0aGlzLl9wZXJz
aXN0UmV2aXNpb24oKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3Rp
ZnlSZXNvdXJjZUNvbnRlbnRFZGl0ZWQodGhpcy51cmwsIG5ld0NvbnRlbnQpOworICAgICAgICBX
ZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVJlc291cmNlQ29udGVudENvbW1pdHRl
ZCh0aGlzLCBuZXdDb250ZW50KTsKICAgICB9LAogCiAgICAgX3BlcnNpc3RSZXZpc2lvbjogZnVu
Y3Rpb24oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>