<?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>88975</bug_id>
          
          <creation_ts>2012-06-13 02:20:44 -0700</creation_ts>
          <short_desc>Update pywebsocket to 0.7.6 from 0.7.4</short_desc>
          <delta_ts>2012-06-14 05:40:55 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Toyoshima">toyoshim</reporter>
          <assigned_to name="Takashi Toyoshima">toyoshim</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bashi</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647824</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-06-13 02:20:44 -0700</bug_when>
    <thetext>New feature
 - Allow handlers to send a close frame with empty body in response of a client initiated closing handshake
 - Implement perframe compression extension
 - Support client certificate authentication

Misc
 - Implement faster masking
 - Improve console.html for test
 - Implement strict check on sending close code and control frame body size
 - Add new custom log level &apos;FINE&apos; and &apos;FINER&apos; for debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648835</commentid>
    <comment_count>1</comment_count>
      <attachid>147496</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-06-13 23:23:41 -0700</bug_when>
    <thetext>Created attachment 147496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648848</commentid>
    <comment_count>2</comment_count>
      <attachid>147496</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-06-13 23:45:00 -0700</bug_when>
    <thetext>Comment on attachment 147496
Patch

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

LGTM

&gt; Tools/ChangeLog:12
&gt; +        Reviewed by NOBODY (OOPS!).

nit: &quot;Reviewed by&quot; line usually appears before the description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648851</commentid>
    <comment_count>3</comment_count>
      <attachid>147499</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-06-13 23:48:03 -0700</bug_when>
    <thetext>Created attachment 147499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648852</commentid>
    <comment_count>4</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-06-13 23:49:03 -0700</bug_when>
    <thetext>&gt; nit: &quot;Reviewed by&quot; line usually appears before the description.

Oops.
Thank you, Kenichi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648865</commentid>
    <comment_count>5</comment_count>
      <attachid>147499</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-14 00:02:14 -0700</bug_when>
    <thetext>Comment on attachment 147499
Patch

looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649093</commentid>
    <comment_count>6</comment_count>
      <attachid>147499</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 05:40:48 -0700</bug_when>
    <thetext>Comment on attachment 147499
Patch

Clearing flags on attachment: 147499

Committed r120315: &lt;http://trac.webkit.org/changeset/120315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649094</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 05:40:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147496</attachid>
            <date>2012-06-13 23:23:41 -0700</date>
            <delta_ts>2012-06-13 23:47:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88975-20120614152339.patch</filename>
            <type>text/plain</type>
            <size>38620</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDc1OGE5ZmM1MjU0NTIwMTFhMTYwNGMxYWMxYTVkY2U3
Yjc2NzBjMy4uZGRiNTY3ZmFjZDE0MWJlZWM0MDMyZWEzNjhkNmMwYjU0ZGUxN2FkZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2
IEBACisyMDEyLTA2LTEzICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBVcGRhdGUgcHl3ZWJzb2NrZXQgdG8gMC43LjYgZnJvbSAwLjcuNAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5NzUKKworICAg
ICAgICBUaGlzIG5ldyB2ZXJzaW9uIG9mIHB5d2Vic29ja2V0IGludHJvZHVjZSBmb2xsb3dpbmcg
ZmVhdHVyZXMuCisgICAgICAgICAtIEFsbG93IGhhbmRsZXJzIHRvIHNlbmQgYSBjbG9zZSBmcmFt
ZSB3aXRoIGVtcHR5IGJvZHkgaW4gcmVzcG9uc2Ugb2YKKyAgICAgICAgICAgICBhIGNsaWVudCBp
bml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UKKyAgICAgICAgIC0gSW1wbGVtZW50IHBlcmZyYW1l
IGNvbXByZXNzaW9uIGV4dGVuc2lvbgorICAgICAgICAgLSBTdXBwb3J0IGNsaWVudCBjZXJ0aWZp
Y2F0ZSBhdXRoZW50aWNhdGlvbgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tl
dC9DT1BZSU5HOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3
ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5OgorICAgICAgICAoX2NyZWF0ZV9jb250cm9sX2ZyYW1l
KToKKyAgICAgICAgKFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSk6CisgICAgICAgIChTdHJlYW0uc2Vu
ZF9tZXNzYWdlKToKKyAgICAgICAgKFN0cmVhbS5yZWNlaXZlX21lc3NhZ2UpOgorICAgICAgICAo
U3RyZWFtLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKToKKyAgICAgICAgKFN0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L2NvbW1vbi5weToKKyAgICAgICAgKEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24p
OgorICAgICAgICAoRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbi5fX2luaXRfXyk6CisgICAgICAg
IChfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKToKKyAgICAgICAgKF9wYXJzZV9leHRlbnNpb24pOgor
ICAgICAgICAocGFyc2VfZXh0ZW5zaW9ucyk6CisgICAgICAgIChmb3JtYXRfZXh0ZW5zaW9uKToK
KyAgICAgICAgKGZvcm1hdF9leHRlbnNpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHk6CisgICAgICAgIChfcGFy
c2VfY29tcHJlc3Npb25fbWV0aG9kKToKKyAgICAgICAgKF9jcmVhdGVfYWNjZXB0ZWRfbWV0aG9k
X2Rlc2MpOgorICAgICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3Nvcik6
CisgICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yLl9faW5pdF9f
KToKKyAgICAgICAgKFBlckZyYW1lQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3IuX2xvb2t1
cF9jb21wcmVzc2lvbl9wcm9jZXNzb3IpOgorICAgICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4
dGVuc2lvblByb2Nlc3Nvci5fZ2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZSk6Cisg
ICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yLmdldF9leHRlbnNp
b25fcmVzcG9uc2UpOgorICAgICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nl
c3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9u
RXh0ZW5zaW9uUHJvY2Vzc29yLmdldF9jb21wcmVzc2lvbl9wcm9jZXNzb3IpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19i
YXNlLnB5OgorICAgICAgICAocGFyc2VfdG9rZW5fbGlzdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weToKKyAg
ICAgICAgKEhhbmRzaGFrZXIuX3BhcnNlX2V4dGVuc2lvbnMpOgorICAgICAgICAoSGFuZHNoYWtl
ci5fc2VuZF9oYW5kc2hha2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weToKKyAgICAgICAgKFdlYlNvY2tldFNlcnZl
ci5fY3JlYXRlX3NvY2tldHMpOgorICAgICAgICAoX2dldF9sb2dnZXJfZnJvbV9jbGFzcyk6Cisg
ICAgICAgIChfY29uZmlndXJlX2xvZ2dpbmcpOgorICAgICAgICAoX2J1aWxkX29wdGlvbl9wYXJz
ZXIpOgorICAgICAgICAoX21haW4uaWYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weToKKyAgICAgICAgKFJlcGVhdGVkWG9yTWFz
a2VyLm1hc2spOgorCiAyMDEyLTA2LTEyICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGJvdCB0eXBlcyBpbnNpZGUgKCkuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L0NPUFlJ
TkcgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L0NP
UFlJTkcKaW5kZXggYWI5ZDUyZGRmOTMwNzIwODZjYmJhMjEyY2RiYmVkN2IzOGZhYTUzYS4uOTg5
ZDAyZTRjZDA5MjM3ODA2ZjdkZjhiZWFlY2M2OTE1MjczNDI4ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9DT1BZSU5HCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvQ09QWUlO
RwpAQCAtMSw0ICsxLDQgQEAKLUNvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorQ29weXJpZ2h0
IDIwMTIsIEdvb2dsZSBJbmMuCiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvX3N0cmVhbV9oeWJpLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21v
ZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKaW5kZXggYzAwZjU2OTJiZGJlM2JlOTY5ZGVh
OTEzNmI3NWFjMzg0ZTkxZDhjOC4uMzRmYTdhNjBlNjAyMTdmN2YyZDBlMTc3NDA4NDI1ODg1ZTFh
NDFmNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9w
eXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKQEAgLTM5LDYgKzM5LDcg
QEAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQogZnJvbSBjb2xsZWN0aW9ucyBp
bXBvcnQgZGVxdWUKIGltcG9ydCBvcwogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKIAogZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IHV0aWwKQEAgLTIwOCw3ICsyMDksMTcgQEAgY2xhc3MgRnJhZ21lbnRlZEZyYW1lQnVpbGRl
cihvYmplY3QpOgogZGVmIF9jcmVhdGVfY29udHJvbF9mcmFtZShvcGNvZGUsIGJvZHksIG1hc2ss
IGZyYW1lX2ZpbHRlcnMpOgogICAgIGZyYW1lID0gRnJhbWUob3Bjb2RlPW9wY29kZSwgcGF5bG9h
ZD1ib2R5KQogCi0gICAgcmV0dXJuIF9maWx0ZXJfYW5kX2Zvcm1hdF9mcmFtZV9vYmplY3QoZnJh
bWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9m
aWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorCisgICAgaWYgbGVu
KGZyYW1lLnBheWxvYWQpID4gMTI1OgorICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRp
b24oCisgICAgICAgICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVz
dCBiZSAxMjUgYnl0ZXMgb3IgbGVzcycpCisKKyAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKAor
ICAgICAgICBmcmFtZS5vcGNvZGUsIGxlbihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAg
ICAgICBmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzLCBtYXNrKQorICAgIHJldHVy
biBfYnVpbGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXlsb2FkLCBtYXNrKQogCiAKIGRlZiBjcmVh
dGVfcGluZ19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKQEAgLTI4
Niw2ICsyOTcsOSBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICBJbnZh
bGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4K
ICAgICAgICAgIiIiCiAKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxf
RklORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZSB0aGUgZmlyc3QgMiBvY3Rl
dHMgb2YgYSBmcmFtZScpCisKICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLnJlY2VpdmVfYnl0ZXMo
MikKIAogICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHJlY2VpdmVkWzBdKQpAQCAtMjk5LDYgKzMx
MywxMSBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgIG1hc2sgPSAoc2Vjb25k
X2J5dGUgPj4gNykgJiAxCiAgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25kX2J5dGUgJiAw
eDdmCiAKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnRklOPSVzLCBSU1YxPSVzLCBSU1YyPSVzLCBSU1YzPSVz
LCBvcGNvZGU9JXMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTWFzaz0lcywgUGF5bG9h
ZF9sZW5ndGg9JXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2Miwg
cnN2Mywgb3Bjb2RlLCBtYXNrLCBwYXlsb2FkX2xlbmd0aCkKKwogICAgICAgICBpZiAobWFzayA9
PSAxKSAhPSBzZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlOgogICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICdNYXNrIGJpdCBvbiB0aGUg
cmVjZWl2ZWQgZnJhbWUgZGlkXCdudCBtYXRjaCBtYXNraW5nICcKQEAgLTMxMCw2ICszMjksOSBA
QCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGlu
ZyA9IFRydWUKICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMQogICAgICAgICBpZiBw
YXlsb2FkX2xlbmd0aCA9PSAxMjc6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNvbW1v
bi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZSA4
LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykKKwogICAgICAgICAgICAgZXh0ZW5kZWRf
cGF5bG9hZF9sZW5ndGggPSBzZWxmLnJlY2VpdmVfYnl0ZXMoOCkKICAgICAgICAgICAgIHBheWxv
YWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKICAgICAgICAgICAgICAgICAnIVEnLCBleHRlbmRl
ZF9wYXlsb2FkX2xlbmd0aClbMF0KQEAgLTMxOSw3ICszNDEsMTMgQEAgY2xhc3MgU3RyZWFtKFN0
cmVhbUJhc2UpOgogICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c192ZXJzaW9uID49IDEz
IGFuZCBwYXlsb2FkX2xlbmd0aCA8IDB4MTAwMDA6CiAgICAgICAgICAgICAgICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gRmFsc2UKICAgICAgICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0
ZXMgPSA4CisKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJ
TkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWNvZGVkX3BheWxvYWRfbGVuZ3Ro
PSVzJywgcGF5bG9hZF9sZW5ndGgpCiAgICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2
OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1vY3RldCBleHRlbmRlZCBwYXls
b2FkIGxlbmd0aCcpCisKICAgICAgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gc2Vs
Zi5yZWNlaXZlX2J5dGVzKDIpCiAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51
bnBhY2soCiAgICAgICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBd
CkBAIC0zMjcsNiArMzU1LDkgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAg
ICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgbGVu
Z3RoX2VuY29kaW5nX2J5dGVzID0gMgogCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNv
bW1vbi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVjb2Rl
ZF9wYXlsb2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQorCiAgICAgICAgIGlmIG5vdCB2
YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygK
ICAgICAgICAgICAgICAgICAnUGF5bG9hZCBsZW5ndGggaXMgbm90IGVuY29kZWQgdXNpbmcgdGhl
IG1pbmltYWwgbnVtYmVyIG9mICcKQEAgLTMzNSwxMiArMzY2LDM4IEBAIGNsYXNzIFN0cmVhbShT
dHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMpCiAKICAg
ICAgICAgaWYgbWFzayA9PSAxOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgbWFzaycpCisKICAgICAgICAgICAgIG1hc2tpbmdfbm9u
Y2UgPSBzZWxmLnJlY2VpdmVfYnl0ZXMoNCkKICAgICAgICAgICAgIG1hc2tlciA9IHV0aWwuUmVw
ZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ01hc2s9JXInLCBtYXNraW5nX25vbmNlKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgbWFza2VyID0gX05PT1BfTUFTS0VSCiAKLSAgICAgICAg
Ynl0ZXMgPSBtYXNrZXIubWFzayhzZWxmLnJlY2VpdmVfYnl0ZXMocGF5bG9hZF9sZW5ndGgpKQor
ICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSBw
YXlsb2FkIGRhdGEnKQorICAgICAgICBpZiBzZWxmLl9sb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1v
bi5MT0dMRVZFTF9GSU5FKToKKyAgICAgICAgICAgIHJlY2VpdmVfc3RhcnQgPSB0aW1lLnRpbWUo
KQorCisgICAgICAgIHJhd19wYXlsb2FkX2J5dGVzID0gc2VsZi5yZWNlaXZlX2J5dGVzKHBheWxv
YWRfbGVuZ3RoKQorCisgICAgICAgIGlmIHNlbGYuX2xvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZygKKyAgICAgICAg
ICAgICAgICBjb21tb24uTE9HTEVWRUxfRklORSwKKyAgICAgICAgICAgICAgICAnRG9uZSByZWNl
aXZpbmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAorICAgICAgICAgICAgICAgIHBheWxvYWRf
bGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2ZV9zdGFydCkgLyAxMDAwIC8gMTAwMCkKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXls
b2FkIGRhdGEnKQorCisgICAgICAgIGlmIHNlbGYuX2xvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICAgICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1lKCkK
KworICAgICAgICBieXRlcyA9IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAg
ICAgIGlmIHNlbGYuX2xvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgor
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZygKKyAgICAgICAgICAgICAgICBjb21tb24uTE9H
TEVWRUxfRklORSwKKyAgICAgICAgICAgICAgICAnRG9uZSB1bm1hc2tpbmcgcGF5bG9hZCBkYXRh
IGF0ICVzIE1CL3MnLAorICAgICAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGlt
ZSgpIC0gdW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAxMDAwKQogCiAgICAgICAgIHJldHVybiBvcGNv
ZGUsIGJ5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKIApAQCAtMzU5LDggKzQxNiw4IEBAIGNs
YXNzIFN0cmVhbShTdHJlYW1CYXNlKToKIAogICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgICBC
YWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgc2VydmVyLXRlcm1pbmF0ZWQK
LSAgICAgICAgICAgICAgICBjb25uZWN0aW9uIG9yIGNhbGxlZCB3aXRoIGluY29uc2lzdGVudCBt
ZXNzYWdlIHR5cGUgb3IgYmluYXJ5Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLgorICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24gb3IgY2FsbGVkIHdpdGggaW5jb25zaXN0ZW50IG1lc3NhZ2Ug
dHlwZSBvcgorICAgICAgICAgICAgICAgIGJpbmFyeSBwYXJhbWV0ZXIuCiAgICAgICAgICIiIgog
CiAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CkBAIC00MDgsNiAr
NDY1LDE1IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKIAogICAgICAgICAgICAgZnJhbWUg
PSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCiAKKyAgICAgICAgICAgICMg
Q2hlY2sgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBheWxvYWQgc2l6ZSBmb3IgY29udHJvbCBmcmFt
ZXMKKyAgICAgICAgICAgICMgYmVmb3JlIGV4dGVuc2lvbiBwcm9jZXNzZXMgdGhlIGZyYW1lLgor
ICAgICAgICAgICAgIyBTZWUgYWxzbyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1
I3NlY3Rpb24tNS41CisgICAgICAgICAgICBpZiAoY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZy
YW1lLm9wY29kZSkgYW5kCisgICAgICAgICAgICAgICAgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1
KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJl
IDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykKKwogICAgICAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CiAgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKIApAQCAtNDUw
LDEyICs1MTYsNiBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICAgICAg
aWYgZnJhbWUuZmluOgogICAgICAgICAgICAgICAgICAgICAjIFVuZnJhZ21lbnRlZCBmcmFtZQog
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUu
b3Bjb2RlKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmcmFtZS5wYXlsb2FkKSA+
IDEyNSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FwcGxpY2F0aW9uIGRhdGEgc2l6ZSBv
ZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
MTI1IGJ5dGVzIG9yIGxlc3MnKQotCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IGZyYW1lLm9wY29kZQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZnJh
bWUucGF5bG9hZAogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC00ODgsNyArNTQ4LDExIEBAIGNs
YXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICAjIC0gbm8gYXBwbGljYXRp
b24gZGF0YTogbm8gY29kZSBubyByZWFzb24KICAgICAgICAgICAgICAgICAjIC0gMiBvY3RldCBv
ZiBhcHBsaWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCiAgICAgICAgICAgICAg
ICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRhOiBib3RoIGNvZGUgYW5k
IHJlYXNvbgotICAgICAgICAgICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAg
ICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSA9ICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEKQorICAgICAgICAg
ICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID09IDE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBhIGNs
b3NlIGZyYW1lIGhhcyBzdGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnc3RhdHVzIGNvZGUgbXVzdCBiZSAyIG9jdGV0JykKQEAgLTUwNyw4ICs1NzEs
NyBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAKICAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYWNrIGZvciBz
ZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRz
aGFrZScpCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYWNrIGZvciBzZXJ2ZXIt
aW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKIAogICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKQEAgLTUyMCw5ICs1
ODMsMTYgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAgICAgICAgICAgICBk
aXNwYXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlzcGF0Y2hlcgogICAgICAgICAgICAgICAgICAg
ICBjb2RlLCByZWFzb24gPSBkaXNwYXRjaGVyLnBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAg
ICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikg
PiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0hhbmRsZXIgc3BlY2lmaWVkIHJlYXNvbiBkZXNwaXRl
IGNvZGUgYmVpbmcgTm9uZScpCisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSAnJwor
ICAgICAgICAgICAgICAgICAgICBpZiByZWFzb24gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYXNvbiA9ICcnCiAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hh
bmRzaGFrZShjb2RlLCByZWFzb24pCiAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVudC1pbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UnKQorICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVu
dC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UgJworICAgICAgICAgICAgICAgICAgICAnKGNv
ZGU9JXIsIHJlYXNvbj0lciknLCBjb2RlLCByZWFzb24pCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKICAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5P
UENPREVfUElORzoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC01NzEsMTcgKzY0MSwyMSBAQCBj
bGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICdPcGNvZGUgJWQg
aXMgbm90IHN1cHBvcnRlZCcgJSBzZWxmLl9vcmlnaW5hbF9vcGNvZGUpCiAKICAgICBkZWYgX3Nl
bmRfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgaWYgY29k
ZSA+PSAoMSA8PCAxNikgb3IgY29kZSA8IDA6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRp
b25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIG91dCBvZiByYW5nZScpCi0KLSAgICAgICAgZW5j
b2RlZF9yZWFzb24gPSByZWFzb24uZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGlmIGxlbihlbmNv
ZGVkX3JlYXNvbikgKyAyID4gMTI1OgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdBcHBsaWNhdGlvbiBkYXRhIHNpemUgb2YgY2xvc2Ug
ZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAgICAgICAnbGVzcycpCisg
ICAgICAgIGJvZHkgPSAnJworICAgICAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgaWYgKGNvZGUgPiBjb21tb24uU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggb3IKKyAgICAgICAg
ICAgICAgICBjb2RlIDwgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6CisgICAgICAgICAg
ICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBvdXQgb2Yg
cmFuZ2UnKQorICAgICAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNf
UkVDRUlWRUQgb3IKKyAgICAgICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfQUJOT1JN
QUxfQ0xPU1VSRSBvcgorICAgICAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19UTFNf
SEFORFNIQUtFKToKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24o
J1N0YXR1cyBjb2RlIGlzIHJlc2VydmVkIHBzZXVkbyAnCisgICAgICAgICAgICAgICAgICAgICdj
b2RlJykKKyAgICAgICAgICAgIGVuY29kZWRfcmVhc29uID0gcmVhc29uLmVuY29kZSgndXRmLTgn
KQorICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgZW5jb2RlZF9y
ZWFzb24KIAogICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKLSAgICAgICAgICAg
IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgZW5jb2RlZF9yZWFzb24sCisgICAgICAgICAgICBi
b2R5LAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCiAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCiAKQEAgLTU5MCwxNSArNjY0LDM2
IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUp
CiAKICAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBj
b25uZWN0aW9uLiIiIgorICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQgY29ubmVjdGlvbi4K
KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgY29kZTogU3RhdHVzIGNvZGUgZm9yIGNsb3Nl
IGZyYW1lLiBJZiBjb2RlIGlzIE5vbmUsIGEgY2xvc2UKKyAgICAgICAgICAgICAgICBmcmFtZSB3
aXRoIGVtcHR5IGJvZHkgd2lsbCBiZSBzZW50LgorICAgICAgICAgICAgcmVhc29uOiBzdHJpbmcg
cmVwcmVzZW50aW5nIGNsb3NlIHJlYXNvbi4KKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAg
QmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHJlYXNvbiBpcyBzcGVjaWZpZWQgd2l0aCBjb2Rl
IE5vbmUKKyAgICAgICAgICAgIG9yIHJlYXNvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgYm90aCBz
dHIgYW5kIHVuaWNvZGUuCisgICAgICAgICIiIgogCiAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qu
c2VydmVyX3Rlcm1pbmF0ZWQ6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCiAgICAg
ICAgICAgICAgICAgJ1JlcXVlc3RlZCBjbG9zZV9jb25uZWN0aW9uIGJ1dCBzZXJ2ZXIgaXMgYWxy
ZWFkeSB0ZXJtaW5hdGVkJykKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIGNvZGUg
aXMgTm9uZToKKyAgICAgICAgICAgIGlmIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNv
bikgPiAwOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaWYg
Y29kZSBpcyBOb25lJykKKyAgICAgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShyZWFzb24sIHN0cikgYW5kIG5vdCBpc2luc3Rh
bmNlKHJlYXNvbiwgdW5pY29kZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9u
RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnY2xvc2UgcmVhc29uIG11c3QgYmUgYW4g
aW5zdGFuY2Ugb2Ygc3RyIG9yIHVuaWNvZGUnKQorCiAgICAgICAgIHNlbGYuX3NlbmRfY2xvc2lu
Z19oYW5kc2hha2UoY29kZSwgcmVhc29uKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Nl
bnQgc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdTZW50IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBo
YW5kc2hha2UgKGNvZGU9JXIsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgY29kZSwgcmVhc29u
KQogCiAgICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfR09JTkdfQVdBWSBvcgogICAg
ICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX1BST1RPQ09MX0VSUk9SKToKQEAgLTYyMSwx
MCArNzE2LDYgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAjIG5vdGU6IG1v
ZF9weXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4K
IAogICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGlmIGxlbihib2R5
KSA+IDEyNToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
J0FwcGxpY2F0aW9uIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlIDEyNSBieXRl
cyBvciAnCi0gICAgICAgICAgICAgICAgJ2xlc3MnKQogICAgICAgICBmcmFtZSA9IGNyZWF0ZV9w
aW5nX2ZyYW1lKAogICAgICAgICAgICAgYm9keSwKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
bWFza19zZW5kLApAQCAtNjM0LDEwICs3MjUsNiBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6
CiAgICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCiAKICAgICBkZWYgX3NlbmRf
cG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgaWYgbGVuKGJvZHkpID4gMTI1OgotICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAnQXBwbGljYXRpb24gZGF0YSBz
aXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAg
ICAgICAnbGVzcycpCiAgICAgICAgIGZyYW1lID0gY3JlYXRlX3BvbmdfZnJhbWUoCiAgICAgICAg
ICAgICBib2R5LAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2Nv
bW1vbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvY29tbW9uLnB5CmluZGV4IGJhNjcwYmI0MmVlYjE1MjYzODE5ODk5NzdmZDI3NGMzMDNiZGM0
MjIuLjcxMDk2N2M4MDMyNDgzZWMxMWQ4ODRhYmMxNWM1YmI5MmNlOWZkMDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvY29tbW9u
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvY29tbW9uLnB5CkBAIC0yOCw2ICsyOCwxNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKKyIiIlRo
aXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2Vi
U29ja2V0IHByb3RvY29sLgorIiIiCisKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0
dHBfaGVhZGVyX3V0aWwKKworCisjIEFkZGl0aW9uYWwgbG9nIGxldmVsIGRlZmluaXRpb25zLgor
TE9HTEVWRUxfRklORSA9IDkKKwogIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2NrZXQgcHJv
dG9jb2wgdmVyc2lvbi4KIFZFUlNJT05fSElYSUU3NSA9IC0xCiBWRVJTSU9OX0hZQkkwMCA9IDAK
QEAgLTkzLDYgKzEwMyw3IEBAIFNFQ19XRUJTT0NLRVRfTE9DQVRJT05fSEVBREVSID0gJ1NlYy1X
ZWJTb2NrZXQtTG9jYXRpb24nCiAjIEV4dGVuc2lvbnMKIERFRkxBVEVfU1RSRUFNX0VYVEVOU0lP
TiA9ICdkZWZsYXRlLXN0cmVhbScKIERFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUt
ZnJhbWUnCitQRVJGUkFNRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVyZnJhbWUtY29tcHJl
c3MnCiBYX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1kZWZsYXRl
LWZyYW1lJwogCiAjIFN0YXR1cyBjb2RlcwpAQCAtMTc2LDQgKzE4NywxMTggQEAgY2xhc3MgRXh0
ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtX3Zh
bHVlCiAKIAorY2xhc3MgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbihFeGNlcHRpb24pOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc3VwZXIoRXh0ZW5zaW9uUGFyc2lu
Z0V4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKKworCitkZWYgX3BhcnNlX2V4dGVuc2lv
bl9wYXJhbShzdGF0ZSwgZGVmaW5pdGlvbiwgYWxsb3dfcXVvdGVkX3N0cmluZyk6CisgICAgcGFy
YW1fbmFtZSA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKworICAgIGlm
IHBhcmFtX25hbWUgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2Vw
dGlvbignTm8gdmFsaWQgcGFyYW1ldGVyIG5hbWUgZm91bmQnKQorCisgICAgaHR0cF9oZWFkZXJf
dXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwu
Y29uc3VtZV9zdHJpbmcoc3RhdGUsICc9Jyk6CisgICAgICAgIGRlZmluaXRpb24uYWRkX3BhcmFt
ZXRlcihwYXJhbV9uYW1lLCBOb25lKQorICAgICAgICByZXR1cm4KKworICAgIGh0dHBfaGVhZGVy
X3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGFsbG93X3F1b3RlZF9zdHJpbmc6
CisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQgcGFy
c2VkIHBhcmFtX3ZhbHVlIGlzIHRva2VuCisgICAgICAgIHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFk
ZXJfdXRpbC5jb25zdW1lX3Rva2VuX29yX3F1b3RlZF9zdHJpbmcoc3RhdGUpCisgICAgZWxzZToK
KyAgICAgICAgcGFyYW1fdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3Rh
dGUpCisgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9u
UGFyc2luZ0V4Y2VwdGlvbigKKyAgICAgICAgICAgICdObyB2YWxpZCBwYXJhbWV0ZXIgdmFsdWUg
Zm91bmQgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiAnCisgICAgICAgICAgICAncGFyYW1ldGVy
ICVyJyAlIHBhcmFtX25hbWUpCisKKyAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0ZXIocGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUpCisKKworZGVmIF9wYXJzZV9leHRlbnNpb24oc3RhdGUsIGFsbG93
X3F1b3RlZF9zdHJpbmcpOgorICAgIGV4dGVuc2lvbl90b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwu
Y29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICBpZiBleHRlbnNpb25fdG9rZW4gaXMgTm9uZToKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihl
eHRlbnNpb25fdG9rZW4pCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBodHRwX2hlYWRlcl91
dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc7Jyk6CisgICAgICAgICAgICBicmVhaworCisgICAg
ICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKHN0YXRlLCBleHRlbnNpb24sIGFs
bG93X3F1b3RlZF9zdHJpbmcpCisgICAgICAgIGV4Y2VwdCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0
aW9uLCBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJQor
ICAgICAgICAgICAgICAgIChleHRlbnNpb25fdG9rZW4sIGUpKQorCisgICAgcmV0dXJuIGV4dGVu
c2lvbgorCisKK2RlZiBwYXJzZV9leHRlbnNpb25zKGRhdGEsIGFsbG93X3F1b3RlZF9zdHJpbmc9
RmFsc2UpOgorICAgICIiIlBhcnNlcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIHZh
bHVlIHJldHVybnMgYSBsaXN0IG9mCisgICAgRXh0ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMuCisK
KyAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUgdHJpbW1lZC4KKyAgICAiIiIKKworICAgIHN0YXRl
ID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoZGF0YSkKKworICAgIGV4dGVuc2lvbl9s
aXN0ID0gW10KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBleHRlbnNpb24gPSBfcGFyc2VfZXh0
ZW5zaW9uKHN0YXRlLCBhbGxvd19xdW90ZWRfc3RyaW5nKQorICAgICAgICBpZiBleHRlbnNpb24g
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fbGlzdC5hcHBlbmQoZXh0ZW5zaW9u
KQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAg
ICAgICBpZiBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpIGlzIE5vbmU6CisgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5n
KHN0YXRlLCAnLCcpOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyBoZWFkZXI6ICcKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBidXQgZm91
bmQgJXInICUKKyAgICAgICAgICAgICAgICBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQor
CisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlm
IGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2lu
Z0V4Y2VwdGlvbigKKyAgICAgICAgICAgICdObyB2YWxpZCBleHRlbnNpb24gZW50cnkgZm91bmQn
KQorCisgICAgcmV0dXJuIGV4dGVuc2lvbl9saXN0CisKKworZGVmIGZvcm1hdF9leHRlbnNpb24o
ZXh0ZW5zaW9uKToKKyAgICAiIiJGb3JtYXRzIGFuIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3Qu
IiIiCisKKyAgICBmb3JtYXR0ZWRfcGFyYW1zID0gW2V4dGVuc2lvbi5uYW1lKCldCisgICAgZm9y
IHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVycygpOgor
ICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgZm9ybWF0dGVkX3Bh
cmFtcy5hcHBlbmQocGFyYW1fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHF1b3Rl
ZF92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFtX3ZhbHVl
KQorICAgICAgICAgICAgZm9ybWF0dGVkX3BhcmFtcy5hcHBlbmQoJyVzPSVzJyAlIChwYXJhbV9u
YW1lLCBxdW90ZWRfdmFsdWUpKQorICAgIHJldHVybiAnOyAnLmpvaW4oZm9ybWF0dGVkX3BhcmFt
cykKKworCitkZWYgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uX2xpc3QpOgorICAgICIiIkZv
cm1hdHMgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgorCisgICAgZm9y
bWF0dGVkX2V4dGVuc2lvbl9saXN0ID0gW10KKyAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lv
bl9saXN0OgorICAgICAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGZvcm1hdF9l
eHRlbnNpb24oZXh0ZW5zaW9uKSkKKyAgICByZXR1cm4gJywgJy5qb2luKGZvcm1hdHRlZF9leHRl
bnNpb25fbGlzdCkKKworCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5z
aW9ucy5weQppbmRleCBjZTM3ODQ2NTgxMDRjNjgwYjRmZGIyNzNiMjFiOWNlYTQ2NDkzMDUwLi41
MmI3YTRhMTkyODEzYjU3ODJmNjhhMWM5NDAzODQ4YTQ3YTNhMjljIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tl
dC9leHRlbnNpb25zLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBAQAogCiBmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaHR0cF9oZWFkZXJfdXRpbCBpbXBvcnQgcXVvdGVfaWZfbmVjZXNz
YXJ5CiAKIAogX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30KQEAgLTI1NCw2ICsyNTUsOTYgQEAg
X2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTl0gPSAoCiAgICAgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQogCiAKK2RlZiBf
cGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKGRhdGEpOgorICAgICIiIlBhcnNlcyB0aGUgdmFsdWUg
b2YgIm1ldGhvZCIgZXh0ZW5zaW9uIHBhcmFtZXRlci4iIiIKKworICAgIHJldHVybiBjb21tb24u
cGFyc2VfZXh0ZW5zaW9ucyhkYXRhLCBhbGxvd19xdW90ZWRfc3RyaW5nPVRydWUpCisKKworZGVm
IF9jcmVhdGVfYWNjZXB0ZWRfbWV0aG9kX2Rlc2MobWV0aG9kX25hbWUsIG1ldGhvZF9wYXJhbXMp
OgorICAgICIiIkNyZWF0ZXMgYWNjZXB0ZWQtbWV0aG9kLWRlc2MgZnJvbSBnaXZlbiBtZXRob2Qg
bmFtZSBhbmQgcGFyYW1ldGVycyIiIgorCisgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcihtZXRob2RfbmFtZSkKKyAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbWV0aG9kX3Bh
cmFtczoKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIobmFtZSwgdmFsdWUpCisgICAg
cmV0dXJuIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikKKworCitjbGFzcyBQZXJG
cmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVy
ZmFjZSk6CisgICAgIiIiV2ViU29ja2V0IFBlci1mcmFtZSBjb21wcmVzc2lvbiBleHRlbnNpb24g
cHJvY2Vzc29yLiIiIgorCisgICAgX01FVEhPRF9QQVJBTSA9ICdtZXRob2QnCisgICAgX0RFRkxB
VEVfTUVUSE9EID0gJ2RlZmxhdGUnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorICAg
ICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9t
ZXRob2RfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yID0g
Tm9uZQorCisgICAgZGVmIF9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKHNlbGYsIG1ldGhv
ZF9kZXNjKToKKyAgICAgICAgaWYgbWV0aG9kX2Rlc2MubmFtZSgpID09IHNlbGYuX0RFRkxBVEVf
TUVUSE9EOgorICAgICAgICAgICAgcmV0dXJuIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cihtZXRob2RfZGVzYykKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfZ2V0X2NvbXBy
ZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZShzZWxmKToKKyAgICAgICAgIiIiTG9va3MgdXAgdGhl
IGNvbXByZXNzaW9uIHByb2Nlc3NvciBiYXNlZCBvbiB0aGUgc2VsZi5fcmVxdWVzdCBhbmQKKyAg
ICAgICAgICAgcmV0dXJucyB0aGUgY29tcHJlc3Npb24gcHJvY2Vzc29yJ3MgcmVzcG9uc2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIG1ldGhvZF9saXN0ID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFy
YW1ldGVyX3ZhbHVlKHNlbGYuX01FVEhPRF9QQVJBTSkKKyAgICAgICAgaWYgbWV0aG9kX2xpc3Qg
aXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIG1ldGhvZHMgPSBfcGFy
c2VfY29tcHJlc3Npb25fbWV0aG9kKG1ldGhvZF9saXN0KQorICAgICAgICBpZiBtZXRob2RzIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBjb21yZXNzaW9uX3Byb2Nl
c3NvciA9IE5vbmUKKyAgICAgICAgIyBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0cmllcyBv
bmx5IHRoZSBmaXJzdCBtZXRob2QgdGhhdCBtYXRjaGVzCisgICAgICAgICMgc3VwcG9ydGVkIGFs
Z29yaXRobS4gRm9sbG93aW5nIG1ldGhvZHMgYXJlbid0IHRyaWVkIGV2ZW4gaWYgdGhlCisgICAg
ICAgICMgZmlyc3Qgb25lIGlzIHJlamVjdGVkLgorICAgICAgICAjIFRPRE8oYmFzaGkpOiBOZWVk
IHRvIGNsYXJpZnkgdGhpcyBiZWhhdmlvci4KKyAgICAgICAgZm9yIG1ldGhvZF9kZXNjIGluIG1l
dGhvZHM6CisgICAgICAgICAgICBjb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBzZWxmLl9sb29rdXBf
Y29tcHJlc3Npb25fcHJvY2Vzc29yKAorICAgICAgICAgICAgICAgIG1ldGhvZF9kZXNjKQorICAg
ICAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29yIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gbWV0aG9kX2Rlc2MubmFtZSgp
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29y
IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBwcm9jZXNzb3JfcmVz
cG9uc2UgPSBjb21wcmVzc2lvbl9wcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisg
ICAgICAgIGlmIHByb2Nlc3Nvcl9yZXNwb25zZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yID0gY29tcHJlc3Npb25f
cHJvY2Vzc29yCisgICAgICAgIHJldHVybiBwcm9jZXNzb3JfcmVzcG9uc2UKKworICAgIGRlZiBn
ZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3JfcmVzcG9uc2Ug
PSBzZWxmLl9nZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX3Jlc3BvbnNlKCkKKyAgICAgICAgaWYg
cHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisg
ICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0
Lm5hbWUoKSkKKyAgICAgICAgYWNjZXB0ZWRfbWV0aG9kX2Rlc2MgPSBfY3JlYXRlX2FjY2VwdGVk
X21ldGhvZF9kZXNjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9j
b21wcmVzc2lvbl9tZXRob2RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc29yX3Jlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCisgICAgICAgIHJlc3BvbnNl
LmFkZF9wYXJhbWV0ZXIoc2VsZi5fTUVUSE9EX1BBUkFNLCBhY2NlcHRlZF9tZXRob2RfZGVzYykK
KyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgJ0VuYWJsZSAlcyBleHRl
bnNpb24gKG1ldGhvZDogJXMpJyAlCisgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1lKCks
IHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNl
CisKKyAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgor
ICAgICAgICBpZiBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3Iuc2V0dXBfc3Ry
ZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgZ2V0X2NvbXByZXNzaW9uX3By
b2Nlc3NvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nv
cgorCisKK19hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSRlJBTUVfQ09NUFJFU1NJT05f
RVhURU5TSU9OXSA9ICgKKyAgICBQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29y
KQorCisKIGRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCk6CiAg
ICAgZ2xvYmFsIF9hdmFpbGFibGVfcHJvY2Vzc29ycwogICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9h
dmFpbGFibGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQppbmRleCA0ZDdjMzJlMzUwNzM5MWE5NGUz
OGYzNDIyZTdmNjNlYmVjOGRmOWY0Li5iYzA5NWIxMjlmMmQ1MjNlOWM3MzNjYmJmOWJjNDM4NDI3
MzM4Y2MwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQpAQCAtMSw0
ICsxLDQgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTIxNiwxMDggKzIxNiw0IEBAIGRlZiBwYXJzZV90b2tlbl9saXN0KGRhdGEpOgogICAgIHJldHVy
biB0b2tlbl9saXN0CiAKIAotZGVmIF9wYXJzZV9leHRlbnNpb25fcGFyYW0oc3RhdGUsIGRlZmlu
aXRpb24sIGFsbG93X3F1b3RlZF9zdHJpbmcpOgotICAgIHBhcmFtX25hbWUgPSBodHRwX2hlYWRl
cl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICBpZiBwYXJhbV9uYW1lIGlzIE5vbmU6
Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignTm8gdmFsaWQgcGFyYW1ldGVyIG5h
bWUgZm91bmQnKQotCi0gICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQot
Ci0gICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc9Jyk6
Ci0gICAgICAgIGRlZmluaXRpb24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBOb25lKQotICAg
ICAgICByZXR1cm4KLQotICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkK
LQotICAgIGlmIGFsbG93X3F1b3RlZF9zdHJpbmc6Ci0gICAgICAgICMgVE9ETyh0b3lvc2hpbSk6
IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQgcGFyc2VkIHBhcmFtX3ZhbHVlIGlzIHRva2VuCi0g
ICAgICAgIHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuX29yX3F1
b3RlZF9zdHJpbmcoc3RhdGUpCi0gICAgZWxzZToKLSAgICAgICAgcGFyYW1fdmFsdWUgPSBodHRw
X2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgaWYgcGFyYW1fdmFsdWUgaXMg
Tm9uZToKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgJ05v
IHZhbGlkIHBhcmFtZXRlciB2YWx1ZSBmb3VuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mICcK
LSAgICAgICAgICAgICdwYXJhbWV0ZXIgJXInICUgcGFyYW1fbmFtZSkKLQotICAgIGRlZmluaXRp
b24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSkKLQotCi1kZWYgX3BhcnNl
X2V4dGVuc2lvbihzdGF0ZSwgYWxsb3dfcXVvdGVkX3N0cmluZyk6Ci0gICAgZXh0ZW5zaW9uX3Rv
a2VuID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQotICAgIGlmIGV4dGVu
c2lvbl90b2tlbiBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihleHRlbnNpb25fdG9rZW4pCi0KLSAgICB3aGls
ZSBUcnVlOgotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0K
LSAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc7
Jyk6Ci0gICAgICAgICAgICBicmVhawotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3Vt
ZV9sd3NlcyhzdGF0ZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfcGFyc2VfZXh0ZW5z
aW9uX3BhcmFtKHN0YXRlLCBleHRlbnNpb24sIGFsbG93X3F1b3RlZF9zdHJpbmcpCi0gICAgICAg
IGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAnCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJz
ZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUKLSAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3Rv
a2VuLCBlKSkKLQotICAgIHJldHVybiBleHRlbnNpb24KLQotCi1kZWYgcGFyc2VfZXh0ZW5zaW9u
cyhkYXRhLCBhbGxvd19xdW90ZWRfc3RyaW5nPUZhbHNlKToKLSAgICAiIiJQYXJzZXMgU2VjLVdl
YlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciB2YWx1ZSByZXR1cm5zIGEgbGlzdCBvZgotICAgIGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4KLQotICAgIExlYWRpbmcgTFdTZXMgbXVz
dCBiZSB0cmltbWVkLgotICAgICIiIgotCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBh
cnNpbmdTdGF0ZShkYXRhKQotCi0gICAgZXh0ZW5zaW9uX2xpc3QgPSBbXQotICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgIGV4dGVuc2lvbiA9IF9wYXJzZV9leHRlbnNpb24oc3RhdGUsIGFsbG93X3F1
b3RlZF9zdHJpbmcpCi0gICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAgICAgaHR0cF9oZWFk
ZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlmIGh0dHBfaGVhZGVyX3V0
aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYg
bm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6Ci0gICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0
byBwYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAnCi0gICAgICAgICAgICAg
ICAgJ0V4cGVjdGVkIGEgY29tbWEgYnV0IGZvdW5kICVyJyAlCi0gICAgICAgICAgICAgICAgaHR0
cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNv
bnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4oZXh0ZW5zaW9uX2xpc3QpID09IDA6Ci0g
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnMgaGVhZGVyIGNvbnRhaW5zIG5vIHZhbGlkIGV4dGVuc2lvbicpCi0KLSAg
ICByZXR1cm4gZXh0ZW5zaW9uX2xpc3QKLQotCi1kZWYgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5z
aW9uX2xpc3QpOgotICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCi0gICAgZm9yIGV4
dGVuc2lvbiBpbiBleHRlbnNpb25fbGlzdDoKLSAgICAgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtl
eHRlbnNpb24ubmFtZSgpXQotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4g
ZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBp
cyBOb25lOgotICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25h
bWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHF1b3RlZF92YWx1ZSA9IGh0
dHBfaGVhZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFtX3ZhbHVlKQotICAgICAgICAg
ICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycgJSAocGFyYW1fbmFtZSwgcXVv
dGVkX3ZhbHVlKSkKLQotICAgICAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKCc7
ICcuam9pbihmb3JtYXR0ZWRfcGFyYW1zKSkKLQotICAgIHJldHVybiAnLCAnLmpvaW4oZm9ybWF0
dGVkX2V4dGVuc2lvbl9saXN0KQotCi0KICMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvaHliaS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKaW5kZXggM2JjODRiZDI2NTY5MmZmOWNkYzkzMWZiMjc0
ZWRiODM4YmY5NWZlZC4uMjg4M2FjYmY4NTZkZjcxODU0N2U3ZmM5NjdiNTZjMjY0ZjA1ZTBiNiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNv
Y2tldC9oYW5kc2hha2UvaHliaS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CkBAIC0xLDQgKzEsNCBAQAot
IyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJ
bmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTAsMTEgKzUw
LDkgQEAgaW1wb3J0IHJlCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1
ZXN0X2xpbmUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9y
bWF0X2V4dGVuc2lvbnMKIGZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgZm9ybWF0X2hlYWRlcgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGlt
cG9ydCBnZXRfbWFuZGF0b3J5X2hlYWRlcgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfZXh0ZW5zaW9ucwogZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV90b2tlbl9saXN0CiBmcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIK
IGZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3Vi
cHJvdG9jb2wKQEAgLTI5MCw4ICsyODgsMTIgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgog
ICAgICAgICAgICAgYWxsb3dfcXVvdGVkX3N0cmluZz1GYWxzZQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgYWxsb3dfcXVvdGVkX3N0cmluZz1UcnVlCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBwYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAg
ZXh0ZW5zaW9uc19oZWFkZXIsIGFsbG93X3F1b3RlZF9zdHJpbmc9YWxsb3dfcXVvdGVkX3N0cmlu
ZykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRf
ZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGV4
dGVuc2lvbnNfaGVhZGVyLCBhbGxvd19xdW90ZWRfc3RyaW5nPWFsbG93X3F1b3RlZF9zdHJpbmcp
CisgICAgICAgIGV4Y2VwdCBjb21tb24uRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgZToKKyAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFp
bGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXI6ICVyJyAlIGUpCiAK
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAogICAgICAgICAgICAgJ0V4dGVuc2lvbnMgcmVx
dWVzdGVkOiAlcicsCkBAIC0zNTgsNyArMzYwLDcgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3Qp
OgogICAgICAgICAgICAgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6CiAg
ICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKICAgICAgICAgICAgICAg
ICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwKLSAgICAgICAgICAgICAg
ICBmb3JtYXRfZXh0ZW5zaW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKKyAgICAg
ICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zKSkpCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnXHJcbicpCiAKICAgICAgICAgcmF3
X3Jlc3BvbnNlID0gJycuam9pbihyZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5w
eQppbmRleCBkYzE0M2VhMDA2OTNjZTI1Nzg3NjA1NjA4YWVmMzE2ZTRhOTljYjFmLi44NTBhYTVj
ZDRjZTg5NWQ4M2NhMTVjY2I3YWFkNmVjOTY0YzkwYjU0IDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4K
ICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NSw2ICs1NSwyMCBA
QCBoYW5kbGVycy4gSWYgdGhpcyBwYXRoIGlzIHJlbGF0aXZlLCA8ZG9jdW1lbnRfcm9vdD4gaXMg
dXNlZCBhcyB0aGUgYmFzZS4KIGhhbmRsZXJzIHVuZGVyIHNjYW5fZGlyIGFyZSBzY2FubmVkLiBU
aGlzIGlzIHVzZWZ1bCBpbiBzYXZpbmcgc2NhbiB0aW1lLgogCiAKK1NVUFBPUlRJTkcgVExTCisK
K1RvIHN1cHBvcnQgVExTLCBydW4gc3RhbmRhbG9uZS5weSB3aXRoIC10LCAtaywgYW5kIC1jIG9w
dGlvbnMuCisKKworU1VQUE9SVElORyBDTElFTlQgQVVUSEVOVElDQVRJT04KKworVG8gc3VwcG9y
dCBjbGllbnQgYXV0aGVudGljYXRpb24gd2l0aCBUTFMsIHJ1biBzdGFuZGFsb25lLnB5IHdpdGgg
LXQsIC1rLCAtYywKK2FuZCAtLWNhLWNlcnRpZmljYXRlIG9wdGlvbnMuCisKK0UuZy4sICQuL3N0
YW5kYWxvbmUucHkgLWQgLi4vZXhhbXBsZSAtcCAxMDQ0MyAtdCAtYyAuLi90ZXN0L2NlcnQvY2Vy
dC5wZW0gLWsKKy4uL3Rlc3QvY2VydC9rZXkucGVtIC0tY2EtY2VydGlmaWNhdGU9Li4vdGVzdC9j
ZXJ0L2NhY2VydC5wZW0KKworCiBDT05GSUdVUkFUSU9OIEZJTEUKIAogWW91IGNhbiBhbHNvIHdy
aXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUgcGF0
aCB0bwpAQCAtMzExLDEwICszMjUsMTYgQEAgY2xhc3MgV2ViU29ja2V0U2VydmVyKFNvY2tldFNl
cnZlci5UaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgICAg
ICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9v
cHRpb25zLnVzZV90bHM6CiAgICAgICAgICAgICAgICAgaWYgX0hBU19TU0w6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLmNhX2NlcnRpZmljYXRl
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlS
RUQKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9jZXJ0XyA9IHNzbC5DRVJUX05PTkUKICAgICAgICAgICAgICAgICAgICAgc29ja2V0XyA9
IHNzbC53cmFwX3NvY2tldChzb2NrZXRfLAogICAgICAgICAgICAgICAgICAgICAgICAga2V5Zmls
ZT1zZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlcnRmaWxlPXNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLmNlcnRp
ZmljYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09M
X1NTTHYyMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NP
TF9TU0x2MjMsCisgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1zZWxmLndlYnNvY2tl
dF9zZXJ2ZXJfb3B0aW9ucy5jYV9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCiAgICAgICAgICAgICAgICAgaWYgX0hBU19PUEVOX1NT
TDoKICAgICAgICAgICAgICAgICAgICAgY3R4ID0gT3BlblNTTC5TU0wuQ29udGV4dChPcGVuU1NM
LlNTTC5TU0x2MjNfTUVUSE9EKQogICAgICAgICAgICAgICAgICAgICBjdHgudXNlX3ByaXZhdGVr
ZXlfZmlsZSgKQEAgLTYwMSw3ICs2MjEsMTMgQEAgY2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRs
ZXIoQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICByZXR1cm4g
RmFsc2UKIAogCitkZWYgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyhjKToKKyAgICByZXR1cm4gbG9n
Z2luZy5nZXRMb2dnZXIoJyVzLiVzJyAlIChjLl9fbW9kdWxlX18sIGMuX19uYW1lX18pKQorCisK
IGRlZiBfY29uZmlndXJlX2xvZ2dpbmcob3B0aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5h
bWUoY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU5FJykKKwogICAgIGxvZ2dlciA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0
aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkpCiAgICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKQEAgLTYx
NCw2ICs2NDAsMTMgQEAgZGVmIF9jb25maWd1cmVfbG9nZ2luZyhvcHRpb25zKToKICAgICBoYW5k
bGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCiAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxl
cikKIAorICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5nLmdldExldmVsTmFtZSgK
KyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigpKQorICAgIF9nZXRfbG9n
Z2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKAorICAgICAgICBkZWZsYXRl
X2xvZ19sZXZlbF9uYW1lKQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fSW5mbGF0
ZXIpLnNldExldmVsKAorICAgICAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lKQorCiAKIGRlZiBf
YWxpYXNfaGFuZGxlcnMoZGlzcGF0Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6CiAg
ICAgIiIiU2V0IGFsaWFzZXMgc3BlY2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBp
biBkaXNwYXRjaGVyLgpAQCAtNzAyLDEzICs3MzUsMjUgQEAgZGVmIF9idWlsZF9vcHRpb25fcGFy
c2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIHByaXZh
dGUga2V5IGZpbGUuJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLWMnLCAnLS1jZXJ0aWZpY2F0
ZScsIGRlc3Q9J2NlcnRpZmljYXRlJywKICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScn
LCBoZWxwPSdUTFMgY2VydGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LWNhLWNlcnRpZmljYXRlJywgZGVzdD0nY2FfY2VydGlmaWNhdGUnLCBkZWZhdWx0PScnLAorICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUTFMgQ0EgY2VydGlmaWNhdGUgZmlsZSBmb3IgY2xp
ZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXV0aGVudGljYXRpb24uJykpCiAg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1sJywgJy0tbG9nLWZpbGUnLCAnLS1sb2dfZmlsZScsIGRl
c3Q9J2xvZ19maWxlJywKICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdM
b2cgZmlsZS4nKQorICAgICMgQ3VzdG9tIGxvZyBsZXZlbDoKKyAgICAjIC0gRklORTogUHJpbnRz
IHN0YXR1cyBvZiBlYWNoIGZyYW1lIHByb2Nlc3Npbmcgc3RlcAogICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWxvZy1sZXZlbCcsICctLWxvZ19sZXZlbCcsIHR5cGU9J2Nob2ljZScsCiAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0nbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybicsCi0gICAgICAg
ICAgICAgICAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJu
JywgJ2Vycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZmluZScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3
YXJuJywgJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JpdGljYWwn
XSwKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLS1kZWZsYXRlLWxvZy1sZXZlbCcsICctLWRlZmxhdGVfbG9nX2xldmVsJywK
KyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdjaG9pY2UnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2RlZmxhdGVfbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybicsCisgICAgICAgICAg
ICAgICAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJuJywg
J2Vycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JpdGljYWwnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwgZm9yIF9EZWZsYXRlciBhbmQgX0lu
ZmxhdGVyLicpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGhyZWFkLW1vbml0b3ItaW50ZXJ2
YWwtaW4tc2VjJywKICAgICAgICAgICAgICAgICAgICAgICAnLS10aHJlYWRfbW9uaXRvcl9pbnRl
cnZhbF9pbl9zZWMnLAogICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RocmVhZF9tb25pdG9y
X2ludGVydmFsX2luX3NlYycsCkBAIC04MjUsMTMgKzg3MCwyMCBAQCBkZWYgX21haW4oYXJncz1O
b25lKToKIAogICAgIGlmIG9wdGlvbnMudXNlX3RsczoKICAgICAgICAgaWYgbm90IChfSEFTX1NT
TCBvciBfSEFTX09QRU5fU1NMKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBz
dXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wuJykKKyAgICAgICAgICAgIGxvZ2dpbmcu
Y3JpdGljYWwoJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicp
CiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRl
X2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZpY2F0ZToKICAgICAgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoCiAgICAgICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVf
a2V5IGFuZCBjZXJ0aWZpY2F0ZS4nKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAorICAgIGlm
IG9wdGlvbnMuY2FfY2VydGlmaWNhdGU6CisgICAgICAgIGlmIG5vdCBvcHRpb25zLnVzZV90bHM6
CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdUTFMgbXVzdCBiZSBlbmFibGVkIGZvciBj
bGllbnQgYXV0aGVudGljYXRpb24uJykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAg
IGlmIG5vdCBfSEFTX1NTTDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBh
dXRoZW50aWNhdGlvbiByZXF1aXJlcyBzc2wgbW9kdWxlLicpCisKICAgICBpZiBub3Qgb3B0aW9u
cy5zY2FuX2RpcjoKICAgICAgICAgb3B0aW9ucy5zY2FuX2RpciA9IG9wdGlvbnMud2Vic29ja19o
YW5kbGVycwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
bW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKaW5kZXggOWEwYWI1ZGU2OTdhY2IxMzc3ZjllYjBk
YWY4MzIxM2NkOTVkMmJhNy4uNjE0NmUwNTJmYmM3NzdiYzMwNmFmMTZlNjY5NzM0Njg0MWVjY2M0
YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC91dGlsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAtMTc3LDkgKzE3NywxNiBAQCBjbGFzcyBSZXBlYXRl
ZFhvck1hc2tlcihvYmplY3QpOgogICAgIGRlZiBtYXNrKHNlbGYsIHMpOgogICAgICAgICByZXN1
bHQgPSBhcnJheS5hcnJheSgnQicpCiAgICAgICAgIHJlc3VsdC5mcm9tc3RyaW5nKHMpCisgICAg
ICAgICMgVXNlIHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0
IHRvIGFjY2VzcworICAgICAgICAjIGF0dHJpYnV0ZXMKKyAgICAgICAgY291bnQgPSBzZWxmLl9j
b3VudAorICAgICAgICBtYXNrID0gc2VsZi5fbWFzaworICAgICAgICBtYXNrX3NpemUgPSBzZWxm
Ll9tYXNrX3NpemUKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAgICAg
ICAgICAgIHJlc3VsdFtpXSBePSBzZWxmLl9tYXNrW3NlbGYuX2NvdW50XQotICAgICAgICAgICAg
c2VsZi5fY291bnQgPSAoc2VsZi5fY291bnQgKyAxKSAlIHNlbGYuX21hc2tfc2l6ZQorICAgICAg
ICAgICAgcmVzdWx0W2ldIF49IG1hc2tbY291bnRdCisgICAgICAgICAgICBjb3VudCA9IChjb3Vu
dCArIDEpICUgbWFza19zaXplCisgICAgICAgIHNlbGYuX2NvdW50ID0gY291bnQKKwogICAgICAg
ICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147499</attachid>
            <date>2012-06-13 23:48:03 -0700</date>
            <delta_ts>2012-06-14 05:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88975-20120614154802.patch</filename>
            <type>text/plain</type>
            <size>38620</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDc1OGE5ZmM1MjU0NTIwMTFhMTYwNGMxYWMxYTVkY2U3
Yjc2NzBjMy4uMjRhYTYxMmE2MWMwMDU5ZmQ2YzE0YTI1YjE3MzlhNjRmMDM2OTA0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2
IEBACisyMDEyLTA2LTEzICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBVcGRhdGUgcHl3ZWJzb2NrZXQgdG8gMC43LjYgZnJvbSAwLjcuNAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5ldyB2ZXJz
aW9uIG9mIHB5d2Vic29ja2V0IGludHJvZHVjZSBmb2xsb3dpbmcgZmVhdHVyZXMuCisgICAgICAg
ICAtIEFsbG93IGhhbmRsZXJzIHRvIHNlbmQgYSBjbG9zZSBmcmFtZSB3aXRoIGVtcHR5IGJvZHkg
aW4gcmVzcG9uc2Ugb2YKKyAgICAgICAgICAgICBhIGNsaWVudCBpbml0aWF0ZWQgY2xvc2luZyBo
YW5kc2hha2UKKyAgICAgICAgIC0gSW1wbGVtZW50IHBlcmZyYW1lIGNvbXByZXNzaW9uIGV4dGVu
c2lvbgorICAgICAgICAgLSBTdXBwb3J0IGNsaWVudCBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlv
bgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tl
dC9DT1BZSU5HOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3
ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5OgorICAgICAgICAoX2NyZWF0ZV9jb250cm9sX2ZyYW1l
KToKKyAgICAgICAgKFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSk6CisgICAgICAgIChTdHJlYW0uc2Vu
ZF9tZXNzYWdlKToKKyAgICAgICAgKFN0cmVhbS5yZWNlaXZlX21lc3NhZ2UpOgorICAgICAgICAo
U3RyZWFtLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKToKKyAgICAgICAgKFN0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L2NvbW1vbi5weToKKyAgICAgICAgKEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24p
OgorICAgICAgICAoRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbi5fX2luaXRfXyk6CisgICAgICAg
IChfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKToKKyAgICAgICAgKF9wYXJzZV9leHRlbnNpb24pOgor
ICAgICAgICAocGFyc2VfZXh0ZW5zaW9ucyk6CisgICAgICAgIChmb3JtYXRfZXh0ZW5zaW9uKToK
KyAgICAgICAgKGZvcm1hdF9leHRlbnNpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHk6CisgICAgICAgIChfcGFy
c2VfY29tcHJlc3Npb25fbWV0aG9kKToKKyAgICAgICAgKF9jcmVhdGVfYWNjZXB0ZWRfbWV0aG9k
X2Rlc2MpOgorICAgICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3Nvcik6
CisgICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yLl9faW5pdF9f
KToKKyAgICAgICAgKFBlckZyYW1lQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3IuX2xvb2t1
cF9jb21wcmVzc2lvbl9wcm9jZXNzb3IpOgorICAgICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4
dGVuc2lvblByb2Nlc3Nvci5fZ2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZSk6Cisg
ICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yLmdldF9leHRlbnNp
b25fcmVzcG9uc2UpOgorICAgICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nl
c3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9u
RXh0ZW5zaW9uUHJvY2Vzc29yLmdldF9jb21wcmVzc2lvbl9wcm9jZXNzb3IpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19i
YXNlLnB5OgorICAgICAgICAocGFyc2VfdG9rZW5fbGlzdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weToKKyAg
ICAgICAgKEhhbmRzaGFrZXIuX3BhcnNlX2V4dGVuc2lvbnMpOgorICAgICAgICAoSGFuZHNoYWtl
ci5fc2VuZF9oYW5kc2hha2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weToKKyAgICAgICAgKFdlYlNvY2tldFNlcnZl
ci5fY3JlYXRlX3NvY2tldHMpOgorICAgICAgICAoX2dldF9sb2dnZXJfZnJvbV9jbGFzcyk6Cisg
ICAgICAgIChfY29uZmlndXJlX2xvZ2dpbmcpOgorICAgICAgICAoX2J1aWxkX29wdGlvbl9wYXJz
ZXIpOgorICAgICAgICAoX21haW4uaWYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weToKKyAgICAgICAgKFJlcGVhdGVkWG9yTWFz
a2VyLm1hc2spOgorCiAyMDEyLTA2LTEyICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGJvdCB0eXBlcyBpbnNpZGUgKCkuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L0NPUFlJ
TkcgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L0NP
UFlJTkcKaW5kZXggYWI5ZDUyZGRmOTMwNzIwODZjYmJhMjEyY2RiYmVkN2IzOGZhYTUzYS4uOTg5
ZDAyZTRjZDA5MjM3ODA2ZjdkZjhiZWFlY2M2OTE1MjczNDI4ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9DT1BZSU5HCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvQ09QWUlO
RwpAQCAtMSw0ICsxLDQgQEAKLUNvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorQ29weXJpZ2h0
IDIwMTIsIEdvb2dsZSBJbmMuCiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvX3N0cmVhbV9oeWJpLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21v
ZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKaW5kZXggYzAwZjU2OTJiZGJlM2JlOTY5ZGVh
OTEzNmI3NWFjMzg0ZTkxZDhjOC4uMzRmYTdhNjBlNjAyMTdmN2YyZDBlMTc3NDA4NDI1ODg1ZTFh
NDFmNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9w
eXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKQEAgLTM5LDYgKzM5LDcg
QEAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQogZnJvbSBjb2xsZWN0aW9ucyBp
bXBvcnQgZGVxdWUKIGltcG9ydCBvcwogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKIAogZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IHV0aWwKQEAgLTIwOCw3ICsyMDksMTcgQEAgY2xhc3MgRnJhZ21lbnRlZEZyYW1lQnVpbGRl
cihvYmplY3QpOgogZGVmIF9jcmVhdGVfY29udHJvbF9mcmFtZShvcGNvZGUsIGJvZHksIG1hc2ss
IGZyYW1lX2ZpbHRlcnMpOgogICAgIGZyYW1lID0gRnJhbWUob3Bjb2RlPW9wY29kZSwgcGF5bG9h
ZD1ib2R5KQogCi0gICAgcmV0dXJuIF9maWx0ZXJfYW5kX2Zvcm1hdF9mcmFtZV9vYmplY3QoZnJh
bWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9m
aWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorCisgICAgaWYgbGVu
KGZyYW1lLnBheWxvYWQpID4gMTI1OgorICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRp
b24oCisgICAgICAgICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVz
dCBiZSAxMjUgYnl0ZXMgb3IgbGVzcycpCisKKyAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKAor
ICAgICAgICBmcmFtZS5vcGNvZGUsIGxlbihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAg
ICAgICBmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzLCBtYXNrKQorICAgIHJldHVy
biBfYnVpbGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXlsb2FkLCBtYXNrKQogCiAKIGRlZiBjcmVh
dGVfcGluZ19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKQEAgLTI4
Niw2ICsyOTcsOSBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICBJbnZh
bGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4K
ICAgICAgICAgIiIiCiAKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxf
RklORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZSB0aGUgZmlyc3QgMiBvY3Rl
dHMgb2YgYSBmcmFtZScpCisKICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLnJlY2VpdmVfYnl0ZXMo
MikKIAogICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHJlY2VpdmVkWzBdKQpAQCAtMjk5LDYgKzMx
MywxMSBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgIG1hc2sgPSAoc2Vjb25k
X2J5dGUgPj4gNykgJiAxCiAgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25kX2J5dGUgJiAw
eDdmCiAKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnRklOPSVzLCBSU1YxPSVzLCBSU1YyPSVzLCBSU1YzPSVz
LCBvcGNvZGU9JXMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTWFzaz0lcywgUGF5bG9h
ZF9sZW5ndGg9JXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2Miwg
cnN2Mywgb3Bjb2RlLCBtYXNrLCBwYXlsb2FkX2xlbmd0aCkKKwogICAgICAgICBpZiAobWFzayA9
PSAxKSAhPSBzZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlOgogICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICdNYXNrIGJpdCBvbiB0aGUg
cmVjZWl2ZWQgZnJhbWUgZGlkXCdudCBtYXRjaCBtYXNraW5nICcKQEAgLTMxMCw2ICszMjksOSBA
QCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGlu
ZyA9IFRydWUKICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMQogICAgICAgICBpZiBw
YXlsb2FkX2xlbmd0aCA9PSAxMjc6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNvbW1v
bi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZSA4
LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykKKwogICAgICAgICAgICAgZXh0ZW5kZWRf
cGF5bG9hZF9sZW5ndGggPSBzZWxmLnJlY2VpdmVfYnl0ZXMoOCkKICAgICAgICAgICAgIHBheWxv
YWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKICAgICAgICAgICAgICAgICAnIVEnLCBleHRlbmRl
ZF9wYXlsb2FkX2xlbmd0aClbMF0KQEAgLTMxOSw3ICszNDEsMTMgQEAgY2xhc3MgU3RyZWFtKFN0
cmVhbUJhc2UpOgogICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c192ZXJzaW9uID49IDEz
IGFuZCBwYXlsb2FkX2xlbmd0aCA8IDB4MTAwMDA6CiAgICAgICAgICAgICAgICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gRmFsc2UKICAgICAgICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0
ZXMgPSA4CisKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJ
TkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWNvZGVkX3BheWxvYWRfbGVuZ3Ro
PSVzJywgcGF5bG9hZF9sZW5ndGgpCiAgICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2
OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1vY3RldCBleHRlbmRlZCBwYXls
b2FkIGxlbmd0aCcpCisKICAgICAgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gc2Vs
Zi5yZWNlaXZlX2J5dGVzKDIpCiAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51
bnBhY2soCiAgICAgICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBd
CkBAIC0zMjcsNiArMzU1LDkgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAg
ICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgbGVu
Z3RoX2VuY29kaW5nX2J5dGVzID0gMgogCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNv
bW1vbi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVjb2Rl
ZF9wYXlsb2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQorCiAgICAgICAgIGlmIG5vdCB2
YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygK
ICAgICAgICAgICAgICAgICAnUGF5bG9hZCBsZW5ndGggaXMgbm90IGVuY29kZWQgdXNpbmcgdGhl
IG1pbmltYWwgbnVtYmVyIG9mICcKQEAgLTMzNSwxMiArMzY2LDM4IEBAIGNsYXNzIFN0cmVhbShT
dHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMpCiAKICAg
ICAgICAgaWYgbWFzayA9PSAxOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgbWFzaycpCisKICAgICAgICAgICAgIG1hc2tpbmdfbm9u
Y2UgPSBzZWxmLnJlY2VpdmVfYnl0ZXMoNCkKICAgICAgICAgICAgIG1hc2tlciA9IHV0aWwuUmVw
ZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ01hc2s9JXInLCBtYXNraW5nX25vbmNlKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgbWFza2VyID0gX05PT1BfTUFTS0VSCiAKLSAgICAgICAg
Ynl0ZXMgPSBtYXNrZXIubWFzayhzZWxmLnJlY2VpdmVfYnl0ZXMocGF5bG9hZF9sZW5ndGgpKQor
ICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSBw
YXlsb2FkIGRhdGEnKQorICAgICAgICBpZiBzZWxmLl9sb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1v
bi5MT0dMRVZFTF9GSU5FKToKKyAgICAgICAgICAgIHJlY2VpdmVfc3RhcnQgPSB0aW1lLnRpbWUo
KQorCisgICAgICAgIHJhd19wYXlsb2FkX2J5dGVzID0gc2VsZi5yZWNlaXZlX2J5dGVzKHBheWxv
YWRfbGVuZ3RoKQorCisgICAgICAgIGlmIHNlbGYuX2xvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZygKKyAgICAgICAg
ICAgICAgICBjb21tb24uTE9HTEVWRUxfRklORSwKKyAgICAgICAgICAgICAgICAnRG9uZSByZWNl
aXZpbmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAorICAgICAgICAgICAgICAgIHBheWxvYWRf
bGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2ZV9zdGFydCkgLyAxMDAwIC8gMTAwMCkKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXls
b2FkIGRhdGEnKQorCisgICAgICAgIGlmIHNlbGYuX2xvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICAgICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1lKCkK
KworICAgICAgICBieXRlcyA9IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAg
ICAgIGlmIHNlbGYuX2xvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgor
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZygKKyAgICAgICAgICAgICAgICBjb21tb24uTE9H
TEVWRUxfRklORSwKKyAgICAgICAgICAgICAgICAnRG9uZSB1bm1hc2tpbmcgcGF5bG9hZCBkYXRh
IGF0ICVzIE1CL3MnLAorICAgICAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGlt
ZSgpIC0gdW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAxMDAwKQogCiAgICAgICAgIHJldHVybiBvcGNv
ZGUsIGJ5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKIApAQCAtMzU5LDggKzQxNiw4IEBAIGNs
YXNzIFN0cmVhbShTdHJlYW1CYXNlKToKIAogICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgICBC
YWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgc2VydmVyLXRlcm1pbmF0ZWQK
LSAgICAgICAgICAgICAgICBjb25uZWN0aW9uIG9yIGNhbGxlZCB3aXRoIGluY29uc2lzdGVudCBt
ZXNzYWdlIHR5cGUgb3IgYmluYXJ5Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLgorICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24gb3IgY2FsbGVkIHdpdGggaW5jb25zaXN0ZW50IG1lc3NhZ2Ug
dHlwZSBvcgorICAgICAgICAgICAgICAgIGJpbmFyeSBwYXJhbWV0ZXIuCiAgICAgICAgICIiIgog
CiAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CkBAIC00MDgsNiAr
NDY1LDE1IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKIAogICAgICAgICAgICAgZnJhbWUg
PSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCiAKKyAgICAgICAgICAgICMg
Q2hlY2sgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBheWxvYWQgc2l6ZSBmb3IgY29udHJvbCBmcmFt
ZXMKKyAgICAgICAgICAgICMgYmVmb3JlIGV4dGVuc2lvbiBwcm9jZXNzZXMgdGhlIGZyYW1lLgor
ICAgICAgICAgICAgIyBTZWUgYWxzbyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1
I3NlY3Rpb24tNS41CisgICAgICAgICAgICBpZiAoY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZy
YW1lLm9wY29kZSkgYW5kCisgICAgICAgICAgICAgICAgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1
KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJl
IDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykKKwogICAgICAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CiAgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKIApAQCAtNDUw
LDEyICs1MTYsNiBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICAgICAg
aWYgZnJhbWUuZmluOgogICAgICAgICAgICAgICAgICAgICAjIFVuZnJhZ21lbnRlZCBmcmFtZQog
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUu
b3Bjb2RlKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmcmFtZS5wYXlsb2FkKSA+
IDEyNSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FwcGxpY2F0aW9uIGRhdGEgc2l6ZSBv
ZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
MTI1IGJ5dGVzIG9yIGxlc3MnKQotCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IGZyYW1lLm9wY29kZQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZnJh
bWUucGF5bG9hZAogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC00ODgsNyArNTQ4LDExIEBAIGNs
YXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICAjIC0gbm8gYXBwbGljYXRp
b24gZGF0YTogbm8gY29kZSBubyByZWFzb24KICAgICAgICAgICAgICAgICAjIC0gMiBvY3RldCBv
ZiBhcHBsaWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCiAgICAgICAgICAgICAg
ICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRhOiBib3RoIGNvZGUgYW5k
IHJlYXNvbgotICAgICAgICAgICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAg
ICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSA9ICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEKQorICAgICAgICAg
ICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID09IDE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBhIGNs
b3NlIGZyYW1lIGhhcyBzdGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnc3RhdHVzIGNvZGUgbXVzdCBiZSAyIG9jdGV0JykKQEAgLTUwNyw4ICs1NzEs
NyBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAKICAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYWNrIGZvciBz
ZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRz
aGFrZScpCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYWNrIGZvciBzZXJ2ZXIt
aW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKIAogICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKQEAgLTUyMCw5ICs1
ODMsMTYgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAgICAgICAgICAgICBk
aXNwYXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlzcGF0Y2hlcgogICAgICAgICAgICAgICAgICAg
ICBjb2RlLCByZWFzb24gPSBkaXNwYXRjaGVyLnBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAg
ICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikg
PiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0hhbmRsZXIgc3BlY2lmaWVkIHJlYXNvbiBkZXNwaXRl
IGNvZGUgYmVpbmcgTm9uZScpCisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSAnJwor
ICAgICAgICAgICAgICAgICAgICBpZiByZWFzb24gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYXNvbiA9ICcnCiAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hh
bmRzaGFrZShjb2RlLCByZWFzb24pCiAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVudC1pbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UnKQorICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVu
dC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UgJworICAgICAgICAgICAgICAgICAgICAnKGNv
ZGU9JXIsIHJlYXNvbj0lciknLCBjb2RlLCByZWFzb24pCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKICAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5P
UENPREVfUElORzoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC01NzEsMTcgKzY0MSwyMSBAQCBj
bGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICdPcGNvZGUgJWQg
aXMgbm90IHN1cHBvcnRlZCcgJSBzZWxmLl9vcmlnaW5hbF9vcGNvZGUpCiAKICAgICBkZWYgX3Nl
bmRfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgaWYgY29k
ZSA+PSAoMSA8PCAxNikgb3IgY29kZSA8IDA6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRp
b25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIG91dCBvZiByYW5nZScpCi0KLSAgICAgICAgZW5j
b2RlZF9yZWFzb24gPSByZWFzb24uZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGlmIGxlbihlbmNv
ZGVkX3JlYXNvbikgKyAyID4gMTI1OgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdBcHBsaWNhdGlvbiBkYXRhIHNpemUgb2YgY2xvc2Ug
ZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAgICAgICAnbGVzcycpCisg
ICAgICAgIGJvZHkgPSAnJworICAgICAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgaWYgKGNvZGUgPiBjb21tb24uU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggb3IKKyAgICAgICAg
ICAgICAgICBjb2RlIDwgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6CisgICAgICAgICAg
ICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBvdXQgb2Yg
cmFuZ2UnKQorICAgICAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNf
UkVDRUlWRUQgb3IKKyAgICAgICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfQUJOT1JN
QUxfQ0xPU1VSRSBvcgorICAgICAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19UTFNf
SEFORFNIQUtFKToKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24o
J1N0YXR1cyBjb2RlIGlzIHJlc2VydmVkIHBzZXVkbyAnCisgICAgICAgICAgICAgICAgICAgICdj
b2RlJykKKyAgICAgICAgICAgIGVuY29kZWRfcmVhc29uID0gcmVhc29uLmVuY29kZSgndXRmLTgn
KQorICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgZW5jb2RlZF9y
ZWFzb24KIAogICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKLSAgICAgICAgICAg
IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgZW5jb2RlZF9yZWFzb24sCisgICAgICAgICAgICBi
b2R5LAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCiAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCiAKQEAgLTU5MCwxNSArNjY0LDM2
IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUp
CiAKICAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBj
b25uZWN0aW9uLiIiIgorICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQgY29ubmVjdGlvbi4K
KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgY29kZTogU3RhdHVzIGNvZGUgZm9yIGNsb3Nl
IGZyYW1lLiBJZiBjb2RlIGlzIE5vbmUsIGEgY2xvc2UKKyAgICAgICAgICAgICAgICBmcmFtZSB3
aXRoIGVtcHR5IGJvZHkgd2lsbCBiZSBzZW50LgorICAgICAgICAgICAgcmVhc29uOiBzdHJpbmcg
cmVwcmVzZW50aW5nIGNsb3NlIHJlYXNvbi4KKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAg
QmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHJlYXNvbiBpcyBzcGVjaWZpZWQgd2l0aCBjb2Rl
IE5vbmUKKyAgICAgICAgICAgIG9yIHJlYXNvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgYm90aCBz
dHIgYW5kIHVuaWNvZGUuCisgICAgICAgICIiIgogCiAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qu
c2VydmVyX3Rlcm1pbmF0ZWQ6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCiAgICAg
ICAgICAgICAgICAgJ1JlcXVlc3RlZCBjbG9zZV9jb25uZWN0aW9uIGJ1dCBzZXJ2ZXIgaXMgYWxy
ZWFkeSB0ZXJtaW5hdGVkJykKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIGNvZGUg
aXMgTm9uZToKKyAgICAgICAgICAgIGlmIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNv
bikgPiAwOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaWYg
Y29kZSBpcyBOb25lJykKKyAgICAgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShyZWFzb24sIHN0cikgYW5kIG5vdCBpc2luc3Rh
bmNlKHJlYXNvbiwgdW5pY29kZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9u
RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnY2xvc2UgcmVhc29uIG11c3QgYmUgYW4g
aW5zdGFuY2Ugb2Ygc3RyIG9yIHVuaWNvZGUnKQorCiAgICAgICAgIHNlbGYuX3NlbmRfY2xvc2lu
Z19oYW5kc2hha2UoY29kZSwgcmVhc29uKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Nl
bnQgc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdTZW50IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBo
YW5kc2hha2UgKGNvZGU9JXIsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgY29kZSwgcmVhc29u
KQogCiAgICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfR09JTkdfQVdBWSBvcgogICAg
ICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX1BST1RPQ09MX0VSUk9SKToKQEAgLTYyMSwx
MCArNzE2LDYgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAjIG5vdGU6IG1v
ZF9weXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4K
IAogICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGlmIGxlbihib2R5
KSA+IDEyNToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
J0FwcGxpY2F0aW9uIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlIDEyNSBieXRl
cyBvciAnCi0gICAgICAgICAgICAgICAgJ2xlc3MnKQogICAgICAgICBmcmFtZSA9IGNyZWF0ZV9w
aW5nX2ZyYW1lKAogICAgICAgICAgICAgYm9keSwKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
bWFza19zZW5kLApAQCAtNjM0LDEwICs3MjUsNiBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6
CiAgICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCiAKICAgICBkZWYgX3NlbmRf
cG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgaWYgbGVuKGJvZHkpID4gMTI1OgotICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAnQXBwbGljYXRpb24gZGF0YSBz
aXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAg
ICAgICAnbGVzcycpCiAgICAgICAgIGZyYW1lID0gY3JlYXRlX3BvbmdfZnJhbWUoCiAgICAgICAg
ICAgICBib2R5LAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2Nv
bW1vbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvY29tbW9uLnB5CmluZGV4IGJhNjcwYmI0MmVlYjE1MjYzODE5ODk5NzdmZDI3NGMzMDNiZGM0
MjIuLjcxMDk2N2M4MDMyNDgzZWMxMWQ4ODRhYmMxNWM1YmI5MmNlOWZkMDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvY29tbW9u
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvY29tbW9uLnB5CkBAIC0yOCw2ICsyOCwxNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKKyIiIlRo
aXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2Vi
U29ja2V0IHByb3RvY29sLgorIiIiCisKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0
dHBfaGVhZGVyX3V0aWwKKworCisjIEFkZGl0aW9uYWwgbG9nIGxldmVsIGRlZmluaXRpb25zLgor
TE9HTEVWRUxfRklORSA9IDkKKwogIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2NrZXQgcHJv
dG9jb2wgdmVyc2lvbi4KIFZFUlNJT05fSElYSUU3NSA9IC0xCiBWRVJTSU9OX0hZQkkwMCA9IDAK
QEAgLTkzLDYgKzEwMyw3IEBAIFNFQ19XRUJTT0NLRVRfTE9DQVRJT05fSEVBREVSID0gJ1NlYy1X
ZWJTb2NrZXQtTG9jYXRpb24nCiAjIEV4dGVuc2lvbnMKIERFRkxBVEVfU1RSRUFNX0VYVEVOU0lP
TiA9ICdkZWZsYXRlLXN0cmVhbScKIERFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUt
ZnJhbWUnCitQRVJGUkFNRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVyZnJhbWUtY29tcHJl
c3MnCiBYX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1kZWZsYXRl
LWZyYW1lJwogCiAjIFN0YXR1cyBjb2RlcwpAQCAtMTc2LDQgKzE4NywxMTggQEAgY2xhc3MgRXh0
ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtX3Zh
bHVlCiAKIAorY2xhc3MgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbihFeGNlcHRpb24pOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc3VwZXIoRXh0ZW5zaW9uUGFyc2lu
Z0V4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKKworCitkZWYgX3BhcnNlX2V4dGVuc2lv
bl9wYXJhbShzdGF0ZSwgZGVmaW5pdGlvbiwgYWxsb3dfcXVvdGVkX3N0cmluZyk6CisgICAgcGFy
YW1fbmFtZSA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKworICAgIGlm
IHBhcmFtX25hbWUgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2Vw
dGlvbignTm8gdmFsaWQgcGFyYW1ldGVyIG5hbWUgZm91bmQnKQorCisgICAgaHR0cF9oZWFkZXJf
dXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwu
Y29uc3VtZV9zdHJpbmcoc3RhdGUsICc9Jyk6CisgICAgICAgIGRlZmluaXRpb24uYWRkX3BhcmFt
ZXRlcihwYXJhbV9uYW1lLCBOb25lKQorICAgICAgICByZXR1cm4KKworICAgIGh0dHBfaGVhZGVy
X3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGFsbG93X3F1b3RlZF9zdHJpbmc6
CisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQgcGFy
c2VkIHBhcmFtX3ZhbHVlIGlzIHRva2VuCisgICAgICAgIHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFk
ZXJfdXRpbC5jb25zdW1lX3Rva2VuX29yX3F1b3RlZF9zdHJpbmcoc3RhdGUpCisgICAgZWxzZToK
KyAgICAgICAgcGFyYW1fdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3Rh
dGUpCisgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9u
UGFyc2luZ0V4Y2VwdGlvbigKKyAgICAgICAgICAgICdObyB2YWxpZCBwYXJhbWV0ZXIgdmFsdWUg
Zm91bmQgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiAnCisgICAgICAgICAgICAncGFyYW1ldGVy
ICVyJyAlIHBhcmFtX25hbWUpCisKKyAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0ZXIocGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUpCisKKworZGVmIF9wYXJzZV9leHRlbnNpb24oc3RhdGUsIGFsbG93
X3F1b3RlZF9zdHJpbmcpOgorICAgIGV4dGVuc2lvbl90b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwu
Y29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICBpZiBleHRlbnNpb25fdG9rZW4gaXMgTm9uZToKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihl
eHRlbnNpb25fdG9rZW4pCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBodHRwX2hlYWRlcl91
dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc7Jyk6CisgICAgICAgICAgICBicmVhaworCisgICAg
ICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKHN0YXRlLCBleHRlbnNpb24sIGFs
bG93X3F1b3RlZF9zdHJpbmcpCisgICAgICAgIGV4Y2VwdCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0
aW9uLCBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJQor
ICAgICAgICAgICAgICAgIChleHRlbnNpb25fdG9rZW4sIGUpKQorCisgICAgcmV0dXJuIGV4dGVu
c2lvbgorCisKK2RlZiBwYXJzZV9leHRlbnNpb25zKGRhdGEsIGFsbG93X3F1b3RlZF9zdHJpbmc9
RmFsc2UpOgorICAgICIiIlBhcnNlcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIHZh
bHVlIHJldHVybnMgYSBsaXN0IG9mCisgICAgRXh0ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMuCisK
KyAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUgdHJpbW1lZC4KKyAgICAiIiIKKworICAgIHN0YXRl
ID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoZGF0YSkKKworICAgIGV4dGVuc2lvbl9s
aXN0ID0gW10KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBleHRlbnNpb24gPSBfcGFyc2VfZXh0
ZW5zaW9uKHN0YXRlLCBhbGxvd19xdW90ZWRfc3RyaW5nKQorICAgICAgICBpZiBleHRlbnNpb24g
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fbGlzdC5hcHBlbmQoZXh0ZW5zaW9u
KQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAg
ICAgICBpZiBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpIGlzIE5vbmU6CisgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5n
KHN0YXRlLCAnLCcpOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyBoZWFkZXI6ICcKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBidXQgZm91
bmQgJXInICUKKyAgICAgICAgICAgICAgICBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQor
CisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlm
IGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2lu
Z0V4Y2VwdGlvbigKKyAgICAgICAgICAgICdObyB2YWxpZCBleHRlbnNpb24gZW50cnkgZm91bmQn
KQorCisgICAgcmV0dXJuIGV4dGVuc2lvbl9saXN0CisKKworZGVmIGZvcm1hdF9leHRlbnNpb24o
ZXh0ZW5zaW9uKToKKyAgICAiIiJGb3JtYXRzIGFuIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3Qu
IiIiCisKKyAgICBmb3JtYXR0ZWRfcGFyYW1zID0gW2V4dGVuc2lvbi5uYW1lKCldCisgICAgZm9y
IHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVycygpOgor
ICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgZm9ybWF0dGVkX3Bh
cmFtcy5hcHBlbmQocGFyYW1fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHF1b3Rl
ZF92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFtX3ZhbHVl
KQorICAgICAgICAgICAgZm9ybWF0dGVkX3BhcmFtcy5hcHBlbmQoJyVzPSVzJyAlIChwYXJhbV9u
YW1lLCBxdW90ZWRfdmFsdWUpKQorICAgIHJldHVybiAnOyAnLmpvaW4oZm9ybWF0dGVkX3BhcmFt
cykKKworCitkZWYgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uX2xpc3QpOgorICAgICIiIkZv
cm1hdHMgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgorCisgICAgZm9y
bWF0dGVkX2V4dGVuc2lvbl9saXN0ID0gW10KKyAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lv
bl9saXN0OgorICAgICAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGZvcm1hdF9l
eHRlbnNpb24oZXh0ZW5zaW9uKSkKKyAgICByZXR1cm4gJywgJy5qb2luKGZvcm1hdHRlZF9leHRl
bnNpb25fbGlzdCkKKworCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5z
aW9ucy5weQppbmRleCBjZTM3ODQ2NTgxMDRjNjgwYjRmZGIyNzNiMjFiOWNlYTQ2NDkzMDUwLi41
MmI3YTRhMTkyODEzYjU3ODJmNjhhMWM5NDAzODQ4YTQ3YTNhMjljIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tl
dC9leHRlbnNpb25zLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBAQAogCiBmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaHR0cF9oZWFkZXJfdXRpbCBpbXBvcnQgcXVvdGVfaWZfbmVjZXNz
YXJ5CiAKIAogX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30KQEAgLTI1NCw2ICsyNTUsOTYgQEAg
X2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTl0gPSAoCiAgICAgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQogCiAKK2RlZiBf
cGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKGRhdGEpOgorICAgICIiIlBhcnNlcyB0aGUgdmFsdWUg
b2YgIm1ldGhvZCIgZXh0ZW5zaW9uIHBhcmFtZXRlci4iIiIKKworICAgIHJldHVybiBjb21tb24u
cGFyc2VfZXh0ZW5zaW9ucyhkYXRhLCBhbGxvd19xdW90ZWRfc3RyaW5nPVRydWUpCisKKworZGVm
IF9jcmVhdGVfYWNjZXB0ZWRfbWV0aG9kX2Rlc2MobWV0aG9kX25hbWUsIG1ldGhvZF9wYXJhbXMp
OgorICAgICIiIkNyZWF0ZXMgYWNjZXB0ZWQtbWV0aG9kLWRlc2MgZnJvbSBnaXZlbiBtZXRob2Qg
bmFtZSBhbmQgcGFyYW1ldGVycyIiIgorCisgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcihtZXRob2RfbmFtZSkKKyAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbWV0aG9kX3Bh
cmFtczoKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIobmFtZSwgdmFsdWUpCisgICAg
cmV0dXJuIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikKKworCitjbGFzcyBQZXJG
cmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVy
ZmFjZSk6CisgICAgIiIiV2ViU29ja2V0IFBlci1mcmFtZSBjb21wcmVzc2lvbiBleHRlbnNpb24g
cHJvY2Vzc29yLiIiIgorCisgICAgX01FVEhPRF9QQVJBTSA9ICdtZXRob2QnCisgICAgX0RFRkxB
VEVfTUVUSE9EID0gJ2RlZmxhdGUnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorICAg
ICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9t
ZXRob2RfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yID0g
Tm9uZQorCisgICAgZGVmIF9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKHNlbGYsIG1ldGhv
ZF9kZXNjKToKKyAgICAgICAgaWYgbWV0aG9kX2Rlc2MubmFtZSgpID09IHNlbGYuX0RFRkxBVEVf
TUVUSE9EOgorICAgICAgICAgICAgcmV0dXJuIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cihtZXRob2RfZGVzYykKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfZ2V0X2NvbXBy
ZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZShzZWxmKToKKyAgICAgICAgIiIiTG9va3MgdXAgdGhl
IGNvbXByZXNzaW9uIHByb2Nlc3NvciBiYXNlZCBvbiB0aGUgc2VsZi5fcmVxdWVzdCBhbmQKKyAg
ICAgICAgICAgcmV0dXJucyB0aGUgY29tcHJlc3Npb24gcHJvY2Vzc29yJ3MgcmVzcG9uc2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIG1ldGhvZF9saXN0ID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFy
YW1ldGVyX3ZhbHVlKHNlbGYuX01FVEhPRF9QQVJBTSkKKyAgICAgICAgaWYgbWV0aG9kX2xpc3Qg
aXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIG1ldGhvZHMgPSBfcGFy
c2VfY29tcHJlc3Npb25fbWV0aG9kKG1ldGhvZF9saXN0KQorICAgICAgICBpZiBtZXRob2RzIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBjb21yZXNzaW9uX3Byb2Nl
c3NvciA9IE5vbmUKKyAgICAgICAgIyBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0cmllcyBv
bmx5IHRoZSBmaXJzdCBtZXRob2QgdGhhdCBtYXRjaGVzCisgICAgICAgICMgc3VwcG9ydGVkIGFs
Z29yaXRobS4gRm9sbG93aW5nIG1ldGhvZHMgYXJlbid0IHRyaWVkIGV2ZW4gaWYgdGhlCisgICAg
ICAgICMgZmlyc3Qgb25lIGlzIHJlamVjdGVkLgorICAgICAgICAjIFRPRE8oYmFzaGkpOiBOZWVk
IHRvIGNsYXJpZnkgdGhpcyBiZWhhdmlvci4KKyAgICAgICAgZm9yIG1ldGhvZF9kZXNjIGluIG1l
dGhvZHM6CisgICAgICAgICAgICBjb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBzZWxmLl9sb29rdXBf
Y29tcHJlc3Npb25fcHJvY2Vzc29yKAorICAgICAgICAgICAgICAgIG1ldGhvZF9kZXNjKQorICAg
ICAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29yIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gbWV0aG9kX2Rlc2MubmFtZSgp
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29y
IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBwcm9jZXNzb3JfcmVz
cG9uc2UgPSBjb21wcmVzc2lvbl9wcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisg
ICAgICAgIGlmIHByb2Nlc3Nvcl9yZXNwb25zZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yID0gY29tcHJlc3Npb25f
cHJvY2Vzc29yCisgICAgICAgIHJldHVybiBwcm9jZXNzb3JfcmVzcG9uc2UKKworICAgIGRlZiBn
ZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3JfcmVzcG9uc2Ug
PSBzZWxmLl9nZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX3Jlc3BvbnNlKCkKKyAgICAgICAgaWYg
cHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisg
ICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0
Lm5hbWUoKSkKKyAgICAgICAgYWNjZXB0ZWRfbWV0aG9kX2Rlc2MgPSBfY3JlYXRlX2FjY2VwdGVk
X21ldGhvZF9kZXNjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9j
b21wcmVzc2lvbl9tZXRob2RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc29yX3Jlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCisgICAgICAgIHJlc3BvbnNl
LmFkZF9wYXJhbWV0ZXIoc2VsZi5fTUVUSE9EX1BBUkFNLCBhY2NlcHRlZF9tZXRob2RfZGVzYykK
KyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgJ0VuYWJsZSAlcyBleHRl
bnNpb24gKG1ldGhvZDogJXMpJyAlCisgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1lKCks
IHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNl
CisKKyAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgor
ICAgICAgICBpZiBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3Iuc2V0dXBfc3Ry
ZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgZ2V0X2NvbXByZXNzaW9uX3By
b2Nlc3NvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nv
cgorCisKK19hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSRlJBTUVfQ09NUFJFU1NJT05f
RVhURU5TSU9OXSA9ICgKKyAgICBQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29y
KQorCisKIGRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCk6CiAg
ICAgZ2xvYmFsIF9hdmFpbGFibGVfcHJvY2Vzc29ycwogICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9h
dmFpbGFibGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQppbmRleCA0ZDdjMzJlMzUwNzM5MWE5NGUz
OGYzNDIyZTdmNjNlYmVjOGRmOWY0Li5iYzA5NWIxMjlmMmQ1MjNlOWM3MzNjYmJmOWJjNDM4NDI3
MzM4Y2MwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQpAQCAtMSw0
ICsxLDQgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTIxNiwxMDggKzIxNiw0IEBAIGRlZiBwYXJzZV90b2tlbl9saXN0KGRhdGEpOgogICAgIHJldHVy
biB0b2tlbl9saXN0CiAKIAotZGVmIF9wYXJzZV9leHRlbnNpb25fcGFyYW0oc3RhdGUsIGRlZmlu
aXRpb24sIGFsbG93X3F1b3RlZF9zdHJpbmcpOgotICAgIHBhcmFtX25hbWUgPSBodHRwX2hlYWRl
cl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICBpZiBwYXJhbV9uYW1lIGlzIE5vbmU6
Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignTm8gdmFsaWQgcGFyYW1ldGVyIG5h
bWUgZm91bmQnKQotCi0gICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQot
Ci0gICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc9Jyk6
Ci0gICAgICAgIGRlZmluaXRpb24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBOb25lKQotICAg
ICAgICByZXR1cm4KLQotICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkK
LQotICAgIGlmIGFsbG93X3F1b3RlZF9zdHJpbmc6Ci0gICAgICAgICMgVE9ETyh0b3lvc2hpbSk6
IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQgcGFyc2VkIHBhcmFtX3ZhbHVlIGlzIHRva2VuCi0g
ICAgICAgIHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuX29yX3F1
b3RlZF9zdHJpbmcoc3RhdGUpCi0gICAgZWxzZToKLSAgICAgICAgcGFyYW1fdmFsdWUgPSBodHRw
X2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgaWYgcGFyYW1fdmFsdWUgaXMg
Tm9uZToKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgJ05v
IHZhbGlkIHBhcmFtZXRlciB2YWx1ZSBmb3VuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mICcK
LSAgICAgICAgICAgICdwYXJhbWV0ZXIgJXInICUgcGFyYW1fbmFtZSkKLQotICAgIGRlZmluaXRp
b24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSkKLQotCi1kZWYgX3BhcnNl
X2V4dGVuc2lvbihzdGF0ZSwgYWxsb3dfcXVvdGVkX3N0cmluZyk6Ci0gICAgZXh0ZW5zaW9uX3Rv
a2VuID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQotICAgIGlmIGV4dGVu
c2lvbl90b2tlbiBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihleHRlbnNpb25fdG9rZW4pCi0KLSAgICB3aGls
ZSBUcnVlOgotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0K
LSAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc7
Jyk6Ci0gICAgICAgICAgICBicmVhawotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3Vt
ZV9sd3NlcyhzdGF0ZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfcGFyc2VfZXh0ZW5z
aW9uX3BhcmFtKHN0YXRlLCBleHRlbnNpb24sIGFsbG93X3F1b3RlZF9zdHJpbmcpCi0gICAgICAg
IGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAnCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJz
ZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUKLSAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3Rv
a2VuLCBlKSkKLQotICAgIHJldHVybiBleHRlbnNpb24KLQotCi1kZWYgcGFyc2VfZXh0ZW5zaW9u
cyhkYXRhLCBhbGxvd19xdW90ZWRfc3RyaW5nPUZhbHNlKToKLSAgICAiIiJQYXJzZXMgU2VjLVdl
YlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciB2YWx1ZSByZXR1cm5zIGEgbGlzdCBvZgotICAgIGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4KLQotICAgIExlYWRpbmcgTFdTZXMgbXVz
dCBiZSB0cmltbWVkLgotICAgICIiIgotCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBh
cnNpbmdTdGF0ZShkYXRhKQotCi0gICAgZXh0ZW5zaW9uX2xpc3QgPSBbXQotICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgIGV4dGVuc2lvbiA9IF9wYXJzZV9leHRlbnNpb24oc3RhdGUsIGFsbG93X3F1
b3RlZF9zdHJpbmcpCi0gICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAgICAgaHR0cF9oZWFk
ZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlmIGh0dHBfaGVhZGVyX3V0
aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYg
bm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6Ci0gICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0
byBwYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAnCi0gICAgICAgICAgICAg
ICAgJ0V4cGVjdGVkIGEgY29tbWEgYnV0IGZvdW5kICVyJyAlCi0gICAgICAgICAgICAgICAgaHR0
cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNv
bnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4oZXh0ZW5zaW9uX2xpc3QpID09IDA6Ci0g
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnMgaGVhZGVyIGNvbnRhaW5zIG5vIHZhbGlkIGV4dGVuc2lvbicpCi0KLSAg
ICByZXR1cm4gZXh0ZW5zaW9uX2xpc3QKLQotCi1kZWYgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5z
aW9uX2xpc3QpOgotICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCi0gICAgZm9yIGV4
dGVuc2lvbiBpbiBleHRlbnNpb25fbGlzdDoKLSAgICAgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtl
eHRlbnNpb24ubmFtZSgpXQotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4g
ZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBp
cyBOb25lOgotICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25h
bWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHF1b3RlZF92YWx1ZSA9IGh0
dHBfaGVhZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFtX3ZhbHVlKQotICAgICAgICAg
ICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycgJSAocGFyYW1fbmFtZSwgcXVv
dGVkX3ZhbHVlKSkKLQotICAgICAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKCc7
ICcuam9pbihmb3JtYXR0ZWRfcGFyYW1zKSkKLQotICAgIHJldHVybiAnLCAnLmpvaW4oZm9ybWF0
dGVkX2V4dGVuc2lvbl9saXN0KQotCi0KICMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvaHliaS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKaW5kZXggM2JjODRiZDI2NTY5MmZmOWNkYzkzMWZiMjc0
ZWRiODM4YmY5NWZlZC4uMjg4M2FjYmY4NTZkZjcxODU0N2U3ZmM5NjdiNTZjMjY0ZjA1ZTBiNiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNv
Y2tldC9oYW5kc2hha2UvaHliaS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CkBAIC0xLDQgKzEsNCBAQAot
IyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJ
bmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTAsMTEgKzUw
LDkgQEAgaW1wb3J0IHJlCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1
ZXN0X2xpbmUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9y
bWF0X2V4dGVuc2lvbnMKIGZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgZm9ybWF0X2hlYWRlcgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGlt
cG9ydCBnZXRfbWFuZGF0b3J5X2hlYWRlcgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfZXh0ZW5zaW9ucwogZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV90b2tlbl9saXN0CiBmcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIK
IGZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3Vi
cHJvdG9jb2wKQEAgLTI5MCw4ICsyODgsMTIgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgog
ICAgICAgICAgICAgYWxsb3dfcXVvdGVkX3N0cmluZz1GYWxzZQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgYWxsb3dfcXVvdGVkX3N0cmluZz1UcnVlCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBwYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAg
ZXh0ZW5zaW9uc19oZWFkZXIsIGFsbG93X3F1b3RlZF9zdHJpbmc9YWxsb3dfcXVvdGVkX3N0cmlu
ZykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRf
ZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGV4
dGVuc2lvbnNfaGVhZGVyLCBhbGxvd19xdW90ZWRfc3RyaW5nPWFsbG93X3F1b3RlZF9zdHJpbmcp
CisgICAgICAgIGV4Y2VwdCBjb21tb24uRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgZToKKyAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFp
bGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXI6ICVyJyAlIGUpCiAK
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAogICAgICAgICAgICAgJ0V4dGVuc2lvbnMgcmVx
dWVzdGVkOiAlcicsCkBAIC0zNTgsNyArMzYwLDcgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3Qp
OgogICAgICAgICAgICAgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6CiAg
ICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKICAgICAgICAgICAgICAg
ICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwKLSAgICAgICAgICAgICAg
ICBmb3JtYXRfZXh0ZW5zaW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKKyAgICAg
ICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zKSkpCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnXHJcbicpCiAKICAgICAgICAgcmF3
X3Jlc3BvbnNlID0gJycuam9pbihyZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5w
eQppbmRleCBkYzE0M2VhMDA2OTNjZTI1Nzg3NjA1NjA4YWVmMzE2ZTRhOTljYjFmLi44NTBhYTVj
ZDRjZTg5NWQ4M2NhMTVjY2I3YWFkNmVjOTY0YzkwYjU0IDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4K
ICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NSw2ICs1NSwyMCBA
QCBoYW5kbGVycy4gSWYgdGhpcyBwYXRoIGlzIHJlbGF0aXZlLCA8ZG9jdW1lbnRfcm9vdD4gaXMg
dXNlZCBhcyB0aGUgYmFzZS4KIGhhbmRsZXJzIHVuZGVyIHNjYW5fZGlyIGFyZSBzY2FubmVkLiBU
aGlzIGlzIHVzZWZ1bCBpbiBzYXZpbmcgc2NhbiB0aW1lLgogCiAKK1NVUFBPUlRJTkcgVExTCisK
K1RvIHN1cHBvcnQgVExTLCBydW4gc3RhbmRhbG9uZS5weSB3aXRoIC10LCAtaywgYW5kIC1jIG9w
dGlvbnMuCisKKworU1VQUE9SVElORyBDTElFTlQgQVVUSEVOVElDQVRJT04KKworVG8gc3VwcG9y
dCBjbGllbnQgYXV0aGVudGljYXRpb24gd2l0aCBUTFMsIHJ1biBzdGFuZGFsb25lLnB5IHdpdGgg
LXQsIC1rLCAtYywKK2FuZCAtLWNhLWNlcnRpZmljYXRlIG9wdGlvbnMuCisKK0UuZy4sICQuL3N0
YW5kYWxvbmUucHkgLWQgLi4vZXhhbXBsZSAtcCAxMDQ0MyAtdCAtYyAuLi90ZXN0L2NlcnQvY2Vy
dC5wZW0gLWsKKy4uL3Rlc3QvY2VydC9rZXkucGVtIC0tY2EtY2VydGlmaWNhdGU9Li4vdGVzdC9j
ZXJ0L2NhY2VydC5wZW0KKworCiBDT05GSUdVUkFUSU9OIEZJTEUKIAogWW91IGNhbiBhbHNvIHdy
aXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUgcGF0
aCB0bwpAQCAtMzExLDEwICszMjUsMTYgQEAgY2xhc3MgV2ViU29ja2V0U2VydmVyKFNvY2tldFNl
cnZlci5UaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgICAg
ICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9v
cHRpb25zLnVzZV90bHM6CiAgICAgICAgICAgICAgICAgaWYgX0hBU19TU0w6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLmNhX2NlcnRpZmljYXRl
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlS
RUQKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9jZXJ0XyA9IHNzbC5DRVJUX05PTkUKICAgICAgICAgICAgICAgICAgICAgc29ja2V0XyA9
IHNzbC53cmFwX3NvY2tldChzb2NrZXRfLAogICAgICAgICAgICAgICAgICAgICAgICAga2V5Zmls
ZT1zZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlcnRmaWxlPXNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLmNlcnRp
ZmljYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09M
X1NTTHYyMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NP
TF9TU0x2MjMsCisgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1zZWxmLndlYnNvY2tl
dF9zZXJ2ZXJfb3B0aW9ucy5jYV9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCiAgICAgICAgICAgICAgICAgaWYgX0hBU19PUEVOX1NT
TDoKICAgICAgICAgICAgICAgICAgICAgY3R4ID0gT3BlblNTTC5TU0wuQ29udGV4dChPcGVuU1NM
LlNTTC5TU0x2MjNfTUVUSE9EKQogICAgICAgICAgICAgICAgICAgICBjdHgudXNlX3ByaXZhdGVr
ZXlfZmlsZSgKQEAgLTYwMSw3ICs2MjEsMTMgQEAgY2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRs
ZXIoQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICByZXR1cm4g
RmFsc2UKIAogCitkZWYgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyhjKToKKyAgICByZXR1cm4gbG9n
Z2luZy5nZXRMb2dnZXIoJyVzLiVzJyAlIChjLl9fbW9kdWxlX18sIGMuX19uYW1lX18pKQorCisK
IGRlZiBfY29uZmlndXJlX2xvZ2dpbmcob3B0aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5h
bWUoY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU5FJykKKwogICAgIGxvZ2dlciA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0
aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkpCiAgICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKQEAgLTYx
NCw2ICs2NDAsMTMgQEAgZGVmIF9jb25maWd1cmVfbG9nZ2luZyhvcHRpb25zKToKICAgICBoYW5k
bGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCiAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxl
cikKIAorICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5nLmdldExldmVsTmFtZSgK
KyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigpKQorICAgIF9nZXRfbG9n
Z2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKAorICAgICAgICBkZWZsYXRl
X2xvZ19sZXZlbF9uYW1lKQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fSW5mbGF0
ZXIpLnNldExldmVsKAorICAgICAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lKQorCiAKIGRlZiBf
YWxpYXNfaGFuZGxlcnMoZGlzcGF0Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6CiAg
ICAgIiIiU2V0IGFsaWFzZXMgc3BlY2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBp
biBkaXNwYXRjaGVyLgpAQCAtNzAyLDEzICs3MzUsMjUgQEAgZGVmIF9idWlsZF9vcHRpb25fcGFy
c2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIHByaXZh
dGUga2V5IGZpbGUuJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLWMnLCAnLS1jZXJ0aWZpY2F0
ZScsIGRlc3Q9J2NlcnRpZmljYXRlJywKICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScn
LCBoZWxwPSdUTFMgY2VydGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LWNhLWNlcnRpZmljYXRlJywgZGVzdD0nY2FfY2VydGlmaWNhdGUnLCBkZWZhdWx0PScnLAorICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUTFMgQ0EgY2VydGlmaWNhdGUgZmlsZSBmb3IgY2xp
ZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXV0aGVudGljYXRpb24uJykpCiAg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1sJywgJy0tbG9nLWZpbGUnLCAnLS1sb2dfZmlsZScsIGRl
c3Q9J2xvZ19maWxlJywKICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdM
b2cgZmlsZS4nKQorICAgICMgQ3VzdG9tIGxvZyBsZXZlbDoKKyAgICAjIC0gRklORTogUHJpbnRz
IHN0YXR1cyBvZiBlYWNoIGZyYW1lIHByb2Nlc3Npbmcgc3RlcAogICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWxvZy1sZXZlbCcsICctLWxvZ19sZXZlbCcsIHR5cGU9J2Nob2ljZScsCiAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0nbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybicsCi0gICAgICAg
ICAgICAgICAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJu
JywgJ2Vycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZmluZScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3
YXJuJywgJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JpdGljYWwn
XSwKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLS1kZWZsYXRlLWxvZy1sZXZlbCcsICctLWRlZmxhdGVfbG9nX2xldmVsJywK
KyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdjaG9pY2UnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2RlZmxhdGVfbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybicsCisgICAgICAgICAg
ICAgICAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJuJywg
J2Vycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JpdGljYWwnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwgZm9yIF9EZWZsYXRlciBhbmQgX0lu
ZmxhdGVyLicpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGhyZWFkLW1vbml0b3ItaW50ZXJ2
YWwtaW4tc2VjJywKICAgICAgICAgICAgICAgICAgICAgICAnLS10aHJlYWRfbW9uaXRvcl9pbnRl
cnZhbF9pbl9zZWMnLAogICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RocmVhZF9tb25pdG9y
X2ludGVydmFsX2luX3NlYycsCkBAIC04MjUsMTMgKzg3MCwyMCBAQCBkZWYgX21haW4oYXJncz1O
b25lKToKIAogICAgIGlmIG9wdGlvbnMudXNlX3RsczoKICAgICAgICAgaWYgbm90IChfSEFTX1NT
TCBvciBfSEFTX09QRU5fU1NMKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBz
dXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wuJykKKyAgICAgICAgICAgIGxvZ2dpbmcu
Y3JpdGljYWwoJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicp
CiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRl
X2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZpY2F0ZToKICAgICAgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoCiAgICAgICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVf
a2V5IGFuZCBjZXJ0aWZpY2F0ZS4nKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAorICAgIGlm
IG9wdGlvbnMuY2FfY2VydGlmaWNhdGU6CisgICAgICAgIGlmIG5vdCBvcHRpb25zLnVzZV90bHM6
CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdUTFMgbXVzdCBiZSBlbmFibGVkIGZvciBj
bGllbnQgYXV0aGVudGljYXRpb24uJykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAg
IGlmIG5vdCBfSEFTX1NTTDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBh
dXRoZW50aWNhdGlvbiByZXF1aXJlcyBzc2wgbW9kdWxlLicpCisKICAgICBpZiBub3Qgb3B0aW9u
cy5zY2FuX2RpcjoKICAgICAgICAgb3B0aW9ucy5zY2FuX2RpciA9IG9wdGlvbnMud2Vic29ja19o
YW5kbGVycwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
bW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKaW5kZXggOWEwYWI1ZGU2OTdhY2IxMzc3ZjllYjBk
YWY4MzIxM2NkOTVkMmJhNy4uNjE0NmUwNTJmYmM3NzdiYzMwNmFmMTZlNjY5NzM0Njg0MWVjY2M0
YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC91dGlsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAtMTc3LDkgKzE3NywxNiBAQCBjbGFzcyBSZXBlYXRl
ZFhvck1hc2tlcihvYmplY3QpOgogICAgIGRlZiBtYXNrKHNlbGYsIHMpOgogICAgICAgICByZXN1
bHQgPSBhcnJheS5hcnJheSgnQicpCiAgICAgICAgIHJlc3VsdC5mcm9tc3RyaW5nKHMpCisgICAg
ICAgICMgVXNlIHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0
IHRvIGFjY2VzcworICAgICAgICAjIGF0dHJpYnV0ZXMKKyAgICAgICAgY291bnQgPSBzZWxmLl9j
b3VudAorICAgICAgICBtYXNrID0gc2VsZi5fbWFzaworICAgICAgICBtYXNrX3NpemUgPSBzZWxm
Ll9tYXNrX3NpemUKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAgICAg
ICAgICAgIHJlc3VsdFtpXSBePSBzZWxmLl9tYXNrW3NlbGYuX2NvdW50XQotICAgICAgICAgICAg
c2VsZi5fY291bnQgPSAoc2VsZi5fY291bnQgKyAxKSAlIHNlbGYuX21hc2tfc2l6ZQorICAgICAg
ICAgICAgcmVzdWx0W2ldIF49IG1hc2tbY291bnRdCisgICAgICAgICAgICBjb3VudCA9IChjb3Vu
dCArIDEpICUgbWFza19zaXplCisgICAgICAgIHNlbGYuX2NvdW50ID0gY291bnQKKwogICAgICAg
ICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>