<?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>46254</bug_id>
          
          <creation_ts>2010-09-22 02:21:15 -0700</creation_ts>
          <short_desc>Optimize commit-queue performance for green trees</short_desc>
          <delta_ts>2010-09-22 17:37:58 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282860</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-22 02:21:15 -0700</bug_when>
    <thetext>Optimize commit-queue performance for green trees</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282862</commentid>
    <comment_count>1</comment_count>
      <attachid>68352</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-22 02:26:07 -0700</bug_when>
    <thetext>Created attachment 68352
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282864</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-22 02:27:59 -0700</bug_when>
    <thetext>I need to update existing tests and add new tests.  Factoring out the CommitQueueTask object should allow for much better testing of this logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283005</commentid>
    <comment_count>3</comment_count>
      <attachid>68352</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-22 10:03:43 -0700</bug_when>
    <thetext>Comment on attachment 68352
work in progress

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

This patch is absolutely fantastic.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:136
&gt; +        if not self._patch.is_rollout():
&gt; +            if not self._test():
&gt; +                if not self._test():
&gt; +                    if not self._build_and_test_without_patch():
&gt; +                        return False
&gt; +                raise self._script_error

This block is kinda confusing.  I think it may need some comments to annotate what its doing.

We could also have a _validate_and_land() command which it called instead, and reverse the logic.  But it&apos;s kinda nice having the ifs be always for the failure cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283383</commentid>
    <comment_count>4</comment_count>
      <attachid>68477</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-22 17:22:08 -0700</bug_when>
    <thetext>Created attachment 68477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283387</commentid>
    <comment_count>5</comment_count>
      <attachid>68477</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-22 17:30:34 -0700</bug_when>
    <thetext>Comment on attachment 68477
Patch

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

As far as I can tell this is &quot;right&quot; :)

&gt; WebKitTools/Scripts/webkitpy/tool/bot/commitqueuetask.py:41
&gt; +        # commit-queue is processing.  Do one last minute check before landing.

this is no longer last minute. we can remove that part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283391</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-22 17:37:58 -0700</bug_when>
    <thetext>Committed r68102: &lt;http://trac.webkit.org/changeset/68102&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68352</attachid>
            <date>2010-09-22 02:26:07 -0700</date>
            <delta_ts>2010-09-22 17:22:04 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-46254-20100922022606.patch</filename>
            <type>text/plain</type>
            <size>16307</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY4MDMxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDktMjIgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPcHRpbWl6ZSBjb21taXQtcXVldWUgcGVyZm9ybWFuY2UgZm9yIGdyZWVuIHRyZWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjI1NAor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVkZXNpZ25zIHRoZSBjb250cm9sbGVyIGxvZ2ljIGZvciB0
aGUgY29tbWl0LXF1ZXVlLiAgSW4gdGhlCisgICAgICAgIG5ldyBkZXNpZ24sIHRoZSBjb250cm9s
bGVyIGV4ZXJjaXNlcyBtdWNoIGZpbmVyLWdyYWluZWQgY29udHJvbCBvdmVyCisgICAgICAgIHRo
ZSBsYW5kaW5nIHByb2Nlc3MuICBJbiBwYXJ0aWN1bGFyOgorCisgICAgICAgIC0gUGF0Y2hlcyB0
aGF0IGZhaWwgdG8gYXBwbHkgbm93IGdldCByZWplY3RlZCBhbG1vc3QgaW1tZWRpYXRlbHkuCisg
ICAgICAgIC0gUGF0Y2hlcyB0aGF0IGZhaWwgdG8gYnVpbGQgZ2V0IHJlamVjdHMgYWZ0ZXIgdHdv
IGJ1aWxkcyAoaW5zdGVhZCBvZgorICAgICAgICAgIHRocmVlIGJ1aWxkcyBhbmQgb25lIHRlc3Qg
cnVuKS4KKyAgICAgICAgLSBQYXRjaGVzIHRoYXQgcnVuIGludG8gYSBmbGFreSB0ZXN0IG5vdyBn
ZXQgYWNjZXB0ZWQgYWZ0ZXIgb25lIGJ1aWxkCisgICAgICAgICAgYW5kIHR3byB0ZXN0IHJ1bnMg
aW5zdGVhZCBvZiB0aHJlZSBmdWxsIGJ1aWxkLWFuZC10ZXN0IHJ1bnMuCisKKyAgICAgICAgVGhl
IG1haW4gY29zdCBvZiB0aGVzZSBvcHRpbWl6YXRpb25zIGlzIHRoYXQgd2UgZG9uJ3QgZmluZCBv
dXQgdGhlIHRyZWUKKyAgICAgICAgaGFzIGEgZmFpbGluZyB0ZXN0IHVudGlsIHRoZSB2ZXJ5IGVu
ZCBvZiB0aGUgcHJvY2VzcywgYnV0IGlmIHRoZSB0cmVlCisgICAgICAgIGhhcyBhIGJ1c3RlZCB0
ZXN0LCB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhbnl3YXkuICBXZSBtaWdodCBhcyB3ZWxs
CisgICAgICAgIGJ1cm4gY29tbWl0LXF1ZXVlIHJlc291cmNlcyBzcGlubmluZyBvcHRpbWlzdGlj
bHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFz
ay5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlcy5weToKKwogMjAxMC0wOS0yMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5w
eQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
Y29tbWl0cXVldWV0YXNrLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MiBAQAorIyBDb3B5
cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRvb2wsIGNvbW1pdF9xdWV1ZSwgcGF0Y2gpOgorICAgICAgICBzZWxmLl90
b29sID0gdG9vbAorICAgICAgICBzZWxmLl9jb21taXRfcXVldWUgPSBjb21taXRfcXVldWUKKyAg
ICAgICAgc2VsZi5fcGF0Y2ggPSBwYXRjaAorICAgICAgICBzZWxmLl9zY3JpcHRfZXJyb3IgPSBO
b25lCisKKyAgICBkZWYgX3ZhbGlkYXRlKHNlbGYpOgorICAgICAgICAjIEJ1Z3MgbWlnaHQgZ2V0
IGNsb3NlZCwgb3IgcGF0Y2hlcyBtaWdodCBiZSBvYnNvbGV0ZWQgb3Igci0nZCB3aGlsZSB0aGUK
KyAgICAgICAgIyBjb21taXQtcXVldWUgaXMgcHJvY2Vzc2luZy4gIERvIG9uZSBsYXN0IG1pbnV0
ZSBjaGVjayBiZWZvcmUgbGFuZGluZy4KKyAgICAgICAgc2VsZi5fcGF0Y2ggPSBzZWxmLl90b29s
LmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChzZWxmLl9wYXRjaC5pZCgpKQorICAgICAgICBpZiBzZWxm
Ll9wYXRjaC5pc19vYnNvbGV0ZSgpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IGlmIHNlbGYuX3BhdGNoLmJ1ZygpLmlzX2Nsb3NlZCgpOgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIGlmIG5vdCBzZWxmLl9wYXRjaC5jb21taXR0ZXIoKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICAjIFJldmlld2VyIGlzIG5vdCByZXF1aXJlZC4gTWlzc2lu
ZyByZXZpZXdlcnMgd2lsbCBiZSBjYXVnaHQgZHVyaW5nCisgICAgICAgICMgdGhlIENoYW5nZUxv
ZyBjaGVjayBkdXJpbmcgbGFuZGluZy4KKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBf
cnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCwgZmFpbHVyZV9tZXNzYWdlKToKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVlLnJ1bl93ZWJraXRfcGF0Y2goY29tbWFu
ZCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwg
ZToKKyAgICAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IGUKKyAgICAgICAgICAgIHNlbGYu
ZmFpbHVyZV9zdGF0dXNfaWQgPSBzZWxmLl9jb21taXRfcXVldWUuY29tbWFuZF9mYWlsZWQoZmFp
bHVyZV9tZXNzYWdlLCBzY3JpcHRfZXJyb3I9c2VsZi5fc2NyaXB0X2Vycm9yLCBwYXRjaD1zZWxm
Ll9wYXRjaCkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9hcHBseShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5kKFsKKyAgICAgICAgICAgICJhcHBs
eS1hdHRhY2htZW50IiwKKyAgICAgICAgICAgICItLWZvcmNlLWNsZWFuIiwKKyAgICAgICAgICAg
ICItLW5vbi1pbnRlcmFjdGl2ZSIsCisgICAgICAgICAgICAiLS1xdWlldCIsCisgICAgICAgICAg
ICBzZWxmLl9wYXRjaC5pZCgpLAorICAgICAgICBdLCAiUGF0Y2ggZG9lcyBub3QgYXBwbHkiKQor
CisgICAgZGVmIF9idWlsZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5k
KFsKKyAgICAgICAgICAgICJidWlsZCIsCisgICAgICAgICAgICAiLS1uby1jbGVhbiIsCisgICAg
ICAgICAgICAiLS1uby11cGRhdGUiLAorICAgICAgICAgICAgIi0tYnVpbGQiLAorICAgICAgICAg
ICAgIi0tYnVpbGQtc3R5bGU9Ym90aCIsCisgICAgICAgICAgICAiLS1xdWlldCIsCisgICAgICAg
IF0sICJQYXRjaCBkb2VzIG5vdCBidWlsZCIpCisKKyAgICBkZWYgX2J1aWxkX3dpdGhvdXRfcGF0
Y2goc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fY29tbWFuZChbCisgICAgICAgICAg
ICAiYnVpbGQiLAorICAgICAgICAgICAgIi0tZm9yY2UtY2xlYW4iLAorICAgICAgICAgICAgIi0t
bm8tdXBkYXRlIiwKKyAgICAgICAgICAgICItLWJ1aWxkIiwKKyAgICAgICAgICAgICItLWJ1aWxk
LXN0eWxlPWJvdGgiLAorICAgICAgICAgICAgIi0tcXVpZXQiLAorICAgICAgICBdLCAiVW5hYmxl
IHRvIGJ1aWxkIHdpdGhvdXQgcGF0Y2giKQorCisgICAgZGVmIF90ZXN0KHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fcnVuX2NvbW1hbmQoWworICAgICAgICAgICAgImJ1aWxkLWFuZC10ZXN0
IiwKKyAgICAgICAgICAgICItLW5vLWNsZWFuIiwKKyAgICAgICAgICAgICItLW5vLXVwZGF0ZSIs
CisgICAgICAgICAgICAjIE5vdGljZSB0aGF0IHdlIGRvbid0IHBhc3MgLS1idWlsZCwgd2hpY2gg
bWVhbnMgd2Ugd29uJ3QgYnVpbGQhCisgICAgICAgICAgICAiLS10ZXN0IiwKKyAgICAgICAgICAg
ICItLXF1aWV0IiwKKyAgICAgICAgICAgICItLW5vbi1pbnRlcmFjdGl2ZSIsCisgICAgICAgIF0s
ICJQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzIikKKworICAgIGRlZiBfYnVpbGRfYW5kX3Rlc3Rf
d2l0aG91dF9wYXRjaChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5kKFsK
KyAgICAgICAgICAgICJidWlsZC1hbmQtdGVzdCIsCisgICAgICAgICAgICAiLS1mb3JjZS1jbGVh
biIsCisgICAgICAgICAgICAiLS1uby11cGRhdGUiLAorICAgICAgICAgICAgIi0tYnVpbGQiLAor
ICAgICAgICAgICAgIi0tdGVzdCIsCisgICAgICAgICAgICAiLS1xdWlldCIsCisgICAgICAgICAg
ICAiLS1ub24taW50ZXJhY3RpdmUiLAorICAgICAgICBdLCAiVW5hYmxlIHRvIHBhc3MgdGVzdHMg
d2l0aG91dCBwYXRjaCIpCisKKyAgICBkZWYgX2xhbmQoc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9ydW5fY29tbWFuZChbCisgICAgICAgICAgICAibGFuZC1hdHRhY2htZW50IiwKKyAgICAg
ICAgICAgICItLWZvcmNlLWNsZWFuIiwKKyAgICAgICAgICAgICItLWlnbm9yZS1idWlsZGVycyIs
CisgICAgICAgICAgICAiLS1xdWlldCIsCisgICAgICAgICAgICAiLS1ub24taW50ZXJhY3RpdmUi
LAorICAgICAgICAgICAgIi0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlIiwKKyAgICAgICAg
ICAgIHNlbGYuX3BhdGNoLmlkKCksCisgICAgICAgIF0sICJVbmFibGUgdG8gbGFuZCBwYXRjaCIp
CisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fdmFsaWRhdGUoKToK
KyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5fYXBwbHkoKToK
KyAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvcgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fYnVpbGQoKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF93aXRob3V0X3BhdGNo
KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByYWlzZSBzZWxm
Ll9zY3JpcHRfZXJyb3IKKyAgICAgICAgaWYgbm90IHNlbGYuX3BhdGNoLmlzX3JvbGxvdXQoKToK
KyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0KCk6CisgICAgICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3Rlc3QoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX2Fu
ZF90ZXN0X3dpdGhvdXRfcGF0Y2goKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NjcmlwdF9lcnJvcgorICAgICAgICAj
IE1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgc3RpbGwgdmFsaWQgYmVmb3JlIGxhbmRpbmcgKGUuZy4s
IG1ha2Ugc3VyZQorICAgICAgICAjIG5vIG9uZSBoYXMgc2V0IGNvbW1pdC1xdWV1ZS0gc2luY2Ug
d2Ugc3RhcnRlZCB3b3JraW5nIG9uIHRoZSBwYXRjaC4pCisgICAgICAgIGlmIG5vdCBzZWxmLl92
YWxpZGF0ZSgpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHNlbGYuX2xhbmQo
KQorICAgICAgICByZXR1cm4gVHJ1ZQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CShyZXZpc2lvbiA2ODAxNikKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnN0
YXR1c3NlcnZlciBpbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xv
Z2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVw
c2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgorZnJvbSB3ZWJraXRweS50
b29sLmJvdC5jb21taXRxdWV1ZXRhc2sgaW1wb3J0IENvbW1pdFF1ZXVlVGFzawogZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5mZWVkZXJzIGltcG9ydCBDb21taXRRdWV1ZUZlZWRlcgogZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5wYXRjaGNvbGxlY3Rpb24gaW1wb3J0IFBlcnNpc3RlbnRQYXRjaENvbGxl
Y3Rpb24sIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZQogZnJvbSB3ZWJraXRweS50
b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5naW5lRGVsZWdh
dGUKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgQWJzdHJhY3RRdWV1ZShDb21tYW5kLCBRdWV1ZUVu
Z2luZQogCiAgICAgX3Bhc3Nfc3RhdHVzID0gIlBhc3MiCiAgICAgX2ZhaWxfc3RhdHVzID0gIkZh
aWwiCisgICAgX3JldHJ5X3N0YXR1cyA9ICJSZXRyeSIKICAgICBfZXJyb3Jfc3RhdHVzID0gIkVy
cm9yIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnM9Tm9uZSk6ICMgRGVmYXVsdCB2
YWx1ZXMgc2hvdWxkIG5ldmVyIGJlIGNvbGxlY3Rpb25zIChsaWtlIFtdKSBhcyBkZWZhdWx0IHZh
bHVlcyBhcmUgc2hhcmVkIGJldHdlZW4gaW52b2NhdGlvbnMKQEAgLTE4Myw3ICsxODUsNyBAQCBj
bGFzcyBGZWVkZXJRdWV1ZShBYnN0cmFjdFF1ZXVlKToKIAogY2xhc3MgQWJzdHJhY3RQYXRjaFF1
ZXVlKEFic3RyYWN0UXVldWUpOgogICAgIGRlZiBfdXBkYXRlX3N0YXR1cyhzZWxmLCBtZXNzYWdl
LCBwYXRjaD1Ob25lLCByZXN1bHRzX2ZpbGU9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3Rvb2wuc3Rh
dHVzX3NlcnZlci51cGRhdGVfc3RhdHVzKHNlbGYubmFtZSwgbWVzc2FnZSwgcGF0Y2gsIHJlc3Vs
dHNfZmlsZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wuc3RhdHVzX3NlcnZlci51cGRhdGVf
c3RhdHVzKHNlbGYubmFtZSwgbWVzc2FnZSwgcGF0Y2gsIHJlc3VsdHNfZmlsZSkKIAogICAgIGRl
ZiBfZmV0Y2hfbmV4dF93b3JrX2l0ZW0oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl90b29s
LnN0YXR1c19zZXJ2ZXIubmV4dF93b3JrX2l0ZW0oc2VsZi5uYW1lKQpAQCAtMTk0LDYgKzE5Niw5
IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hRdWV1ZShBYnN0cmFjdFF1ZXVlKToKICAgICBkZWYgX2Rp
ZF9mYWlsKHNlbGYsIHBhdGNoKToKICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cyhzZWxmLl9m
YWlsX3N0YXR1cywgcGF0Y2gpCiAKKyAgICBkZWYgX2RpZF9yZXRyeShzZWxmLCBwYXRjaCk6Cisg
ICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoc2VsZi5fcmV0cnlfc3RhdHVzLCBwYXRjaCkKKwog
ICAgIGRlZiBfZGlkX2Vycm9yKHNlbGYsIHBhdGNoLCByZWFzb24pOgogICAgICAgICBtZXNzYWdl
ID0gIiVzOiAlcyIgJSAoc2VsZi5fZXJyb3Jfc3RhdHVzLCByZWFzb24pCiAgICAgICAgIHNlbGYu
X3VwZGF0ZV9zdGF0dXMobWVzc2FnZSwgcGF0Y2gpCkBAIC0yMTcsMTM0ICsyMjIsNDUgQEAgY2xh
c3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdAogICAgICAgICAgICAgcmV0dXJu
IE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHBh
dGNoX2lkKQogCi0gICAgZGVmIF9jYW5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaChzZWxm
KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKFsKLSAg
ICAgICAgICAgICAgICAiYnVpbGQtYW5kLXRlc3QiLAotICAgICAgICAgICAgICAgICItLWZvcmNl
LWNsZWFuIiwKLSAgICAgICAgICAgICAgICAiLS1idWlsZCIsCi0gICAgICAgICAgICAgICAgIi0t
dGVzdCIsCi0gICAgICAgICAgICAgICAgIi0tbm9uLWludGVyYWN0aXZlIiwKLSAgICAgICAgICAg
ICAgICAiLS1uby11cGRhdGUiLAotICAgICAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPWJvdGgi
LAotICAgICAgICAgICAgICAgICItLXF1aWV0Il0pCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQot
ICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6Ci0gICAgICAgICAgICBmYWlsdXJlX2xvZyA9
IHNlbGYuX2xvZ19mcm9tX3NjcmlwdF9lcnJvcl9mb3JfdXBsb2FkKGUpCi0gICAgICAgICAgICBz
ZWxmLl91cGRhdGVfc3RhdHVzKCJVbmFibGUgdG8gYnVpbGQgYW5kIHRlc3Qgd2l0aG91dCBwYXRj
aCIsIHJlc3VsdHNfZmlsZT1mYWlsdXJlX2xvZykKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQot
CiAgICAgZGVmIHNob3VsZF9wcm9jZWVkX3dpdGhfd29ya19pdGVtKHNlbGYsIHBhdGNoKToKICAg
ICAgICAgcGF0Y2hfdGV4dCA9ICJyb2xsb3V0IHBhdGNoIiBpZiBwYXRjaC5pc19yb2xsb3V0KCkg
ZWxzZSAicGF0Y2giCiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIkxhbmRpbmcgJXMiICUg
cGF0Y2hfdGV4dCwgcGF0Y2gpCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgX2J1aWxk
X2FuZF90ZXN0X3BhdGNoKHNlbGYsIHBhdGNoLCBmaXJzdF9ydW49RmFsc2UpOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBhcmdzID0gWwotICAgICAgICAgICAgICAgICJidWlsZC1hbmQtdGVz
dC1hdHRhY2htZW50IiwKLSAgICAgICAgICAgICAgICAiLS1mb3JjZS1jbGVhbiIsCi0gICAgICAg
ICAgICAgICAgIi0tYnVpbGQiLAotICAgICAgICAgICAgICAgICItLW5vbi1pbnRlcmFjdGl2ZSIs
Ci0gICAgICAgICAgICAgICAgIi0tYnVpbGQtc3R5bGU9Ym90aCIsCi0gICAgICAgICAgICAgICAg
Ii0tcXVpZXQiLAotICAgICAgICAgICAgICAgIHBhdGNoLmlkKCkKLSAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgICMgV2UgZG9uJ3QgYm90aGVyIHRvIHJ1biB0ZXN0cyBmb3Igcm9sbG91dHMgYXMg
dGhhdCBtYWtlcyB0aGVtIHRvbyBzbG93LgotICAgICAgICAgICAgaWYgbm90IHBhdGNoLmlzX3Jv
bGxvdXQoKToKLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS10ZXN0IikKLSAgICAgICAg
ICAgIGlmIG5vdCBmaXJzdF9ydW46Ci0gICAgICAgICAgICAgICAgIyBUaGUgZmlyc3QgdGltZSB0
aHJvdWdoLCB3ZSBkb24ndCByZWplY3QgdGhlIHBhdGNoIGZyb20gdGhlCi0gICAgICAgICAgICAg
ICAgIyBjb21taXQgcXVldWUgYmVjYXVzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYnVp
bGQgYW5kCi0gICAgICAgICAgICAgICAgIyB0ZXN0IG91cnNlbHZlcy4gSG93ZXZlciwgdGhlIHNl
Y29uZCB0aW1lIHRocm91Z2gsIHdlCi0gICAgICAgICAgICAgICAgIyByZWdpc3RlciBvdXJzZWx2
ZXMgYXMgdGhlIHBhcmVudC1jb21tYW5kIHNvIHdlIGNhbiByZWplY3QKLSAgICAgICAgICAgICAg
ICAjIHRoZSBwYXRjaCBvbiBmYWlsdXJlLgotICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIt
LXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1ZSIpCi0gICAgICAgICAgICAgICAgIyBUaGUgc2Vj
b25kIHRpbWUgdGhyb3VnaCwgd2UgYWxzbyBkb24ndCB3YW50IHRvIHVwZGF0ZSBzbyB3ZQotICAg
ICAgICAgICAgICAgICMga25vdyB3ZSdyZSB0ZXN0aW5nIHRoZSBzYW1lIHJldmlzaW9uIHRoYXQg
d2Ugc3VjY2Vzc2Z1bGx5Ci0gICAgICAgICAgICAgICAgIyBidWlsdCBhbmQgdGVzdGVkLgotICAg
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLXVwZGF0ZSIpCi0gICAgICAgICAgICBzZWxm
LnJ1bl93ZWJraXRfcGF0Y2goYXJncykKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAg
IGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAgIGZhaWx1cmVfbG9nID0gc2VsZi5f
bG9nX2Zyb21fc2NyaXB0X2Vycm9yX2Zvcl91cGxvYWQoZSkKLSAgICAgICAgICAgIHNlbGYuX3Vw
ZGF0ZV9zdGF0dXMoIlVuYWJsZSB0byBidWlsZCBhbmQgdGVzdCBwYXRjaCIsIHBhdGNoPXBhdGNo
LCByZXN1bHRzX2ZpbGU9ZmFpbHVyZV9sb2cpCi0gICAgICAgICAgICBpZiBmaXJzdF9ydW46Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBzZWxmLl9kaWRfZmFpbChw
YXRjaCkKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgX3JldmFsaWRhdGVfcGF0Y2goc2Vs
ZiwgcGF0Y2gpOgotICAgICAgICAjIEJ1Z3MgbWlnaHQgZ2V0IGNsb3NlZCwgb3IgcGF0Y2hlcyBt
aWdodCBiZSBvYnNvbGV0ZWQgb3Igci0nZCB3aGlsZSB0aGUKLSAgICAgICAgIyBjb21taXQtcXVl
dWUgaXMgcHJvY2Vzc2luZy4gIERvIG9uZSBsYXN0IG1pbnV0ZSBjaGVjayBiZWZvcmUgbGFuZGlu
Zy4KLSAgICAgICAgcGF0Y2ggPSBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRj
aC5pZCgpKQotICAgICAgICBpZiBwYXRjaC5pc19vYnNvbGV0ZSgpOgotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLSAgICAgICAgaWYgcGF0Y2guYnVnKCkuaXNfY2xvc2VkKCk6Ci0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICBpZiBub3QgcGF0Y2guY29tbWl0dGVyKCk6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFJldmlld2VyIGlzIG5vdCByZXF1aXJlZC4gIE1p
c2lzbmcgcmV2aWV3ZXJzIHdpbGwgYmUgY2F1Z2h0IGR1cmluZyB0aGUgQ2hhbmdlTG9nIGNoZWNr
IGR1cmluZyBsYW5kaW5nLgotICAgICAgICByZXR1cm4gcGF0Y2gKLQotICAgIGRlZiBfbGFuZChz
ZWxmLCBwYXRjaCk6CisgICAgZGVmIHByb2Nlc3Nfd29ya19pdGVtKHNlbGYsIHBhdGNoKToKKyAg
ICAgICAgc2VsZi5fY2Nfd2F0Y2hlcnMocGF0Y2guYnVnX2lkKCkpCisgICAgICAgIHRhc2sgPSBD
b21taXRRdWV1ZVRhc2soc2VsZi5fdG9vbCwgc2VsZiwgcGF0Y2gpCiAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGFyZ3MgPSBbCi0gICAgICAgICAgICAgICAgImxhbmQtYXR0YWNobWVudCIsCi0g
ICAgICAgICAgICAgICAgIi0tZm9yY2UtY2xlYW4iLAotICAgICAgICAgICAgICAgICItLW5vbi1p
bnRlcmFjdGl2ZSIsCi0gICAgICAgICAgICAgICAgIi0taWdub3JlLWJ1aWxkZXJzIiwKLSAgICAg
ICAgICAgICAgICAiLS1xdWlldCIsCi0gICAgICAgICAgICAgICAgIi0tcGFyZW50LWNvbW1hbmQ9
Y29tbWl0LXF1ZXVlIiwKLSAgICAgICAgICAgICAgICBwYXRjaC5pZCgpLAotICAgICAgICAgICAg
XQotICAgICAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGFyZ3MpCi0gICAgICAgICAgICBz
ZWxmLl9kaWRfcGFzcyhwYXRjaCkKKyAgICAgICAgICAgIGlmIHRhc2sucnVuKCk6CisgICAgICAg
ICAgICAgICAgc2VsZi5fZGlkX3Bhc3MocGF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgICAgIHNlbGYuX2RpZF9yZXRyeShwYXRjaCkKICAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yLCBlOgotICAgICAgICAgICAgZmFpbHVyZV9sb2cgPSBzZWxmLl9sb2dfZnJvbV9z
Y3JpcHRfZXJyb3JfZm9yX3VwbG9hZChlKQotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1
cygiVW5hYmxlIHRvIGxhbmQgcGF0Y2giLCBwYXRjaD1wYXRjaCwgcmVzdWx0c19maWxlPWZhaWx1
cmVfbG9nKQorICAgICAgICAgICAgdmFsaWRhdG9yID0gQ29tbWl0dGVyVmFsaWRhdG9yKHNlbGYu
X3Rvb2wuYnVncykKKyAgICAgICAgICAgIHZhbGlkYXRvci5yZWplY3RfcGF0Y2hfZnJvbV9jb21t
aXRfcXVldWUocGF0Y2guaWQoKSwgc2VsZi5fZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHRhc2suZmFp
bHVyZV9zdGF0dXNfaWQsIGUpKQogICAgICAgICAgICAgc2VsZi5fZGlkX2ZhaWwocGF0Y2gpCi0g
ICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHByb2Nlc3Nfd29ya19pdGVtKHNlbGYsIHBhdGNo
KToKLSAgICAgICAgc2VsZi5fY2Nfd2F0Y2hlcnMocGF0Y2guYnVnX2lkKCkpCi0gICAgICAgIGlm
IG5vdCBzZWxmLl9idWlsZF9hbmRfdGVzdF9wYXRjaChwYXRjaCwgZmlyc3RfcnVuPVRydWUpOgot
ICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiQnVpbGRpbmcgYW5kIHRlc3Rpbmcgd2l0
aG91dCB0aGUgcGF0Y2ggYXMgYSBzYW5pdHkgY2hlY2siLCBwYXRjaCkKLSAgICAgICAgICAgICMg
VGhlIHBhdGNoIGZhaWxlZCB0byBidWlsZCBhbmQgdGVzdC4gSXQncyBwb3NzaWJsZSB0aGF0IHRo
ZQotICAgICAgICAgICAgIyB0cmVlIGlzIGJ1c3RlZC4gVG8gY2hlY2sgdGhhdCBjYXNlLCB3ZSB0
cnkgdG8gYnVpbGQgYW5kIHRlc3QKLSAgICAgICAgICAgICMgd2l0aG91dCB0aGUgcGF0Y2guCi0g
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2go
KToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0
ZV9zdGF0dXMoIkJ1aWxkIGFuZCB0ZXN0IHN1Y2NlZWRlZCwgdHJ5aW5nIGFnYWluIHdpdGggcGF0
Y2giLCBwYXRjaCkKLSAgICAgICAgICAgICMgSHVtLCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBh
Y3R1YWxseSBiYWQuIE9mIGNvdXJzZSwgd2UgY291bGQKLSAgICAgICAgICAgICMgaGF2ZSBiZWVu
IGJpdHRlbiBieSBhIGZsYWt5IHRlc3QgdGhlIGZpcnN0IHRpbWUgYXJvdW5kLiAgV2UgdHJ5Ci0g
ICAgICAgICAgICAjIHRvIGJ1aWxkIGFuZCB0ZXN0IGFnYWluLiBJZiBpdCBmYWlscyBhIHNlY29u
ZCB0aW1lLCB3ZSdyZSBwcmV0dHkKLSAgICAgICAgICAgICMgc3VyZSBpdHMgYSBiYWQgdGVzdCBh
bmQgcmUgY2FuIHJlamVjdCBpdCBvdXRyaWdodC4KLSAgICAgICAgICAgIHNlbGYuX2J1aWxkX2Fu
ZF90ZXN0X3BhdGNoKHBhdGNoKQotICAgICAgICAjIERvIG9uZSBsYXN0IGNoZWNrIHRvIGNhdGNo
IGFueSBidWcgY2hhbmdlcyAoY3EtLCBjbG9zZWQsIHJldmlld2VyIGNoYW5nZWQsIGV0Yy4pCi0g
ICAgICAgICMgVGhpcyBoZWxwcyBjYXRjaCByYWNlcyBiZXR3ZWVuIHRoZSBib3RzIGlmIGxvY2tz
IGV4cGlyZS4KLSAgICAgICAgcGF0Y2ggPSBzZWxmLl9yZXZhbGlkYXRlX3BhdGNoKHBhdGNoKQot
ICAgICAgICBpZiBub3QgcGF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAg
c2VsZi5fbGFuZChwYXRjaCkKLSAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBoYW5kbGVf
dW5leHBlY3RlZF9lcnJvcihzZWxmLCBwYXRjaCwgbWVzc2FnZSk6CiAgICAgICAgIHNlbGYuY29t
bWl0dGVyX3ZhbGlkYXRvci5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVldWUocGF0Y2guaWQo
KSwgbWVzc2FnZSkKIAotICAgICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1ldGhvZHMKLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9lcnJvcl9tZXNzYWdlX2Zvcl9idWcodG9vbCwgc3Rh
dHVzX2lkLCBzY3JpcHRfZXJyb3IpOgorICAgIGRlZiBjb21tYW5kX2ZhaWxlZChtZXNzYWdlLCBz
Y3JpcHRfZXJyb3IsIHBhdGNoKToKKyAgICAgICAgZmFpbHVyZV9sb2cgPSBzZWxmLl9sb2dfZnJv
bV9zY3JpcHRfZXJyb3JfZm9yX3VwbG9hZChzY3JpcHRfZXJyb3IpCisgICAgICAgIHJldHVybiBz
ZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBhdGNoPXBhdGNoLCByZXN1bHRzX2ZpbGU9ZmFp
bHVyZV9sb2cpCisKKyAgICBkZWYgX2Vycm9yX21lc3NhZ2VfZm9yX2J1ZyhzZWxmLCBzdGF0dXNf
aWQsIHNjcmlwdF9lcnJvcik6CiAgICAgICAgIGlmIG5vdCBzY3JpcHRfZXJyb3Iub3V0cHV0Ogog
ICAgICAgICAgICAgcmV0dXJuIHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkKLSAg
ICAgICAgcmVzdWx0c19saW5rID0gdG9vbC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9z
dGF0dXMoc3RhdHVzX2lkKQorICAgICAgICByZXN1bHRzX2xpbmsgPSBzZWxmLl90b29sLnN0YXR1
c19zZXJ2ZXIucmVzdWx0c191cmxfZm9yX3N0YXR1cyhzdGF0dXNfaWQpCiAgICAgICAgIHJldHVy
biAiJXNcbkZ1bGwgb3V0cHV0OiAlcyIgJSAoc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0aF9vdXRw
dXQoKSwgcmVzdWx0c19saW5rKQogCi0gICAgQGNsYXNzbWV0aG9kCisgICAgIyBTdGVwU2VxdWVu
Y2VFcnJvckhhbmRsZXIgbWV0aG9kcworCiAgICAgZGVmIGhhbmRsZV9zY3JpcHRfZXJyb3IoY2xz
LCB0b29sLCBzdGF0ZSwgc2NyaXB0X2Vycm9yKToKLSAgICAgICAgc3RhdHVzX2lkID0gY2xzLl91
cGRhdGVfc3RhdHVzX2Zvcl9zY3JpcHRfZXJyb3IodG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcikK
LSAgICAgICAgdmFsaWRhdG9yID0gQ29tbWl0dGVyVmFsaWRhdG9yKHRvb2wuYnVncykKLSAgICAg
ICAgdmFsaWRhdG9yLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShzdGF0ZVsicGF0Y2gi
XS5pZCgpLCBjbHMuX2Vycm9yX21lc3NhZ2VfZm9yX2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNjcmlw
dF9lcnJvcikpCisgICAgICAgICMgSGl0dGluZyB0aGlzIGVycm9yIGhhbmRsZXIgc2hvdWxkIGJl
IHByZXR0eSByYXJlLiAgSXQgZG9lcyBvY2N1ciwKKyAgICAgICAgIyBob3dldmVyLCB3aGVuIGEg
cGF0Y2ggbm8gbG9uZ2VyIGFwcGxpZXMgdG8gdG9wLW9mLXRyZWUgaW4gdGhlIGZpbmFsCisgICAg
ICAgICMgbGFuZCBzdGVwLgorICAgICAgICBsb2coc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0aF9v
dXRwdXQoKSkKKyAgICAgICAgZXhpdCgxKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGhh
bmRsZV9jaGVja291dF9uZWVkc191cGRhdGUoY2xzLCB0b29sLCBzdGF0ZSwgb3B0aW9ucywgZXJy
b3IpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68477</attachid>
            <date>2010-09-22 17:22:08 -0700</date>
            <delta_ts>2010-09-22 17:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46254-20100922172206.patch</filename>
            <type>text/plain</type>
            <size>32278</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY4MDMxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDktMjIgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPcHRpbWl6ZSBjb21taXQtcXVldWUgcGVyZm9ybWFuY2UgZm9yIGdyZWVuIHRyZWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjI1NAor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVkZXNpZ25zIHRoZSBjb250cm9sbGVyIGxvZ2ljIGZvciB0
aGUgY29tbWl0LXF1ZXVlLiAgSW4gdGhlCisgICAgICAgIG5ldyBkZXNpZ24sIHRoZSBjb250cm9s
bGVyIGV4ZXJjaXNlcyBtdWNoIGZpbmVyLWdyYWluZWQgY29udHJvbCBvdmVyCisgICAgICAgIHRo
ZSBsYW5kaW5nIHByb2Nlc3MuICBJbiBwYXJ0aWN1bGFyOgorCisgICAgICAgIC0gUGF0Y2hlcyB0
aGF0IGZhaWwgdG8gYXBwbHkgbm93IGdldCByZWplY3RlZCBhbG1vc3QgaW1tZWRpYXRlbHkuCisg
ICAgICAgIC0gUGF0Y2hlcyB0aGF0IGZhaWwgdG8gYnVpbGQgZ2V0IHJlamVjdHMgYWZ0ZXIgdHdv
IGJ1aWxkcyAoaW5zdGVhZCBvZgorICAgICAgICAgIHRocmVlIGJ1aWxkcyBhbmQgb25lIHRlc3Qg
cnVuKS4KKyAgICAgICAgLSBQYXRjaGVzIHRoYXQgcnVuIGludG8gYSBmbGFreSB0ZXN0IG5vdyBn
ZXQgYWNjZXB0ZWQgYWZ0ZXIgb25lIGJ1aWxkCisgICAgICAgICAgYW5kIHR3byB0ZXN0IHJ1bnMg
aW5zdGVhZCBvZiB0aHJlZSBmdWxsIGJ1aWxkLWFuZC10ZXN0IHJ1bnMuCisKKyAgICAgICAgVGhl
IG1haW4gY29zdCBvZiB0aGVzZSBvcHRpbWl6YXRpb25zIGlzIHRoYXQgd2UgZG9uJ3QgZmluZCBv
dXQgdGhlIHRyZWUKKyAgICAgICAgaGFzIGEgZmFpbGluZyB0ZXN0IHVudGlsIHRoZSB2ZXJ5IGVu
ZCBvZiB0aGUgcHJvY2VzcywgYnV0IGlmIHRoZSB0cmVlCisgICAgICAgIGhhcyBhIGJ1c3RlZCB0
ZXN0LCB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhbnl3YXkuICBXZSBtaWdodCBhcyB3ZWxs
CisgICAgICAgIGJ1cm4gY29tbWl0LXF1ZXVlIHJlc291cmNlcyBzcGlubmluZyBvcHRpbWlzdGlj
bHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFz
ay5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRx
dWV1ZXRhc2tfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6CisKIDIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4LgpJbmRl
eDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2su
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2sucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNDQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKK2NsYXNzIENvbW1pdFF1ZXVlVGFzayhv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBjb21taXRfcXVldWUsIHBhdGNo
KToKKyAgICAgICAgc2VsZi5fdG9vbCA9IHRvb2wKKyAgICAgICAgc2VsZi5fY29tbWl0X3F1ZXVl
ID0gY29tbWl0X3F1ZXVlCisgICAgICAgIHNlbGYuX3BhdGNoID0gcGF0Y2gKKyAgICAgICAgc2Vs
Zi5fc2NyaXB0X2Vycm9yID0gTm9uZQorCisgICAgZGVmIF92YWxpZGF0ZShzZWxmKToKKyAgICAg
ICAgIyBCdWdzIG1pZ2h0IGdldCBjbG9zZWQsIG9yIHBhdGNoZXMgbWlnaHQgYmUgb2Jzb2xldGVk
IG9yIHItJ2Qgd2hpbGUgdGhlCisgICAgICAgICMgY29tbWl0LXF1ZXVlIGlzIHByb2Nlc3Npbmcu
ICBEbyBvbmUgbGFzdCBtaW51dGUgY2hlY2sgYmVmb3JlIGxhbmRpbmcuCisgICAgICAgIHNlbGYu
X3BhdGNoID0gc2VsZi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQoc2VsZi5fcGF0Y2guaWQo
KSkKKyAgICAgICAgaWYgc2VsZi5fcGF0Y2guaXNfb2Jzb2xldGUoKToKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLl9wYXRjaC5idWcoKS5pc19jbG9zZWQoKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5fcGF0Y2guY29tbWl0
dGVyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBSZXZpZXdlciBpcyBu
b3QgcmVxdWlyZWQuIE1pc3NpbmcgcmV2aWV3ZXJzIHdpbGwgYmUgY2F1Z2h0IGR1cmluZworICAg
ICAgICAjIHRoZSBDaGFuZ2VMb2cgY2hlY2sgZHVyaW5nIGxhbmRpbmcuCisgICAgICAgIHJldHVy
biBUcnVlCisKKyAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQsIGZhaWx1cmVfbWVz
c2FnZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9xdWV1ZS5ydW5f
d2Via2l0X3BhdGNoKGNvbW1hbmQpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICBzZWxmLl9zY3JpcHRfZXJyb3IgPSBl
CisgICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gc2VsZi5fY29tbWl0X3F1ZXVl
LmNvbW1hbmRfZmFpbGVkKGZhaWx1cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yPXNlbGYuX3Njcmlw
dF9lcnJvciwgcGF0Y2g9c2VsZi5fcGF0Y2gpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBfYXBwbHkoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fY29tbWFuZChb
CisgICAgICAgICAgICAiYXBwbHktYXR0YWNobWVudCIsCisgICAgICAgICAgICAiLS1mb3JjZS1j
bGVhbiIsCisgICAgICAgICAgICAiLS1ub24taW50ZXJhY3RpdmUiLAorICAgICAgICAgICAgIi0t
cXVpZXQiLAorICAgICAgICAgICAgc2VsZi5fcGF0Y2guaWQoKSwKKyAgICAgICAgXSwgIlBhdGNo
IGRvZXMgbm90IGFwcGx5IikKKworICAgIGRlZiBfYnVpbGQoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9ydW5fY29tbWFuZChbCisgICAgICAgICAgICAiYnVpbGQiLAorICAgICAgICAgICAg
Ii0tbm8tY2xlYW4iLAorICAgICAgICAgICAgIi0tbm8tdXBkYXRlIiwKKyAgICAgICAgICAgICIt
LWJ1aWxkIiwKKyAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPWJvdGgiLAorICAgICAgICAgICAg
Ii0tcXVpZXQiLAorICAgICAgICBdLCAiUGF0Y2ggZG9lcyBub3QgYnVpbGQiKQorCisgICAgZGVm
IF9idWlsZF93aXRob3V0X3BhdGNoKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2Nv
bW1hbmQoWworICAgICAgICAgICAgImJ1aWxkIiwKKyAgICAgICAgICAgICItLWZvcmNlLWNsZWFu
IiwKKyAgICAgICAgICAgICItLW5vLXVwZGF0ZSIsCisgICAgICAgICAgICAiLS1idWlsZCIsCisg
ICAgICAgICAgICAiLS1idWlsZC1zdHlsZT1ib3RoIiwKKyAgICAgICAgICAgICItLXF1aWV0IiwK
KyAgICAgICAgXSwgIlVuYWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoIikKKworICAgIGRlZiBf
dGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21tYW5kKFsKKyAgICAgICAg
ICAgICJidWlsZC1hbmQtdGVzdCIsCisgICAgICAgICAgICAiLS1uby1jbGVhbiIsCisgICAgICAg
ICAgICAiLS1uby11cGRhdGUiLAorICAgICAgICAgICAgIyBOb3RpY2UgdGhhdCB3ZSBkb24ndCBw
YXNzIC0tYnVpbGQsIHdoaWNoIG1lYW5zIHdlIHdvbid0IGJ1aWxkIQorICAgICAgICAgICAgIi0t
dGVzdCIsCisgICAgICAgICAgICAiLS1xdWlldCIsCisgICAgICAgICAgICAiLS1ub24taW50ZXJh
Y3RpdmUiLAorICAgICAgICBdLCAiUGF0Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cyIpCisKKyAgICBk
ZWYgX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9ydW5fY29tbWFuZChbCisgICAgICAgICAgICAiYnVpbGQtYW5kLXRlc3QiLAorICAgICAg
ICAgICAgIi0tZm9yY2UtY2xlYW4iLAorICAgICAgICAgICAgIi0tbm8tdXBkYXRlIiwKKyAgICAg
ICAgICAgICItLWJ1aWxkIiwKKyAgICAgICAgICAgICItLXRlc3QiLAorICAgICAgICAgICAgIi0t
cXVpZXQiLAorICAgICAgICAgICAgIi0tbm9uLWludGVyYWN0aXZlIiwKKyAgICAgICAgXSwgIlVu
YWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2giKQorCisgICAgZGVmIF9sYW5kKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2NvbW1hbmQoWworICAgICAgICAgICAgImxhbmQt
YXR0YWNobWVudCIsCisgICAgICAgICAgICAiLS1mb3JjZS1jbGVhbiIsCisgICAgICAgICAgICAi
LS1pZ25vcmUtYnVpbGRlcnMiLAorICAgICAgICAgICAgIi0tcXVpZXQiLAorICAgICAgICAgICAg
Ii0tbm9uLWludGVyYWN0aXZlIiwKKyAgICAgICAgICAgICItLXBhcmVudC1jb21tYW5kPWNvbW1p
dC1xdWV1ZSIsCisgICAgICAgICAgICBzZWxmLl9wYXRjaC5pZCgpLAorICAgICAgICBdLCAiVW5h
YmxlIHRvIGxhbmQgcGF0Y2giKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgaWYgbm90
IHNlbGYuX3ZhbGlkYXRlKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg
bm90IHNlbGYuX2FwcGx5KCk6CisgICAgICAgICAgICByYWlzZSBzZWxmLl9zY3JpcHRfZXJyb3IK
KyAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkKCk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5f
YnVpbGRfd2l0aG91dF9wYXRjaCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICAgICAgcmFpc2Ugc2VsZi5fc2NyaXB0X2Vycm9yCisgICAgICAgIGlmIG5vdCBzZWxmLl9w
YXRjaC5pc19yb2xsb3V0KCk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdCgpOgorICAg
ICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0KCk6CisgICAgICAgICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCk6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5f
c2NyaXB0X2Vycm9yCisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBzdGlsbCB2YWxp
ZCBiZWZvcmUgbGFuZGluZyAoZS5nLiwgbWFrZSBzdXJlCisgICAgICAgICMgbm8gb25lIGhhcyBz
ZXQgY29tbWl0LXF1ZXVlLSBzaW5jZSB3ZSBzdGFydGVkIHdvcmtpbmcgb24gdGhlIHBhdGNoLikK
KyAgICAgICAgaWYgbm90IHNlbGYuX3ZhbGlkYXRlKCk6CisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgc2VsZi5fbGFuZCgpCisgICAgICAgIHJldHVybiBUcnVlCkluZGV4OiBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGF0
ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZworZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUK
K2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCitmcm9tIHdlYmtpdHB5
LnRvb2wuYm90LmNvbW1pdHF1ZXVldGFzayBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrVG9vbAorCisKK2NsYXNzIE1vY2tDb21taXRRdWV1ZToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZXJyb3JfcGxhbik6CisgICAgICAgIHNlbGYuX2Vycm9yX3BsYW4g
PSBlcnJvcl9wbGFuCisKKyAgICBkZWYgcnVuX3dlYmtpdF9wYXRjaChzZWxmLCBjb21tYW5kKToK
KyAgICAgICAgbG9nKCJydW5fd2Via2l0X3BhdGNoOiAlcyIgJSBjb21tYW5kKQorICAgICAgICBp
ZiBzZWxmLl9lcnJvcl9wbGFuOgorICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9lcnJvcl9wbGFu
LnBvcCgwKQorICAgICAgICAgICAgaWYgZXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgZXJy
b3IKKworICAgIGRlZiBjb21tYW5kX2ZhaWxlZChzZWxmLCBmYWlsdXJlX21lc3NhZ2UsIHNjcmlw
dF9lcnJvciwgcGF0Y2gpOgorICAgICAgICBsb2coImNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21l
c3NhZ2U9JyVzJyBzY3JpcHRfZXJyb3I9JyVzJyBwYXRjaD0nJXMnIiAlICgKKyAgICAgICAgICAg
IGZhaWx1cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaC5pZCgpKSkKKyAgICAgICAgcmV0
dXJuIDM5NDcKKworCitjbGFzcyBDb21taXRRdWV1ZVRhc2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICBkZWYgX3J1bl90aHJvdWdoX3Rhc2soc2VsZiwgY29tbWl0X3F1ZXVlLCBleHBlY3Rl
ZF9zdGRlcnIsIGV4cGVjdGVkX2V4Y2VwdGlvbj1Ob25lKToKKyAgICAgICAgdG9vbCA9IE1vY2tU
b29sKGxvZ19leGVjdXRpdmU9VHJ1ZSkKKyAgICAgICAgcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hf
YXR0YWNobWVudCgxOTcpCisgICAgICAgIHRhc2sgPSBDb21taXRRdWV1ZVRhc2sodG9vbCwgY29t
bWl0X3F1ZXVlLCBwYXRjaCkKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRz
KHNlbGYsIHRhc2sucnVuLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3Rl
ZF9leGNlcHRpb249ZXhwZWN0ZWRfZXhjZXB0aW9uKQorCisgICAgZGVmIHRlc3Rfc3VjY2Vzc19j
YXNlKHNlbGYpOgorICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29tbWl0UXVldWUoW10pCisg
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiInJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHktYXR0
YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcXVpZXQn
LCAxOTddCitydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11
cGRhdGUnLCAnLS1idWlsZCcsICctLWJ1aWxkLXN0eWxlPWJvdGgnLCAnLS1xdWlldCddCitydW5f
d2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRh
dGUnLCAnLS10ZXN0JywgJy0tcXVpZXQnLCAnLS1ub24taW50ZXJhY3RpdmUnXQorcnVuX3dlYmtp
dF9wYXRjaDogWydsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLWlnbm9yZS1i
dWlsZGVycycsICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcGFyZW50LWNvbW1h
bmQ9Y29tbWl0LXF1ZXVlJywgMTk3XQorIiIiCisgICAgICAgIHNlbGYuX3J1bl90aHJvdWdoX3Rh
c2soY29tbWl0X3F1ZXVlLCBleHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYgdGVzdF9hcHBseV9m
YWlsdXJlKHNlbGYpOgorICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29tbWl0UXVldWUoWwor
ICAgICAgICAgICAgU2NyaXB0RXJyb3IoIk1PQ0sgYXBwbHkgZmFpbHVyZSIpLAorICAgICAgICBd
KQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2FwcGx5
LWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXF1
aWV0JywgMTk3XQorY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBu
b3QgYXBwbHknIHNjcmlwdF9lcnJvcj0nTU9DSyBhcHBseSBmYWlsdXJlJyBwYXRjaD0nMTk3Jwor
IiIiCisgICAgICAgIHNlbGYuX3J1bl90aHJvdWdoX3Rhc2soY29tbWl0X3F1ZXVlLCBleHBlY3Rl
ZF9zdGRlcnIsIFNjcmlwdEVycm9yKQorCisgICAgZGVmIHRlc3RfYnVpbGRfZmFpbHVyZShzZWxm
KToKKyAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja0NvbW1pdFF1ZXVlKFsKKyAgICAgICAgICAg
IE5vbmUsCisgICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyBidWlsZCBmYWlsdXJlIiksCisg
ICAgICAgIF0pCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiInJ1bl93ZWJraXRfcGF0Y2g6
IFsnYXBwbHktYXR0YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm9uLWludGVyYWN0aXZl
JywgJy0tcXVpZXQnLCAxOTddCitydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xl
YW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZCcsICctLWJ1aWxkLXN0eWxlPWJvdGgnLCAnLS1x
dWlldCddCitjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBi
dWlsZCcgc2NyaXB0X2Vycm9yPSdNT0NLIGJ1aWxkIGZhaWx1cmUnIHBhdGNoPScxOTcnCitydW5f
d2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tZm9yY2UtY2xlYW4nLCAnLS1uby11cGRhdGUnLCAn
LS1idWlsZCcsICctLWJ1aWxkLXN0eWxlPWJvdGgnLCAnLS1xdWlldCddCisiIiIKKyAgICAgICAg
c2VsZi5fcnVuX3Rocm91Z2hfdGFzayhjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0ZGVyciwgU2Ny
aXB0RXJyb3IpCisKKyAgICBkZWYgdGVzdF9yZWRfYnVpbGRfZmFpbHVyZShzZWxmKToKKyAgICAg
ICAgY29tbWl0X3F1ZXVlID0gTW9ja0NvbW1pdFF1ZXVlKFsKKyAgICAgICAgICAgIE5vbmUsCisg
ICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyBidWlsZCBmYWlsdXJlIiksCisgICAgICAgICAg
ICBTY3JpcHRFcnJvcigiTU9DSyBjbGVhbiBidWlsZCBmYWlsdXJlIiksCisgICAgICAgIF0pCisg
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiInJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHktYXR0
YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcXVpZXQn
LCAxOTddCitydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11
cGRhdGUnLCAnLS1idWlsZCcsICctLWJ1aWxkLXN0eWxlPWJvdGgnLCAnLS1xdWlldCddCitjb21t
YW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBidWlsZCcgc2NyaXB0
X2Vycm9yPSdNT0NLIGJ1aWxkIGZhaWx1cmUnIHBhdGNoPScxOTcnCitydW5fd2Via2l0X3BhdGNo
OiBbJ2J1aWxkJywgJy0tZm9yY2UtY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZCcsICct
LWJ1aWxkLXN0eWxlPWJvdGgnLCAnLS1xdWlldCddCitjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9t
ZXNzYWdlPSdVbmFibGUgdG8gYnVpbGQgd2l0aG91dCBwYXRjaCcgc2NyaXB0X2Vycm9yPSdNT0NL
IGNsZWFuIGJ1aWxkIGZhaWx1cmUnIHBhdGNoPScxOTcnCisiIiIKKyAgICAgICAgc2VsZi5fcnVu
X3Rocm91Z2hfdGFzayhjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiB0
ZXN0X2ZsYWt5X3Rlc3RfZmFpbHVyZShzZWxmKToKKyAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9j
a0NvbW1pdFF1ZXVlKFsKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAg
ICAgICAgICAgU2NyaXB0RXJyb3IoIk1PQ0sgdGVzdHMgZmFpbHVyZSIpLAorICAgICAgICBdKQor
ICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2FwcGx5LWF0
dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXF1aWV0
JywgMTk3XQorcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8t
dXBkYXRlJywgJy0tYnVpbGQnLCAnLS1idWlsZC1zdHlsZT1ib3RoJywgJy0tcXVpZXQnXQorcnVu
X3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBk
YXRlJywgJy0tdGVzdCcsICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KK2NvbW1hbmRf
ZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMnIHNjcmlw
dF9lcnJvcj0nTU9DSyB0ZXN0cyBmYWlsdXJlJyBwYXRjaD0nMTk3JworcnVuX3dlYmtpdF9wYXRj
aDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVz
dCcsICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KK3J1bl93ZWJraXRfcGF0Y2g6IFsn
bGFuZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAn
LS1xdWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1x
dWV1ZScsIDE5N10KKyIiIgorICAgICAgICBzZWxmLl9ydW5fdGhyb3VnaF90YXNrKGNvbW1pdF9x
dWV1ZSwgZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3RfdGVzdF9mYWlsdXJlKHNlbGYp
OgorICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29tbWl0UXVldWUoWworICAgICAgICAgICAg
Tm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyB0
ZXN0IGZhaWx1cmUiKSwKKyAgICAgICAgICAgIFNjcmlwdEVycm9yKCJNT0NLIHRlc3QgZmFpbHVy
ZSBhZ2FpbiIpLAorICAgICAgICBdKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJydW5f
d2Via2l0X3BhdGNoOiBbJ2FwcGx5LWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLW5v
bi1pbnRlcmFjdGl2ZScsICctLXF1aWV0JywgMTk3XQorcnVuX3dlYmtpdF9wYXRjaDogWydidWls
ZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQnLCAnLS1idWlsZC1zdHls
ZT1ib3RoJywgJy0tcXVpZXQnXQorcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcs
ICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLXF1aWV0JywgJy0tbm9u
LWludGVyYWN0aXZlJ10KK2NvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRv
ZXMgbm90IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUnIHBhdGNo
PScxOTcnCitydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4n
LCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tcXVpZXQnLCAnLS1ub24taW50ZXJhY3RpdmUn
XQorY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFzcyB0
ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZSBhZ2FpbicgcGF0Y2g9JzE5NycK
K3J1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1mb3JjZS1jbGVhbicsICct
LW5vLXVwZGF0ZScsICctLWJ1aWxkJywgJy0tdGVzdCcsICctLXF1aWV0JywgJy0tbm9uLWludGVy
YWN0aXZlJ10KKyIiIgorICAgICAgICBzZWxmLl9ydW5fdGhyb3VnaF90YXNrKGNvbW1pdF9xdWV1
ZSwgZXhwZWN0ZWRfc3RkZXJyLCBTY3JpcHRFcnJvcikKKworICAgIGRlZiB0ZXN0X3JlZF90ZXN0
X2ZhaWx1cmUoc2VsZik6CisgICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tDb21taXRRdWV1ZShb
CisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFNjcmlw
dEVycm9yKCJNT0NLIHRlc3QgZmFpbHVyZSIpLAorICAgICAgICAgICAgU2NyaXB0RXJyb3IoIk1P
Q0sgdGVzdCBmYWlsdXJlIGFnYWluIiksCisgICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyBj
bGVhbiB0ZXN0IGZhaWx1cmUiKSwKKyAgICAgICAgXSkKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJy
ID0gIiIicnVuX3dlYmtpdF9wYXRjaDogWydhcHBseS1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xl
YW4nLCAnLS1ub24taW50ZXJhY3RpdmUnLCAnLS1xdWlldCcsIDE5N10KK3J1bl93ZWJraXRfcGF0
Y2g6IFsnYnVpbGQnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1aWxkJywgJy0t
YnVpbGQtc3R5bGU9Ym90aCcsICctLXF1aWV0J10KK3J1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQt
YW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1xdWll
dCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCitjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdl
PSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWls
dXJlJyBwYXRjaD0nMTk3JworcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICct
LW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLXF1aWV0JywgJy0tbm9uLWlu
dGVyYWN0aXZlJ10KK2NvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMg
bm90IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUgYWdhaW4nIHBh
dGNoPScxOTcnCitydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tZm9yY2Ut
Y2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZCcsICctLXRlc3QnLCAnLS1xdWlldCcsICct
LW5vbi1pbnRlcmFjdGl2ZSddCitjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdVbmFi
bGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNoJyBzY3JpcHRfZXJyb3I9J01PQ0sgY2xlYW4g
dGVzdCBmYWlsdXJlJyBwYXRjaD0nMTk3JworIiIiCisgICAgICAgIHNlbGYuX3J1bl90aHJvdWdo
X3Rhc2soY29tbWl0X3F1ZXVlLCBleHBlY3RlZF9zdGRlcnIpCkluZGV4OiBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHJldmlz
aW9uIDY4MDE2KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVyIGltCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyCitm
cm9tIHdlYmtpdHB5LnRvb2wuYm90LmNvbW1pdHF1ZXVldGFzayBpbXBvcnQgQ29tbWl0UXVldWVU
YXNrCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmZlZWRlcnMgaW1wb3J0IENvbW1pdFF1ZXVlRmVl
ZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoY29sbGVjdGlvbiBpbXBvcnQgUGVyc2lz
dGVudFBhdGNoQ29sbGVjdGlvbiwgUGVyc2lzdGVudFBhdGNoQ29sbGVjdGlvbkRlbGVnYXRlCiBm
cm9tIHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBRdWV1ZUVuZ2luZSwgUXVl
dWVFbmdpbmVEZWxlZ2F0ZQpAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENv
bW1hbmQsIFF1ZXVlRW5naW5lCiAKICAgICBfcGFzc19zdGF0dXMgPSAiUGFzcyIKICAgICBfZmFp
bF9zdGF0dXMgPSAiRmFpbCIKKyAgICBfcmV0cnlfc3RhdHVzID0gIlJldHJ5IgogICAgIF9lcnJv
cl9zdGF0dXMgPSAiRXJyb3IiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucz1Ob25l
KTogIyBEZWZhdWx0IHZhbHVlcyBzaG91bGQgbmV2ZXIgYmUgY29sbGVjdGlvbnMgKGxpa2UgW10p
IGFzIGRlZmF1bHQgdmFsdWVzIGFyZSBzaGFyZWQgYmV0d2VlbiBpbnZvY2F0aW9ucwpAQCAtMTgz
LDcgKzE4NSw3IEBAIGNsYXNzIEZlZWRlclF1ZXVlKEFic3RyYWN0UXVldWUpOgogCiBjbGFzcyBB
YnN0cmFjdFBhdGNoUXVldWUoQWJzdHJhY3RRdWV1ZSk6CiAgICAgZGVmIF91cGRhdGVfc3RhdHVz
KHNlbGYsIG1lc3NhZ2UsIHBhdGNoPU5vbmUsIHJlc3VsdHNfZmlsZT1Ob25lKToKLSAgICAgICAg
c2VsZi5fdG9vbC5zdGF0dXNfc2VydmVyLnVwZGF0ZV9zdGF0dXMoc2VsZi5uYW1lLCBtZXNzYWdl
LCBwYXRjaCwgcmVzdWx0c19maWxlKQorICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5zdGF0dXNf
c2VydmVyLnVwZGF0ZV9zdGF0dXMoc2VsZi5uYW1lLCBtZXNzYWdlLCBwYXRjaCwgcmVzdWx0c19m
aWxlKQogCiAgICAgZGVmIF9mZXRjaF9uZXh0X3dvcmtfaXRlbShzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3Rvb2wuc3RhdHVzX3NlcnZlci5uZXh0X3dvcmtfaXRlbShzZWxmLm5hbWUpCkBA
IC0xOTQsNiArMTk2LDkgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlKEFic3RyYWN0UXVldWUp
OgogICAgIGRlZiBfZGlkX2ZhaWwoc2VsZiwgcGF0Y2gpOgogICAgICAgICBzZWxmLl91cGRhdGVf
c3RhdHVzKHNlbGYuX2ZhaWxfc3RhdHVzLCBwYXRjaCkKIAorICAgIGRlZiBfZGlkX3JldHJ5KHNl
bGYsIHBhdGNoKToKKyAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cyhzZWxmLl9yZXRyeV9zdGF0
dXMsIHBhdGNoKQorCiAgICAgZGVmIF9kaWRfZXJyb3Ioc2VsZiwgcGF0Y2gsIHJlYXNvbik6CiAg
ICAgICAgIG1lc3NhZ2UgPSAiJXM6ICVzIiAlIChzZWxmLl9lcnJvcl9zdGF0dXMsIHJlYXNvbikK
ICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cyhtZXNzYWdlLCBwYXRjaCkKQEAgLTIxNywxMzQg
KzIyMiw0NCBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0CiAgICAg
ICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5idWdzLmZldGNo
X2F0dGFjaG1lbnQocGF0Y2hfaWQpCiAKLSAgICBkZWYgX2Nhbl9idWlsZF9hbmRfdGVzdF93aXRo
b3V0X3BhdGNoKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnJ1bl93ZWJr
aXRfcGF0Y2goWwotICAgICAgICAgICAgICAgICJidWlsZC1hbmQtdGVzdCIsCi0gICAgICAgICAg
ICAgICAgIi0tZm9yY2UtY2xlYW4iLAotICAgICAgICAgICAgICAgICItLWJ1aWxkIiwKLSAgICAg
ICAgICAgICAgICAiLS10ZXN0IiwKLSAgICAgICAgICAgICAgICAiLS1ub24taW50ZXJhY3RpdmUi
LAotICAgICAgICAgICAgICAgICItLW5vLXVwZGF0ZSIsCi0gICAgICAgICAgICAgICAgIi0tYnVp
bGQtc3R5bGU9Ym90aCIsCi0gICAgICAgICAgICAgICAgIi0tcXVpZXQiXSkKLSAgICAgICAgICAg
IHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAg
IGZhaWx1cmVfbG9nID0gc2VsZi5fbG9nX2Zyb21fc2NyaXB0X2Vycm9yX2Zvcl91cGxvYWQoZSkK
LSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIlVuYWJsZSB0byBidWlsZCBhbmQgdGVz
dCB3aXRob3V0IHBhdGNoIiwgcmVzdWx0c19maWxlPWZhaWx1cmVfbG9nKQotICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0KICAgICBkZWYgc2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0oc2Vs
ZiwgcGF0Y2gpOgogICAgICAgICBwYXRjaF90ZXh0ID0gInJvbGxvdXQgcGF0Y2giIGlmIHBhdGNo
LmlzX3JvbGxvdXQoKSBlbHNlICJwYXRjaCIKICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygi
TGFuZGluZyAlcyIgJSBwYXRjaF90ZXh0LCBwYXRjaCkKICAgICAgICAgcmV0dXJuIFRydWUKIAot
ICAgIGRlZiBfYnVpbGRfYW5kX3Rlc3RfcGF0Y2goc2VsZiwgcGF0Y2gsIGZpcnN0X3J1bj1GYWxz
ZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFyZ3MgPSBbCi0gICAgICAgICAgICAgICAg
ImJ1aWxkLWFuZC10ZXN0LWF0dGFjaG1lbnQiLAotICAgICAgICAgICAgICAgICItLWZvcmNlLWNs
ZWFuIiwKLSAgICAgICAgICAgICAgICAiLS1idWlsZCIsCi0gICAgICAgICAgICAgICAgIi0tbm9u
LWludGVyYWN0aXZlIiwKLSAgICAgICAgICAgICAgICAiLS1idWlsZC1zdHlsZT1ib3RoIiwKLSAg
ICAgICAgICAgICAgICAiLS1xdWlldCIsCi0gICAgICAgICAgICAgICAgcGF0Y2guaWQoKQotICAg
ICAgICAgICAgXQotICAgICAgICAgICAgIyBXZSBkb24ndCBib3RoZXIgdG8gcnVuIHRlc3RzIGZv
ciByb2xsb3V0cyBhcyB0aGF0IG1ha2VzIHRoZW0gdG9vIHNsb3cuCi0gICAgICAgICAgICBpZiBu
b3QgcGF0Y2guaXNfcm9sbG91dCgpOgotICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXRl
c3QiKQotICAgICAgICAgICAgaWYgbm90IGZpcnN0X3J1bjoKLSAgICAgICAgICAgICAgICAjIFRo
ZSBmaXJzdCB0aW1lIHRocm91Z2gsIHdlIGRvbid0IHJlamVjdCB0aGUgcGF0Y2ggZnJvbSB0aGUK
LSAgICAgICAgICAgICAgICAjIGNvbW1pdCBxdWV1ZSBiZWNhdXNlIHdlIHdhbnQgdG8gbWFrZSBz
dXJlIHdlIGNhbiBidWlsZCBhbmQKLSAgICAgICAgICAgICAgICAjIHRlc3Qgb3Vyc2VsdmVzLiBI
b3dldmVyLCB0aGUgc2Vjb25kIHRpbWUgdGhyb3VnaCwgd2UKLSAgICAgICAgICAgICAgICAjIHJl
Z2lzdGVyIG91cnNlbHZlcyBhcyB0aGUgcGFyZW50LWNvbW1hbmQgc28gd2UgY2FuIHJlamVjdAot
ICAgICAgICAgICAgICAgICMgdGhlIHBhdGNoIG9uIGZhaWx1cmUuCi0gICAgICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlIikKLSAgICAgICAgICAg
ICAgICAjIFRoZSBzZWNvbmQgdGltZSB0aHJvdWdoLCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gdXBk
YXRlIHNvIHdlCi0gICAgICAgICAgICAgICAgIyBrbm93IHdlJ3JlIHRlc3RpbmcgdGhlIHNhbWUg
cmV2aXNpb24gdGhhdCB3ZSBzdWNjZXNzZnVsbHkKLSAgICAgICAgICAgICAgICAjIGJ1aWx0IGFu
ZCB0ZXN0ZWQuCi0gICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tbm8tdXBkYXRlIikKLSAg
ICAgICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChhcmdzKQotICAgICAgICAgICAgcmV0dXJu
IFRydWUKLSAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgotICAgICAgICAgICAgZmFpbHVy
ZV9sb2cgPSBzZWxmLl9sb2dfZnJvbV9zY3JpcHRfZXJyb3JfZm9yX3VwbG9hZChlKQotICAgICAg
ICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiVW5hYmxlIHRvIGJ1aWxkIGFuZCB0ZXN0IHBhdGNo
IiwgcGF0Y2g9cGF0Y2gsIHJlc3VsdHNfZmlsZT1mYWlsdXJlX2xvZykKLSAgICAgICAgICAgIGlm
IGZpcnN0X3J1bjoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIHNl
bGYuX2RpZF9mYWlsKHBhdGNoKQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBfcmV2YWxp
ZGF0ZV9wYXRjaChzZWxmLCBwYXRjaCk6Ci0gICAgICAgICMgQnVncyBtaWdodCBnZXQgY2xvc2Vk
LCBvciBwYXRjaGVzIG1pZ2h0IGJlIG9ic29sZXRlZCBvciByLSdkIHdoaWxlIHRoZQotICAgICAg
ICAjIGNvbW1pdC1xdWV1ZSBpcyBwcm9jZXNzaW5nLiAgRG8gb25lIGxhc3QgbWludXRlIGNoZWNr
IGJlZm9yZSBsYW5kaW5nLgotICAgICAgICBwYXRjaCA9IHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9h
dHRhY2htZW50KHBhdGNoLmlkKCkpCi0gICAgICAgIGlmIHBhdGNoLmlzX29ic29sZXRlKCk6Ci0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBwYXRjaC5idWcoKS5pc19jbG9zZWQo
KToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIG5vdCBwYXRjaC5jb21taXR0
ZXIoKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgUmV2aWV3ZXIgaXMgbm90
IHJlcXVpcmVkLiAgTWlzaXNuZyByZXZpZXdlcnMgd2lsbCBiZSBjYXVnaHQgZHVyaW5nIHRoZSBD
aGFuZ2VMb2cgY2hlY2sgZHVyaW5nIGxhbmRpbmcuCi0gICAgICAgIHJldHVybiBwYXRjaAotCi0g
ICAgZGVmIF9sYW5kKHNlbGYsIHBhdGNoKToKKyAgICBkZWYgcHJvY2Vzc193b3JrX2l0ZW0oc2Vs
ZiwgcGF0Y2gpOgorICAgICAgICBzZWxmLl9jY193YXRjaGVycyhwYXRjaC5idWdfaWQoKSkKKyAg
ICAgICAgdGFzayA9IENvbW1pdFF1ZXVlVGFzayhzZWxmLl90b29sLCBzZWxmLCBwYXRjaCkKICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgYXJncyA9IFsKLSAgICAgICAgICAgICAgICAibGFuZC1h
dHRhY2htZW50IiwKLSAgICAgICAgICAgICAgICAiLS1mb3JjZS1jbGVhbiIsCi0gICAgICAgICAg
ICAgICAgIi0tbm9uLWludGVyYWN0aXZlIiwKLSAgICAgICAgICAgICAgICAiLS1pZ25vcmUtYnVp
bGRlcnMiLAotICAgICAgICAgICAgICAgICItLXF1aWV0IiwKLSAgICAgICAgICAgICAgICAiLS1w
YXJlbnQtY29tbWFuZD1jb21taXQtcXVldWUiLAotICAgICAgICAgICAgICAgIHBhdGNoLmlkKCks
Ci0gICAgICAgICAgICBdCi0gICAgICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2goYXJncykK
LSAgICAgICAgICAgIHNlbGYuX2RpZF9wYXNzKHBhdGNoKQorICAgICAgICAgICAgaWYgdGFzay5y
dW4oKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kaWRfcGFzcyhwYXRjaCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZGlkX3JldHJ5KHBhdGNoKQogICAg
ICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6Ci0gICAgICAgICAgICBmYWlsdXJlX2xvZyA9IHNl
bGYuX2xvZ19mcm9tX3NjcmlwdF9lcnJvcl9mb3JfdXBsb2FkKGUpCi0gICAgICAgICAgICBzZWxm
Ll91cGRhdGVfc3RhdHVzKCJVbmFibGUgdG8gbGFuZCBwYXRjaCIsIHBhdGNoPXBhdGNoLCByZXN1
bHRzX2ZpbGU9ZmFpbHVyZV9sb2cpCisgICAgICAgICAgICB2YWxpZGF0b3IgPSBDb21taXR0ZXJW
YWxpZGF0b3Ioc2VsZi5fdG9vbC5idWdzKQorICAgICAgICAgICAgdmFsaWRhdG9yLnJlamVjdF9w
YXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaC5pZCgpLCBzZWxmLl9lcnJvcl9tZXNzYWdlX2Zv
cl9idWcodGFzay5mYWlsdXJlX3N0YXR1c19pZCwgZSkpCiAgICAgICAgICAgICBzZWxmLl9kaWRf
ZmFpbChwYXRjaCkKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgcHJvY2Vzc193b3JrX2l0
ZW0oc2VsZiwgcGF0Y2gpOgotICAgICAgICBzZWxmLl9jY193YXRjaGVycyhwYXRjaC5idWdfaWQo
KSkKLSAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX2FuZF90ZXN0X3BhdGNoKHBhdGNoLCBmaXJz
dF9ydW49VHJ1ZSk6Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJCdWlsZGluZyBh
bmQgdGVzdGluZyB3aXRob3V0IHRoZSBwYXRjaCBhcyBhIHNhbml0eSBjaGVjayIsIHBhdGNoKQot
ICAgICAgICAgICAgIyBUaGUgcGF0Y2ggZmFpbGVkIHRvIGJ1aWxkIGFuZCB0ZXN0LiBJdCdzIHBv
c3NpYmxlIHRoYXQgdGhlCi0gICAgICAgICAgICAjIHRyZWUgaXMgYnVzdGVkLiBUbyBjaGVjayB0
aGF0IGNhc2UsIHdlIHRyeSB0byBidWlsZCBhbmQgdGVzdAotICAgICAgICAgICAgIyB3aXRob3V0
IHRoZSBwYXRjaC4KLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jYW5fYnVpbGRfYW5kX3Rlc3Rf
d2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAg
ICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiQnVpbGQgYW5kIHRlc3Qgc3VjY2VlZGVkLCB0cnlpbmcg
YWdhaW4gd2l0aCBwYXRjaCIsIHBhdGNoKQotICAgICAgICAgICAgIyBIdW0sIGxvb2tzIGxpa2Ug
dGhlIHBhdGNoIGlzIGFjdHVhbGx5IGJhZC4gT2YgY291cnNlLCB3ZSBjb3VsZAotICAgICAgICAg
ICAgIyBoYXZlIGJlZW4gYml0dGVuIGJ5IGEgZmxha3kgdGVzdCB0aGUgZmlyc3QgdGltZSBhcm91
bmQuICBXZSB0cnkKLSAgICAgICAgICAgICMgdG8gYnVpbGQgYW5kIHRlc3QgYWdhaW4uIElmIGl0
IGZhaWxzIGEgc2Vjb25kIHRpbWUsIHdlJ3JlIHByZXR0eQotICAgICAgICAgICAgIyBzdXJlIGl0
cyBhIGJhZCB0ZXN0IGFuZCByZSBjYW4gcmVqZWN0IGl0IG91dHJpZ2h0LgotICAgICAgICAgICAg
c2VsZi5fYnVpbGRfYW5kX3Rlc3RfcGF0Y2gocGF0Y2gpCi0gICAgICAgICMgRG8gb25lIGxhc3Qg
Y2hlY2sgdG8gY2F0Y2ggYW55IGJ1ZyBjaGFuZ2VzIChjcS0sIGNsb3NlZCwgcmV2aWV3ZXIgY2hh
bmdlZCwgZXRjLikKLSAgICAgICAgIyBUaGlzIGhlbHBzIGNhdGNoIHJhY2VzIGJldHdlZW4gdGhl
IGJvdHMgaWYgbG9ja3MgZXhwaXJlLgotICAgICAgICBwYXRjaCA9IHNlbGYuX3JldmFsaWRhdGVf
cGF0Y2gocGF0Y2gpCi0gICAgICAgIGlmIG5vdCBwYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotICAgICAgICBzZWxmLl9sYW5kKHBhdGNoKQotICAgICAgICByZXR1cm4gVHJ1ZQogCiAg
ICAgZGVmIGhhbmRsZV91bmV4cGVjdGVkX2Vycm9yKHNlbGYsIHBhdGNoLCBtZXNzYWdlKToKICAg
ICAgICAgc2VsZi5jb21taXR0ZXJfdmFsaWRhdG9yLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9x
dWV1ZShwYXRjaC5pZCgpLCBtZXNzYWdlKQogCi0gICAgIyBTdGVwU2VxdWVuY2VFcnJvckhhbmRs
ZXIgbWV0aG9kcwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2Vycm9yX21lc3NhZ2VfZm9y
X2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcik6CisgICAgZGVmIGNvbW1hbmRfZmFp
bGVkKG1lc3NhZ2UsIHNjcmlwdF9lcnJvciwgcGF0Y2gpOgorICAgICAgICBmYWlsdXJlX2xvZyA9
IHNlbGYuX2xvZ19mcm9tX3NjcmlwdF9lcnJvcl9mb3JfdXBsb2FkKHNjcmlwdF9lcnJvcikKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3VwZGF0ZV9zdGF0dXMobWVzc2FnZSwgcGF0Y2g9cGF0Y2gsIHJl
c3VsdHNfZmlsZT1mYWlsdXJlX2xvZykKKworICAgIGRlZiBfZXJyb3JfbWVzc2FnZV9mb3JfYnVn
KHNlbGYsIHN0YXR1c19pZCwgc2NyaXB0X2Vycm9yKToKICAgICAgICAgaWYgbm90IHNjcmlwdF9l
cnJvci5vdXRwdXQ6CiAgICAgICAgICAgICByZXR1cm4gc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0
aF9vdXRwdXQoKQotICAgICAgICByZXN1bHRzX2xpbmsgPSB0b29sLnN0YXR1c19zZXJ2ZXIucmVz
dWx0c191cmxfZm9yX3N0YXR1cyhzdGF0dXNfaWQpCisgICAgICAgIHJlc3VsdHNfbGluayA9IHNl
bGYuX3Rvb2wuc3RhdHVzX3NlcnZlci5yZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19pZCkK
ICAgICAgICAgcmV0dXJuICIlc1xuRnVsbCBvdXRwdXQ6ICVzIiAlIChzY3JpcHRfZXJyb3IubWVz
c2FnZV93aXRoX291dHB1dCgpLCByZXN1bHRzX2xpbmspCiAKLSAgICBAY2xhc3NtZXRob2QKKyAg
ICAjIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciBtZXRob2RzCisKICAgICBkZWYgaGFuZGxlX3Nj
cmlwdF9lcnJvcihjbHMsIHRvb2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpOgotICAgICAgICBzdGF0
dXNfaWQgPSBjbHMuX3VwZGF0ZV9zdGF0dXNfZm9yX3NjcmlwdF9lcnJvcih0b29sLCBzdGF0ZSwg
c2NyaXB0X2Vycm9yKQotICAgICAgICB2YWxpZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0b3IodG9v
bC5idWdzKQotICAgICAgICB2YWxpZGF0b3IucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVl
KHN0YXRlWyJwYXRjaCJdLmlkKCksIGNscy5fZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHRvb2wsIHN0
YXR1c19pZCwgc2NyaXB0X2Vycm9yKSkKKyAgICAgICAgIyBIaXR0aW5nIHRoaXMgZXJyb3IgaGFu
ZGxlciBzaG91bGQgYmUgcHJldHR5IHJhcmUuICBJdCBkb2VzIG9jY3VyLAorICAgICAgICAjIGhv
d2V2ZXIsIHdoZW4gYSBwYXRjaCBubyBsb25nZXIgYXBwbGllcyB0byB0b3Atb2YtdHJlZSBpbiB0
aGUgZmluYWwKKyAgICAgICAgIyBsYW5kIHN0ZXAuCisgICAgICAgIGxvZyhzY3JpcHRfZXJyb3Iu
bWVzc2FnZV93aXRoX291dHB1dCgpKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGhhbmRs
ZV9jaGVja291dF9uZWVkc191cGRhdGUoY2xzLCB0b29sLCBzdGF0ZSwgb3B0aW9ucywgZXJyb3Ip
OgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA2ODAxNikKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxMSArMTk1LDEwIEBAIGNsYXNzIENvbW1pdFF1ZXVl
VGVzdChRdWV1ZXNUZXN0KToKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gewogICAgICAgICAg
ICAgImJlZ2luX3dvcmtfcXVldWUiOiBzZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtfcXVldWVfc3Rk
ZXJyKCJjb21taXQtcXVldWUiLCBNb2NrU0NNLmZha2VfY2hlY2tvdXRfcm9vdCksCiAgICAgICAg
ICAgICAic2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0iOiAiTU9DSzogdXBkYXRlX3N0YXR1
czogY29tbWl0LXF1ZXVlIExhbmRpbmcgcGF0Y2hcbiIsCi0gICAgICAgICAgICAjIEZJWE1FOiBU
aGUgY29tbWl0LXF1ZXVlIHdhcm5zIGFib3V0IGJhZCBjb21taXR0ZXJzIHR3aWNlLiAgVGhpcyBp
cyBkdWUgdG8gdGhlIGZhY3QgdGhhdCB3ZSBhY2Nlc3MgQXR0YWNobWVudC5yZXZpZXdlcigpIHR3
aWNlIGFuZCBpdCBsb2dzIGVhY2ggdGltZS4KICAgICAgICAgICAgICJuZXh0X3dvcmtfaXRlbSI6
ICIiLAogICAgICAgICAgICAgInByb2Nlc3Nfd29ya19pdGVtIjogIk1PQ0s6IHVwZGF0ZV9zdGF0
dXM6IGNvbW1pdC1xdWV1ZSBQYXNzXG4iLAogICAgICAgICAgICAgImhhbmRsZV91bmV4cGVjdGVk
X2Vycm9yIjogIk1PQ0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRh
Y2htZW50ICcxOTcnIHdpdGggY29tbWVudCAnUmVqZWN0aW5nIHBhdGNoIDE5NyBmcm9tIGNvbW1p
dC1xdWV1ZS4nIGFuZCBhZGRpdGlvbmFsIGNvbW1lbnQgJ01vY2sgZXJyb3IgbWVzc2FnZSdcbiIs
Ci0gICAgICAgICAgICAiaGFuZGxlX3NjcmlwdF9lcnJvciI6ICJNT0NLOiB1cGRhdGVfc3RhdHVz
OiBjb21taXQtcXVldWUgU2NyaXB0RXJyb3IgZXJyb3IgbWVzc2FnZVxuTU9DSyBzZXR0aW5nIGZs
YWcgJ2NvbW1pdC1xdWV1ZScgdG8gJy0nIG9uIGF0dGFjaG1lbnQgJzE5Nycgd2l0aCBjb21tZW50
ICdSZWplY3RpbmcgcGF0Y2ggMTk3IGZyb20gY29tbWl0LXF1ZXVlLicgYW5kIGFkZGl0aW9uYWwg
Y29tbWVudCAnU2NyaXB0RXJyb3IgZXJyb3IgbWVzc2FnZSdcbiIsCisgICAgICAgICAgICAiaGFu
ZGxlX3NjcmlwdF9lcnJvciI6ICJTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlXG4iLAogICAgICAg
ICB9CiAgICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291dHB1dHMoQ29tbWl0UXVldWUoKSwgZXhw
ZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKIApAQCAtMjA5LDExICsyMDgsMTUgQEAgY2xh
c3MgQ29tbWl0UXVldWVUZXN0KFF1ZXVlc1Rlc3QpOgogICAgICAgICBleHBlY3RlZF9zdGRlcnIg
PSB7CiAgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVnaW5f
d29ya19xdWV1ZV9zdGRlcnIoImNvbW1pdC1xdWV1ZSIsIE1vY2tTQ00uZmFrZV9jaGVja291dF9y
b290KSwKICAgICAgICAgICAgICJzaG91bGRfcHJvY2VlZF93aXRoX3dvcmtfaXRlbSI6ICJNT0NL
OiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgTGFuZGluZyBwYXRjaFxuIiwKLSAgICAgICAg
ICAgICMgRklYTUU6IFRoZSBjb21taXQtcXVldWUgd2FybnMgYWJvdXQgYmFkIGNvbW1pdHRlcnMg
dHdpY2UuICBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHdlIGFjY2VzcyBBdHRhY2htZW50
LnJldmlld2VyKCkgdHdpY2UgYW5kIGl0IGxvZ3MgZWFjaCB0aW1lLgogICAgICAgICAgICAgIm5l
eHRfd29ya19pdGVtIjogIiIsCi0gICAgICAgICAgICAicHJvY2Vzc193b3JrX2l0ZW0iOiAiTU9D
SyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnZWNobycsICctLXN0YXR1cy1ob3N0PWV4YW1wbGUu
Y29tJywgJ2J1aWxkLWFuZC10ZXN0LWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLWJ1
aWxkJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCcsICctLXF1aWV0
JywgMTk3LCAnLS10ZXN0J11cbk1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ2VjaG8nLCAn
LS1zdGF0dXMtaG9zdD1leGFtcGxlLmNvbScsICdsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1j
bGVhbicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLWlnbm9yZS1idWlsZGVycycsICctLXF1aWV0
JywgJy0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlJywgMTk3XVxuTU9DSzogdXBkYXRlX3N0
YXR1czogY29tbWl0LXF1ZXVlIFBhc3NcbiIsCisgICAgICAgICAgICAicHJvY2Vzc193b3JrX2l0
ZW0iOiAiIiJNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydlY2hvJywgJy0tc3RhdHVzLWhv
c3Q9ZXhhbXBsZS5jb20nLCAnYXBwbHktYXR0YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0t
bm9uLWludGVyYWN0aXZlJywgJy0tcXVpZXQnLCAxOTddCitNT0NLIHJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbDogWydlY2hvJywgJy0tc3RhdHVzLWhvc3Q9ZXhhbXBsZS5jb20nLCAnYnVpbGQnLCAnLS1u
by1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1aWxkJywgJy0tYnVpbGQtc3R5bGU9Ym90aCcs
ICctLXF1aWV0J10KK01PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ2VjaG8nLCAnLS1zdGF0
dXMtaG9zdD1leGFtcGxlLmNvbScsICdidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0t
bm8tdXBkYXRlJywgJy0tdGVzdCcsICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KK01P
Q0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ2VjaG8nLCAnLS1zdGF0dXMtaG9zdD1leGFtcGxl
LmNvbScsICdsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLWlnbm9yZS1idWls
ZGVycycsICctLXF1aWV0JywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcGFyZW50LWNvbW1hbmQ9
Y29tbWl0LXF1ZXVlJywgMTk3XQorTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBh
c3MKKyIiIiwKICAgICAgICAgICAgICJoYW5kbGVfdW5leHBlY3RlZF9lcnJvciI6ICJNT0NLIHNl
dHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVudCAnMTk3JyB3aXRo
IGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAxOTcgZnJvbSBjb21taXQtcXVldWUuJyBhbmQgYWRk
aXRpb25hbCBjb21tZW50ICdNb2NrIGVycm9yIG1lc3NhZ2UnXG4iLAotICAgICAgICAgICAgImhh
bmRsZV9zY3JpcHRfZXJyb3IiOiAiTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFNj
cmlwdEVycm9yIGVycm9yIG1lc3NhZ2Vcbk1PQ0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUn
IHRvICctJyBvbiBhdHRhY2htZW50ICcxOTcnIHdpdGggY29tbWVudCAnUmVqZWN0aW5nIHBhdGNo
IDE5NyBmcm9tIGNvbW1pdC1xdWV1ZS4nIGFuZCBhZGRpdGlvbmFsIGNvbW1lbnQgJ1NjcmlwdEVy
cm9yIGVycm9yIG1lc3NhZ2UnXG4iLAorICAgICAgICAgICAgImhhbmRsZV9zY3JpcHRfZXJyb3Ii
OiAiU2NyaXB0RXJyb3IgZXJyb3IgbWVzc2FnZVxuIiwKICAgICAgICAgfQogICAgICAgICBzZWxm
LmFzc2VydF9xdWV1ZV9vdXRwdXRzKENvbW1pdFF1ZXVlKCksIHRvb2w9dG9vbCwgZXhwZWN0ZWRf
c3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKIApAQCAtMjI0LDIzICsyMjcsMTggQEAgY2xhc3MgQ29t
bWl0UXVldWVUZXN0KFF1ZXVlc1Rlc3QpOgogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSB7CiAg
ICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19x
dWV1ZV9zdGRlcnIoImNvbW1pdC1xdWV1ZSIsIE1vY2tTQ00uZmFrZV9jaGVja291dF9yb290KSwK
ICAgICAgICAgICAgICJzaG91bGRfcHJvY2VlZF93aXRoX3dvcmtfaXRlbSI6ICJNT0NLOiB1cGRh
dGVfc3RhdHVzOiBjb21taXQtcXVldWUgTGFuZGluZyByb2xsb3V0IHBhdGNoXG4iLAotICAgICAg
ICAgICAgIyBGSVhNRTogVGhlIGNvbW1pdC1xdWV1ZSB3YXJucyBhYm91dCBiYWQgY29tbWl0dGVy
cyB0d2ljZS4gIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgd2UgYWNjZXNzIEF0dGFjaG1l
bnQucmV2aWV3ZXIoKSB0d2ljZSBhbmQgaXQgbG9ncyBlYWNoIHRpbWUuCiAgICAgICAgICAgICAi
bmV4dF93b3JrX2l0ZW0iOiAiIiwKLSAgICAgICAgICAgICJwcm9jZXNzX3dvcmtfaXRlbSI6ICJN
T0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydlY2hvJywgJy0tc3RhdHVzLWhvc3Q9ZXhhbXBs
ZS5jb20nLCAnYnVpbGQtYW5kLXRlc3QtYXR0YWNobWVudCcsICctLWZvcmNlLWNsZWFuJywgJy0t
YnVpbGQnLCAnLS1ub24taW50ZXJhY3RpdmUnLCAnLS1idWlsZC1zdHlsZT1ib3RoJywgJy0tcXVp
ZXQnLCAxOTddXG5NT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydlY2hvJywgJy0tc3RhdHVz
LWhvc3Q9ZXhhbXBsZS5jb20nLCAnbGFuZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xlYW4nLCAn
LS1ub24taW50ZXJhY3RpdmUnLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAnLS1xdWlldCcsICctLXBh
cmVudC1jb21tYW5kPWNvbW1pdC1xdWV1ZScsIDE5N11cbk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNv
bW1pdC1xdWV1ZSBQYXNzXG4iLAorICAgICAgICAgICAgInByb2Nlc3Nfd29ya19pdGVtIjogIiIi
TU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnZWNobycsICctLXN0YXR1cy1ob3N0PWV4YW1w
bGUuY29tJywgJ2FwcGx5LWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vbi1pbnRl
cmFjdGl2ZScsICctLXF1aWV0JywgMTk3XQorTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsn
ZWNobycsICctLXN0YXR1cy1ob3N0PWV4YW1wbGUuY29tJywgJ2J1aWxkJywgJy0tbm8tY2xlYW4n
LCAnLS1uby11cGRhdGUnLCAnLS1idWlsZCcsICctLWJ1aWxkLXN0eWxlPWJvdGgnLCAnLS1xdWll
dCddCitNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydlY2hvJywgJy0tc3RhdHVzLWhvc3Q9
ZXhhbXBsZS5jb20nLCAnYnVpbGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0
ZScsICctLXRlc3QnLCAnLS1xdWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCitNT0NLIHJ1bl9h
bmRfdGhyb3dfaWZfZmFpbDogWydlY2hvJywgJy0tc3RhdHVzLWhvc3Q9ZXhhbXBsZS5jb20nLCAn
bGFuZC1hdHRhY2htZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1pZ25vcmUtYnVpbGRlcnMnLCAn
LS1xdWlldCcsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1x
dWV1ZScsIDE5N10KK01PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCisiIiIs
CiAgICAgICAgICAgICAiaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3IiOiAiTU9DSyBzZXR0aW5nIGZs
YWcgJ2NvbW1pdC1xdWV1ZScgdG8gJy0nIG9uIGF0dGFjaG1lbnQgJzE5Nycgd2l0aCBjb21tZW50
ICdSZWplY3RpbmcgcGF0Y2ggMTk3IGZyb20gY29tbWl0LXF1ZXVlLicgYW5kIGFkZGl0aW9uYWwg
Y29tbWVudCAnTW9jayBlcnJvciBtZXNzYWdlJ1xuIiwKLSAgICAgICAgICAgICJoYW5kbGVfc2Ny
aXB0X2Vycm9yIjogIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBTY3JpcHRFcnJv
ciBlcnJvciBtZXNzYWdlXG5NT0NLIHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScg
b24gYXR0YWNobWVudCAnMTk3JyB3aXRoIGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAxOTcgZnJv
bSBjb21taXQtcXVldWUuJyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICdTY3JpcHRFcnJvciBlcnJv
ciBtZXNzYWdlJ1xuIiwKKyAgICAgICAgICAgICJoYW5kbGVfc2NyaXB0X2Vycm9yIjogIlNjcmlw
dEVycm9yIGVycm9yIG1lc3NhZ2VcbiIsCiAgICAgICAgIH0KICAgICAgICAgc2VsZi5hc3NlcnRf
cXVldWVfb3V0cHV0cyhDb21taXRRdWV1ZSgpLCB0b29sPXRvb2wsIHdvcmtfaXRlbT1yb2xsb3V0
X3BhdGNoLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCi0gICAgZGVmIHRlc3Rf
Y2FuX2J1aWxkX2FuZF90ZXN0KHNlbGYpOgotICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKCkK
LSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgdG9vbC5leGVjdXRpdmUgPSBNb2Nr
KCkKLSAgICAgICAgcXVldWUuYmluZF90b190b29sKHRvb2wpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShxdWV1ZS5fY2FuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKSkKLSAgICAgICAg
ZXhwZWN0ZWRfcnVuX2FyZ3MgPSBbImVjaG8iLCAiLS1zdGF0dXMtaG9zdD1leGFtcGxlLmNvbSIs
ICJidWlsZC1hbmQtdGVzdCIsICItLWZvcmNlLWNsZWFuIiwgIi0tYnVpbGQiLCAiLS10ZXN0Iiwg
Ii0tbm9uLWludGVyYWN0aXZlIiwgIi0tbm8tdXBkYXRlIiwgIi0tYnVpbGQtc3R5bGU9Ym90aCIs
ICItLXF1aWV0Il0KLSAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWls
LmFzc2VydF9jYWxsZWRfd2l0aChleHBlY3RlZF9ydW5fYXJncykKLQogICAgIGRlZiB0ZXN0X2F1
dG9fcmV0cnkoc2VsZik6CiAgICAgICAgIHF1ZXVlID0gQ29tbWl0UXVldWUoKQogICAgICAgICBv
cHRpb25zID0gTW9jaygpCg==
</data>
<flag name="review"
          id="58004"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>