<?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>170310</bug_id>
          
          <creation_ts>2017-03-30 16:07:56 -0700</creation_ts>
          <short_desc>Modernize BuildbotSyncer and BuildbotTriggerable</short_desc>
          <delta_ts>2017-04-06 00:04:14 -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>Perf Dashboard</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293011</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-30 16:07:56 -0700</bug_when>
    <thetext>Use arrow functions and other modern idioms in BuildbotSyncer and BuildbotTriggerable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293012</commentid>
    <comment_count>1</comment_count>
      <attachid>305922</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-30 16:10:53 -0700</bug_when>
    <thetext>Created attachment 305922
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293013</commentid>
    <comment_count>2</comment_count>
      <attachid>305922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 16:16:22 -0700</bug_when>
    <thetext>Comment on attachment 305922
Cleanup

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293067</commentid>
    <comment_count>3</comment_count>
      <attachid>305922</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-30 19:11:33 -0700</bug_when>
    <thetext>Comment on attachment 305922
Cleanup

Clearing flags on attachment: 305922

Committed r214650: &lt;http://trac.webkit.org/changeset/214650&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293068</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-30 19:11:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294817</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-06 00:04:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/31472397&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305922</attachid>
            <date>2017-03-30 16:10:53 -0700</date>
            <delta_ts>2017-03-30 19:11:33 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-170310-20170330161052.patch</filename>
            <type>text/plain</type>
            <size>25926</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjM0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBkN2Q4MmFhOTZlZjI5YjExODU1YmVjYjgzMmQ4NTkzMzJlMmJhYzU3Li4yMWM2Mzk5Yzc2
OWY3ZDM2YzgxYzE5ZWM1OGJkZGUyM2ExNDljMGM4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNy0wMy0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAorICAgICAgICBNb2Rlcm5pemUgQnVpbGRib3RTeW5jZXIgYW5kIEJ1aWxk
Ym90VHJpZ2dlcmFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MDMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vZGVybml6ZWQgdGhlIGNvZGUgdG8gdXNlIGFycm93IGZ1bmN0aW9ucyBhbmQgb3Ro
ZXIgbW9kZXJuIGlkb21zIGluIEVTMjAxNi4KKworICAgICAgICAqIFJlYWRNZS5tZDogQWRkZWQg
aW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBydW4gdGVzdHMsIGFuZCBtb3ZlZCB0aGUgc3RlcHMgdG8g
Y29uZmlndXJlIHBvc3RncmVzCisgICAgICAgIGFib3ZlIHRoZSBzdGVwcyB0byBjb25maWd1cmUg
QXBhY2hlIHNpbmNlIG9ubHkgdGhlIGZvcm1lciBpcyBuZWVkZWQgdG8gcnVuIHRlc3RzLgorICAg
ICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qczoKKyAgICAgICAgKiB0b29scy9qcy9i
dWlsZGJvdC10cmlnZ2VyYWJsZS5qczoKKworMjAxNy0wMy0zMCAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZlcnQgYW4gZXJyb25vdXNseSBjaGFuZ2UgaW4g
dGhlIHByZXZpb3VzIGNvbW1pdC4KIAogICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2Jh
c2UuanM6CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvUmVhZE1lLm1kIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL1JlYWRNZS5tZAppbmRleCA2Y2ZjMGUzOGZlZDBmNWQ2
M2YwODdkNjk1OWFkMjY4ODNhMDAzNjc2Li5mMDJjNzM4YThmY2FhNDM1MzA5ODM0ZjIyMTMwMzQy
ZGI4ZDMwZmM3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvUmVhZE1lLm1k
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9SZWFkTWUubWQKQEAgLTM3LDYgKzM3LDQ2
IEBAIFRoZW4gcnVuIGB0b29scy9yZW1vdGUtY2FjaGUtc2VydmVyLnB5IHN0YXJ0YC4gVGhpcyBs
YXVuY2hlcyBhIGh0dHBkIHNlcnZlciBvbiBwCiBUaGUgc2NyaXB0IGNhY2hlcyByZW1vdGUgc2Vy
dmVyJ3MgcmVzcG9uc2VzIHVuZGVyIGBwdWJsaWMvZGF0YS9yZW1vdGUtY2FjaGVgIGFuZCBuZXZl
ciByZXZhbGlkYXRlcyB0aGVtICh0byBhbGxvdyBvZmZsaW5lIHdvcmspLgogSWYgeW91IG5lZWRl
ZCB0aGUgbGF0ZXN0IGNvbnRlbnQsIGRlbGV0ZSBjYWNoZXMgc3RvcmVkIGluIHRoaXMgZGlyZWN0
b3J5IGJ5IHJ1bm5pbmcgYHRvb2xzL3JlbW90ZS1jYWNoZS1zZXJ2ZXIucHkgcmVzZXRgLgogCisj
IyBSdW5uaW5nIFRlc3RzCisKK1RoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiB0ZXN0cyBpbiBkaXJl
Y3RvcmllcyBvZiB0aGUgc2FtZSBuYW1lOiBgdW5pdC10ZXN0c2AsIGBzZXJ2ZXIgdGVzdHNgLCBh
bmQgYGJyb3dzZXItdGVzdHNgLgorCisgLSBgdW5pdC10ZXN0c2A6IFRoZXNlIHRlc3RzIHZhcmlv
dXMgbW9kZWxzIGFuZCBjb21tb24gSlMgY29kZSB1c2VkIGluIHYzIFVJIGFuZCB0b29scy4gVGhl
eSBtb2NrIEpTT04gQVBJcyBhbmQgbW9kZWwgb2JqZWN0LgorIC0gYHNlcnZlci10ZXN0c2A6IFNl
cnZlciB0ZXN0cyB1c2UgYSByZWFsIEFwYWNoZSBzZXJ2ZXIgaW4gYWNjb3JkYW5jZSB3aXRoIGB0
ZXN0U2VydmVyYCBpbiBgY29uZmlnLmpzb25gIGFuZCBhIFBvc3RncmVzIGRhdGFiYXNlIGJ5IHRo
ZSBuYW1lIG9mIGB0ZXN0RGF0YWJhc2VOYW1lYCBzcGVjaWZpZWQgaW4gYGNvbmZpZy5qc29uYC4g
VGhleSdyZSBmdW5jdGlvbmFsIHRlc3RzIGFuZCBtYXkgdGVzdCBib3RoIHRoZSBiYWNrZW5kIGRh
dGFiYXNlIHNjaGVtYSwgUEhQLCBhbmQgY29ycmVzcG9uZGluZyBmcm9udC1lbmQgY29kZSBhbHRo
b3VnaCBtYW55IG9mIHRoZW0gZGlyZWN0bHkgcXVlcmllcyBhbmQgbW9kaWZpZXMgdGhlIGRhdGFi
YXNlLgorIC0gYGJyb3dzZXItdGVzdHNgOiBUaGVzZSBhcmUgdGVzdHMgdG8gYmUgcmFuIGluc2lk
ZSBhIFdlYiBicm93c2VyLCBhbmQgdGVzdHMgdjMgVUkncyBpbnRlcmFjdGlvbiB3aXRoIGJyb3dz
ZXIncyBET00gQVBJLgorCitUbyBydW4gYHVuaXQtdGVzdHNgIGFuZCBgc2VydmVyLXRlc3RzYCwg
c2ltcGx5IHJ1biBgLi90b29scy9ydW4tdGVzdHMucHlgIGFmdGVyIGluc3RhbGxpbmcgZGVwZW5k
ZW5jaWVzIGFuZCBjb25maWd1cmluZyB0aGUgUG9zdGdyZVNRTC4KK1RvIHJ1biBgYnJvd3Nlci10
ZXN0c2AsIG9wZW4gYGJyb3dzZXItdGVzdHMvaW5kZXguaHRtbGAgaW5zaWRlIGEgV2ViIGJyb3dz
ZXIuCisKKyMjIENvbmZpZ3VyaW5nIFBvc3RncmVTUUwKKworUnVuIHRoZSBmb2xsb3dpbmcgY29t
bWFuZCB0byBzZXR1cCBhIFBvc3RncmVzIHNlcnZlciBhdCBgL1ZvbHVtZXMvRGF0YS9wZXJmLndl
YmtpdC5vcmcvUG9zdGdyZXNTUUxgIChvciB3aGVyZXZlciB5b3UnZCBwcmVmZXIpOgorYHB5dGhv
biAuL3Rvb2xzL3NldHVwLWRhdGFiYXNlLnB5IC9Wb2x1bWVzL0RhdGEvcGVyZi53ZWJraXQub3Jn
L1Bvc3RncmVzU1FMYAorCitJdCBhdXRvbWF0aWNhbGx5IHJldHJpZXZlcyB0aGUgZGF0YWJhc2Ug
bmFtZSwgdGhlIHVzZXJuYW1lLCBhbmQgdGhlIHBhc3N3b3JkIGZyb20gYGNvbmZpZy5qc29uYC4K
KworIyMjIFN0YXJ0aW5nIFBvc3RncmVTUUwKKworVGhlIHNldHVwIHNjcmlwdCBhdXRvbWF0aWNh
bGx5IHN0YXJ0cyB0aGUgZGF0YWJhc2UgYnV0IHlvdSBtYXkgbmVlZCB0byBydW4gdGhlIGZvbGxv
d2luZyBjb21tYW5kIHRvIG1hbnVhbGx5IHN0YXJ0IHRoZSBkYXRhYmFzZSBhZnRlciByZWJvb3Qu
CisKKy0gU3RhcnRpbmcgdGhlIGRhdGFiYXNlOiBgL0FwcGxpY2F0aW9ucy9TZXJ2ZXIuYXBwL0Nv
bnRlbnRzL1NlcnZlclJvb3QvdXNyL2Jpbi9wZ19jdGwgLUQgL1ZvbHVtZXMvRGF0YS9wZXJmLndl
YmtpdC5vcmcvUG9zdGdyZXNTUUwgLWwgL1ZvbHVtZXMvRGF0YS9wZXJmLndlYmtpdC5vcmcvUG9z
dGdyZXNTUUwvbG9nZmlsZSAtbyAiLWsgL1ZvbHVtZXMvRGF0YS9wZXJmLndlYmtpdC5vcmcvUG9z
dGdyZXNTUUwiIHN0YXJ0YAorLSBTdG9wcGluZyB0aGUgZGF0YWJhc2U6IGAvQXBwbGljYXRpb25z
L1NlcnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2N0bCAtRCAvVm9sdW1l
cy9EYXRhL3BlcmYud2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTCAtbCAvVm9sdW1lcy9EYXRhL3BlcmYu
d2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTC9sb2dmaWxlIC1vICItayAvVm9sdW1lcy9EYXRhL3BlcmYu
d2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTCIgc3RvcGAKKworIyMjIEluaXRpYWxpemluZyB0aGUgRGF0
YWJhc2UKKworUnVuIGBkYXRhYmFzZS9pbml0LWRhdGFiYXNlLnNxbGAgaW4gcHNxbCBhcyBgd2Vi
a2l0LXBlcmYtZGItdXNlcmA6CitgL0FwcGxpY2F0aW9ucy9TZXJ2ZXIuYXBwL0NvbnRlbnRzL1Nl
cnZlclJvb3QvdXNyL2Jpbi9wc3FsIHdlYmtpdC1wZXJmLWRiIC1oIGxvY2FsaG9zdCAtLXVzZXJu
YW1lIHdlYmtpdC1wZXJmLWRiLXVzZXIgLWYgaW5pdC1kYXRhYmFzZS5zcWxgCisKKyMjIyBNYWtp
bmcgYSBCYWNrdXAgYW5kIFJlc3RvcmluZworCitVc2UgYHBnX2R1bXBgIGFuZCBgcGdfcmVzdG9y
ZWAgdG8gYmFja3VwIGFuZCByZXN0b3JlIHRoZSBkYXRhYmFzZS4gSWYgeW91J3JlIHJlcGxpY2F0
aW5nIHRoZSBwcm9kdWN0aW9uIGRhdGFiYXNlIGZvciBkZXZlbG9wbWVudCBwdXJwb3NlcywgeW91
IG1heSBjb25zaWRlciBleGNsdWRpbmcgYHJ1bl9pdGVyYXRpb25zYCB0YWJsZSwgd2hpY2ggdGFr
ZXMgdXAgMi8zIG9mIHRoZSBzdG9yYWdlIHNwYWNlLCB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhl
IGRhdGFiYXNlIGZvciB5b3VyIGxvY2FsIGNvcHkuIEFkanVzdCB0aGUgbnVtYmVyIG9mIGNvbmN1
cnJlbnQgcHJvY2Vzc2VzIHRvIHVzZSBieSBgLS1qb2JzYCBhbmQgYWRqdXN0IHRoZSBjb21wcmVz
c2lvbiBsZXZlbCBieSBgLS1jb21wcmVzc2AgKDAgaXMgbm8gY29tcHJlc3Npb24sIDkgaXMgbW9z
dCBjb21wcmVzc2VkKS4KKworLSBNYWtpbmcgdGhlIGZ1bGxiYWNrdXAgb2YgdGhlIGRhdGFiYXNl
OiBgL0FwcGxpY2F0aW9ucy9TZXJ2ZXIuYXBwL0NvbnRlbnRzL1NlcnZlclJvb3QvdXNyL2Jpbi9w
Z19kdW1wIC1oIGxvY2FsaG9zdCB3ZWJraXQtcGVyZi1kYiAtLWZvcm1hdD1kaXJlY3RvcnkgLS1m
aWxlPTxwYXRoIHRvIGJhY2t1cCBkaXJlY3Rvcnk+IC0tam9icz00IC0tbm8tb3duZXIgLS1jb21w
cmVzcz03YAorCistIE1ha2luZyBhbiBhYnJpZGdlZCBiYWNrdXAgd2l0aG91dCBgcnVuX2l0ZXJh
dGlvbnNgIHRhYmxlOiBgL0FwcGxpY2F0aW9ucy9TZXJ2ZXIuYXBwL0NvbnRlbnRzL1NlcnZlclJv
b3QvdXNyL2Jpbi9wZ19kdW1wIC1oIGxvY2FsaG9zdCB3ZWJraXQtcGVyZi1kYiAtLWZvcm1hdD1k
aXJlY3RvcnkgLS1maWxlPTxwYXRoIHRvIGJhY2t1cCBkaXJlY3Rvcnk+IC0tam9icz00IC0tbm8t
b3duZXIgLS1jb21wcmVzcz03IC0tZXhjbHVkZS10YWJsZT1ydW5faXRlcmF0aW9uc2AKKworLSBS
ZXN0b3JpbmcgdGhlIGRhdGFiYXNlOiBgL0FwcGxpY2F0aW9ucy9TZXJ2ZXIuYXBwL0NvbnRlbnRz
L1NlcnZlclJvb3QvdXNyL2Jpbi9wZ19yZXN0b3JlIC0tZm9ybWF0PWRpcmVjdG9yeSAtLWpvYnM9
NCAtLW5vLW93bmVyIC0taG9zdCBsb2NhbGhvc3QgLS11c2VybmFtZT13ZWJraXQtcGVyZi1kYi11
c2VyIDxwYXRoIHRvIGJhY2t1cCBkaXJlY3Rvcnk+IC0tZGJuYW1lPXdlYmtpdC1wZXJmLWRiYAor
ICAgIAogIyMgQ29uZmlndXJpbmcgQXBhY2hlCiAKICMjIyBJbnN0cnVjdGlvbnMgaWYgeW91J3Jl
IHVzaW5nIFNlcnZlci5hcHAKQEAgLTEwOSwzNSArMTQ5LDYgQEAgQXV0aFVzZXJGaWxlICI8UmVh
bG0+IgogUmVxdWlyZSB2YWxpZC11c2VyCiBgYGAKIAotIyMgQ29uZmlndXJpbmcgUG9zdGdyZVNR
TAotCi1SdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHNldHVwIGEgUG9zdGdyZXMgc2VydmVy
IGF0IGAvVm9sdW1lcy9EYXRhL3BlcmYud2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTGAgKG9yIHdoZXJl
dmVyIHlvdSdkIHByZWZlcik6Ci1gcHl0aG9uIC4vdG9vbHMvc2V0dXAtZGF0YWJhc2UucHkgL1Zv
bHVtZXMvRGF0YS9wZXJmLndlYmtpdC5vcmcvUG9zdGdyZXNTUUxgCi0KLUl0IGF1dG9tYXRpY2Fs
bHkgcmV0cmlldmVzIHRoZSBkYXRhYmFzZSBuYW1lLCB0aGUgdXNlcm5hbWUsIGFuZCB0aGUgcGFz
c3dvcmQgZnJvbSBgY29uZmlnLmpzb25gLgotCi0jIyMgU3RhcnRpbmcgUG9zdGdyZVNRTAotCi1U
aGUgc2V0dXAgc2NyaXB0IGF1dG9tYXRpY2FsbHkgc3RhcnRzIHRoZSBkYXRhYmFzZSBidXQgeW91
IG1heSBuZWVkIHRvIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gbWFudWFsbHkgc3RhcnQg
dGhlIGRhdGFiYXNlIGFmdGVyIHJlYm9vdC4KLQotLSBTdGFydGluZyB0aGUgZGF0YWJhc2U6IGAv
QXBwbGljYXRpb25zL1NlcnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2N0
bCAtRCAvVm9sdW1lcy9EYXRhL3BlcmYud2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTCAtbCAvVm9sdW1l
cy9EYXRhL3BlcmYud2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTC9sb2dmaWxlIC1vICItayAvVm9sdW1l
cy9EYXRhL3BlcmYud2Via2l0Lm9yZy9Qb3N0Z3Jlc1NRTCIgc3RhcnRgCi0tIFN0b3BwaW5nIHRo
ZSBkYXRhYmFzZTogYC9BcHBsaWNhdGlvbnMvU2VydmVyLmFwcC9Db250ZW50cy9TZXJ2ZXJSb290
L3Vzci9iaW4vcGdfY3RsIC1EIC9Wb2x1bWVzL0RhdGEvcGVyZi53ZWJraXQub3JnL1Bvc3RncmVz
U1FMIC1sIC9Wb2x1bWVzL0RhdGEvcGVyZi53ZWJraXQub3JnL1Bvc3RncmVzU1FML2xvZ2ZpbGUg
LW8gIi1rIC9Wb2x1bWVzL0RhdGEvcGVyZi53ZWJraXQub3JnL1Bvc3RncmVzU1FMIiBzdG9wYAot
Ci0jIyMgSW5pdGlhbGl6aW5nIHRoZSBEYXRhYmFzZQotCi1SdW4gYGRhdGFiYXNlL2luaXQtZGF0
YWJhc2Uuc3FsYCBpbiBwc3FsIGFzIGB3ZWJraXQtcGVyZi1kYi11c2VyYDoKLWAvQXBwbGljYXRp
b25zL1NlcnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BzcWwgd2Via2l0LXBl
cmYtZGIgLWggbG9jYWxob3N0IC0tdXNlcm5hbWUgd2Via2l0LXBlcmYtZGItdXNlciAtZiBpbml0
LWRhdGFiYXNlLnNxbGAKLQotIyMjIE1ha2luZyBhIEJhY2t1cCBhbmQgUmVzdG9yaW5nCi0KLVVz
ZSBgcGdfZHVtcGAgYW5kIGBwZ19yZXN0b3JlYCB0byBiYWNrdXAgYW5kIHJlc3RvcmUgdGhlIGRh
dGFiYXNlLiBJZiB5b3UncmUgcmVwbGljYXRpbmcgdGhlIHByb2R1Y3Rpb24gZGF0YWJhc2UgZm9y
IGRldmVsb3BtZW50IHB1cnBvc2VzLCB5b3UgbWF5IGNvbnNpZGVyIGV4Y2x1ZGluZyBgcnVuX2l0
ZXJhdGlvbnNgIHRhYmxlLCB3aGljaCB0YWtlcyB1cCAyLzMgb2YgdGhlIHN0b3JhZ2Ugc3BhY2Us
IHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZGF0YWJhc2UgZm9yIHlvdXIgbG9jYWwgY29weS4g
QWRqdXN0IHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBwcm9jZXNzZXMgdG8gdXNlIGJ5IGAtLWpv
YnNgIGFuZCBhZGp1c3QgdGhlIGNvbXByZXNzaW9uIGxldmVsIGJ5IGAtLWNvbXByZXNzYCAoMCBp
cyBubyBjb21wcmVzc2lvbiwgOSBpcyBtb3N0IGNvbXByZXNzZWQpLgotCi0tIE1ha2luZyB0aGUg
ZnVsbGJhY2t1cCBvZiB0aGUgZGF0YWJhc2U6IGAvQXBwbGljYXRpb25zL1NlcnZlci5hcHAvQ29u
dGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2R1bXAgLWggbG9jYWxob3N0IHdlYmtpdC1wZXJm
LWRiIC0tZm9ybWF0PWRpcmVjdG9yeSAtLWZpbGU9PHBhdGggdG8gYmFja3VwIGRpcmVjdG9yeT4g
LS1qb2JzPTQgLS1uby1vd25lciAtLWNvbXByZXNzPTdgCi0KLS0gTWFraW5nIGFuIGFicmlkZ2Vk
IGJhY2t1cCB3aXRob3V0IGBydW5faXRlcmF0aW9uc2AgdGFibGU6IGAvQXBwbGljYXRpb25zL1Nl
cnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2R1bXAgLWggbG9jYWxob3N0
IHdlYmtpdC1wZXJmLWRiIC0tZm9ybWF0PWRpcmVjdG9yeSAtLWZpbGU9PHBhdGggdG8gYmFja3Vw
IGRpcmVjdG9yeT4gLS1qb2JzPTQgLS1uby1vd25lciAtLWNvbXByZXNzPTcgLS1leGNsdWRlLXRh
YmxlPXJ1bl9pdGVyYXRpb25zYAotCi0tIFJlc3RvcmluZyB0aGUgZGF0YWJhc2U6IGAvQXBwbGlj
YXRpb25zL1NlcnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX3Jlc3RvcmUg
LS1mb3JtYXQ9ZGlyZWN0b3J5IC0tam9icz00IC0tbm8tb3duZXIgLS1ob3N0IGxvY2FsaG9zdCAt
LXVzZXJuYW1lPXdlYmtpdC1wZXJmLWRiLXVzZXIgPHBhdGggdG8gYmFja3VwIGRpcmVjdG9yeT4g
LS1kYm5hbWU9d2Via2l0LXBlcmYtZGJgCi0KICMjIENvbmNlcHRzCiAKICAtICoqVGVzdCoqIC0g
QSB0ZXN0IGlzIGEgY29sbGVjdGlvbiBvZiBtZXRyaWNzIHN1Y2ggYXMgZnJhbWUgcmF0ZSBhbmQg
bWFsbG9jZWQgYnl0ZXMuIEl0IGNhbiBoYXZlIGEgY2hpbGRyZW4gYW5kIGEgcGFyZW50IGFuZCBm
b3JtIGEgdHJlZSBvZiB0ZXN0cy4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCmluZGV4IDZkZTUyMWM1NGYxNjY4YmQ4NTM4NjA5
YzMwZTVkYWE3ZGI2ODI1NmEuLjk0YjVhMjA3ZTM2YWEwYWEzYmNhZTdiYjgyMDIxYmZhMTIxOTgx
ODMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJv
dC1zeW5jZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxk
Ym90LXN5bmNlci5qcwpAQCAtMTcsOCArMTcsOCBAQCBjbGFzcyBCdWlsZGJvdEJ1aWxkRW50cnkg
ewogCiAgICAgICAgIGZvciAobGV0IHByb3BlcnR5VHVwbGUgb2YgKHJhd0RhdGFbJ3Byb3BlcnRp
ZXMnXSB8fCBbXSkpIHsKICAgICAgICAgICAgIC8vIGUuZy4gWydidWlsZF9yZXF1ZXN0X2lkJywg
JzE2NzMzJywgJ0ZvcmNlIEJ1aWxkIEZvcm0nXQotICAgICAgICAgICAgbGV0IG5hbWUgPSBwcm9w
ZXJ0eVR1cGxlWzBdOwotICAgICAgICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHlUdXBsZVsxXTsK
KyAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwcm9wZXJ0eVR1cGxlWzBdOworICAgICAgICAgICAg
Y29uc3QgdmFsdWUgPSBwcm9wZXJ0eVR1cGxlWzFdOwogICAgICAgICAgICAgaWYgKG5hbWUgPT0g
c3luY2VyLl9zbGF2ZVByb3BlcnR5TmFtZSkKICAgICAgICAgICAgICAgICB0aGlzLl9zbGF2ZU5h
bWUgPSB2YWx1ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gc3luY2VyLl9idWlsZFJl
cXVlc3RQcm9wZXJ0eU5hbWUpCkBAIC03NSwxNyArNzUsMTMgQEAgY2xhc3MgQnVpbGRib3RTeW5j
ZXIgewogICAgIHsKICAgICAgICAgYXNzZXJ0KHRlc3QgaW5zdGFuY2VvZiBUZXN0KTsKICAgICAg
ICAgYXNzZXJ0KHBsYXRmb3JtIGluc3RhbmNlb2YgUGxhdGZvcm0pOwotICAgICAgICB0aGlzLl90
ZXN0Q29uZmlndXJhdGlvbnMucHVzaCh7dGVzdDogdGVzdCwgcGxhdGZvcm06IHBsYXRmb3JtLCBw
cm9wZXJ0aWVzVGVtcGxhdGU6IHByb3BlcnRpZXNUZW1wbGF0ZX0pOworICAgICAgICB0aGlzLl90
ZXN0Q29uZmlndXJhdGlvbnMucHVzaCh7dGVzdCwgcGxhdGZvcm0sIHByb3BlcnRpZXNUZW1wbGF0
ZX0pOwogICAgIH0KICAgICB0ZXN0Q29uZmlndXJhdGlvbnMoKSB7IHJldHVybiB0aGlzLl90ZXN0
Q29uZmlndXJhdGlvbnM7IH0KIAogICAgIG1hdGNoZXNDb25maWd1cmF0aW9uKHJlcXVlc3QpCiAg
ICAgewotICAgICAgICBmb3IgKGxldCBjb25maWcgb2YgdGhpcy5fdGVzdENvbmZpZ3VyYXRpb25z
KSB7Ci0gICAgICAgICAgICBpZiAoY29uZmlnLnBsYXRmb3JtID09IHJlcXVlc3QucGxhdGZvcm0o
KSAmJiBjb25maWcudGVzdCA9PSByZXF1ZXN0LnRlc3QoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB0aGlzLl90ZXN0Q29uZmlndXJhdGlvbnMuc29tZSgoY29uZmlnKSA9PiBjb25maWcucGxhdGZv
cm0gPT0gcmVxdWVzdC5wbGF0Zm9ybSgpICYmIGNvbmZpZy50ZXN0ID09IHJlcXVlc3QudGVzdCgp
KTsKICAgICB9CiAKICAgICBzY2hlZHVsZVJlcXVlc3QobmV3UmVxdWVzdCwgc2xhdmVOYW1lKQpA
QCAtMTQwLDEwICsxMzYsOSBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAKICAgICBwdWxsQnVp
bGRib3QoY291bnQpCiAgICAgewotICAgICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9yZW1vdGUuZ2V0SlNPTih0aGlzLnBhdGhGb3JQZW5kaW5nQnVpbGRzSlNPTigp
KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7Ci0gICAgICAgICAgICBsZXQgcGVuZGluZ0VudHJp
ZXMgPSBjb250ZW50Lm1hcChmdW5jdGlvbiAoZW50cnkpIHsgcmV0dXJuIG5ldyBCdWlsZGJvdEJ1
aWxkRW50cnkoc2VsZiwgZW50cnkpOyB9KTsKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wdWxs
UmVjZW50QnVpbGRzKGNvdW50KS50aGVuKGZ1bmN0aW9uIChlbnRyaWVzKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9yZW1vdGUuZ2V0SlNPTih0aGlzLnBhdGhGb3JQZW5kaW5nQnVpbGRzSlNPTigp
KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAgICBsZXQgcGVuZGluZ0VudHJpZXMgPSBj
b250ZW50Lm1hcCgoZW50cnkpID0+IG5ldyBCdWlsZGJvdEJ1aWxkRW50cnkodGhpcywgZW50cnkp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wdWxsUmVjZW50QnVpbGRzKGNvdW50KS50aGVu
KChlbnRyaWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGVudHJ5QnlSZXF1ZXN0ID0ge307
CiAKICAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBwZW5kaW5nRW50cmllcykKQEAg
LTE1Niw4ICsxNTEsOCBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAg
Zm9yIChsZXQgaWQgaW4gZW50cnlCeVJlcXVlc3QpCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5
TGlzdC5wdXNoKGVudHJ5QnlSZXF1ZXN0W2lkXSk7CiAKLSAgICAgICAgICAgICAgICBzZWxmLl9l
bnRyeUxpc3QgPSBlbnRyeUxpc3Q7Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2xhdmVzV2l0aE5l
d1JlcXVlc3RzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZW50cnlMaXN0ID0gZW50
cnlMaXN0OworICAgICAgICAgICAgICAgIHRoaXMuX3NsYXZlc1dpdGhOZXdSZXF1ZXN0cy5jbGVh
cigpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5TGlzdDsKICAgICAgICAgICAgIH0p
OwpAQCAtMTczLDEzICsxNjgsMTIgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgICAgICBzZWxlY3RlZEJ1aWxk
c1tpXSA9IC1pIC0gMTsKIAotICAgICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9yZW1vdGUuZ2V0SlNPTih0aGlzLnBhdGhGb3JCdWlsZEpTT04oc2VsZWN0ZWRCdWls
ZHMpKS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7Ci0gICAgICAgICAgICB2YXIgZW50cmllcyA9
IFtdOworICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3RlLmdldEpTT04odGhpcy5wYXRoRm9yQnVp
bGRKU09OKHNlbGVjdGVkQnVpbGRzKSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAg
Y29uc3QgZW50cmllcyA9IFtdOwogICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggb2Ygc2VsZWN0
ZWRCdWlsZHMpIHsKLSAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBjb250ZW50W2luZGV4XTsK
KyAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IGNvbnRlbnRbaW5kZXhdOwogICAgICAgICAg
ICAgICAgIGlmIChlbnRyeSAmJiAhZW50cnlbJ2Vycm9yJ10pCi0gICAgICAgICAgICAgICAgICAg
IGVudHJpZXMucHVzaChuZXcgQnVpbGRib3RCdWlsZEVudHJ5KHNlbGYsIGVudHJ5KSk7CisgICAg
ICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChuZXcgQnVpbGRib3RCdWlsZEVudHJ5KHRoaXMs
IGVudHJ5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZW50cmllczsKICAg
ICAgICAgfSk7CkBAIC0xODgsOCArMTgyLDcgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAg
IHBhdGhGb3JQZW5kaW5nQnVpbGRzSlNPTigpIHsgcmV0dXJuIGAvanNvbi9idWlsZGVycy8ke2Vz
Y2FwZSh0aGlzLl9idWlsZGVyTmFtZSl9L3BlbmRpbmdCdWlsZHNgOyB9CiAgICAgcGF0aEZvckJ1
aWxkSlNPTihzZWxlY3RlZEJ1aWxkcykKICAgICB7Ci0gICAgICAgIHJldHVybiBgL2pzb24vYnVp
bGRlcnMvJHtlc2NhcGUodGhpcy5fYnVpbGRlck5hbWUpfS9idWlsZHMvP2AKLSAgICAgICAgICAg
ICsgc2VsZWN0ZWRCdWlsZHMubWFwKGZ1bmN0aW9uIChudW1iZXIpIHsgcmV0dXJuICdzZWxlY3Q9
JyArIG51bWJlcjsgfSkuam9pbignJicpOworICAgICAgICByZXR1cm4gYC9qc29uL2J1aWxkZXJz
LyR7ZXNjYXBlKHRoaXMuX2J1aWxkZXJOYW1lKX0vYnVpbGRzLz9gICsgc2VsZWN0ZWRCdWlsZHMu
bWFwKChudW1iZXIpID0+ICdzZWxlY3Q9JyArIG51bWJlcikuam9pbignJicpOwogICAgIH0KICAg
ICBwYXRoRm9yRm9yY2VCdWlsZCgpIHsgcmV0dXJuIGAvYnVpbGRlcnMvJHtlc2NhcGUodGhpcy5f
YnVpbGRlck5hbWUpfS9mb3JjZWA7IH0KIApAQCAtMjE0LDE0ICsyMDcsMTQgQEAgY2xhc3MgQnVp
bGRib3RTeW5jZXIgewogICAgICAgICB9CiAgICAgICAgIGFzc2VydChwcm9wZXJ0aWVzVGVtcGxh
dGUpOwogCi0gICAgICAgIGxldCBwcm9wZXJ0aWVzID0ge307CisgICAgICAgIGNvbnN0IHByb3Bl
cnRpZXMgPSB7fTsKICAgICAgICAgZm9yIChsZXQga2V5IGluIHByb3BlcnRpZXNUZW1wbGF0ZSkg
ewotICAgICAgICAgICAgbGV0IHZhbHVlID0gcHJvcGVydGllc1RlbXBsYXRlW2tleV07CisgICAg
ICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnRpZXNUZW1wbGF0ZVtrZXldOwogICAgICAgICAg
ICAgaWYgKHR5cGVvZih2YWx1ZSkgIT0gJ29iamVjdCcpCiAgICAgICAgICAgICAgICAgcHJvcGVy
dGllc1trZXldID0gdmFsdWU7CiAgICAgICAgICAgICBlbHNlIGlmICgncm9vdCcgaW4gdmFsdWUp
IHsKLSAgICAgICAgICAgICAgICBsZXQgcmVwb3NpdG9yeU5hbWUgPSB2YWx1ZVsncm9vdCddOwot
ICAgICAgICAgICAgICAgIGxldCByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUJ5TmFtZVtyZXBvc2l0
b3J5TmFtZV07CisgICAgICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSB2YWx1ZVsn
cm9vdCddOworICAgICAgICAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSByZXBvc2l0b3J5QnlO
YW1lW3JlcG9zaXRvcnlOYW1lXTsKICAgICAgICAgICAgICAgICBhc3NlcnQocmVwb3NpdG9yeSwg
YCIke3JlcG9zaXRvcnlOYW1lfSIgbXVzdCBiZSBzcGVjaWZpZWRgKTsKICAgICAgICAgICAgICAg
ICBwcm9wZXJ0aWVzW2tleV0gPSBjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9z
aXRvcnkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICgncm9vdE9wdGlvbnMnIGluIHZhbHVlKSB7
CkBAIC0yMzAsNyArMjIzLDcgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAgICAgICAgICAg
ICAgIHByb3BlcnRpZXNba2V5XSA9IGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVw
b3NpdG9yeUJ5TmFtZVtmaWx0ZXJlZE9wdGlvbnNbMF1dKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UgaWYgKCdyb290c0V4Y2x1ZGluZycgaW4gdmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICBsZXQgcmV2aXNpb25TZXQgPSB0aGlzLl9yZXZpc2lvblNldEZyb21Db21taXRTZXRXaXRo
RXhjbHVzaW9uTGlzdChjb21taXRTZXQsIHZhbHVlWydyb290c0V4Y2x1ZGluZyddKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCByZXZpc2lvblNldCA9IHRoaXMuX3JldmlzaW9uU2V0RnJvbUNvbW1p
dFNldFdpdGhFeGNsdXNpb25MaXN0KGNvbW1pdFNldCwgdmFsdWVbJ3Jvb3RzRXhjbHVkaW5nJ10p
OwogICAgICAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IEpTT04uc3RyaW5naWZ5KHJldmlz
aW9uU2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjU5LDI1ICsyNTIsMjUgQEAg
Y2xhc3MgQnVpbGRib3RTeW5jZXIgewogCiAgICAgc3RhdGljIF9sb2FkQ29uZmlnKHJlbW90ZSwg
Y29uZmlnKQogICAgIHsKLSAgICAgICAgbGV0IHNoYXJlZCA9IGNvbmZpZ1snc2hhcmVkJ10gfHwg
e307Ci0gICAgICAgIGxldCB0eXBlcyA9IGNvbmZpZ1sndHlwZXMnXSB8fCB7fTsKLSAgICAgICAg
bGV0IGJ1aWxkZXJzID0gY29uZmlnWydidWlsZGVycyddIHx8IHt9OworICAgICAgICBjb25zdCBz
aGFyZWQgPSBjb25maWdbJ3NoYXJlZCddIHx8IHt9OworICAgICAgICBjb25zdCB0eXBlcyA9IGNv
bmZpZ1sndHlwZXMnXSB8fCB7fTsKKyAgICAgICAgY29uc3QgYnVpbGRlcnMgPSBjb25maWdbJ2J1
aWxkZXJzJ10gfHwge307CiAKICAgICAgICAgbGV0IHN5bmNlckJ5QnVpbGRlciA9IG5ldyBNYXA7
CiAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGNvbmZpZ1snY29uZmlndXJhdGlvbnMnXSkgewot
ICAgICAgICAgICAgbGV0IG5ld0NvbmZpZyA9IHt9OworICAgICAgICAgICAgY29uc3QgbmV3Q29u
ZmlnID0ge307CiAgICAgICAgICAgICB0aGlzLl92YWxpZGF0ZUFuZE1lcmdlQ29uZmlnKG5ld0Nv
bmZpZywgc2hhcmVkKTsKICAgICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlQW5kTWVyZ2VDb25maWco
bmV3Q29uZmlnLCBlbnRyeSk7CiAKLSAgICAgICAgICAgIGxldCBleHBhbmRlZENvbmZpZ3VyYXRp
b25zID0gdGhpcy5fZXhwYW5kVHlwZXNBbmRQbGF0Zm9ybXMobmV3Q29uZmlnKTsKKyAgICAgICAg
ICAgIGNvbnN0IGV4cGFuZGVkQ29uZmlndXJhdGlvbnMgPSB0aGlzLl9leHBhbmRUeXBlc0FuZFBs
YXRmb3JtcyhuZXdDb25maWcpOwogICAgICAgICAgICAgZm9yIChsZXQgY29uZmlnIG9mIGV4cGFu
ZGVkQ29uZmlndXJhdGlvbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoJ3R5cGUnIGluIGNvbmZp
ZykgewotICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGNvbmZpZ1sndHlwZSddOworICAg
ICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gY29uZmlnWyd0eXBlJ107CiAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCh0eXBlLCBgJHt0eXBlfSBpcyBub3QgYSB2YWxpZCB0eXBlIGluIHRo
ZSBjb25maWd1cmF0aW9uYCk7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlQW5k
TWVyZ2VDb25maWcoY29uZmlnLCB0eXBlc1t0eXBlXSk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgbGV0IGJ1aWxkZXIgPSBlbnRyeVsnYnVpbGRlciddOworICAgICAgICAg
ICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBlbnRyeVsnYnVpbGRlciddOwogICAgICAgICAgICAgICAg
IGlmIChidWlsZGVyc1tidWlsZGVyXSkKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRh
dGVBbmRNZXJnZUNvbmZpZyhjb25maWcsIGJ1aWxkZXJzW2J1aWxkZXJdKTsKIApAQCAtMjkwLDE0
ICsyODMsMTQgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogCiAgICAgc3RhdGljIF9leHBhbmRU
eXBlc0FuZFBsYXRmb3Jtcyh1bnJlc29sdmVkQ29uZmlnKQogICAgIHsKLSAgICAgICAgbGV0IHR5
cGVFeHBhbmRlZCA9IFtdOworICAgICAgICBjb25zdCB0eXBlRXhwYW5kZWQgPSBbXTsKICAgICAg
ICAgaWYgKCd0eXBlcycgaW4gdW5yZXNvbHZlZENvbmZpZykgewogICAgICAgICAgICAgZm9yIChs
ZXQgdHlwZSBvZiB1bnJlc29sdmVkQ29uZmlnWyd0eXBlcyddKQogICAgICAgICAgICAgICAgIHR5
cGVFeHBhbmRlZC5wdXNoKHRoaXMuX3ZhbGlkYXRlQW5kTWVyZ2VDb25maWcoeyd0eXBlJzogdHlw
ZX0sIHVucmVzb2x2ZWRDb25maWcsICd0eXBlcycpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICB0eXBlRXhwYW5kZWQucHVzaCh1bnJlc29sdmVkQ29uZmlnKTsKIAotICAgICAgICBsZXQg
Y29uZmlndXJhdGlvbnMgPSBbXTsKKyAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbnMgPSBbXTsK
ICAgICAgICAgZm9yIChsZXQgY29uZmlnIG9mIHR5cGVFeHBhbmRlZCkgewogICAgICAgICAgICAg
aWYgKCdwbGF0Zm9ybXMnIGluIGNvbmZpZykgewogICAgICAgICAgICAgICAgIGZvciAobGV0IHBs
YXRmb3JtIG9mIGNvbmZpZ1sncGxhdGZvcm1zJ10pCkBAIC0zMTcsMTAgKzMxMCwxMCBAQCBjbGFz
cyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgIGFzc2VydCgncHJvcGVydGllcycgaW4gbmV3Q29u
ZmlnLCAnY29uZmlndXJhdGlvbiBtdXN0IHNwZWNpZnkgYXJndW1lbnRzIHRvIHBvc3Qgb24gYSBi
dWlsZGVyJyk7CiAgICAgICAgIGFzc2VydCgnYnVpbGRSZXF1ZXN0QXJndW1lbnQnIGluIG5ld0Nv
bmZpZywgJ2NvbmZpZ3VyYXRpb24gbXVzdCBzcGVjaWZ5IGJ1aWxkUmVxdWVzdEFyZ3VtZW50Jyk7
CiAKLSAgICAgICAgbGV0IHRlc3QgPSBUZXN0LmZpbmRCeVBhdGgobmV3Q29uZmlnLnRlc3QpOwor
ICAgICAgICBjb25zdCB0ZXN0ID0gVGVzdC5maW5kQnlQYXRoKG5ld0NvbmZpZy50ZXN0KTsKICAg
ICAgICAgYXNzZXJ0KHRlc3QsIGAke25ld0NvbmZpZy50ZXN0fSBpcyBub3QgYSB2YWxpZCB0ZXN0
IHBhdGhgKTsKIAotICAgICAgICBsZXQgcGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlOYW1lKG5l
d0NvbmZpZy5wbGF0Zm9ybSk7CisgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gUGxhdGZvcm0uZmlu
ZEJ5TmFtZShuZXdDb25maWcucGxhdGZvcm0pOwogICAgICAgICBhc3NlcnQocGxhdGZvcm0sIGAk
e25ld0NvbmZpZy5wbGF0Zm9ybX0gaXMgbm90IGEgdmFsaWQgcGxhdGZvcm0gbmFtZWApOwogCiAg
ICAgICAgIGxldCBzeW5jZXIgPSBzeW5jZXJCeUJ1aWxkZXIuZ2V0KG5ld0NvbmZpZy5idWlsZGVy
KTsKQEAgLTMzMyw4ICszMjYsOCBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAKICAgICBzdGF0
aWMgX3ZhbGlkYXRlQW5kTWVyZ2VDb25maWcoY29uZmlnLCB2YWx1ZXNUb01lcmdlLCBleGNsdWRl
ZFByb3BlcnR5KQogICAgIHsKLSAgICAgICAgZm9yIChsZXQgbmFtZSBpbiB2YWx1ZXNUb01lcmdl
KSB7Ci0gICAgICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNUb01lcmdlW25hbWVdOworICAgICAg
ICBmb3IgKGNvbnN0IG5hbWUgaW4gdmFsdWVzVG9NZXJnZSkgeworICAgICAgICAgICAgY29uc3Qg
dmFsdWUgPSB2YWx1ZXNUb01lcmdlW25hbWVdOwogICAgICAgICAgICAgaWYgKG5hbWUgPT0gZXhj
bHVkZWRQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMzcyLDE0ICsz
NjUsMTQgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAgIHN0YXRpYyBfdmFsaWRhdGVBbmRN
ZXJnZVByb3BlcnRpZXMocHJvcGVydGllcywgY29uZmlnQXJndW1lbnRzKQogICAgIHsKICAgICAg
ICAgZm9yIChsZXQgbmFtZSBpbiBjb25maWdBcmd1bWVudHMpIHsKLSAgICAgICAgICAgIGxldCB2
YWx1ZSA9IGNvbmZpZ0FyZ3VtZW50c1tuYW1lXTsKKyAgICAgICAgICAgIGNvbnN0IHZhbHVlID0g
Y29uZmlnQXJndW1lbnRzW25hbWVdOwogICAgICAgICAgICAgaWYgKHR5cGVvZih2YWx1ZSkgPT0g
J3N0cmluZycpIHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW25hbWVdID0gdmFsdWU7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwodHlwZW9mKHZhbHVlKSwgJ29iamVjdCcsICdBIGFyZ3VtZW50IHZhbHVlIG11c3Qg
YmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgZGljdGlvbmFyeScpOwogCi0gICAgICAgICAgICBsZXQg
a2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmpl
Y3Qua2V5cyh2YWx1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoa2V5cy5sZW5ndGgsIDEs
ICdhcmd1bWVudHMgdmFsdWUgY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBrZXknKTsKICAg
ICAgICAgICAgIGxldCBuYW1lZFZhbHVlID0gdmFsdWVba2V5c1swXV07CiAgICAgICAgICAgICBz
d2l0Y2ggKGtleXNbMF0pIHsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcwppbmRleCA0NWIyMmMxMjI4MTYxNDFi
MmNiNmJhYTJiYjhjYWMxY2MxMjUwNzU1Li5jMTI3NGQ2ODFlNDA1MDdhMDllZmI3MDBiNDk4YjI3
MjBlNjcyN2U3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMv
YnVpbGRib3QtdHJpZ2dlcmFibGUuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCkBAIC0yMiw3ICsyMiw3IEBAIGNsYXNzIEJ1
aWxkYm90VHJpZ2dlcmFibGUgewogICAgICAgICBhc3NlcnQodHlwZW9mKHNsYXZlSW5mby5wYXNz
d29yZCkgPT0gJ3N0cmluZycsICdzbGF2ZSBwYXNzd29yZCBtdXN0IGJlIHNwZWNpZmllZCcpOwog
CiAgICAgICAgIHRoaXMuX3N5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhidWls
ZGJvdFJlbW90ZSwgY29uZmlnKTsKLSAgICAgICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2VyIHx8IHts
b2c6IGZ1bmN0aW9uICgpIHsgfSwgZXJyb3I6IGZ1bmN0aW9uICgpIHsgfX07CisgICAgICAgIHRo
aXMuX2xvZ2dlciA9IGxvZ2dlciB8fCB7bG9nOiAoKSA9PiB7IH0sIGVycm9yOiAoKSA9PiB7IH19
OwogICAgIH0KIAogICAgIG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CkBAIC00OCw0MCAr
NDgsMzkgQEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgIGxldCBzeW5jZXJM
aXN0ID0gdGhpcy5fc3luY2VyczsKICAgICAgICAgbGV0IGJ1aWxkUmVxZXVzdHNCeUdyb3VwID0g
bmV3IE1hcDsKIAotICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CiAgICAgICAgIHRoaXMuX2xvZ2dl
ci5sb2coYEZldGNoaW5nIGJ1aWxkIHJlcXVlc3RzIGZvciAke3RoaXMuX25hbWV9Li4uYCk7Ci0g
ICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZSh0aGlzLl9uYW1l
KS50aGVuKGZ1bmN0aW9uIChidWlsZFJlcXVlc3RzKSB7Ci0gICAgICAgICAgICBzZWxmLl92YWxp
ZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpOworICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0
LmZldGNoRm9yVHJpZ2dlcmFibGUodGhpcy5fbmFtZSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4g
eworICAgICAgICAgICAgdGhpcy5fdmFsaWRhdGVSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKICAg
ICAgICAgICAgIGJ1aWxkUmVxZXVzdHNCeUdyb3VwID0gQnVpbGRib3RUcmlnZ2VyYWJsZS5fdGVz
dEdyb3VwTWFwRm9yQnVpbGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXFldXN0c0J5R3JvdXAp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICh1cGRhdGVzKSB7Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIubG9nKCdTY2hlZHVsaW5nIGJ1aWxkcycpOwotICAgICAgICAgICAgbGV0IHByb21p
c3RMaXN0ID0gW107Ci0gICAgICAgICAgICBsZXQgdGVzdEdyb3VwTGlzdCA9IEFycmF5LmZyb20o
YnVpbGRSZXFldXN0c0J5R3JvdXAudmFsdWVzKCkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0
dXJuIGEuZ3JvdXBPcmRlciAtIGIuZ3JvdXBPcmRlcjsgfSk7Ci0gICAgICAgICAgICBmb3IgKGxl
dCBncm91cCBvZiB0ZXN0R3JvdXBMaXN0KSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb21pc2Ug
PSBzZWxmLl9zY2hlZHVsZU5leHRSZXF1ZXN0SW5Hcm91cElmU2xhdmVJc0F2YWlsYWJsZShncm91
cCwgdXBkYXRlcyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxT
eW5jZXJzKGJ1aWxkUmVxZXVzdHNCeUdyb3VwKTsKKyAgICAgICAgfSkudGhlbigodXBkYXRlcykg
PT4geworICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmxvZygnU2NoZWR1bGluZyBidWlsZHMnKTsK
KyAgICAgICAgICAgIGNvbnN0IHByb21pc3RMaXN0ID0gW107CisgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXBMaXN0ID0gQXJyYXkuZnJvbShidWlsZFJlcWV1c3RzQnlHcm91cC52YWx1ZXMoKSku
c29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5ncm91cE9yZGVyIC0gYi5ncm91cE9yZGVy
OyB9KTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGVzdEdyb3VwTGlzdCkgewor
ICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9zY2hlZHVsZU5leHRSZXF1ZXN0
SW5Hcm91cElmU2xhdmVJc0F2YWlsYWJsZShncm91cCwgdXBkYXRlcyk7CiAgICAgICAgICAgICAg
ICAgaWYgKHByb21pc2UpCiAgICAgICAgICAgICAgICAgICAgIHByb21pc3RMaXN0LnB1c2gocHJv
bWlzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJv
bWlzdExpc3QpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAvLyBQdWxsIGFsbCBidWlsZGJvdHMgZm9yIHRoZSBzZWNv
bmQgdGltZSBzaW5jZSB0aGUgcHJldmlvdXMgc3RlcCBtYXkgaGF2ZSBzY2hlZHVsZWQgbW9yZSBi
dWlsZHMuCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJz
KGJ1aWxkUmVxZXVzdHNCeUdyb3VwKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodXBkYXRl
cykgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3B1bGxCdWlsZGJvdE9uQWxsU3luY2Vycyhi
dWlsZFJlcWV1c3RzQnlHcm91cCk7CisgICAgICAgIH0pLnRoZW4oKHVwZGF0ZXMpID0+IHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgQVBJIHRoYXQganVzdCB1cGRhdGVzIHRoZSBy
ZXF1ZXN0cy4KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZW1vdGUucG9zdEpTT05XaXRoU3Rh
dHVzKGAvYXBpL2J1aWxkLXJlcXVlc3RzLyR7c2VsZi5fbmFtZX1gLCB7Ci0gICAgICAgICAgICAg
ICAgJ3NsYXZlTmFtZSc6IHNlbGYuX3NsYXZlSW5mby5uYW1lLAotICAgICAgICAgICAgICAgICdz
bGF2ZVBhc3N3b3JkJzogc2VsZi5fc2xhdmVJbmZvLnBhc3N3b3JkLAorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX3JlbW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoYC9hcGkvYnVpbGQtcmVxdWVzdHMv
JHt0aGlzLl9uYW1lfWAsIHsKKyAgICAgICAgICAgICAgICAnc2xhdmVOYW1lJzogdGhpcy5fc2xh
dmVJbmZvLm5hbWUsCisgICAgICAgICAgICAgICAgJ3NsYXZlUGFzc3dvcmQnOiB0aGlzLl9zbGF2
ZUluZm8ucGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgJ2J1aWxkUmVxdWVzdFVwZGF0ZXMnOiB1
cGRhdGVzfSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIF92YWxpZGF0ZVJlcXVlc3RzKGJ1
aWxkUmVxdWVzdHMpCiAgICAgewotICAgICAgICBsZXQgdGVzdFBsYXRmb3JtUGFpcnMgPSB7fTsK
KyAgICAgICAgY29uc3QgdGVzdFBsYXRmb3JtUGFpcnMgPSB7fTsKICAgICAgICAgZm9yIChsZXQg
cmVxdWVzdCBvZiBidWlsZFJlcXVlc3RzKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3N5bmNl
cnMuc29tZShmdW5jdGlvbiAoc3luY2VyKSB7IHJldHVybiBzeW5jZXIubWF0Y2hlc0NvbmZpZ3Vy
YXRpb24ocmVxdWVzdCk7IH0pKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGtleSA9IHJlcXVlc3Qu
cGxhdGZvcm0oKS5pZCArICctJyArIHJlcXVlc3QudGVzdCgpLmlkKCk7CisgICAgICAgICAgICBp
ZiAoIXRoaXMuX3N5bmNlcnMuc29tZSgoc3luY2VyKSA9PiBzeW5jZXIubWF0Y2hlc0NvbmZpZ3Vy
YXRpb24ocmVxdWVzdCkpKSB7CisgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcmVxdWVzdC5w
bGF0Zm9ybSgpLmlkICsgJy0nICsgcmVxdWVzdC50ZXN0KCkuaWQoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIShrZXkgaW4gdGVzdFBsYXRmb3JtUGFpcnMpKQogICAgICAgICAgICAgICAgICAgICB0
aGlzLl9sb2dnZXIuZXJyb3IoYE5vIG1hdGNoaW5nIGNvbmZpZ3VyYXRpb24gZm9yICIke3JlcXVl
c3QudGVzdCgpLmZ1bGxOYW1lKCl9IiBvbiAiJHtyZXF1ZXN0LnBsYXRmb3JtKCkubmFtZSgpfSIu
YCk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHRlc3RQbGF0Zm9ybVBhaXJzW2tl
eV0gPSB0cnVlOwpAQCAtOTMsMTYgKzkyLDE1IEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUg
ewogICAgIHsKICAgICAgICAgbGV0IHVwZGF0ZXMgPSB7fTsKICAgICAgICAgbGV0IGFzc29jaWF0
ZWRSZXF1ZXN0cyA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKHRoaXMuX3N5bmNlcnMubWFwKGZ1bmN0aW9uIChzeW5jZXIpIHsK
LSAgICAgICAgICAgIHJldHVybiBzeW5jZXIucHVsbEJ1aWxkYm90KHNlbGYuX2xvb2tiYWNrQ291
bnQpLnRoZW4oZnVuY3Rpb24gKGVudHJ5TGlzdCkgewotICAgICAgICAgICAgICAgIGZvciAobGV0
IGVudHJ5IG9mIGVudHJ5TGlzdCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9
IEJ1aWxkUmVxdWVzdC5maW5kQnlJZChlbnRyeS5idWlsZFJlcXVlc3RJZCgpKTsKKyAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKHRoaXMuX3N5bmNlcnMubWFwKChzeW5jZXIpID0+IHsKKyAgICAg
ICAgICAgIHJldHVybiBzeW5jZXIucHVsbEJ1aWxkYm90KHRoaXMuX2xvb2tiYWNrQ291bnQpLnRo
ZW4oKGVudHJ5TGlzdCkgPT4geworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2Yg
ZW50cnlMaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkUmVxdWVzdHMuYWRkKHJlcXVlc3QpOwogCi0gICAg
ICAgICAgICAgICAgICAgIGxldCBpbmZvID0gYnVpbGRSZXFldXN0c0J5R3JvdXAuZ2V0KHJlcXVl
c3QudGVzdEdyb3VwSWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZm8gPSBidWls
ZFJlcWV1c3RzQnlHcm91cC5nZXQocmVxdWVzdC50ZXN0R3JvdXBJZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0KCFpbmZvLnN5bmNlciB8fCBpbmZvLnN5bmNlciA9PSBzeW5jZXIpOwog
ICAgICAgICAgICAgICAgICAgICBpbmZvLnN5bmNlciA9IHN5bmNlcjsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5LnNsYXZlTmFtZSgpKSB7CkBAIC0xMTAsMzEgKzEwOCwzMSBAQCBjbGFz
cyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uc2xh
dmVOYW1lID0gZW50cnkuc2xhdmVOYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgICAgICBsZXQgbmV3U3RhdHVzID0gZW50cnkuYnVpbGRSZXF1ZXN0U3RhdHVz
SWZVcGRhdGVJc05lZWRlZChyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3
U3RhdHVzID0gZW50cnkuYnVpbGRSZXF1ZXN0U3RhdHVzSWZVcGRhdGVJc05lZWRlZChyZXF1ZXN0
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXR1cykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhgVXBkYXRpbmcgdGhlIHN0YXR1cyBvZiBidWlsZCBy
ZXF1ZXN0ICR7cmVxdWVzdC5pZCgpfSBmcm9tICR7cmVxdWVzdC5zdGF0dXMoKX0gdG8gJHtuZXdT
dGF0dXN9YCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIubG9nKGBVcGRh
dGluZyB0aGUgc3RhdHVzIG9mIGJ1aWxkIHJlcXVlc3QgJHtyZXF1ZXN0LmlkKCl9IGZyb20gJHty
ZXF1ZXN0LnN0YXR1cygpfSB0byAke25ld1N0YXR1c31gKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVwZGF0ZXNbZW50cnkuYnVpbGRSZXF1ZXN0SWQoKV0gPSB7c3RhdHVzOiBuZXdTdGF0dXMs
IHVybDogZW50cnkudXJsKCl9OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXF1
ZXN0LnN0YXR1c1VybCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
bG9nKGBTZXR0aW5nIHRoZSBzdGF0dXMgVVJMIG9mIGJ1aWxkIHJlcXVlc3QgJHtyZXF1ZXN0Lmlk
KCl9IHRvICR7ZW50cnkudXJsKCl9YCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9s
b2dnZXIubG9nKGBTZXR0aW5nIHRoZSBzdGF0dXMgVVJMIG9mIGJ1aWxkIHJlcXVlc3QgJHtyZXF1
ZXN0LmlkKCl9IHRvICR7ZW50cnkudXJsKCl9YCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1
cGRhdGVzW2VudHJ5LmJ1aWxkUmVxdWVzdElkKCldID0ge3N0YXR1czogcmVxdWVzdC5zdGF0dXMo
KSwgdXJsOiBlbnRyeS51cmwoKX07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSkpLnRoZW4oZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgZm9yIChsZXQgcmVxdWVzdCBvZiBCdWlsZFJlcXVlc3QuYWxsKCkpIHsKKyAg
ICAgICAgfSkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9m
IEJ1aWxkUmVxdWVzdC5hbGwoKSkgewogICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0Lmhhc1N0
YXJ0ZWQoKSAmJiAhcmVxdWVzdC5oYXNGaW5pc2hlZCgpICYmICFhc3NvY2lhdGVkUmVxdWVzdHMu
aGFzKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5sb2coYFVw
ZGF0aW5nIHRoZSBzdGF0dXMgb2YgYnVpbGQgcmVxdWVzdCAke3JlcXVlc3QuaWQoKX0gZnJvbSAk
e3JlcXVlc3Quc3RhdHVzKCl9IHRvIGZhaWxlZElmTm90Q29tcGxldGVkYCk7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coYFVwZGF0aW5nIHRoZSBzdGF0dXMgb2YgYnVpbGQg
cmVxdWVzdCAke3JlcXVlc3QuaWQoKX0gZnJvbSAke3JlcXVlc3Quc3RhdHVzKCl9IHRvIGZhaWxl
ZElmTm90Q29tcGxldGVkYCk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCghKHJlcXVlc3Qu
aWQoKSBpbiB1cGRhdGVzKSk7CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXNbcmVxdWVzdC5p
ZCgpXSA9IHtzdGF0dXM6ICdmYWlsZWRJZk5vdENvbXBsZXRlZCd9OwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB1
cGRhdGVzOyB9KTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB1cGRhdGVzKTsKICAgICB9CiAKICAg
ICBfc2NoZWR1bGVOZXh0UmVxdWVzdEluR3JvdXBJZlNsYXZlSXNBdmFpbGFibGUoZ3JvdXBJbmZv
LCBwZW5kaW5nVXBkYXRlcykKICAgICB7CiAgICAgICAgIGxldCBuZXh0UmVxdWVzdCA9IG51bGw7
Ci0gICAgICAgIGZvciAobGV0IHJlcXVlc3Qgb2YgZ3JvdXBJbmZvLnJlcXVlc3RzKSB7CisgICAg
ICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiBncm91cEluZm8ucmVxdWVzdHMpIHsKICAgICAgICAg
ICAgIGlmIChyZXF1ZXN0LmlzU2NoZWR1bGVkKCkgfHwgKHJlcXVlc3QuaWQoKSBpbiBwZW5kaW5n
VXBkYXRlcyAmJiBwZW5kaW5nVXBkYXRlc1tyZXF1ZXN0LmlkKCldWydzdGF0dXMnXSA9PSAnc2No
ZWR1bGVkJykpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAocmVxdWVz
dC5pc1BlbmRpbmcoKSAmJiAhKHJlcXVlc3QuaWQoKSBpbiBwZW5kaW5nVXBkYXRlcykpIHsKQEAg
LTE1Nyw2ICsxNTUsNyBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKIAogICAgICAgICBp
ZiAoIXN5bmNlcikgewogICAgICAgICAgICAgZm9yIChzeW5jZXIgb2YgdGhpcy5fc3luY2Vycykg
eworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBiZSBhIG5ldyB2YXJp
YWJsZS4KICAgICAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5zY2hlZHVsZVJlcXVl
c3RJbkdyb3VwSWZBdmFpbGFibGUobmV4dFJlcXVlc3QpOwogICAgICAgICAgICAgICAgIGlmIChw
cm9taXNlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3NCw3ICsxNzMsNyBAQCBj
bGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKIAogICAgIHN0YXRpYyBfdGVzdEdyb3VwTWFwRm9y
QnVpbGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKQogICAgIHsKLSAgICAgICAgbGV0IG1hcCA9IG5l
dyBNYXA7CisgICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA7CiAgICAgICAgIGxldCBncm91cE9y
ZGVyID0gMDsKICAgICAgICAgZm9yIChsZXQgcmVxdWVzdCBvZiBidWlsZFJlcXVlc3RzKSB7CiAg
ICAgICAgICAgICBsZXQgZ3JvdXBJZCA9IHJlcXVlc3QudGVzdEdyb3VwSWQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>