<?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>46141</bug_id>
          
          <creation_ts>2010-09-20 17:07:34 -0700</creation_ts>
          <short_desc>Add a feeder queue that polls bugs.webkit.org for the commit-cluster</short_desc>
          <delta_ts>2010-09-20 19:46:16 -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>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281929</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 17:07:34 -0700</bug_when>
    <thetext>Add a feeder queue that polls bugs.webkit.org for the commit-cluster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281932</commentid>
    <comment_count>1</comment_count>
      <attachid>68161</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 17:09:13 -0700</bug_when>
    <thetext>Created attachment 68161
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281949</commentid>
    <comment_count>2</comment_count>
      <attachid>68165</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 17:35:09 -0700</bug_when>
    <thetext>Created attachment 68165
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281997</commentid>
    <comment_count>3</comment_count>
      <attachid>68171</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 18:30:55 -0700</bug_when>
    <thetext>Created attachment 68171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282001</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-20 18:32:09 -0700</bug_when>
    <thetext>Attachment 68171 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/tool/bot/feeders.py:38:  deprecated form of raising exception  [pep8/W602] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282034</commentid>
    <comment_count>5</comment_count>
      <attachid>68171</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 19:25:25 -0700</bug_when>
    <thetext>Comment on attachment 68171
Patch

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

In general looks great!  Please address the nits above.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/feeders.py:35
&gt; +        self.tool = tool

Why not _tool? :)

&gt; WebKitTools/Scripts/webkitpy/tool/bot/feeders.py:55
&gt; +        self.update_work_items([patch.id() for patch in patches])

I might have put this out into a patch_ids local (I know it wasn&apos;t before).  Doesn&apos;t really matter.

&gt; WebKitTools/Scripts/webkitpy/tool/bot/feeders.py:60
&gt; +        all_patches = sum([self.tool.bugs.fetch_bug(bug_id).commit_queued_patches(include_invalid=True) for bug_id in bug_ids], [])

I might have split this out into a helper function to make this line shorter were I to write this again.  (Again, I know this is my fault, just noticing as I re-read the code):

[self._cq_patches_for_bug(bug_id) for bug_id in bug_ids]?  donno.  Again, doesn&apos;t really matter.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:149
&gt; +class FeederQueue(AbstractQueue):

I think you should add a comment above which explains why this makes sense as an AbstractQueue.  It&apos;s not immediately obvious, given that it&apos;s such a strange queue.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:160
&gt; +        self.feeders = [
&gt; +            CommitQueueFeeder(self.tool),
&gt; +        ]

This is nice.  I wonder if it should be a list of classes instead of instances.  I seem to remember having the same debate with myself for Commands.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:163
&gt; +        return &quot;synthetic-work-item&quot;

I would have added a comment here.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:166
&gt; +        return True

Seems this should just be the default.  Silly to make subclasses implement this.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:169
&gt; +        self._update()

_update_checkout() maybe?

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:173
&gt; +        for feeder in self.feeders:
&gt; +            feeder.feed()
&gt; +        time.sleep(self._sleep_duration)
&gt; +        return True

So gorgeous. :)

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues.py:176
&gt; +    def work_item_log_path(self, work_item):
&gt; +        return os.path.join(self._log_directory(), &quot;feeder.log&quot;)

This is a strange case.  We&apos;ll end up loggin the same thing twice.  Maybe this should instead understand returning None and then not opening a work log?

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues_unittest.py:113
&gt; +        queue = FeederQueue()
&gt; +        queue._sleep_duration = 0

This should probably be a FeederQueue subclass since many tests are going to want this same behavior, no?

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues_unittest.py:197
&gt; +            &quot;next_work_item&quot;: &quot;&quot;,

Are these empty ones really required?  I can&apos;t remember.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queuestest.py:104
&gt; +        if isinstance(queue, StepSequenceErrorHandler):

Seems we should add a comment about future refactoring here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282039</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 19:46:16 -0700</bug_when>
    <thetext>Committed r67913: &lt;http://trac.webkit.org/changeset/67913&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68161</attachid>
            <date>2010-09-20 17:09:13 -0700</date>
            <delta_ts>2010-09-20 17:35:05 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-46141-20100920170911.patch</filename>
            <type>text/plain</type>
            <size>6337</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY3ODk1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDktMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBmZWVkZXIgcXVldWUgdGhhdCBwb2xscyBidWdzLndlYmtpdC5vcmcgZm9y
IHRoZSBjb21taXQtY2x1c3RlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYxNDEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXMucHk6CisKIDIwMTAtMDktMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZGluZyBhIGxpbmUgd2hpY2ggZ290IGRyb3Bw
ZWQgYW5kIGlzIHRyaXZpYWxseSBjb3JyZWN0IChhbmQgdGVzdGVkKS4KSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQko
cmV2aXNpb24gNjc4OTEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVldWVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawog
aW1wb3J0IG9zCiAKQEAgLTE0NCwxOCArMTQ1LDY2IEBAIGNsYXNzIEFic3RyYWN0UXVldWUoQ29t
bWFuZCwgUXVldWVFbmdpbmUKICAgICAgICAgcmV0dXJuIHRvb2wuc3RhdHVzX3NlcnZlci51cGRh
dGVfc3RhdHVzKGNscy5uYW1lLCBtZXNzYWdlLCBzdGF0ZVsicGF0Y2giXSwgZmFpbHVyZV9sb2cp
CiAKIAorY2xhc3MgRmVlZGVyUXVldWUoQWJzdHJhY3RRdWV1ZSk6CisgICAgbmFtZSA9ICJmZWVk
ZXItcXVldWUiCisKKyAgICBfc2xlZXBfZHVyYXRpb24gPSAzMCAgIyBzZWNvbmRzCisKKyAgICAj
IEFic3RyYWN0UGF0Y2hRdWV1ZSBtZXRob2RzCisKKyAgICBkZWYgYmVnaW5fd29ya19xdWV1ZShz
ZWxmKToKKyAgICAgICAgQWJzdHJhY3RRdWV1ZS5iZWdpbl93b3JrX3F1ZXVlKHNlbGYpCisgICAg
ICAgIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvciA9IENvbW1pdHRlclZhbGlkYXRvcihzZWxmLnRv
b2wuYnVncykKKworICAgIGRlZiBuZXh0X3dvcmtfaXRlbShzZWxmKToKKyAgICAgICAgcmV0dXJu
ICJzeW50aGV0aWMtd29yay1pdGVtIgorCisgICAgZGVmIHNob3VsZF9wcm9jZWVkX3dpdGhfd29y
a19pdGVtKHNlbGYsIHdvcmtfaXRlbSk6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYg
cHJvY2Vzc193b3JrX2l0ZW0oc2VsZiwgd29ya19pdGVtKToKKyAgICAgICAgc2VsZi5fdXBkYXRl
KCkKKyAgICAgICAgc2VsZi5fZmVlZF9jb21taXRfcXVldWVfd29ya19pdGVtc190b19zZXJ2ZXIo
KQorICAgICAgICB0aW1lLnNsZWVwKHNlbGYuX3NsZWVwX2R1cmF0aW9uKQorICAgICAgICByZXR1
cm4gVHJ1ZQorCisgICAgZGVmIF92YWxpZGF0ZV9wYXRjaGVzX2luX2NvbW1pdF9xdWV1ZShzZWxm
KToKKyAgICAgICAgIyBOb3QgdXNpbmcgQnVnemlsbGFRdWVyaWVzLmZldGNoX3BhdGNoZXNfZnJv
bV9jb21taXRfcXVldWUoKSBzbyB3ZSBjYW4gcmVqZWN0IHBhdGNoZXMgd2l0aCBpbnZhbGlkIGNv
bW1pdHRlcnMvcmV2aWV3ZXJzLgorICAgICAgICBidWdfaWRzID0gc2VsZi50b29sLmJ1Z3MucXVl
cmllcy5mZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlKCkKKyAgICAgICAgYWxsX3BhdGNo
ZXMgPSBzdW0oW3NlbGYudG9vbC5idWdzLmZldGNoX2J1ZyhidWdfaWQpLmNvbW1pdF9xdWV1ZWRf
cGF0Y2hlcyhpbmNsdWRlX2ludmFsaWQ9VHJ1ZSkgZm9yIGJ1Z19pZCBpbiBidWdfaWRzXSwgW10p
CisgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3IucGF0Y2hlc19hZnRlcl9y
ZWplY3RpbmdfaW52YWxpZF9jb21taXRlcnNfYW5kX3Jldmlld2VycyhhbGxfcGF0Y2hlcykKKwor
ICAgIGRlZiBfcGF0Y2hfY21wKHNlbGYsIGEsIGIpOgorICAgICAgICAjIFNvcnQgZmlyc3QgYnkg
aXNfcm9sbG91dCwgdGhlbiBieSBhdHRhY2hfZGF0ZS4KKyAgICAgICAgIyBSZXZlcnNpbmcgdGhl
IG9yZGVyIHNvIHRoYXQgaXNfcm9sbG91dCBpcyBmaXJzdC4KKyAgICAgICAgcm9sbG91dF9jbXAg
PSBjbXAoYi5pc19yb2xsb3V0KCksIGEuaXNfcm9sbG91dCgpKQorICAgICAgICBpZiAocm9sbG91
dF9jbXAgIT0gMCk6CisgICAgICAgICAgICByZXR1cm4gcm9sbG91dF9jbXAKKyAgICAgICAgcmV0
dXJuIGNtcChhLmF0dGFjaF9kYXRlKCksIGIuYXR0YWNoX2RhdGUoKSkKKworICAgIGRlZiBfdXBk
YXRlX3dvcmtfaXRlbXMoc2VsZiwgcXVldWVfbmFtZSwgcGF0Y2hfaWRzKToKKyAgICAgICAgc2Vs
Zi50b29sLnN0YXR1c19zZXJ2ZXIudXBkYXRlX3dvcmtfaXRlbXMocXVldWVfbmFtZSwgcGF0Y2hf
aWRzKQorCisgICAgZGVmIF9mZWVkX2NvbW1pdF9xdWV1ZV93b3JrX2l0ZW1zX3RvX3NlcnZlcihz
ZWxmKToKKyAgICAgICAgIyBHcmFiIHRoZSBzZXQgb2YgcGF0Y2hlcyBmcm9tIGJ1Z3ppbGxhLCBz
b3J0IHRoZW0sIGFuZCB1cGRhdGUgdGhlIHN0YXR1cyBzZXJ2ZXIuCisgICAgICAgICMgRXZlbnR1
YWxseSB0aGlzIHdpbGwgYWxsIGJlIGRvbmUgYnkgYSBzZXBhcmF0ZSBmZWVkZXIgcXVldWUuCisg
ICAgICAgIHBhdGNoZXMgPSBzZWxmLl92YWxpZGF0ZV9wYXRjaGVzX2luX2NvbW1pdF9xdWV1ZSgp
CisgICAgICAgIHBhdGNoZXMgPSBzb3J0ZWQocGF0Y2hlcywgc2VsZi5fcGF0Y2hfY21wKQorICAg
ICAgICBzZWxmLl91cGRhdGVfd29ya19pdGVtcyhDb21taXRRdWV1ZS5uYW1lLCBbcGF0Y2guaWQo
KSBmb3IgcGF0Y2ggaW4gcGF0Y2hlc10pCisKKyAgICBkZWYgX3VwZGF0ZSgpOgorICAgICAgICBz
ZWxmLnJ1bl93ZWJraXRfcGF0Y2goWworICAgICAgICAgICAgInVwZGF0ZSIsCisgICAgICAgICAg
ICAiLS1mb3JjZS1jbGVhbiIsCisgICAgICAgICAgICAiLS1ub24taW50ZXJhY3RpdmUiLAorICAg
ICAgICAgICAgIi0tcXVpZXQiLAorICAgICAgICBdKQorCisKIGNsYXNzIEFic3RyYWN0UGF0Y2hR
dWV1ZShBYnN0cmFjdFF1ZXVlKToKICAgICBkZWYgX3VwZGF0ZV9zdGF0dXMoc2VsZiwgbWVzc2Fn
ZSwgcGF0Y2g9Tm9uZSwgcmVzdWx0c19maWxlPU5vbmUpOgogICAgICAgICBzZWxmLnRvb2wuc3Rh
dHVzX3NlcnZlci51cGRhdGVfc3RhdHVzKHNlbGYubmFtZSwgbWVzc2FnZSwgcGF0Y2gsIHJlc3Vs
dHNfZmlsZSkKIAotICAgICMgTm90ZSwgZXZlbnR1YWxseSB0aGlzIHdpbGwgYmUgZG9uZSBieSBh
IHNlcGFyYXRlICJmZWVkZXIiIHF1ZXVlCi0gICAgIyB3aG9zZSBqb2IgaXQgaXMgdG8gcG9sbCBi
dWd6aWxsYSBhbmQgZmVlZCB3b3JrIGl0ZW1zIGludG8gdGhlCi0gICAgIyBzdGF0dXMgc2VydmVy
IGZvciBvdGhlciBxdWV1ZXMgdG8gbXVuY2ggb24uCi0gICAgZGVmIF91cGRhdGVfd29ya19pdGVt
cyhzZWxmLCBwYXRjaF9pZHMpOgotICAgICAgICBzZWxmLnRvb2wuc3RhdHVzX3NlcnZlci51cGRh
dGVfd29ya19pdGVtcyhzZWxmLm5hbWUsIHBhdGNoX2lkcykKLSAgICAgICAgaWYgcGF0Y2hfaWRz
OgotICAgICAgICAgICAgc2VsZi5sb2dfcHJvZ3Jlc3MocGF0Y2hfaWRzKQotCiAgICAgZGVmIF9m
ZXRjaF9uZXh0X3dvcmtfaXRlbShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudG9vbC5zdGF0
dXNfc2VydmVyLm5leHRfd29ya19pdGVtKHNlbGYubmFtZSkKIApAQCAtMTcyLDE0ICsyMjEsOSBA
QCBjbGFzcyBBYnN0cmFjdFBhdGNoUXVldWUoQWJzdHJhY3RRdWV1ZSk6CiAgICAgZGVmIHdvcmtf
aXRlbV9sb2dfcGF0aChzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
c2VsZi5fbG9nX2RpcmVjdG9yeSgpLCAiJXMubG9nIiAlIHBhdGNoLmJ1Z19pZCgpKQogCi0gICAg
ZGVmIGxvZ19wcm9ncmVzcyhzZWxmLCBwYXRjaF9pZHMpOgotICAgICAgICBsb2coIiVzIGluICVz
IFslc10iICUgKHBsdXJhbGl6ZSgicGF0Y2giLCBsZW4ocGF0Y2hfaWRzKSksIHNlbGYubmFtZSwg
IiwgIi5qb2luKG1hcChzdHIsIHBhdGNoX2lkcykpKSkKLQogCiBjbGFzcyBDb21taXRRdWV1ZShB
YnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAgICAgbmFtZSA9
ICJjb21taXQtcXVldWUiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBBYnN0cmFj
dFBhdGNoUXVldWUuX19pbml0X18oc2VsZikKIAogICAgICMgQWJzdHJhY3RQYXRjaFF1ZXVlIG1l
dGhvZHMKIApAQCAtMTg3LDMwICsyMzEsNyBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBh
dGNoUXVldWUsIFN0CiAgICAgICAgIEFic3RyYWN0UGF0Y2hRdWV1ZS5iZWdpbl93b3JrX3F1ZXVl
KHNlbGYpCiAgICAgICAgIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvciA9IENvbW1pdHRlclZhbGlk
YXRvcihzZWxmLnRvb2wuYnVncykKIAotICAgIGRlZiBfdmFsaWRhdGVfcGF0Y2hlc19pbl9jb21t
aXRfcXVldWUoc2VsZik6Ci0gICAgICAgICMgTm90IHVzaW5nIEJ1Z3ppbGxhUXVlcmllcy5mZXRj
aF9wYXRjaGVzX2Zyb21fY29tbWl0X3F1ZXVlKCkgc28gd2UgY2FuIHJlamVjdCBwYXRjaGVzIHdp
dGggaW52YWxpZCBjb21taXR0ZXJzL3Jldmlld2Vycy4KLSAgICAgICAgYnVnX2lkcyA9IHNlbGYu
dG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZSgpCi0gICAg
ICAgIGFsbF9wYXRjaGVzID0gc3VtKFtzZWxmLnRvb2wuYnVncy5mZXRjaF9idWcoYnVnX2lkKS5j
b21taXRfcXVldWVkX3BhdGNoZXMoaW5jbHVkZV9pbnZhbGlkPVRydWUpIGZvciBidWdfaWQgaW4g
YnVnX2lkc10sIFtdKQotICAgICAgICByZXR1cm4gc2VsZi5jb21taXR0ZXJfdmFsaWRhdG9yLnBh
dGNoZXNfYWZ0ZXJfcmVqZWN0aW5nX2ludmFsaWRfY29tbWl0ZXJzX2FuZF9yZXZpZXdlcnMoYWxs
X3BhdGNoZXMpCi0KLSAgICBkZWYgX3BhdGNoX2NtcChzZWxmLCBhLCBiKToKLSAgICAgICAgIyBT
b3J0IGZpcnN0IGJ5IGlzX3JvbGxvdXQsIHRoZW4gYnkgYXR0YWNoX2RhdGUuCi0gICAgICAgICMg
UmV2ZXJzaW5nIHRoZSBvcmRlciBzbyB0aGF0IGlzX3JvbGxvdXQgaXMgZmlyc3QuCi0gICAgICAg
IHJvbGxvdXRfY21wID0gY21wKGIuaXNfcm9sbG91dCgpLCBhLmlzX3JvbGxvdXQoKSkKLSAgICAg
ICAgaWYgKHJvbGxvdXRfY21wICE9IDApOgotICAgICAgICAgICAgcmV0dXJuIHJvbGxvdXRfY21w
Ci0gICAgICAgIHJldHVybiBjbXAoYS5hdHRhY2hfZGF0ZSgpLCBiLmF0dGFjaF9kYXRlKCkpCi0K
LSAgICBkZWYgX2ZlZWRfd29ya19pdGVtc190b19zZXJ2ZXIoc2VsZik6Ci0gICAgICAgICMgR3Jh
YiB0aGUgc2V0IG9mIHBhdGNoZXMgZnJvbSBidWd6aWxsYSwgc29ydCB0aGVtLCBhbmQgdXBkYXRl
IHRoZSBzdGF0dXMgc2VydmVyLgotICAgICAgICAjIEV2ZW50dWFsbHkgdGhpcyB3aWxsIGFsbCBi
ZSBkb25lIGJ5IGEgc2VwYXJhdGUgZmVlZGVyIHF1ZXVlLgotICAgICAgICBwYXRjaGVzID0gc2Vs
Zi5fdmFsaWRhdGVfcGF0Y2hlc19pbl9jb21taXRfcXVldWUoKQotICAgICAgICBwYXRjaGVzID0g
c29ydGVkKHBhdGNoZXMsIHNlbGYuX3BhdGNoX2NtcCkKLSAgICAgICAgc2VsZi5fdXBkYXRlX3dv
cmtfaXRlbXMoW3BhdGNoLmlkKCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdKQotCiAgICAgZGVmIG5l
eHRfd29ya19pdGVtKHNlbGYpOgotICAgICAgICBzZWxmLl9mZWVkX3dvcmtfaXRlbXNfdG9fc2Vy
dmVyKCkKLSAgICAgICAgIyBUaGUgZ3JhYiB0aGUgbmV4dCBwYXRjaCB0byB3b3JrIG9uIGJhY2sg
ZnJvbSB0aGUgc3RhdHVzIHNlcnZlci4KICAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLl9mZXRjaF9u
ZXh0X3dvcmtfaXRlbSgpCiAgICAgICAgIGlmIG5vdCBwYXRjaF9pZDoKICAgICAgICAgICAgIHJl
dHVybiBOb25lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68165</attachid>
            <date>2010-09-20 17:35:09 -0700</date>
            <delta_ts>2010-09-20 18:30:52 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-46141-20100920173507.patch</filename>
            <type>text/plain</type>
            <size>9218</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY3ODk1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDktMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBmZWVkZXIgcXVldWUgdGhhdCBwb2xscyBidWdzLndlYmtpdC5vcmcgZm9y
IHRoZSBjb21taXQtY2x1c3RlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYxNDEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXMucHk6CisKIDIwMTAtMDktMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZGluZyBhIGxpbmUgd2hpY2ggZ290IGRyb3Bw
ZWQgYW5kIGlzIHRyaXZpYWxseSBjb3JyZWN0IChhbmQgdGVzdGVkKS4KSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmVlZGVycy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZlZWRlcnMucHkJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZlZWRlcnMucHkJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKK2Zyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQ29tbWl0dGVyVmFsaWRhdG9yCisK
KworY2xhc3MgQWJzdHJhY3RGZWVkZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dG9vbCk6CisgICAgICAgIHNlbGYudG9vbCA9IHRvb2wKKworICAgIGRlZiBmZWVkKHRvb2wpOgor
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKKworICAgIGRlZiB1cGRhdGVfd29ya19pdGVtcyhzZWxmLCBpdGVtX2lkcyk6CisgICAg
ICAgIHNlbGYudG9vbC5zdGF0dXNfc2VydmVyLnVwZGF0ZV93b3JrX2l0ZW1zKHNlbGYucXVldWVf
bmFtZSwgaXRlbV9pZHMpCisgICAgICAgIGxvZygiRmVlZGluZyAlcyBpdGVtcyAlcyIgJSAoc2Vs
Zi5xdWV1ZV9uYW1lLCBpdGVtX2lkcykpCisKKworY2xhc3MgQ29tbWl0UXVldWVGZWVkZXIoQWJz
dHJhY3RGZWVkZXIpOgorICAgIHF1ZXVlX25hbWUgPSAiY29tbWl0LXF1ZXVlIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHRvb2wpOgorICAgICAgICBBYnN0cmFjdEZlZWRlci5fX2luaXRfXyh0
b29sKQorICAgICAgICBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0
b3Ioc2VsZi50b29sLmJ1Z3MpCisKKyAgICBkZWYgZmVlZCgpOgorICAgICAgICBwYXRjaGVzID0g
c2VsZi5fdmFsaWRhdGVfcGF0Y2hlcygpCisgICAgICAgIHBhdGNoZXMgPSBzb3J0ZWQocGF0Y2hl
cywgc2VsZi5fcGF0Y2hfY21wKQorICAgICAgICBzZWxmLnVwZGF0ZV93b3JrX2l0ZW1zKFtwYXRj
aC5pZCgpIGZvciBwYXRjaCBpbiBwYXRjaGVzXSkKKworICAgIGRlZiBfdmFsaWRhdGVfcGF0Y2hl
cyhzZWxmKToKKyAgICAgICAgIyBOb3QgdXNpbmcgQnVnemlsbGFRdWVyaWVzLmZldGNoX3BhdGNo
ZXNfZnJvbV9jb21taXRfcXVldWUoKSBzbyB3ZSBjYW4gcmVqZWN0IHBhdGNoZXMgd2l0aCBpbnZh
bGlkIGNvbW1pdHRlcnMvcmV2aWV3ZXJzLgorICAgICAgICBidWdfaWRzID0gc2VsZi50b29sLmJ1
Z3MucXVlcmllcy5mZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlKCkKKyAgICAgICAgYWxs
X3BhdGNoZXMgPSBzdW0oW3NlbGYudG9vbC5idWdzLmZldGNoX2J1ZyhidWdfaWQpLmNvbW1pdF9x
dWV1ZWRfcGF0Y2hlcyhpbmNsdWRlX2ludmFsaWQ9VHJ1ZSkgZm9yIGJ1Z19pZCBpbiBidWdfaWRz
XSwgW10pCisgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3IucGF0Y2hlc19h
ZnRlcl9yZWplY3RpbmdfaW52YWxpZF9jb21taXRlcnNfYW5kX3Jldmlld2VycyhhbGxfcGF0Y2hl
cykKKworICAgIGRlZiBfcGF0Y2hfY21wKHNlbGYsIGEsIGIpOgorICAgICAgICAjIFNvcnQgZmly
c3QgYnkgaXNfcm9sbG91dCwgdGhlbiBieSBhdHRhY2hfZGF0ZS4KKyAgICAgICAgIyBSZXZlcnNp
bmcgdGhlIG9yZGVyIHNvIHRoYXQgaXNfcm9sbG91dCBpcyBmaXJzdC4KKyAgICAgICAgcm9sbG91
dF9jbXAgPSBjbXAoYi5pc19yb2xsb3V0KCksIGEuaXNfcm9sbG91dCgpKQorICAgICAgICBpZiBy
b2xsb3V0X2NtcCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIHJvbGxvdXRfY21wCisgICAgICAg
IHJldHVybiBjbXAoYS5hdHRhY2hfZGF0ZSgpLCBiLmF0dGFjaF9kYXRlKCkpCkluZGV4OiBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMu
cHkJKHJldmlzaW9uIDY3ODkxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3F1ZXVlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJh
Y2sKIGltcG9ydCBvcwogCkBAIC0zOSw2ICs0MCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5l
dC5zdGF0dXNzZXJ2ZXIgaW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRl
ZF9sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMu
c3RlcHNlcXVlbmNlIGltcG9ydCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIKK2Zyb20gd2Via2l0
cHkudG9vbC5ib3QuZmVlZGVycyBpbXBvcnQgQ29tbWl0UXVldWVGZWVkZXIKIGZyb20gd2Via2l0
cHkudG9vbC5ib3QucGF0Y2hjb2xsZWN0aW9uIGltcG9ydCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0
aW9uLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9v
bC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lLCBRdWV1ZUVuZ2luZURlbGVnYXRl
CiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCkBAIC0xNDQsMTgg
KzE0Niw1MCBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQsIFF1ZXVlRW5naW5lCiAgICAg
ICAgIHJldHVybiB0b29sLnN0YXR1c19zZXJ2ZXIudXBkYXRlX3N0YXR1cyhjbHMubmFtZSwgbWVz
c2FnZSwgc3RhdGVbInBhdGNoIl0sIGZhaWx1cmVfbG9nKQogCiAKK2NsYXNzIEZlZWRlclF1ZXVl
KEFic3RyYWN0UXVldWUpOgorICAgIG5hbWUgPSAiZmVlZGVyLXF1ZXVlIgorCisgICAgX3NsZWVw
X2R1cmF0aW9uID0gMzAgICMgc2Vjb25kcworCisgICAgIyBBYnN0cmFjdFBhdGNoUXVldWUgbWV0
aG9kcworCisgICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6CisgICAgICAgIEFic3RyYWN0
UXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQorICAgICAgICBzZWxmLmZlZWRlcnMgPSBbCisg
ICAgICAgICAgICBDb21taXRRdWV1ZUZlZWRlcihzZWxmLnRvb2wpLAorICAgICAgICBdCisKKyAg
ICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZik6CisgICAgICAgIHJldHVybiAic3ludGhldGljLXdv
cmstaXRlbSIKKworICAgIGRlZiBzaG91bGRfcHJvY2VlZF93aXRoX3dvcmtfaXRlbShzZWxmLCB3
b3JrX2l0ZW0pOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHByb2Nlc3Nfd29ya19p
dGVtKHNlbGYsIHdvcmtfaXRlbSk6CisgICAgICAgIHNlbGYuX3VwZGF0ZSgpCisgICAgICAgIGZv
ciBmZWVkZXIgaW4gc2VsZi5mZWVkZXJzOgorICAgICAgICAgICAgZmVkZGVyLmZlZWQoKQorICAg
ICAgICB0aW1lLnNsZWVwKHNlbGYuX3NsZWVwX2R1cmF0aW9uKQorICAgICAgICByZXR1cm4gVHJ1
ZQorCisgICAgZGVmIHdvcmtfaXRlbV9sb2dfcGF0aChzZWxmLCB3b3JrX2l0ZW0pOgorICAgICAg
ICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2xvZ19kaXJlY3RvcnkoKSwgImZlZWRlci5sb2ci
KQorCisgICAgZGVmIGhhbmRsZV91bmV4cGVjdGVkX2Vycm9yKHNlbGYsIHdvcmtfaXRlbSwgbWVz
c2FnZSk6CisgICAgICAgIGxvZyhtZXNzYWdlKQorCisgICAgZGVmIF91cGRhdGUoc2VsZik6Cisg
ICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChbCisgICAgICAgICAgICAidXBkYXRlIiwKKyAg
ICAgICAgICAgICItLWZvcmNlLWNsZWFuIiwKKyAgICAgICAgICAgICItLXF1aWV0IiwKKyAgICAg
ICAgXSkKKworCiBjbGFzcyBBYnN0cmFjdFBhdGNoUXVldWUoQWJzdHJhY3RRdWV1ZSk6CiAgICAg
ZGVmIF91cGRhdGVfc3RhdHVzKHNlbGYsIG1lc3NhZ2UsIHBhdGNoPU5vbmUsIHJlc3VsdHNfZmls
ZT1Ob25lKToKICAgICAgICAgc2VsZi50b29sLnN0YXR1c19zZXJ2ZXIudXBkYXRlX3N0YXR1cyhz
ZWxmLm5hbWUsIG1lc3NhZ2UsIHBhdGNoLCByZXN1bHRzX2ZpbGUpCiAKLSAgICAjIE5vdGUsIGV2
ZW50dWFsbHkgdGhpcyB3aWxsIGJlIGRvbmUgYnkgYSBzZXBhcmF0ZSAiZmVlZGVyIiBxdWV1ZQot
ICAgICMgd2hvc2Ugam9iIGl0IGlzIHRvIHBvbGwgYnVnemlsbGEgYW5kIGZlZWQgd29yayBpdGVt
cyBpbnRvIHRoZQotICAgICMgc3RhdHVzIHNlcnZlciBmb3Igb3RoZXIgcXVldWVzIHRvIG11bmNo
IG9uLgotICAgIGRlZiBfdXBkYXRlX3dvcmtfaXRlbXMoc2VsZiwgcGF0Y2hfaWRzKToKLSAgICAg
ICAgc2VsZi50b29sLnN0YXR1c19zZXJ2ZXIudXBkYXRlX3dvcmtfaXRlbXMoc2VsZi5uYW1lLCBw
YXRjaF9pZHMpCi0gICAgICAgIGlmIHBhdGNoX2lkczoKLSAgICAgICAgICAgIHNlbGYubG9nX3By
b2dyZXNzKHBhdGNoX2lkcykKLQogICAgIGRlZiBfZmV0Y2hfbmV4dF93b3JrX2l0ZW0oc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLnRvb2wuc3RhdHVzX3NlcnZlci5uZXh0X3dvcmtfaXRlbShz
ZWxmLm5hbWUpCiAKQEAgLTE3MiwxNCArMjA2LDkgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVl
KEFic3RyYWN0UXVldWUpOgogICAgIGRlZiB3b3JrX2l0ZW1fbG9nX3BhdGgoc2VsZiwgcGF0Y2gp
OgogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2xvZ19kaXJlY3RvcnkoKSwgIiVz
LmxvZyIgJSBwYXRjaC5idWdfaWQoKSkKIAotICAgIGRlZiBsb2dfcHJvZ3Jlc3Moc2VsZiwgcGF0
Y2hfaWRzKToKLSAgICAgICAgbG9nKCIlcyBpbiAlcyBbJXNdIiAlIChwbHVyYWxpemUoInBhdGNo
IiwgbGVuKHBhdGNoX2lkcykpLCBzZWxmLm5hbWUsICIsICIuam9pbihtYXAoc3RyLCBwYXRjaF9p
ZHMpKSkpCi0KIAogY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdGVwU2Vx
dWVuY2VFcnJvckhhbmRsZXIpOgogICAgIG5hbWUgPSAiY29tbWl0LXF1ZXVlIgotICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKLSAgICAgICAgQWJzdHJhY3RQYXRjaFF1ZXVlLl9faW5pdF9fKHNlbGYp
CiAKICAgICAjIEFic3RyYWN0UGF0Y2hRdWV1ZSBtZXRob2RzCiAKQEAgLTE4NywzMCArMjE2LDcg
QEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdAogICAgICAgICBBYnN0
cmFjdFBhdGNoUXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQogICAgICAgICBzZWxmLmNvbW1p
dHRlcl92YWxpZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0b3Ioc2VsZi50b29sLmJ1Z3MpCiAKLSAg
ICBkZWYgX3ZhbGlkYXRlX3BhdGNoZXNfaW5fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAgICAgICAj
IE5vdCB1c2luZyBCdWd6aWxsYVF1ZXJpZXMuZmV0Y2hfcGF0Y2hlc19mcm9tX2NvbW1pdF9xdWV1
ZSgpIHNvIHdlIGNhbiByZWplY3QgcGF0Y2hlcyB3aXRoIGludmFsaWQgY29tbWl0dGVycy9yZXZp
ZXdlcnMuCi0gICAgICAgIGJ1Z19pZHMgPSBzZWxmLnRvb2wuYnVncy5xdWVyaWVzLmZldGNoX2J1
Z19pZHNfZnJvbV9jb21taXRfcXVldWUoKQotICAgICAgICBhbGxfcGF0Y2hlcyA9IHN1bShbc2Vs
Zi50b29sLmJ1Z3MuZmV0Y2hfYnVnKGJ1Z19pZCkuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKGluY2x1
ZGVfaW52YWxpZD1UcnVlKSBmb3IgYnVnX2lkIGluIGJ1Z19pZHNdLCBbXSkKLSAgICAgICAgcmV0
dXJuIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvci5wYXRjaGVzX2FmdGVyX3JlamVjdGluZ19pbnZh
bGlkX2NvbW1pdGVyc19hbmRfcmV2aWV3ZXJzKGFsbF9wYXRjaGVzKQotCi0gICAgZGVmIF9wYXRj
aF9jbXAoc2VsZiwgYSwgYik6Ci0gICAgICAgICMgU29ydCBmaXJzdCBieSBpc19yb2xsb3V0LCB0
aGVuIGJ5IGF0dGFjaF9kYXRlLgotICAgICAgICAjIFJldmVyc2luZyB0aGUgb3JkZXIgc28gdGhh
dCBpc19yb2xsb3V0IGlzIGZpcnN0LgotICAgICAgICByb2xsb3V0X2NtcCA9IGNtcChiLmlzX3Jv
bGxvdXQoKSwgYS5pc19yb2xsb3V0KCkpCi0gICAgICAgIGlmIChyb2xsb3V0X2NtcCAhPSAwKToK
LSAgICAgICAgICAgIHJldHVybiByb2xsb3V0X2NtcAotICAgICAgICByZXR1cm4gY21wKGEuYXR0
YWNoX2RhdGUoKSwgYi5hdHRhY2hfZGF0ZSgpKQotCi0gICAgZGVmIF9mZWVkX3dvcmtfaXRlbXNf
dG9fc2VydmVyKHNlbGYpOgotICAgICAgICAjIEdyYWIgdGhlIHNldCBvZiBwYXRjaGVzIGZyb20g
YnVnemlsbGEsIHNvcnQgdGhlbSwgYW5kIHVwZGF0ZSB0aGUgc3RhdHVzIHNlcnZlci4KLSAgICAg
ICAgIyBFdmVudHVhbGx5IHRoaXMgd2lsbCBhbGwgYmUgZG9uZSBieSBhIHNlcGFyYXRlIGZlZWRl
ciBxdWV1ZS4KLSAgICAgICAgcGF0Y2hlcyA9IHNlbGYuX3ZhbGlkYXRlX3BhdGNoZXNfaW5fY29t
bWl0X3F1ZXVlKCkKLSAgICAgICAgcGF0Y2hlcyA9IHNvcnRlZChwYXRjaGVzLCBzZWxmLl9wYXRj
aF9jbXApCi0gICAgICAgIHNlbGYuX3VwZGF0ZV93b3JrX2l0ZW1zKFtwYXRjaC5pZCgpIGZvciBw
YXRjaCBpbiBwYXRjaGVzXSkKLQogICAgIGRlZiBuZXh0X3dvcmtfaXRlbShzZWxmKToKLSAgICAg
ICAgc2VsZi5fZmVlZF93b3JrX2l0ZW1zX3RvX3NlcnZlcigpCi0gICAgICAgICMgVGhlIGdyYWIg
dGhlIG5leHQgcGF0Y2ggdG8gd29yayBvbiBiYWNrIGZyb20gdGhlIHN0YXR1cyBzZXJ2ZXIuCiAg
ICAgICAgIHBhdGNoX2lkID0gc2VsZi5fZmV0Y2hfbmV4dF93b3JrX2l0ZW0oKQogICAgICAgICBp
ZiBub3QgcGF0Y2hfaWQ6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68171</attachid>
            <date>2010-09-20 18:30:55 -0700</date>
            <delta_ts>2010-09-20 19:25:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46141-20100920183053.patch</filename>
            <type>text/plain</type>
            <size>27197</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY3OTA0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBmZWVkZXIgcXVldWUgdGhhdCBwb2xscyBidWdzLndlYmtpdC5vcmcgZm9y
IHRoZSBjb21taXQtY2x1c3RlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYxNDEKKworICAgICAgICBUaGUgZmVlZGVyLXF1ZXVlIHBvbGxzIGJ1Z3Mu
d2Via2l0Lm9yZyBldmVyeSAzMCBzZWNvbmRzIGFuZCB1cGRhdGVzIHRoZQorICAgICAgICBsaXN0
IG9mIHdvcmsgaXRlbXMgb24gdGhlIHN0YXR1cyBzZXJ2ZXIuICBUaGUgaW5kaXZpZHVhbCBjb21t
aXQtY2x1c3RlcgorICAgICAgICBub2RlcyB0aGVuIGdyYWIgdGhlIHBhdGNoZXMgZnJvbSB0aGUg
c2VydmVyIGFuZCBwcm9jZXNzIHRoZW0uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2ZlZWRlcnMucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvZmVlZGVyc191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5OgorCiAyMDEwLTA5LTIwICBBbmRyZXcg
V2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCBjaGFuZ2Ug
d2hpY2ggd2FzIGFjY2lkZW50YWxseSBjb21taXR0ZWQgYWxvbmcgd2l0aCBzb21lIGV4cGVjdGF0
aW9uIGNoYW5nZXMuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2ZlZWRlcnMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9mZWVkZXJzLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9mZWVkZXJzLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBA
CisjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0
ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEg
aW1wb3J0IENvbW1pdHRlclZhbGlkYXRvcgorCisKK2NsYXNzIEFic3RyYWN0RmVlZGVyKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wpOgorICAgICAgICBzZWxmLnRvb2wgPSB0
b29sCisKKyAgICBkZWYgZmVlZCh0b29sKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKKyAgICBkZWYgdXBkYXRlX3dvcmtf
aXRlbXMoc2VsZiwgaXRlbV9pZHMpOgorICAgICAgICBzZWxmLnRvb2wuc3RhdHVzX3NlcnZlci51
cGRhdGVfd29ya19pdGVtcyhzZWxmLnF1ZXVlX25hbWUsIGl0ZW1faWRzKQorICAgICAgICBsb2co
IkZlZWRpbmcgJXMgaXRlbXMgJXMiICUgKHNlbGYucXVldWVfbmFtZSwgaXRlbV9pZHMpKQorCisK
K2NsYXNzIENvbW1pdFF1ZXVlRmVlZGVyKEFic3RyYWN0RmVlZGVyKToKKyAgICBxdWV1ZV9uYW1l
ID0gImNvbW1pdC1xdWV1ZSIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sKToKKyAgICAg
ICAgQWJzdHJhY3RGZWVkZXIuX19pbml0X18oc2VsZiwgdG9vbCkKKyAgICAgICAgc2VsZi5jb21t
aXR0ZXJfdmFsaWRhdG9yID0gQ29tbWl0dGVyVmFsaWRhdG9yKHNlbGYudG9vbC5idWdzKQorCisg
ICAgZGVmIGZlZWQoc2VsZik6CisgICAgICAgIHBhdGNoZXMgPSBzZWxmLl92YWxpZGF0ZV9wYXRj
aGVzKCkKKyAgICAgICAgcGF0Y2hlcyA9IHNvcnRlZChwYXRjaGVzLCBzZWxmLl9wYXRjaF9jbXAp
CisgICAgICAgIHNlbGYudXBkYXRlX3dvcmtfaXRlbXMoW3BhdGNoLmlkKCkgZm9yIHBhdGNoIGlu
IHBhdGNoZXNdKQorCisgICAgZGVmIF92YWxpZGF0ZV9wYXRjaGVzKHNlbGYpOgorICAgICAgICAj
IE5vdCB1c2luZyBCdWd6aWxsYVF1ZXJpZXMuZmV0Y2hfcGF0Y2hlc19mcm9tX2NvbW1pdF9xdWV1
ZSgpIHNvIHdlIGNhbiByZWplY3QgcGF0Y2hlcyB3aXRoIGludmFsaWQgY29tbWl0dGVycy9yZXZp
ZXdlcnMuCisgICAgICAgIGJ1Z19pZHMgPSBzZWxmLnRvb2wuYnVncy5xdWVyaWVzLmZldGNoX2J1
Z19pZHNfZnJvbV9jb21taXRfcXVldWUoKQorICAgICAgICBhbGxfcGF0Y2hlcyA9IHN1bShbc2Vs
Zi50b29sLmJ1Z3MuZmV0Y2hfYnVnKGJ1Z19pZCkuY29tbWl0X3F1ZXVlZF9wYXRjaGVzKGluY2x1
ZGVfaW52YWxpZD1UcnVlKSBmb3IgYnVnX2lkIGluIGJ1Z19pZHNdLCBbXSkKKyAgICAgICAgcmV0
dXJuIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvci5wYXRjaGVzX2FmdGVyX3JlamVjdGluZ19pbnZh
bGlkX2NvbW1pdGVyc19hbmRfcmV2aWV3ZXJzKGFsbF9wYXRjaGVzKQorCisgICAgZGVmIF9wYXRj
aF9jbXAoc2VsZiwgYSwgYik6CisgICAgICAgICMgU29ydCBmaXJzdCBieSBpc19yb2xsb3V0LCB0
aGVuIGJ5IGF0dGFjaF9kYXRlLgorICAgICAgICAjIFJldmVyc2luZyB0aGUgb3JkZXIgc28gdGhh
dCBpc19yb2xsb3V0IGlzIGZpcnN0LgorICAgICAgICByb2xsb3V0X2NtcCA9IGNtcChiLmlzX3Jv
bGxvdXQoKSwgYS5pc19yb2xsb3V0KCkpCisgICAgICAgIGlmIHJvbGxvdXRfY21wICE9IDA6Cisg
ICAgICAgICAgICByZXR1cm4gcm9sbG91dF9jbXAKKyAgICAgICAgcmV0dXJuIGNtcChhLmF0dGFj
aF9kYXRlKCksIGIuYXR0YWNoX2RhdGUoKSkKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZmVlZGVyc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZlZWRlcnNfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZlZWRlcnNf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jaworZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5mZWVkZXJzIGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rv
b2wgaW1wb3J0IE1vY2tUb29sCisKKworY2xhc3MgRmVlZGVyc1Rlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2NvbW1pdF9xdWV1ZV9mZWVkZXIoc2VsZik6CisgICAgICAgIGZl
ZWRlciA9IENvbW1pdFF1ZXVlRmVlZGVyKE1vY2tUb29sKCkpCisgICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9IHUiIiJXYXJuaW5nLCBhdHRhY2htZW50IDEyOCBvbiBidWcgNDIgaGFzIGludmFsaWQg
Y29tbWl0dGVyIChub24tY29tbWl0dGVyQGV4YW1wbGUuY29tKQorV2FybmluZywgYXR0YWNobWVu
dCAxMjggb24gYnVnIDQyIGhhcyBpbnZhbGlkIGNvbW1pdHRlciAobm9uLWNvbW1pdHRlckBleGFt
cGxlLmNvbSkKK01PQ0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRh
Y2htZW50ICcxMjgnIHdpdGggY29tbWVudCAnUmVqZWN0aW5nIHBhdGNoIDEyOCBmcm9tIGNvbW1p
dC1xdWV1ZS4nIGFuZCBhZGRpdGlvbmFsIGNvbW1lbnQgJ25vbi1jb21taXR0ZXJAZXhhbXBsZS5j
b20gZG9lcyBub3QgaGF2ZSBjb21taXR0ZXIgcGVybWlzc2lvbnMgYWNjb3JkaW5nIHRvIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVycy5weS4KKworLSBJZiB5b3UgZG8gbm90IGhhdmUg
Y29tbWl0dGVyIHJpZ2h0cyBwbGVhc2UgcmVhZCBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29u
dHJpYnV0aW5nLmh0bWwgZm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdXNlIGJ1Z3ppbGxhIGZs
YWdzLgorCistIElmIHlvdSBoYXZlIGNvbW1pdHRlciByaWdodHMgcGxlYXNlIGNvcnJlY3QgdGhl
IGVycm9yIGluIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21t
aXR0ZXJzLnB5IGJ5IGFkZGluZyB5b3Vyc2VsZiB0byB0aGUgZmlsZSAobm8gcmV2aWV3IG5lZWRl
ZCkuICBUaGUgY29tbWl0LXF1ZXVlIHJlc3RhcnRzIGl0c2VsZiBldmVyeSAyIGhvdXJzLiAgQWZ0
ZXIgcmVzdGFydCB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgY29ycmVjdGx5IHJlc3BlY3QgeW91ciBj
b21taXR0ZXIgcmlnaHRzLicKK01PQ0s6IHVwZGF0ZV93b3JrX2l0ZW1zOiBjb21taXQtcXVldWUg
WzEwNiwgMTk3XQorRmVlZGluZyBjb21taXQtcXVldWUgaXRlbXMgWzEwNiwgMTk3XQorIiIiCisg
ICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBmZWVkZXIuZmVlZCwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiBfbW9ja19hdHRhY2ht
ZW50KHNlbGYsIGlzX3JvbGxvdXQsIGF0dGFjaF9kYXRlKToKKyAgICAgICAgYXR0YWNobWVudCA9
IE1vY2soKQorICAgICAgICBhdHRhY2htZW50LmlzX3JvbGxvdXQgPSBsYW1iZGE6IGlzX3JvbGxv
dXQKKyAgICAgICAgYXR0YWNobWVudC5hdHRhY2hfZGF0ZSA9IGxhbWJkYTogYXR0YWNoX2RhdGUK
KyAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NtcChzZWxm
KToKKyAgICAgICAgbG9uZ19hZ29fZGF0ZSA9IGRhdGV0aW1lKDE5MDAsIDEsIDIxKQorICAgICAg
ICByZWNlbnRfZGF0ZSA9IGRhdGV0aW1lKDIwMTAsIDEsIDIxKQorICAgICAgICBhdHRhY2htZW50
MSA9IHNlbGYuX21vY2tfYXR0YWNobWVudChpc19yb2xsb3V0PUZhbHNlLCBhdHRhY2hfZGF0ZT1y
ZWNlbnRfZGF0ZSkKKyAgICAgICAgYXR0YWNobWVudDIgPSBzZWxmLl9tb2NrX2F0dGFjaG1lbnQo
aXNfcm9sbG91dD1GYWxzZSwgYXR0YWNoX2RhdGU9bG9uZ19hZ29fZGF0ZSkKKyAgICAgICAgYXR0
YWNobWVudDMgPSBzZWxmLl9tb2NrX2F0dGFjaG1lbnQoaXNfcm9sbG91dD1UcnVlLCBhdHRhY2hf
ZGF0ZT1yZWNlbnRfZGF0ZSkKKyAgICAgICAgYXR0YWNobWVudDQgPSBzZWxmLl9tb2NrX2F0dGFj
aG1lbnQoaXNfcm9sbG91dD1UcnVlLCBhdHRhY2hfZGF0ZT1sb25nX2Fnb19kYXRlKQorICAgICAg
ICBhdHRhY2htZW50cyA9IFthdHRhY2htZW50MSwgYXR0YWNobWVudDIsIGF0dGFjaG1lbnQzLCBh
dHRhY2htZW50NF0KKyAgICAgICAgZXhwZWN0ZWRfc29ydCA9IFthdHRhY2htZW50NCwgYXR0YWNo
bWVudDMsIGF0dGFjaG1lbnQyLCBhdHRhY2htZW50MV0KKyAgICAgICAgcXVldWUgPSBDb21taXRR
dWV1ZUZlZWRlcihNb2NrVG9vbCgpKQorICAgICAgICBhdHRhY2htZW50cy5zb3J0KHF1ZXVlLl9w
YXRjaF9jbXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0YWNobWVudHMsIGV4cGVjdGVk
X3NvcnQpCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWV1ZXMucHkJKHJldmlzaW9uIDY3ODkxKQorKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IHRp
bWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBvcwogCkBAIC0zOSw2ICs0MCw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNzZXJ2ZXIgaW0KIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nCiBmcm9tIHdlYmtp
dHB5LnRvb2wuY29tbWFuZHMuc3RlcHNlcXVlbmNlIGltcG9ydCBTdGVwU2VxdWVuY2VFcnJvckhh
bmRsZXIKK2Zyb20gd2Via2l0cHkudG9vbC5ib3QuZmVlZGVycyBpbXBvcnQgQ29tbWl0UXVldWVG
ZWVkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucGF0Y2hjb2xsZWN0aW9uIGltcG9ydCBQZXJz
aXN0ZW50UGF0Y2hDb2xsZWN0aW9uLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVsZWdhdGUK
IGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lLCBR
dWV1ZUVuZ2luZURlbGVnYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1
cmFsaXplCkBAIC0xNDQsMTggKzE0Niw1MCBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQs
IFF1ZXVlRW5naW5lCiAgICAgICAgIHJldHVybiB0b29sLnN0YXR1c19zZXJ2ZXIudXBkYXRlX3N0
YXR1cyhjbHMubmFtZSwgbWVzc2FnZSwgc3RhdGVbInBhdGNoIl0sIGZhaWx1cmVfbG9nKQogCiAK
K2NsYXNzIEZlZWRlclF1ZXVlKEFic3RyYWN0UXVldWUpOgorICAgIG5hbWUgPSAiZmVlZGVyLXF1
ZXVlIgorCisgICAgX3NsZWVwX2R1cmF0aW9uID0gMzAgICMgc2Vjb25kcworCisgICAgIyBBYnN0
cmFjdFBhdGNoUXVldWUgbWV0aG9kcworCisgICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6
CisgICAgICAgIEFic3RyYWN0UXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQorICAgICAgICBz
ZWxmLmZlZWRlcnMgPSBbCisgICAgICAgICAgICBDb21taXRRdWV1ZUZlZWRlcihzZWxmLnRvb2wp
LAorICAgICAgICBdCisKKyAgICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZik6CisgICAgICAgIHJl
dHVybiAic3ludGhldGljLXdvcmstaXRlbSIKKworICAgIGRlZiBzaG91bGRfcHJvY2VlZF93aXRo
X3dvcmtfaXRlbShzZWxmLCB3b3JrX2l0ZW0pOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
ZGVmIHByb2Nlc3Nfd29ya19pdGVtKHNlbGYsIHdvcmtfaXRlbSk6CisgICAgICAgIHNlbGYuX3Vw
ZGF0ZSgpCisgICAgICAgIGZvciBmZWVkZXIgaW4gc2VsZi5mZWVkZXJzOgorICAgICAgICAgICAg
ZmVlZGVyLmZlZWQoKQorICAgICAgICB0aW1lLnNsZWVwKHNlbGYuX3NsZWVwX2R1cmF0aW9uKQor
ICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdvcmtfaXRlbV9sb2dfcGF0aChzZWxmLCB3
b3JrX2l0ZW0pOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2xvZ19kaXJlY3Rv
cnkoKSwgImZlZWRlci5sb2ciKQorCisgICAgZGVmIGhhbmRsZV91bmV4cGVjdGVkX2Vycm9yKHNl
bGYsIHdvcmtfaXRlbSwgbWVzc2FnZSk6CisgICAgICAgIGxvZyhtZXNzYWdlKQorCisgICAgZGVm
IF91cGRhdGUoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChbCisgICAgICAg
ICAgICAidXBkYXRlIiwKKyAgICAgICAgICAgICItLWZvcmNlLWNsZWFuIiwKKyAgICAgICAgICAg
ICItLXF1aWV0IiwKKyAgICAgICAgXSkKKworCiBjbGFzcyBBYnN0cmFjdFBhdGNoUXVldWUoQWJz
dHJhY3RRdWV1ZSk6CiAgICAgZGVmIF91cGRhdGVfc3RhdHVzKHNlbGYsIG1lc3NhZ2UsIHBhdGNo
PU5vbmUsIHJlc3VsdHNfZmlsZT1Ob25lKToKICAgICAgICAgc2VsZi50b29sLnN0YXR1c19zZXJ2
ZXIudXBkYXRlX3N0YXR1cyhzZWxmLm5hbWUsIG1lc3NhZ2UsIHBhdGNoLCByZXN1bHRzX2ZpbGUp
CiAKLSAgICAjIE5vdGUsIGV2ZW50dWFsbHkgdGhpcyB3aWxsIGJlIGRvbmUgYnkgYSBzZXBhcmF0
ZSAiZmVlZGVyIiBxdWV1ZQotICAgICMgd2hvc2Ugam9iIGl0IGlzIHRvIHBvbGwgYnVnemlsbGEg
YW5kIGZlZWQgd29yayBpdGVtcyBpbnRvIHRoZQotICAgICMgc3RhdHVzIHNlcnZlciBmb3Igb3Ro
ZXIgcXVldWVzIHRvIG11bmNoIG9uLgotICAgIGRlZiBfdXBkYXRlX3dvcmtfaXRlbXMoc2VsZiwg
cGF0Y2hfaWRzKToKLSAgICAgICAgc2VsZi50b29sLnN0YXR1c19zZXJ2ZXIudXBkYXRlX3dvcmtf
aXRlbXMoc2VsZi5uYW1lLCBwYXRjaF9pZHMpCi0gICAgICAgIGlmIHBhdGNoX2lkczoKLSAgICAg
ICAgICAgIHNlbGYubG9nX3Byb2dyZXNzKHBhdGNoX2lkcykKLQogICAgIGRlZiBfZmV0Y2hfbmV4
dF93b3JrX2l0ZW0oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRvb2wuc3RhdHVzX3NlcnZl
ci5uZXh0X3dvcmtfaXRlbShzZWxmLm5hbWUpCiAKQEAgLTE3MiwxNCArMjA2LDkgQEAgY2xhc3Mg
QWJzdHJhY3RQYXRjaFF1ZXVlKEFic3RyYWN0UXVldWUpOgogICAgIGRlZiB3b3JrX2l0ZW1fbG9n
X3BhdGgoc2VsZiwgcGF0Y2gpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2xv
Z19kaXJlY3RvcnkoKSwgIiVzLmxvZyIgJSBwYXRjaC5idWdfaWQoKSkKIAotICAgIGRlZiBsb2df
cHJvZ3Jlc3Moc2VsZiwgcGF0Y2hfaWRzKToKLSAgICAgICAgbG9nKCIlcyBpbiAlcyBbJXNdIiAl
IChwbHVyYWxpemUoInBhdGNoIiwgbGVuKHBhdGNoX2lkcykpLCBzZWxmLm5hbWUsICIsICIuam9p
bihtYXAoc3RyLCBwYXRjaF9pZHMpKSkpCi0KIAogY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQ
YXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgogICAgIG5hbWUgPSAiY29tbWl0
LXF1ZXVlIgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgQWJzdHJhY3RQYXRjaFF1
ZXVlLl9faW5pdF9fKHNlbGYpCiAKICAgICAjIEFic3RyYWN0UGF0Y2hRdWV1ZSBtZXRob2RzCiAK
QEAgLTE4NywzMCArMjE2LDcgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVl
LCBTdAogICAgICAgICBBYnN0cmFjdFBhdGNoUXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQog
ICAgICAgICBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0b3Ioc2Vs
Zi50b29sLmJ1Z3MpCiAKLSAgICBkZWYgX3ZhbGlkYXRlX3BhdGNoZXNfaW5fY29tbWl0X3F1ZXVl
KHNlbGYpOgotICAgICAgICAjIE5vdCB1c2luZyBCdWd6aWxsYVF1ZXJpZXMuZmV0Y2hfcGF0Y2hl
c19mcm9tX2NvbW1pdF9xdWV1ZSgpIHNvIHdlIGNhbiByZWplY3QgcGF0Y2hlcyB3aXRoIGludmFs
aWQgY29tbWl0dGVycy9yZXZpZXdlcnMuCi0gICAgICAgIGJ1Z19pZHMgPSBzZWxmLnRvb2wuYnVn
cy5xdWVyaWVzLmZldGNoX2J1Z19pZHNfZnJvbV9jb21taXRfcXVldWUoKQotICAgICAgICBhbGxf
cGF0Y2hlcyA9IHN1bShbc2VsZi50b29sLmJ1Z3MuZmV0Y2hfYnVnKGJ1Z19pZCkuY29tbWl0X3F1
ZXVlZF9wYXRjaGVzKGluY2x1ZGVfaW52YWxpZD1UcnVlKSBmb3IgYnVnX2lkIGluIGJ1Z19pZHNd
LCBbXSkKLSAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0dGVyX3ZhbGlkYXRvci5wYXRjaGVzX2Fm
dGVyX3JlamVjdGluZ19pbnZhbGlkX2NvbW1pdGVyc19hbmRfcmV2aWV3ZXJzKGFsbF9wYXRjaGVz
KQotCi0gICAgZGVmIF9wYXRjaF9jbXAoc2VsZiwgYSwgYik6Ci0gICAgICAgICMgU29ydCBmaXJz
dCBieSBpc19yb2xsb3V0LCB0aGVuIGJ5IGF0dGFjaF9kYXRlLgotICAgICAgICAjIFJldmVyc2lu
ZyB0aGUgb3JkZXIgc28gdGhhdCBpc19yb2xsb3V0IGlzIGZpcnN0LgotICAgICAgICByb2xsb3V0
X2NtcCA9IGNtcChiLmlzX3JvbGxvdXQoKSwgYS5pc19yb2xsb3V0KCkpCi0gICAgICAgIGlmIChy
b2xsb3V0X2NtcCAhPSAwKToKLSAgICAgICAgICAgIHJldHVybiByb2xsb3V0X2NtcAotICAgICAg
ICByZXR1cm4gY21wKGEuYXR0YWNoX2RhdGUoKSwgYi5hdHRhY2hfZGF0ZSgpKQotCi0gICAgZGVm
IF9mZWVkX3dvcmtfaXRlbXNfdG9fc2VydmVyKHNlbGYpOgotICAgICAgICAjIEdyYWIgdGhlIHNl
dCBvZiBwYXRjaGVzIGZyb20gYnVnemlsbGEsIHNvcnQgdGhlbSwgYW5kIHVwZGF0ZSB0aGUgc3Rh
dHVzIHNlcnZlci4KLSAgICAgICAgIyBFdmVudHVhbGx5IHRoaXMgd2lsbCBhbGwgYmUgZG9uZSBi
eSBhIHNlcGFyYXRlIGZlZWRlciBxdWV1ZS4KLSAgICAgICAgcGF0Y2hlcyA9IHNlbGYuX3ZhbGlk
YXRlX3BhdGNoZXNfaW5fY29tbWl0X3F1ZXVlKCkKLSAgICAgICAgcGF0Y2hlcyA9IHNvcnRlZChw
YXRjaGVzLCBzZWxmLl9wYXRjaF9jbXApCi0gICAgICAgIHNlbGYuX3VwZGF0ZV93b3JrX2l0ZW1z
KFtwYXRjaC5pZCgpIGZvciBwYXRjaCBpbiBwYXRjaGVzXSkKLQogICAgIGRlZiBuZXh0X3dvcmtf
aXRlbShzZWxmKToKLSAgICAgICAgc2VsZi5fZmVlZF93b3JrX2l0ZW1zX3RvX3NlcnZlcigpCi0g
ICAgICAgICMgVGhlIGdyYWIgdGhlIG5leHQgcGF0Y2ggdG8gd29yayBvbiBiYWNrIGZyb20gdGhl
IHN0YXR1cyBzZXJ2ZXIuCiAgICAgICAgIHBhdGNoX2lkID0gc2VsZi5fZmV0Y2hfbmV4dF93b3Jr
X2l0ZW0oKQogICAgICAgICBpZiBub3QgcGF0Y2hfaWQ6CiAgICAgICAgICAgICByZXR1cm4gTm9u
ZQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA2Nzg5MSkKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE0ICs1Myw2IEBAIGNsYXNzIE1vY2tSb2xsb3V0UGF0
Y2goTW9ja1BhdGNoKToKIAogCiBjbGFzcyBBYnN0cmFjdFF1ZXVlVGVzdChDb21tYW5kc1Rlc3Qp
OgotICAgIGRlZiBfYXNzZXJ0X2xvZ19wcm9ncmVzc19vdXRwdXQoc2VsZiwgcGF0Y2hfaWRzLCBw
cm9ncmVzc19vdXRwdXQpOgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgVGVzdFF1ZXVlKCkubG9nX3Byb2dyZXNzLCBbcGF0Y2hfaWRzXSwgZXhwZWN0ZWRfc3Rk
ZXJyPXByb2dyZXNzX291dHB1dCkKLQotICAgIGRlZiB0ZXN0X2xvZ19wcm9ncmVzcyhzZWxmKToK
LSAgICAgICAgc2VsZi5fYXNzZXJ0X2xvZ19wcm9ncmVzc19vdXRwdXQoWzEsMiwzXSwgIjMgcGF0
Y2hlcyBpbiB0ZXN0LXF1ZXVlIFsxLCAyLCAzXVxuIikKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2xv
Z19wcm9ncmVzc19vdXRwdXQoWyIxIiwiMiIsIjMiXSwgIjMgcGF0Y2hlcyBpbiB0ZXN0LXF1ZXVl
IFsxLCAyLCAzXVxuIikKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2xvZ19wcm9ncmVzc19vdXRwdXQo
WzFdLCAiMSBwYXRjaCBpbiB0ZXN0LXF1ZXVlIFsxXVxuIikKLQogICAgIGRlZiB0ZXN0X2xvZ19k
aXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RRdWV1ZSgpLl9s
b2dfZGlyZWN0b3J5KCksICJ0ZXN0LXF1ZXVlLWxvZ3MiKQogCkBAIC0xMTUsNiArMTA3LDMxIEBA
IGNsYXNzIEFic3RyYWN0UXVldWVUZXN0KENvbW1hbmRzVGVzdCk6CiAgICAgICAgIHNlbGYuX2Fz
c2VydF9sb2dfbWVzc2FnZShzY3JpcHRfZXJyb3IsIGV4cGVjdGVkX291dHB1dCkKIAogCitjbGFz
cyBGZWVkZXJRdWV1ZVRlc3QoUXVldWVzVGVzdCk6CisgICAgZGVmIHRlc3RfZmVlZGVyX3F1ZXVl
KHNlbGYpOgorICAgICAgICBxdWV1ZSA9IEZlZWRlclF1ZXVlKCkKKyAgICAgICAgcXVldWUuX3Ns
ZWVwX2R1cmF0aW9uID0gMAorICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1U
cnVlKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSB7CisgICAgICAgICAgICAiYmVnaW5fd29y
a19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19xdWV1ZV9zdGRlcnIoImZlZWRlci1x
dWV1ZSIsIE1vY2tTQ00uZmFrZV9jaGVja291dF9yb290KSwKKyAgICAgICAgICAgICJzaG91bGRf
cHJvY2VlZF93aXRoX3dvcmtfaXRlbSI6ICIiLAorICAgICAgICAgICAgIm5leHRfd29ya19pdGVt
IjogIiIsCisgICAgICAgICAgICAicHJvY2Vzc193b3JrX2l0ZW0iOiAiIiJNT0NLIHJ1bl9hbmRf
dGhyb3dfaWZfZmFpbDogWydlY2hvJywgJy0tc3RhdHVzLWhvc3Q9ZXhhbXBsZS5jb20nLCAndXBk
YXRlJywgJy0tZm9yY2UtY2xlYW4nLCAnLS1xdWlldCddCitXYXJuaW5nLCBhdHRhY2htZW50IDEy
OCBvbiBidWcgNDIgaGFzIGludmFsaWQgY29tbWl0dGVyIChub24tY29tbWl0dGVyQGV4YW1wbGUu
Y29tKQorV2FybmluZywgYXR0YWNobWVudCAxMjggb24gYnVnIDQyIGhhcyBpbnZhbGlkIGNvbW1p
dHRlciAobm9uLWNvbW1pdHRlckBleGFtcGxlLmNvbSkKK01PQ0sgc2V0dGluZyBmbGFnICdjb21t
aXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxMjgnIHdpdGggY29tbWVudCAnUmVqZWN0
aW5nIHBhdGNoIDEyOCBmcm9tIGNvbW1pdC1xdWV1ZS4nIGFuZCBhZGRpdGlvbmFsIGNvbW1lbnQg
J25vbi1jb21taXR0ZXJAZXhhbXBsZS5jb20gZG9lcyBub3QgaGF2ZSBjb21taXR0ZXIgcGVybWlz
c2lvbnMgYWNjb3JkaW5nIHRvIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVycy5weS4K
KworLSBJZiB5b3UgZG8gbm90IGhhdmUgY29tbWl0dGVyIHJpZ2h0cyBwbGVhc2UgcmVhZCBodHRw
Oi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwgZm9yIGluc3RydWN0aW9ucyBv
biBob3cgdG8gdXNlIGJ1Z3ppbGxhIGZsYWdzLgorCistIElmIHlvdSBoYXZlIGNvbW1pdHRlciBy
aWdodHMgcGxlYXNlIGNvcnJlY3QgdGhlIGVycm9yIGluIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5IGJ5IGFkZGluZyB5b3Vyc2VsZiB0byB0
aGUgZmlsZSAobm8gcmV2aWV3IG5lZWRlZCkuICBUaGUgY29tbWl0LXF1ZXVlIHJlc3RhcnRzIGl0
c2VsZiBldmVyeSAyIGhvdXJzLiAgQWZ0ZXIgcmVzdGFydCB0aGUgY29tbWl0LXF1ZXVlIHdpbGwg
Y29ycmVjdGx5IHJlc3BlY3QgeW91ciBjb21taXR0ZXIgcmlnaHRzLicKK01PQ0s6IHVwZGF0ZV93
b3JrX2l0ZW1zOiBjb21taXQtcXVldWUgWzEwNiwgMTk3XQorRmVlZGluZyBjb21taXQtcXVldWUg
aXRlbXMgWzEwNiwgMTk3XQorIiIiLAorICAgICAgICAgICAgImhhbmRsZV91bmV4cGVjdGVkX2Vy
cm9yIjogIk1vY2sgZXJyb3IgbWVzc2FnZVxuIiwKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFz
c2VydF9xdWV1ZV9vdXRwdXRzKHF1ZXVlLCB0b29sPXRvb2wsIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCisKKwogY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlVGVzdChDb21tYW5kc1Rl
c3QpOgogICAgIGRlZiB0ZXN0X2ZldGNoX25leHRfd29ya19pdGVtKHNlbGYpOgogICAgICAgICBx
dWV1ZSA9IEFic3RyYWN0UGF0Y2hRdWV1ZSgpCkBAIC0xNzcsMTIgKzE5NCw3IEBAIGNsYXNzIENv
bW1pdFF1ZXVlVGVzdChRdWV1ZXNUZXN0KToKICAgICAgICAgICAgICJiZWdpbl93b3JrX3F1ZXVl
Ijogc2VsZi5fZGVmYXVsdF9iZWdpbl93b3JrX3F1ZXVlX3N0ZGVycigiY29tbWl0LXF1ZXVlIiwg
TW9ja1NDTS5mYWtlX2NoZWNrb3V0X3Jvb3QpLAogICAgICAgICAgICAgInNob3VsZF9wcm9jZWVk
X3dpdGhfd29ya19pdGVtIjogIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBMYW5k
aW5nIHBhdGNoXG4iLAogICAgICAgICAgICAgIyBGSVhNRTogVGhlIGNvbW1pdC1xdWV1ZSB3YXJu
cyBhYm91dCBiYWQgY29tbWl0dGVycyB0d2ljZS4gIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0IHRo
YXQgd2UgYWNjZXNzIEF0dGFjaG1lbnQucmV2aWV3ZXIoKSB0d2ljZSBhbmQgaXQgbG9ncyBlYWNo
IHRpbWUuCi0gICAgICAgICAgICAibmV4dF93b3JrX2l0ZW0iOiAiIiJXYXJuaW5nLCBhdHRhY2ht
ZW50IDEyOCBvbiBidWcgNDIgaGFzIGludmFsaWQgY29tbWl0dGVyIChub24tY29tbWl0dGVyQGV4
YW1wbGUuY29tKQotV2FybmluZywgYXR0YWNobWVudCAxMjggb24gYnVnIDQyIGhhcyBpbnZhbGlk
IGNvbW1pdHRlciAobm9uLWNvbW1pdHRlckBleGFtcGxlLmNvbSkKLU1PQ0sgc2V0dGluZyBmbGFn
ICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxMjgnIHdpdGggY29tbWVudCAn
UmVqZWN0aW5nIHBhdGNoIDEyOCBmcm9tIGNvbW1pdC1xdWV1ZS4nIGFuZCBhZGRpdGlvbmFsIGNv
bW1lbnQgJ25vbi1jb21taXR0ZXJAZXhhbXBsZS5jb20gZG9lcyBub3QgaGF2ZSBjb21taXR0ZXIg
cGVybWlzc2lvbnMgYWNjb3JkaW5nIHRvIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90
cnVuay9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVy
cy5weS5cblxuLSBJZiB5b3UgZG8gbm90IGhhdmUgY29tbWl0dGVyIHJpZ2h0cyBwbGVhc2UgcmVh
ZCBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwgZm9yIGluc3RydWN0
aW9ucyBvbiBob3cgdG8gdXNlIGJ1Z3ppbGxhIGZsYWdzLlxuXG4tIElmIHlvdSBoYXZlIGNvbW1p
dHRlciByaWdodHMgcGxlYXNlIGNvcnJlY3QgdGhlIGVycm9yIGluIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5IGJ5IGFkZGluZyB5b3Vyc2Vs
ZiB0byB0aGUgZmlsZSAobm8gcmV2aWV3IG5lZWRlZCkuICBUaGUgY29tbWl0LXF1ZXVlIHJlc3Rh
cnRzIGl0c2VsZiBldmVyeSAyIGhvdXJzLiAgQWZ0ZXIgcmVzdGFydCB0aGUgY29tbWl0LXF1ZXVl
IHdpbGwgY29ycmVjdGx5IHJlc3BlY3QgeW91ciBjb21taXR0ZXIgcmlnaHRzLicKLU1PQ0s6IHVw
ZGF0ZV93b3JrX2l0ZW1zOiBjb21taXQtcXVldWUgWzEwNiwgMTk3XQotMiBwYXRjaGVzIGluIGNv
bW1pdC1xdWV1ZSBbMTA2LCAxOTddCi0iIiIsCisgICAgICAgICAgICAibmV4dF93b3JrX2l0ZW0i
OiAiIiwKICAgICAgICAgICAgICJwcm9jZXNzX3dvcmtfaXRlbSI6ICJNT0NLOiB1cGRhdGVfc3Rh
dHVzOiBjb21taXQtcXVldWUgUGFzc1xuIiwKICAgICAgICAgICAgICJoYW5kbGVfdW5leHBlY3Rl
ZF9lcnJvciI6ICJNT0NLIHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0
YWNobWVudCAnMTk3JyB3aXRoIGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAxOTcgZnJvbSBjb21t
aXQtcXVldWUuJyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICdNb2NrIGVycm9yIG1lc3NhZ2UnXG4i
LAogICAgICAgICAgICAgImhhbmRsZV9zY3JpcHRfZXJyb3IiOiAiTU9DSzogdXBkYXRlX3N0YXR1
czogY29tbWl0LXF1ZXVlIFNjcmlwdEVycm9yIGVycm9yIG1lc3NhZ2Vcbk1PQ0sgc2V0dGluZyBm
bGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxOTcnIHdpdGggY29tbWVu
dCAnUmVqZWN0aW5nIHBhdGNoIDE5NyBmcm9tIGNvbW1pdC1xdWV1ZS4nIGFuZCBhZGRpdGlvbmFs
IGNvbW1lbnQgJ1NjcmlwdEVycm9yIGVycm9yIG1lc3NhZ2UnXG4iLApAQCAtMTk2LDE2ICsyMDgs
NyBAQCBNT0NLOiB1cGRhdGVfd29ya19pdGVtczogY29tbWl0LXF1ZXVlIFsxCiAgICAgICAgICAg
ICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19xdWV1ZV9zdGRl
cnIoImNvbW1pdC1xdWV1ZSIsIE1vY2tTQ00uZmFrZV9jaGVja291dF9yb290KSwKICAgICAgICAg
ICAgICJzaG91bGRfcHJvY2VlZF93aXRoX3dvcmtfaXRlbSI6ICJNT0NLOiB1cGRhdGVfc3RhdHVz
OiBjb21taXQtcXVldWUgTGFuZGluZyBwYXRjaFxuIiwKICAgICAgICAgICAgICMgRklYTUU6IFRo
ZSBjb21taXQtcXVldWUgd2FybnMgYWJvdXQgYmFkIGNvbW1pdHRlcnMgdHdpY2UuICBUaGlzIGlz
IGR1ZSB0byB0aGUgZmFjdCB0aGF0IHdlIGFjY2VzcyBBdHRhY2htZW50LnJldmlld2VyKCkgdHdp
Y2UgYW5kIGl0IGxvZ3MgZWFjaCB0aW1lLgotICAgICAgICAgICAgIm5leHRfd29ya19pdGVtIjog
IiIiV2FybmluZywgYXR0YWNobWVudCAxMjggb24gYnVnIDQyIGhhcyBpbnZhbGlkIGNvbW1pdHRl
ciAobm9uLWNvbW1pdHRlckBleGFtcGxlLmNvbSkKLVdhcm5pbmcsIGF0dGFjaG1lbnQgMTI4IG9u
IGJ1ZyA0MiBoYXMgaW52YWxpZCBjb21taXR0ZXIgKG5vbi1jb21taXR0ZXJAZXhhbXBsZS5jb20p
Ci1NT0NLIHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVudCAn
MTI4JyB3aXRoIGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAxMjggZnJvbSBjb21taXQtcXVldWUu
JyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICdub24tY29tbWl0dGVyQGV4YW1wbGUuY29tIGRvZXMg
bm90IGhhdmUgY29tbWl0dGVyIHBlcm1pc3Npb25zIGFjY29yZGluZyB0byBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL2NvbW1pdHRlcnMucHkuCi0KLS0gSWYgeW91IGRvIG5vdCBoYXZlIGNvbW1pdHRl
ciByaWdodHMgcGxlYXNlIHJlYWQgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvbnRyaWJ1dGlu
Zy5odG1sIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVzZSBidWd6aWxsYSBmbGFncy4KLQot
LSBJZiB5b3UgaGF2ZSBjb21taXR0ZXIgcmlnaHRzIHBsZWFzZSBjb3JyZWN0IHRoZSBlcnJvciBp
biBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVycy5w
eSBieSBhZGRpbmcgeW91cnNlbGYgdG8gdGhlIGZpbGUgKG5vIHJldmlldyBuZWVkZWQpLiAgVGhl
IGNvbW1pdC1xdWV1ZSByZXN0YXJ0cyBpdHNlbGYgZXZlcnkgMiBob3Vycy4gIEFmdGVyIHJlc3Rh
cnQgdGhlIGNvbW1pdC1xdWV1ZSB3aWxsIGNvcnJlY3RseSByZXNwZWN0IHlvdXIgY29tbWl0dGVy
IHJpZ2h0cy4nCi1NT0NLOiB1cGRhdGVfd29ya19pdGVtczogY29tbWl0LXF1ZXVlIFsxMDYsIDE5
N10KLTIgcGF0Y2hlcyBpbiBjb21taXQtcXVldWUgWzEwNiwgMTk3XQotIiIiLAorICAgICAgICAg
ICAgIm5leHRfd29ya19pdGVtIjogIiIsCiAgICAgICAgICAgICAicHJvY2Vzc193b3JrX2l0ZW0i
OiAiTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnZWNobycsICctLXN0YXR1cy1ob3N0PWV4
YW1wbGUuY29tJywgJ2J1aWxkLWFuZC10ZXN0LWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbics
ICctLWJ1aWxkJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCcsICct
LXF1aWV0JywgMTk3LCAnLS10ZXN0J11cbk1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ2Vj
aG8nLCAnLS1zdGF0dXMtaG9zdD1leGFtcGxlLmNvbScsICdsYW5kLWF0dGFjaG1lbnQnLCAnLS1m
b3JjZS1jbGVhbicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLWlnbm9yZS1idWlsZGVycycsICct
LXF1aWV0JywgJy0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlJywgMTk3XVxuTU9DSzogdXBk
YXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBhc3NcbiIsCiAgICAgICAgICAgICAiaGFuZGxlX3Vu
ZXhwZWN0ZWRfZXJyb3IiOiAiTU9DSyBzZXR0aW5nIGZsYWcgJ2NvbW1pdC1xdWV1ZScgdG8gJy0n
IG9uIGF0dGFjaG1lbnQgJzE5Nycgd2l0aCBjb21tZW50ICdSZWplY3RpbmcgcGF0Y2ggMTk3IGZy
b20gY29tbWl0LXF1ZXVlLicgYW5kIGFkZGl0aW9uYWwgY29tbWVudCAnTW9jayBlcnJvciBtZXNz
YWdlJ1xuIiwKICAgICAgICAgICAgICJoYW5kbGVfc2NyaXB0X2Vycm9yIjogIk1PQ0s6IHVwZGF0
ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlXG5NT0NLIHNl
dHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVudCAnMTk3JyB3aXRo
IGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAxOTcgZnJvbSBjb21taXQtcXVldWUuJyBhbmQgYWRk
aXRpb25hbCBjb21tZW50ICdTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlJ1xuIiwKQEAgLTIyMCwx
NiArMjIzLDcgQEAgTU9DSzogdXBkYXRlX3dvcmtfaXRlbXM6IGNvbW1pdC1xdWV1ZSBbMQogICAg
ICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiOiBzZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtfcXVl
dWVfc3RkZXJyKCJjb21taXQtcXVldWUiLCBNb2NrU0NNLmZha2VfY2hlY2tvdXRfcm9vdCksCiAg
ICAgICAgICAgICAic2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0iOiAiTU9DSzogdXBkYXRl
X3N0YXR1czogY29tbWl0LXF1ZXVlIExhbmRpbmcgcm9sbG91dCBwYXRjaFxuIiwKICAgICAgICAg
ICAgICMgRklYTUU6IFRoZSBjb21taXQtcXVldWUgd2FybnMgYWJvdXQgYmFkIGNvbW1pdHRlcnMg
dHdpY2UuICBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHdlIGFjY2VzcyBBdHRhY2htZW50
LnJldmlld2VyKCkgdHdpY2UgYW5kIGl0IGxvZ3MgZWFjaCB0aW1lLgotICAgICAgICAgICAgIm5l
eHRfd29ya19pdGVtIjogIiIiV2FybmluZywgYXR0YWNobWVudCAxMjggb24gYnVnIDQyIGhhcyBp
bnZhbGlkIGNvbW1pdHRlciAobm9uLWNvbW1pdHRlckBleGFtcGxlLmNvbSkKLVdhcm5pbmcsIGF0
dGFjaG1lbnQgMTI4IG9uIGJ1ZyA0MiBoYXMgaW52YWxpZCBjb21taXR0ZXIgKG5vbi1jb21taXR0
ZXJAZXhhbXBsZS5jb20pCi1NT0NLIHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScg
b24gYXR0YWNobWVudCAnMTI4JyB3aXRoIGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAxMjggZnJv
bSBjb21taXQtcXVldWUuJyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICdub24tY29tbWl0dGVyQGV4
YW1wbGUuY29tIGRvZXMgbm90IGhhdmUgY29tbWl0dGVyIHBlcm1pc3Npb25zIGFjY29yZGluZyB0
byBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkuCi0KLS0gSWYgeW91IGRvIG5v
dCBoYXZlIGNvbW1pdHRlciByaWdodHMgcGxlYXNlIHJlYWQgaHR0cDovL3dlYmtpdC5vcmcvY29k
aW5nL2NvbnRyaWJ1dGluZy5odG1sIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVzZSBidWd6
aWxsYSBmbGFncy4KLQotLSBJZiB5b3UgaGF2ZSBjb21taXR0ZXIgcmlnaHRzIHBsZWFzZSBjb3Jy
ZWN0IHRoZSBlcnJvciBpbiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25m
aWcvY29tbWl0dGVycy5weSBieSBhZGRpbmcgeW91cnNlbGYgdG8gdGhlIGZpbGUgKG5vIHJldmll
dyBuZWVkZWQpLiAgVGhlIGNvbW1pdC1xdWV1ZSByZXN0YXJ0cyBpdHNlbGYgZXZlcnkgMiBob3Vy
cy4gIEFmdGVyIHJlc3RhcnQgdGhlIGNvbW1pdC1xdWV1ZSB3aWxsIGNvcnJlY3RseSByZXNwZWN0
IHlvdXIgY29tbWl0dGVyIHJpZ2h0cy4nCi1NT0NLOiB1cGRhdGVfd29ya19pdGVtczogY29tbWl0
LXF1ZXVlIFsxMDYsIDE5N10KLTIgcGF0Y2hlcyBpbiBjb21taXQtcXVldWUgWzEwNiwgMTk3XQot
IiIiLAorICAgICAgICAgICAgIm5leHRfd29ya19pdGVtIjogIiIsCiAgICAgICAgICAgICAicHJv
Y2Vzc193b3JrX2l0ZW0iOiAiTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnZWNobycsICct
LXN0YXR1cy1ob3N0PWV4YW1wbGUuY29tJywgJ2J1aWxkLWFuZC10ZXN0LWF0dGFjaG1lbnQnLCAn
LS1mb3JjZS1jbGVhbicsICctLWJ1aWxkJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tYnVpbGQt
c3R5bGU9Ym90aCcsICctLXF1aWV0JywgMTk3XVxuTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6
IFsnZWNobycsICctLXN0YXR1cy1ob3N0PWV4YW1wbGUuY29tJywgJ2xhbmQtYXR0YWNobWVudCcs
ICctLWZvcmNlLWNsZWFuJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0taWdub3JlLWJ1aWxkZXJz
JywgJy0tcXVpZXQnLCAnLS1wYXJlbnQtY29tbWFuZD1jb21taXQtcXVldWUnLCAxOTddXG5NT0NL
OiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgUGFzc1xuIiwKICAgICAgICAgICAgICJoYW5k
bGVfdW5leHBlY3RlZF9lcnJvciI6ICJNT0NLIHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0
byAnLScgb24gYXR0YWNobWVudCAnMTk3JyB3aXRoIGNvbW1lbnQgJ1JlamVjdGluZyBwYXRjaCAx
OTcgZnJvbSBjb21taXQtcXVldWUuJyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICdNb2NrIGVycm9y
IG1lc3NhZ2UnXG4iLAogICAgICAgICAgICAgImhhbmRsZV9zY3JpcHRfZXJyb3IiOiAiTU9DSzog
dXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFNjcmlwdEVycm9yIGVycm9yIG1lc3NhZ2Vcbk1P
Q0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxOTcn
IHdpdGggY29tbWVudCAnUmVqZWN0aW5nIHBhdGNoIDE5NyBmcm9tIGNvbW1pdC1xdWV1ZS4nIGFu
ZCBhZGRpdGlvbmFsIGNvbW1lbnQgJ1NjcmlwdEVycm9yIGVycm9yIG1lc3NhZ2UnXG4iLApAQCAt
MjQ1LDI1ICsyMzksNiBAQCBNT0NLOiB1cGRhdGVfd29ya19pdGVtczogY29tbWl0LXF1ZXVlIFsx
CiAgICAgICAgIGV4cGVjdGVkX3J1bl9hcmdzID0gWyJlY2hvIiwgIi0tc3RhdHVzLWhvc3Q9ZXhh
bXBsZS5jb20iLCAiYnVpbGQtYW5kLXRlc3QiLCAiLS1mb3JjZS1jbGVhbiIsICItLWJ1aWxkIiwg
Ii0tdGVzdCIsICItLW5vbi1pbnRlcmFjdGl2ZSIsICItLW5vLXVwZGF0ZSIsICItLWJ1aWxkLXN0
eWxlPWJvdGgiLCAiLS1xdWlldCJdCiAgICAgICAgIHRvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhy
b3dfaWZfZmFpbC5hc3NlcnRfY2FsbGVkX3dpdGgoZXhwZWN0ZWRfcnVuX2FyZ3MpCiAKLSAgICBk
ZWYgX21vY2tfYXR0YWNobWVudChzZWxmLCBpc19yb2xsb3V0LCBhdHRhY2hfZGF0ZSk6Ci0gICAg
ICAgIGF0dGFjaG1lbnQgPSBNb2NrKCkKLSAgICAgICAgYXR0YWNobWVudC5pc19yb2xsb3V0ID0g
bGFtYmRhOiBpc19yb2xsb3V0Ci0gICAgICAgIGF0dGFjaG1lbnQuYXR0YWNoX2RhdGUgPSBsYW1i
ZGE6IGF0dGFjaF9kYXRlCi0gICAgICAgIHJldHVybiBhdHRhY2htZW50Ci0KLSAgICBkZWYgdGVz
dF9wYXRjaF9jbXAoc2VsZik6Ci0gICAgICAgIGxvbmdfYWdvX2RhdGUgPSBkYXRldGltZSgxOTAw
LCAxLCAyMSkKLSAgICAgICAgcmVjZW50X2RhdGUgPSBkYXRldGltZSgyMDEwLCAxLCAyMSkKLSAg
ICAgICAgYXR0YWNobWVudDEgPSBzZWxmLl9tb2NrX2F0dGFjaG1lbnQoaXNfcm9sbG91dD1GYWxz
ZSwgYXR0YWNoX2RhdGU9cmVjZW50X2RhdGUpCi0gICAgICAgIGF0dGFjaG1lbnQyID0gc2VsZi5f
bW9ja19hdHRhY2htZW50KGlzX3JvbGxvdXQ9RmFsc2UsIGF0dGFjaF9kYXRlPWxvbmdfYWdvX2Rh
dGUpCi0gICAgICAgIGF0dGFjaG1lbnQzID0gc2VsZi5fbW9ja19hdHRhY2htZW50KGlzX3JvbGxv
dXQ9VHJ1ZSwgYXR0YWNoX2RhdGU9cmVjZW50X2RhdGUpCi0gICAgICAgIGF0dGFjaG1lbnQ0ID0g
c2VsZi5fbW9ja19hdHRhY2htZW50KGlzX3JvbGxvdXQ9VHJ1ZSwgYXR0YWNoX2RhdGU9bG9uZ19h
Z29fZGF0ZSkKLSAgICAgICAgYXR0YWNobWVudHMgPSBbYXR0YWNobWVudDEsIGF0dGFjaG1lbnQy
LCBhdHRhY2htZW50MywgYXR0YWNobWVudDRdCi0gICAgICAgIGV4cGVjdGVkX3NvcnQgPSBbYXR0
YWNobWVudDQsIGF0dGFjaG1lbnQzLCBhdHRhY2htZW50MiwgYXR0YWNobWVudDFdCi0gICAgICAg
IHF1ZXVlID0gQ29tbWl0UXVldWUoKQotICAgICAgICBhdHRhY2htZW50cy5zb3J0KHF1ZXVlLl9w
YXRjaF9jbXApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0YWNobWVudHMsIGV4cGVjdGVk
X3NvcnQpCi0KICAgICBkZWYgdGVzdF9hdXRvX3JldHJ5KHNlbGYpOgogICAgICAgICBxdWV1ZSA9
IENvbW1pdFF1ZXVlKCkKICAgICAgICAgb3B0aW9ucyA9IE1vY2soKQpJbmRleDogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc3Rlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc3Rl
c3QucHkJKHJldmlzaW9uIDY3ODkxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jaworZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyCiBm
cm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKIApAQCAtMTAwLDQg
KzEwMSw1IEBAIGNsYXNzIFF1ZXVlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBz
ZWxmLmFzc2VydF9vdXRwdXRzKHF1ZXVlLnNob3VsZF9wcm9jZWVkX3dpdGhfd29ya19pdGVtLCAi
c2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0iLCBbd29ya19pdGVtXSwgZXhwZWN0ZWRfc3Rk
b3V0LCBleHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX2V4Y2VwdGlvbnMpCiAgICAgICAgIHNlbGYu
YXNzZXJ0X291dHB1dHMocXVldWUucHJvY2Vzc193b3JrX2l0ZW0sICJwcm9jZXNzX3dvcmtfaXRl
bSIsIFt3b3JrX2l0ZW1dLCBleHBlY3RlZF9zdGRvdXQsIGV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0
ZWRfZXhjZXB0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRfb3V0cHV0cyhxdWV1ZS5oYW5kbGVf
dW5leHBlY3RlZF9lcnJvciwgImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIiwgW3dvcmtfaXRlbSwg
Ik1vY2sgZXJyb3IgbWVzc2FnZSJdLCBleHBlY3RlZF9zdGRvdXQsIGV4cGVjdGVkX3N0ZGVyciwg
ZXhwZWN0ZWRfZXhjZXB0aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRfb3V0cHV0cyhxdWV1ZS5o
YW5kbGVfc2NyaXB0X2Vycm9yLCAiaGFuZGxlX3NjcmlwdF9lcnJvciIsIFt0b29sLCB7InBhdGNo
IjogTW9ja1BhdGNoKCl9LCBTY3JpcHRFcnJvcihtZXNzYWdlPSJTY3JpcHRFcnJvciBlcnJvciBt
ZXNzYWdlIiwgc2NyaXB0X2FyZ3M9Ik1vY2tFcnJvckNvbW1hbmQiKV0sIGV4cGVjdGVkX3N0ZG91
dCwgZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9leGNlcHRpb25zKQorICAgICAgICBpZiBpc2lu
c3RhbmNlKHF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRfb3V0cHV0cyhxdWV1ZS5oYW5kbGVfc2NyaXB0X2Vycm9yLCAiaGFuZGxlX3Njcmlw
dF9lcnJvciIsIFt0b29sLCB7InBhdGNoIjogTW9ja1BhdGNoKCl9LCBTY3JpcHRFcnJvcihtZXNz
YWdlPSJTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlIiwgc2NyaXB0X2FyZ3M9Ik1vY2tFcnJvckNv
bW1hbmQiKV0sIGV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9leGNl
cHRpb25zKQo=
</data>
<flag name="review"
          id="57646"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="57652"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>