<?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>32406</bug_id>
          
          <creation_ts>2009-12-10 22:34:46 -0800</creation_ts>
          <short_desc>[bzt] Convert rollout to StepSequence</short_desc>
          <delta_ts>2009-12-14 21:31:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32464</dependson>
          <blocked>32467</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>170642</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 22:34:46 -0800</bug_when>
    <thetext>and make it work in the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170648</commentid>
    <comment_count>1</comment_count>
      <attachid>44663</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 23:55:01 -0800</bug_when>
    <thetext>Created attachment 44663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170649</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-10 23:55:40 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44663 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170833</commentid>
    <comment_count>3</comment_count>
      <attachid>44663</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-11 10:51:49 -0800</bug_when>
    <thetext>Comment on attachment 44663
Patch

I&apos;m having trouble soaking in this patch.  I think I may either need to see you in person or see this in smaller hunks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170877</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-11 12:49:38 -0800</bug_when>
    <thetext>Basically, instead of caching the patch object on the step, we carry a &quot;state&quot; dictionary along while running the steps.  Various steps can read or write this state dictionary as appropriate.

In this case, Rollout kicks adds the revision number to the state so that the ApplyReverseDiffStep can know what revision to revert.  This system also let&apos;s us carry the commit_text from CommitStep to ClosePatchStep, letting us remove the last piece of custom logic in the LandingSequence.

Finally, instead of making RolloutStep a one-off, I generalized it with MetaStep that lets you aggregate a bunch of smaller steps together into a bigger step.  This is needed because RolloutStep wants to check for --complete-rollout before building or committing.  We could have taught BuildStep and CommitStep about --complete-rollout, but that didn&apos;t seem to be the right layer of abstraction...

We can discuss further if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170938</commentid>
    <comment_count>5</comment_count>
      <attachid>44663</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-11 14:42:02 -0800</bug_when>
    <thetext>Comment on attachment 44663
Patch

Why is {} necessary here?  it seems wrong:
 270         EnsureBuildersAreGreenStep(tool, options).run({})

run should have a default arguemtn of None, and then if passed None should use a {}

It seems that would require step to have a base-class &quot;run&quot; wrapper which knew how to call some _run_internal with the proper args.  not sure.  I also wonder if the various run methods shouldn&apos;t return some dictionary instead, which the wrapping run() call could use to update the existing dictionary.  That makes it easier to test the inputs/outputs of the various run internal functions, no?

I shoudl fix this:
log(&quot;\nNOTE: Rollout support is experimental.\nPlease verify the rollout diff and use \&quot;bugzilla-tool land-diff %s\&quot; to commit the rollout.&quot; % bug_id)
it&apos;s actually better to just re-run rollout with --complete-rollout and --force-clean

I think this whole thing could have been done in smaller pieces, by first moving some of the Rollout stuff into steps, and then dealing with the separate state question.

I think MetaStep is useful.  StepSequence could be written on top of it, or MetaStep could use StepSequence.  Either way they should share code.

I think it makes the most sense for MetaStep to just have a step sequence as an member and use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170969</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-11 15:51:53 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 44663 [details])
&gt; Why is {} necessary here?  it seems wrong:
&gt;  270         EnsureBuildersAreGreenStep(tool, options).run({})
&gt; 
&gt; run should have a default arguemtn of None, and then if passed None should use
&gt; a {}

This is just an artifact of the transition to steps.  I don&apos;t think it&apos;s worth optimizing for calling the steps individually.  None should do that.  The code that checks for None and makes a new dictionary is in StepSequence, who should be the only one running steps.

&gt; It seems that would require step to have a base-class &quot;run&quot; wrapper which knew
&gt; how to call some _run_internal with the proper args.  not sure.

Right, that&apos;s StepSequence.

&gt; I also wonder
&gt; if the various run methods shouldn&apos;t return some dictionary instead, which the
&gt; wrapping run() call could use to update the existing dictionary.  That makes it
&gt; easier to test the inputs/outputs of the various run internal functions, no?

I&apos;m not sure it matters if we return the new state or side-effect the parameter.  How would we merge the two if we used the return formulation?  Adding and overwriting is easy, but how could you delete (i.e., consume) a parameter?

&gt; I shoudl fix this:
&gt; log(&quot;\nNOTE: Rollout support is experimental.\nPlease verify the rollout diff
&gt; and use \&quot;bugzilla-tool land-diff %s\&quot; to commit the rollout.&quot; % bug_id)
&gt; it&apos;s actually better to just re-run rollout with --complete-rollout and
&gt; --force-clean

Sure, but we can do that in a separate patch.  Nothing in this patch affects that.

&gt; I think this whole thing could have been done in smaller pieces, by first
&gt; moving some of the Rollout stuff into steps, and then dealing with the separate
&gt; state question.

The problem is that rollout operates on a revision.  I can change thing to use state and then do Rollout in a separate patch.  That might be easier to review.

&gt; I think MetaStep is useful.  StepSequence could be written on top of it, or
&gt; MetaStep could use StepSequence.  Either way they should share code.

Yes.  I added a FIXME to this effect.  I couldn&apos;t quite figure out the relation between them, but they&apos;re clearly related.

&gt; I think it makes the most sense for MetaStep to just have a step sequence as an
&gt; member and use that.

We can do that, but StepSequence doesn&apos;t expose the AbstractStep API, which MetaStep needs to in order to actually be a step.  It doesn&apos;t need the run_and_handle_errors method, which is really why StepSequence exists...  I&apos;m inclined to do a few more conversions and hope that the right answer reveals itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170971</commentid>
    <comment_count>7</comment_count>
      <attachid>44663</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-11 15:52:24 -0800</bug_when>
    <thetext>Comment on attachment 44663
Patch

I&apos;m going to try again with smaller patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171051</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-11 23:50:30 -0800</bug_when>
    <thetext>Simpler patch in Bug 32464.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171059</commentid>
    <comment_count>9</comment_count>
      <attachid>44729</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-12 00:14:07 -0800</bug_when>
    <thetext>Created attachment 44729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171617</commentid>
    <comment_count>10</comment_count>
      <attachid>44729</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 16:10:29 -0800</bug_when>
    <thetext>Comment on attachment 44729
Patch

test_complete_rollout is clearly wrong.

We should just do:
from modules.buildsteps import *

If we want to restrict what * means, we can define a __ALL__ in buildsteps.py:
&quot;The public names defined by a module are determined by checking the module’s namespace for a variable named __all__; if defined, it must be a sequence of strings which are names defined or imported by that module. The names given in __all__ are all considered public and are required to exist. If __all__ is not defined, the set of public names includes all names found in the module’s namespace which do not begin with an underscore character (&apos;_&apos;). __all__ should contain the entire public API. It is intended to avoid accidentally exporting items that are not part of the API (such as library modules which were imported and used within the module).&quot;
http://docs.python.org/reference/simple_stmts.html#import

This is probably wrong, yes:
 355         self._tool.bugs.reopen_bug(bug_id, state[&quot;commit_text&quot;])

it should be the bug link, whatever that is.  Do we need a step to convert from commit text output to revisions?  Or maybe we have a class to do that already...

This feels like this should be done by some StepSequence member:
 336         collected_options = cls._collect_options_from_steps(cls.substeps)
I remember you were explaining to me at some point why that was not possible?

Otherwise looks OK.  r- for the broken rollout test (which perhaps we should just remove?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171696</commentid>
    <comment_count>11</comment_count>
      <attachid>44841</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-14 21:27:35 -0800</bug_when>
    <thetext>Created attachment 44841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171697</commentid>
    <comment_count>12</comment_count>
      <attachid>44841</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 21:29:06 -0800</bug_when>
    <thetext>Comment on attachment 44841
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171698</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-14 21:31:12 -0800</bug_when>
    <thetext>Committed r52130: &lt;http://trac.webkit.org/changeset/52130&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44663</attachid>
            <date>2009-12-10 23:55:01 -0800</date>
            <delta_ts>2009-12-12 00:14:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32406-20091210235500.patch</filename>
            <type>text/plain</type>
            <size>28278</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjNTUwMDlkLi4yNzg1N2RmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMTIt
MTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBDb252ZXJ0IHJvbGxvdXQgdG8gU3Rl
cFNlcXVlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjQwNgorCisgICAgICAgIENvbnZlcnQgcm9sbG91dCB0byBTdGVwU2VxdWVuY2UuICBUaGlz
IG5lY2Vzc2l0YXRlZCBtYWtpbmcgU3RlcHMgbW9yZQorICAgICAgICBhd2Vzb21lLiAgQWxzbyBh
ZGRlZCBhIHVuaXQgdGVzdCBmb3Igcm9sbG91dC4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxl
cy9idWd6aWxsYS5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weToK
KyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAg
ICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgICogU2NyaXB0
cy9tb2R1bGVzL2xhbmRpbmdzZXF1ZW5jZS5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMv
bW9ja19idWd6aWxsYXRvb2wucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL3N0ZXBzZXF1
ZW5jZS5weToKKwogMjAwOS0xMi0xMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTm8gcmV2aWV3LCBqdXN0IHVwZGF0aW5nIHVuaXQgdGVzdHMgdG8gbWF0Y2ggcmVj
ZW50IGNoZWNraW5zLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1
Z3ppbGxhLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CmluZGV4
IGJlNzg1NDQuLjIxM2JmNzkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9idWd6aWxsYS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEu
cHkKQEAgLTkyLDYgKzkyLDcgQEAgZGVmIGNyZWRlbnRpYWxzX2Zyb21fa2V5Y2hhaW4odXNlcm5h
bWU9Tm9uZSk6CiBkZWYgaXNfbWFjX29zX3goKToKICAgICByZXR1cm4gcGxhdGZvcm0ubWFjX3Zl
cigpWzBdCiAKKyMgRklYTUU6IFRoaXMgaXMgYW4gZXZpbCBzdGF0aWMKIGRlZiBwYXJzZV9idWdf
aWQobWVzc2FnZSk6CiAgICAgbWF0Y2ggPSByZS5zZWFyY2goImh0dHBcOi8vd2Via2l0XC5vcmcv
Yi8oP1A8YnVnX2lkPlxkKykiLCBtZXNzYWdlKQogICAgIGlmIG1hdGNoOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weQppbmRleCA0MjViOTEyLi40MjY5ODVhIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weQpAQCAtMzEsNiArMzEsNyBA
QCBpbXBvcnQgb3MKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKIGZyb20gbW9k
dWxlcy5jb21tZW50cyBpbXBvcnQgYnVnX2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dAorZnJvbSBt
b2R1bGVzLmNoYW5nZWxvZ3MgaW1wb3J0IENoYW5nZUxvZwogZnJvbSBtb2R1bGVzLmxvZ2dpbmcg
aW1wb3J0IGxvZywgZXJyb3IKIGZyb20gbW9kdWxlcy53ZWJraXRwb3J0IGltcG9ydCBXZWJLaXRQ
b3J0CiAKQEAgLTQ3LDEzICs0OCwxMyBAQCBjbGFzcyBDb21tYW5kT3B0aW9ucyhvYmplY3QpOgog
ICAgIHRlc3QgPSBtYWtlX29wdGlvbigiLS1uby10ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9InRlc3QiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IHJ1bm5pbmcg
cnVuLXdlYmtpdC10ZXN0cy4iKQogICAgIGNsb3NlX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW5vLWNs
b3NlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsb3NlX2J1ZyIsIGRlZmF1bHQ9VHJ1
ZSwgaGVscD0iTGVhdmUgYnVnIG9wZW4gYWZ0ZXIgbGFuZGluZy4iKQogICAgIHBvcnQgPSBtYWtl
X29wdGlvbigiLS1wb3J0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBvcnQiLCBkZWZhdWx0PU5v
bmUsIGhlbHA9IlNwZWNpZnkgYSBwb3J0IChlLmcuLCBtYWMsIHF0LCBndGssIC4uLikuIikKKyAg
ICBjb21wbGV0ZV9yb2xsb3V0ID0gbWFrZV9vcHRpb24oIi0tY29tcGxldGUtcm9sbG91dCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImNvbXBsZXRlX3JvbGxvdXQiLCBoZWxwPSJDb21taXQg
dGhlIHJldmVydCBhbmQgcmUtb3BlbiB0aGUgb3JpZ2luYWwgYnVnLiIpCiAKIAogY2xhc3MgQWJz
dHJhY3RTdGVwKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMs
IHBhdGNoPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25zKToKICAg
ICAgICAgc2VsZi5fdG9vbCA9IHRvb2wKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMK
LSAgICAgICAgc2VsZi5fcGF0Y2ggPSBwYXRjaAogICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQog
CiAgICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBxdWlldD1GYWxzZSwgcG9y
dD1XZWJLaXRQb3J0KToKQEAgLTcxLDE4ICs3Miw1NSBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2Jq
ZWN0KToKICAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gW10KIAotICAgIGRl
ZiBydW4oc2VsZiwgdG9vbCk6CisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAK
K2NsYXNzIE1ldGFTdGVwKEFic3RyYWN0U3RlcCk6CisgICAgc3Vic3RlcHMgPSBbXSAjIE92ZXJy
aWRlIGluIHN1YmNsYXNzZXMKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwgb3B0aW9ucyk6
CisgICAgICAgIEFic3RyYWN0U3RlcC5fX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25zKQorICAg
ICAgICBzZWxmLl9zdGVwX2luc3RhbmNlcyA9IFtdCisgICAgICAgIGZvciBzdGVwX2NsYXNzIGlu
IHNlbGYuc3Vic3RlcHM6CisgICAgICAgICAgICBzZWxmLl9zdGVwX2luc3RhbmNlcy5hcHBlbmQo
c3RlcF9jbGFzcyh0b29sLCBvcHRpb25zKSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
X2NvbGxlY3Rfb3B0aW9uc19mcm9tX3N0ZXBzKHN0ZXBzKToKKyAgICAgICAgY29sbGVjdGVkX29w
dGlvbnMgPSBbXQorICAgICAgICBmb3Igc3RlcCBpbiBzdGVwczoKKyAgICAgICAgICAgIGNvbGxl
Y3RlZF9vcHRpb25zID0gY29sbGVjdGVkX29wdGlvbnMgKyBzdGVwLm9wdGlvbnMoKQorICAgICAg
ICByZXR1cm4gY29sbGVjdGVkX29wdGlvbnMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBv
cHRpb25zKGNscyk6CisgICAgICAgIHJldHVybiBjbHMuX2NvbGxlY3Rfb3B0aW9uc19mcm9tX3N0
ZXBzKGNscy5zdWJzdGVwcykKKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgorICAgICAgICBm
b3Igc3RlcCBpbiBzZWxmLl9zdGVwX2luc3RhbmNlczoKKyAgICAgICAgICAgIHN0ZXAucnVuKHN0
YXRlKQorCisKIGNsYXNzIFByZXBhcmVDaGFuZ2Vsb2dTdGVwKEFic3RyYWN0U3RlcCk6Ci0gICAg
ZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5f
cnVuX3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQorCisKK2NsYXNzIFByZXBhcmVDaGFuZ2Vs
b2dGb3JSZXZlcnRTdGVwKEFic3RyYWN0U3RlcCk6CisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6
CisgICAgICAgICMgRmlyc3QsIGRpc2NhcmQgdGhlIENoYW5nZUxvZyBjaGFuZ2VzIGZyb20gdGhl
IHJvbGxvdXQuCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYuX3Rvb2wuc2NtKCkubW9k
aWZpZWRfY2hhbmdlbG9ncygpCisgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkucmV2ZXJ0X2ZpbGVz
KGNoYW5nZWxvZ19wYXRocykKKworICAgICAgICAjIFNlY29uZCwgbWFrZSBuZXcgQ2hhbmdlTG9n
IGVudHJpZXMgZm9yIHRoaXMgcm9sbG91dC4KKyAgICAgICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8g
cHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4KICAgICAgICAg
c2VsZi5fcnVuX3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQorICAgICAgICBmb3IgY2hhbmdl
bG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgorICAgICAgICAgICAgQ2hhbmdlTG9nKGNoYW5n
ZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChzdGF0ZVsicmV2aXNpb24iXSkKIAogCiBjbGFz
cyBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwKEFic3RyYWN0U3RlcCk6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMsIHBhdGNoPU5vbmUsIGFsbG93X2xvY2FsX2NvbW1pdHM9
RmFsc2UpOgotICAgICAgICBBYnN0cmFjdFN0ZXAuX19pbml0X18oc2VsZiwgdG9vbCwgb3B0aW9u
cywgcGF0Y2gpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMsIGFsbG93X2xv
Y2FsX2NvbW1pdHM9RmFsc2UpOgorICAgICAgICBBYnN0cmFjdFN0ZXAuX19pbml0X18oc2VsZiwg
dG9vbCwgb3B0aW9ucykKICAgICAgICAgc2VsZi5fYWxsb3dfbG9jYWxfY29tbWl0cyA9IGFsbG93
X2xvY2FsX2NvbW1pdHMKIAogICAgIEBjbGFzc21ldGhvZApAQCAtOTIsNyArMTMwLDcgQEAgY2xh
c3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcChBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAg
Q29tbWFuZE9wdGlvbnMuY2xlYW4sCiAgICAgICAgIF0KIAotICAgIGRlZiBydW4oc2VsZik6Cisg
ICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2Nt
KCkuY2hlY2tvdXRfcm9vdCkKICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93X2xvY2FsX2NvbW1p
dHM6CiAgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9ub19sb2NhbF9jb21taXRz
KHNlbGYuX29wdGlvbnMuZm9yY2VfY2xlYW4pCkBAIC0xMDgsNyArMTQ2LDcgQEAgY2xhc3MgVXBk
YXRlU3RlcChBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMucG9ydCwK
ICAgICAgICAgXQogCi0gICAgZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRl
KToKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMudXBkYXRlOgogICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgIGxvZygiVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkiKQpAQCAtMTIyLDkg
KzE2MCwxNCBAQCBjbGFzcyBBcHBseVBhdGNoU3RlcChBYnN0cmFjdFN0ZXApOgogICAgICAgICAg
ICAgQ29tbWFuZE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAogICAgICAgICBdCiAKLSAgICBkZWYg
cnVuKHNlbGYpOgotICAgICAgICBsb2coIlByb2Nlc3NpbmcgcGF0Y2ggJXMgZnJvbSBidWcgJXMu
IiAlIChzZWxmLl9wYXRjaFsiaWQiXSwgc2VsZi5fcGF0Y2hbImJ1Z19pZCJdKSkKLSAgICAgICAg
c2VsZi5fdG9vbC5zY20oKS5hcHBseV9wYXRjaChzZWxmLl9wYXRjaCwgZm9yY2U9c2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmUpCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CisgICAgICAg
IGxvZygiUHJvY2Vzc2luZyBwYXRjaCAlcyBmcm9tIGJ1ZyAlcy4iICUgKHN0YXRlWyJwYXRjaCJd
WyJpZCJdLCBzdGF0ZVsicGF0Y2giXVsiYnVnX2lkIl0pKQorICAgICAgICBzZWxmLl90b29sLnNj
bSgpLmFwcGx5X3BhdGNoKHN0YXRlWyJwYXRjaCJdLCBmb3JjZT1zZWxmLl9vcHRpb25zLm5vbl9p
bnRlcmFjdGl2ZSkKKworCitjbGFzcyBSZXZlcnRSZXZpc2lvblN0ZXAoQWJzdHJhY3RTdGVwKToK
KyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5hcHBs
eV9yZXZlcnNlX2RpZmYoc3RhdGVbInJldmlzaW9uIl0pCiAKIAogY2xhc3MgRW5zdXJlQnVpbGRl
cnNBcmVHcmVlblN0ZXAoQWJzdHJhY3RTdGVwKToKQEAgLTEzNCw3ICsxNzcsNyBAQCBjbGFzcyBF
bnN1cmVCdWlsZGVyc0FyZUdyZWVuU3RlcChBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgQ29t
bWFuZE9wdGlvbnMuY2hlY2tfYnVpbGRlcnMsCiAgICAgICAgIF0KIAotICAgIGRlZiBydW4oc2Vs
Zik6CisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRp
b25zLmNoZWNrX2J1aWxkZXJzOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHJlZF9idWls
ZGVyc19uYW1lcyA9IHNlbGYuX3Rvb2wuYnVpbGRib3QucmVkX2NvcmVfYnVpbGRlcnNfbmFtZXMo
KQpAQCAtMTUyLDcgKzE5NSw3IEBAIGNsYXNzIEJ1aWxkU3RlcChBYnN0cmFjdFN0ZXApOgogICAg
ICAgICAgICAgQ29tbWFuZE9wdGlvbnMucXVpZXQsCiAgICAgICAgIF0KIAotICAgIGRlZiBydW4o
c2VsZik6CisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9v
cHRpb25zLmJ1aWxkOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGxvZygiQnVpbGRpbmcg
V2ViS2l0IikKQEAgLTE2MCw3ICsyMDMsNyBAQCBjbGFzcyBCdWlsZFN0ZXAoQWJzdHJhY3RTdGVw
KToKIAogCiBjbGFzcyBDaGVja1N0eWxlU3RlcChBYnN0cmFjdFN0ZXApOgotICAgIGRlZiBydW4o
c2VsZik6CisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX3J1bl9zY3Jp
cHQoImNoZWNrLXdlYmtpdC1zdHlsZSIpCiAKIApAQCAtMTc1LDcgKzIxOCw3IEBAIGNsYXNzIFJ1
blRlc3RzU3RlcChBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMucG9y
dCwKICAgICAgICAgXQogCi0gICAgZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuYnVpbGQ6CiAgICAgICAgICAgICBy
ZXR1cm4KICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMudGVzdDoKQEAgLTE5MCwxNSArMjMz
LDE1IEBAIGNsYXNzIFJ1blRlc3RzU3RlcChBYnN0cmFjdFN0ZXApOgogCiAKIGNsYXNzIENvbW1p
dFN0ZXAoQWJzdHJhY3RTdGVwKToKLSAgICBkZWYgcnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2Vs
Ziwgc3RhdGUpOgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wu
c2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkpCisgICAg
ICAgIHN0YXRlWyJjb21taXRfdGV4dCJdID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRfd2l0aF9t
ZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkKIAogCiBjbGFzcyBDbG9zZVBhdGNoU3Rl
cChBYnN0cmFjdFN0ZXApOgotICAgIGRlZiBydW4oc2VsZiwgY29tbWl0X2xvZyk6Ci0gICAgICAg
IGNvbW1lbnRfdGV4dCA9IGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQoc2VsZi5fdG9vbC5z
Y20oKSwgY29tbWl0X2xvZykKLSAgICAgICAgc2VsZi5fdG9vbC5idWdzLmNsZWFyX2F0dGFjaG1l
bnRfZmxhZ3Moc2VsZi5fcGF0Y2hbImlkIl0sIGNvbW1lbnRfdGV4dCkKKyAgICBkZWYgcnVuKHNl
bGYsIHN0YXRlKToKKyAgICAgICAgY29tbWVudF90ZXh0ID0gYnVnX2NvbW1lbnRfZnJvbV9jb21t
aXRfdGV4dChzZWxmLl90b29sLnNjbSgpLCBzdGF0ZVsiY29tbWl0X3RleHQiXSkKKyAgICAgICAg
c2VsZi5fdG9vbC5idWdzLmNsZWFyX2F0dGFjaG1lbnRfZmxhZ3Moc3RhdGVbInBhdGNoIl1bImlk
Il0sIGNvbW1lbnRfdGV4dCkKIAogCiBjbGFzcyBDbG9zZUJ1Z1N0ZXAoQWJzdHJhY3RTdGVwKToK
QEAgLTIwOCwxOCArMjUxLDQ4IEBAIGNsYXNzIENsb3NlQnVnU3RlcChBYnN0cmFjdFN0ZXApOgog
ICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMuY2xvc2VfYnVnLAogICAgICAgICBdCiAKLSAgICBk
ZWYgcnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAgICAgICBpZiBub3Qg
c2VsZi5fb3B0aW9ucy5jbG9zZV9idWc6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBD
aGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHI/IG9yIHIrIHBhdGNoZXMgb24gdGhlIGJ1
ZyBiZWZvcmUgY2xvc2luZy4KICAgICAgICAgIyBBc3N1bWUgdGhhdCByLSBwYXRjaGVzIGFyZSBq
dXN0IHByZXZpb3VzIHBhdGNoZXMgc29tZW9uZSBmb3Jnb3QgdG8gb2Jzb2xldGUuCi0gICAgICAg
IHBhdGNoZXMgPSBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfcGF0Y2hlc19mcm9tX2J1ZyhzZWxmLl9w
YXRjaFsiYnVnX2lkIl0pCisgICAgICAgIHBhdGNoZXMgPSBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hf
cGF0Y2hlc19mcm9tX2J1ZyhzdGF0ZVsicGF0Y2giXVsiYnVnX2lkIl0pCiAgICAgICAgIGZvciBw
YXRjaCBpbiBwYXRjaGVzOgogICAgICAgICAgICAgcmV2aWV3X2ZsYWcgPSBwYXRjaC5nZXQoInJl
dmlldyIpCiAgICAgICAgICAgICBpZiByZXZpZXdfZmxhZyA9PSAiPyIgb3IgcmV2aWV3X2ZsYWcg
PT0gIisiOgogICAgICAgICAgICAgICAgIGxvZygiTm90IGNsb3NpbmcgYnVnICVzIGFzIGF0dGFj
aG1lbnQgJXMgaGFzIHJldmlldz0lcy4gIEFzc3VtaW5nIHRoZXJlIGFyZSBtb3JlIHBhdGNoZXMg
dG8gbGFuZCBmcm9tIHRoaXMgYnVnLiIgJSAocGF0Y2hbImJ1Z19pZCJdLCBwYXRjaFsiaWQiXSwg
cmV2aWV3X2ZsYWcpKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl90b29s
LmJ1Z3MuY2xvc2VfYnVnX2FzX2ZpeGVkKHNlbGYuX3BhdGNoWyJidWdfaWQiXSwgIkFsbCByZXZp
ZXdlZCBwYXRjaGVzIGhhdmUgYmVlbiBsYW5kZWQuICBDbG9zaW5nIGJ1Zy4iKQorICAgICAgICBz
ZWxmLl90b29sLmJ1Z3MuY2xvc2VfYnVnX2FzX2ZpeGVkKHN0YXRlWyJwYXRjaCJdWyJidWdfaWQi
XSwgIkFsbCByZXZpZXdlZCBwYXRjaGVzIGhhdmUgYmVlbiBsYW5kZWQuICBDbG9zaW5nIGJ1Zy4i
KQorCisKK2NsYXNzIENvbXBsZXRlUm9sbG91dChNZXRhU3RlcCk6CisgICAgc3Vic3RlcHMgPSBb
CisgICAgICAgIEJ1aWxkU3RlcCwKKyAgICAgICAgQ29tbWl0U3RlcCwKKyAgICBdCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAgICBjb2xsZWN0ZWRfb3B0
aW9ucyA9IGNscy5fY29sbGVjdF9vcHRpb25zX2Zyb21fc3RlcHMoY2xzLnN1YnN0ZXBzKQorICAg
ICAgICBjb2xsZWN0ZWRfb3B0aW9ucy5hcHBlbmQoQ29tbWFuZE9wdGlvbnMuY29tcGxldGVfcm9s
bG91dCkKKyAgICAgICAgcmV0dXJuIGNvbGxlY3RlZF9vcHRpb25zCisKKyAgICBkZWYgcnVuKHNl
bGYsIHN0YXRlKToKKyAgICAgICAgYnVnX2lkID0gc3RhdGVbImJ1Z19pZCJdCisgICAgICAgICMg
RklYTUU6IEZ1bGx5IGF1dG9tYXRlZCByb2xsb3V0IGlzIG5vdCAxMDAlIGlkaW90LXByb29mIHll
dCwgc28gZm9yIG5vdyBqdXN0IGxvZyB3aXRoIGluc3RydWN0aW9ucyBvbiBob3cgdG8gY29tcGxl
dGUgdGhlIHJvbGxvdXQuCisgICAgICAgICMgT25jZSB3ZSB0cnVzdCByb2xsb3V0IHdlIHdpbGwg
cmVtb3ZlIHRoaXMgb3B0aW9uLgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5jb21wbGV0
ZV9yb2xsb3V0OgorICAgICAgICAgICAgbG9nKCJcbk5PVEU6IFJvbGxvdXQgc3VwcG9ydCBpcyBl
eHBlcmltZW50YWwuXG5QbGVhc2UgdmVyaWZ5IHRoZSByb2xsb3V0IGRpZmYgYW5kIHVzZSBcImJ1
Z3ppbGxhLXRvb2wgbGFuZC1kaWZmICVzXCIgdG8gY29tbWl0IHRoZSByb2xsb3V0LiIgJSBidWdf
aWQpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBNZXRhU3RlcC5ydW4oc2VsZiwgc3Rh
dGUpCisKKyAgICAgICAgaWYgbm90IGJ1Z19pZDoKKyAgICAgICAgICAgIGxvZyhzdGF0ZVsiY29t
bWl0X3RleHQiXSkKKyAgICAgICAgICAgIGxvZygiTm8gYnVncyB3ZXJlIHVwZGF0ZWQgb3IgcmUt
b3BlbmVkIHRvIHJlZmxlY3QgdGhpcyByb2xsb3V0LiIpCisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgIyBGSVhNRTogSSdtIG5vdCBzdXJlIHN0YXRlWyJjb21taXRfdGV4dCJdIGlzIHF1aXRl
IHJpZ2h0IGhlcmUuCisgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5yZW9wZW5fYnVnKGJ1Z19pZCwg
c3RhdGVbImNvbW1pdF90ZXh0Il0pCiAKIAogIyBGSVhNRTogVGhpcyBjbGFzcyBpcyBhIGRpbm9z
YXVyIGFuZCBzaG91bGQgYmUgZXh0aW5jdCBzb29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5CmluZGV4IDJhY2Q2OWYuLjg3YTlmMWIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQucHkK
QEAgLTMzLDcgKzMzLDggQEAgaW1wb3J0IG9zCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29w
dGlvbgogCiBmcm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IHBhcnNlX2J1Z19pZAotZnJvbSBt
b2R1bGVzLmJ1aWxkc3RlcHMgaW1wb3J0IENvbW1hbmRPcHRpb25zLCBCdWlsZFN0ZXBzLCBFbnN1
cmVCdWlsZGVyc0FyZUdyZWVuU3RlcCwgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwgVXBkYXRl
U3RlcCwgQXBwbHlQYXRjaFN0ZXAsIEJ1aWxkU3RlcCwgQ2hlY2tTdHlsZVN0ZXAsIFByZXBhcmVD
aGFuZ2Vsb2dTdGVwCisjIEZJWE1FOiBUaGlzIGxpc3QgaXMgcmVkaWN1bG91cyEgIFdlIG5lZWQg
dG8gbGVhcm4gdGhlIHdheXMgb2YgX19hbGxfXy4KK2Zyb20gbW9kdWxlcy5idWlsZHN0ZXBzIGlt
cG9ydCBDb21tYW5kT3B0aW9ucywgQnVpbGRTdGVwcywgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0
ZXAsIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAsIFVwZGF0ZVN0ZXAsIEFwcGx5UGF0Y2hTdGVw
LCBSZXZlcnRSZXZpc2lvblN0ZXAsIFByZXBhcmVDaGFuZ2Vsb2dGb3JSZXZlcnRTdGVwLCBCdWls
ZFN0ZXAsIENoZWNrU3R5bGVTdGVwLCBQcmVwYXJlQ2hhbmdlbG9nU3RlcCwgQ29tcGxldGVSb2xs
b3V0CiBmcm9tIG1vZHVsZXMuY2hhbmdlbG9ncyBpbXBvcnQgQ2hhbmdlTG9nCiBmcm9tIG1vZHVs
ZXMuY29tbWVudHMgaW1wb3J0IGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQKIGZyb20gbW9k
dWxlcy5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCkBAIC0xMDAsMTAgKzEwMSw4IEBAIGNs
YXNzIFdlYktpdEFwcGx5aW5nU2NyaXB0czoKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
c2V0dXBfZm9yX3BhdGNoX2FwcGx5KHRvb2wsIG9wdGlvbnMpOgotICAgICAgICBjbGVhbl9zdGVw
ID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCh0b29sLCBvcHRpb25zLCBhbGxvd19sb2NhbF9j
b21taXRzPVRydWUpCi0gICAgICAgIGNsZWFuX3N0ZXAucnVuKCkKLSAgICAgICAgdXBkYXRlX3N0
ZXAgPSBVcGRhdGVTdGVwKHRvb2wsIG9wdGlvbnMpCi0gICAgICAgIHVwZGF0ZV9zdGVwLnJ1bigp
CisgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAodG9vbCwgb3B0aW9ucywgYWxsb3df
bG9jYWxfY29tbWl0cz1UcnVlKS5ydW4oe30pCisgICAgICAgIFVwZGF0ZVN0ZXAodG9vbCwgb3B0
aW9ucykucnVuKHt9KQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBhcHBseV9wYXRjaGVz
X3dpdGhfb3B0aW9ucyhzY20sIHBhdGNoZXMsIG9wdGlvbnMpOgpAQCAtMTI4LDcgKzEyNyw3IEBA
IGNsYXNzIExhbmREaWZmU2VxdWVuY2UoTGFuZGluZ1NlcXVlbmNlKToKIAogICAgIGRlZiBjbG9z
ZV9idWcoc2VsZiwgY29tbWl0X2xvZyk6CiAgICAgICAgIGNvbW1lbnRfdGVzdCA9IGJ1Z19jb21t
ZW50X2Zyb21fY29tbWl0X3RleHQoc2VsZi5fdG9vbC5zY20oKSwgY29tbWl0X2xvZykKLSAgICAg
ICAgYnVnX2lkID0gc2VsZi5fcGF0Y2hbImJ1Z19pZCJdCisgICAgICAgIGJ1Z19pZCA9IHNlbGYu
X3N0YXRlWyJwYXRjaCJdWyJidWdfaWQiXQogICAgICAgICBpZiBidWdfaWQ6CiAgICAgICAgICAg
ICBsb2coIlVwZGF0aW5nIGJ1ZyAlcyIgJSBidWdfaWQpCiAgICAgICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLmNsb3NlX2J1ZzoKQEAgLTE4MCw3ICsxNzksNyBAQCBjbGFzcyBMYW5kRGlmZihDb21t
YW5kKToKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAg
ICAgYnVnX2lkID0gKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgp
LmNyZWF0ZV9wYXRjaCgpKQogCi0gICAgICAgIEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5TdGVwKHRv
b2wsIG9wdGlvbnMpLnJ1bigpCisgICAgICAgIEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5TdGVwKHRv
b2wsIG9wdGlvbnMpLnJ1bih7fSkKIAogICAgICAgICBvcy5jaGRpcih0b29sLnNjbSgpLmNoZWNr
b3V0X3Jvb3QpCiAgICAgICAgIHNlbGYudXBkYXRlX2NoYW5nZWxvZ3Nfd2l0aF9yZXZpZXdlcihv
cHRpb25zLnJldmlld2VyLCBidWdfaWQsIHRvb2wpCkBAIC0xOTUsMTQgKzE5NCwxMSBAQCBjbGFz
cyBMYW5kRGlmZihDb21tYW5kKToKIAogCiBjbGFzcyBBYnN0cmFjdFBhdGNoUHJvY2Vzc2luZ0Nv
bW1hbmQoQ29tbWFuZCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlbHBfdGV4dCwgYXJnc19k
ZXNjcmlwdGlvbiwgb3B0aW9ucyk6Ci0gICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgaGVs
cF90ZXh0LCBhcmdzX2Rlc2NyaXB0aW9uLCBvcHRpb25zPW9wdGlvbnMpCi0KICAgICBkZWYgX2Zl
dGNoX2xpc3Rfb2ZfcGF0Y2hlc190b19wcm9jZXNzKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGlt
cGxlbWVudCIKIAogICAgIGRlZiBfcHJlcGFyZV90b19wcm9jZXNzKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3Nl
cyBtdXN0IGltcGxlbWVudCIKKyAgICAgICAgcGFzcyAjIE92ZXJyaWRlIGlmIG5lY2Vzc2FyeS4K
IAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2NvbGxlY3RfcGF0Y2hlc19ieV9idWcocGF0
Y2hlcyk6CkBAIC0yMjEsMTAgKzIxNywxNiBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoUHJvY2Vzc2lu
Z0NvbW1hbmQoQ29tbWFuZCk6CiAgICAgICAgIGxvZygiUHJvY2Vzc2luZyAlcyBmcm9tICVzLiIg
JSAocGx1cmFsaXplKCJwYXRjaCIsIGxlbihwYXRjaGVzKSksIHBsdXJhbGl6ZSgiYnVnIiwgbGVu
KGJ1Z3NfdG9fcGF0Y2hlcykpKSkKIAogICAgICAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKLSAg
ICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcGF0Y2gocGF0Y2gsIG9wdGlvbnMsIGFyZ3MsIHRvb2wp
CisgICAgICAgICAgICBzdGF0ZSA9IHsgInBhdGNoIjogcGF0Y2ggfQorICAgICAgICAgICAgc2Vs
Zi5fcHJvY2Vzc19wYXRjaCh0b29sLCBvcHRpb25zLCBzdGF0ZSkKKworCitjbGFzcyBBYnN0cmFj
dFNlcXVlbmNlZFBhdGNoUHJvY2Vzc2luZ0NvbW1hbmQoQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdD
b21tYW5kKToKKyAgICBkZWYgX3Byb2Nlc3NfcGF0Y2goc2VsZiwgdG9vbCwgb3B0aW9ucywgc3Rh
dGUpOgorICAgICAgICBzZWxmLl9zZXF1ZW5jZS5ydW5fYW5kX2hhbmRsZV9lcnJvcnModG9vbCwg
b3B0aW9ucywgc3RhdGUpCiAKIAotY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFBhdGNoUHJvY2Vz
c2luZ0NvbW1hbmQpOgorY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFNlcXVlbmNlZFBhdGNoUHJv
Y2Vzc2luZ0NvbW1hbmQpOgogICAgIG5hbWUgPSAiY2hlY2stc3R5bGUiCiAgICAgc2hvd19pbl9t
YWluX2hlbHAgPSBGYWxzZQogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTIzNCwxOSArMjM2
LDEzIEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kKToK
ICAgICAgICAgICAgIEFwcGx5UGF0Y2hTdGVwLAogICAgICAgICAgICAgQ2hlY2tTdHlsZVN0ZXAs
CiAgICAgICAgIF0pCi0gICAgICAgIEFic3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZC5fX2lu
aXRfXyhzZWxmLCAiUnVuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiB0aGUgc3BlY2lmaWVkIGF0dGFj
aG1lbnRzIiwgIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURTXSIsIHNlbGYuX3NlcXVlbmNl
Lm9wdGlvbnMoKSkKKyAgICAgICAgQWJzdHJhY3RTZXF1ZW5jZWRQYXRjaFByb2Nlc3NpbmdDb21t
YW5kLl9faW5pdF9fKHNlbGYsICJSdW4gY2hlY2std2Via2l0LXN0eWxlIG9uIHRoZSBzcGVjaWZp
ZWQgYXR0YWNobWVudHMiLCAiQVRUQUNITUVOVF9JRCBbQVRUQUNITUVOVF9JRFNdIiwgc2VsZi5f
c2VxdWVuY2Uub3B0aW9ucygpKQogCiAgICAgZGVmIF9mZXRjaF9saXN0X29mX3BhdGNoZXNfdG9f
cHJvY2VzcyhzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgcmV0dXJuIG1hcChs
YW1iZGEgcGF0Y2hfaWQ6IHRvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KHBhdGNoX2lkKSwgYXJn
cykKIAotICAgIGRlZiBfcHJlcGFyZV90b19wcm9jZXNzKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRv
b2wpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX3Byb2Nlc3NfcGF0Y2goc2VsZiwgcGF0Y2gs
IG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBzZWxmLl9zZXF1ZW5jZS5ydW5fYW5kX2hh
bmRsZV9lcnJvcnModG9vbCwgb3B0aW9ucywgcGF0Y2gpCi0KIAotY2xhc3MgQnVpbGRBdHRhY2ht
ZW50KEFic3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZCk6CitjbGFzcyBCdWlsZEF0dGFjaG1l
bnQoQWJzdHJhY3RTZXF1ZW5jZWRQYXRjaFByb2Nlc3NpbmdDb21tYW5kKToKICAgICBuYW1lID0g
ImJ1aWxkLWF0dGFjaG1lbnQiCiAgICAgc2hvd19pbl9tYWluX2hlbHAgPSBGYWxzZQogICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKQEAgLTI1NiwxNyArMjUyLDExIEBAIGNsYXNzIEJ1aWxkQXR0YWNo
bWVudChBYnN0cmFjdFBhdGNoUHJvY2Vzc2luZ0NvbW1hbmQpOgogICAgICAgICAgICAgQXBwbHlQ
YXRjaFN0ZXAsCiAgICAgICAgICAgICBCdWlsZFN0ZXAsCiAgICAgICAgIF0pCi0gICAgICAgIEFi
c3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiQXBwbHkgYW5kIGJ1
aWxkIHBhdGNoZXMgZnJvbSBidWd6aWxsYSIsICJBVFRBQ0hNRU5UX0lEIFtBVFRBQ0hNRU5UX0lE
U10iLCBzZWxmLl9zZXF1ZW5jZS5vcHRpb25zKCkpCisgICAgICAgIEFic3RyYWN0U2VxdWVuY2Vk
UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiQXBwbHkgYW5kIGJ1aWxkIHBh
dGNoZXMgZnJvbSBidWd6aWxsYSIsICJBVFRBQ0hNRU5UX0lEIFtBVFRBQ0hNRU5UX0lEU10iLCBz
ZWxmLl9zZXF1ZW5jZS5vcHRpb25zKCkpCiAKICAgICBkZWYgX2ZldGNoX2xpc3Rfb2ZfcGF0Y2hl
c190b19wcm9jZXNzKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICByZXR1cm4g
bWFwKGxhbWJkYSBwYXRjaF9pZDogdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2hfaWQp
LCBhcmdzKQogCi0gICAgZGVmIF9wcmVwYXJlX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBfcHJvY2Vzc19wYXRjaChzZWxmLCBw
YXRjaCwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHNlbGYuX3NlcXVlbmNlLnJ1bl9h
bmRfaGFuZGxlX2Vycm9ycyh0b29sLCBvcHRpb25zLCBwYXRjaCkKLQogCiBjbGFzcyBBYnN0cmFj
dFBhdGNoTGFuZGluZ0NvbW1hbmQoQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kKToKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgaGVscF90ZXh0LCBhcmdzX2Rlc2NyaXB0aW9uKToKQEAgLTI3
Nyw5ICsyNjcsMTAgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaExhbmRpbmdDb21tYW5kKEFic3RyYWN0
UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZCk6CiAKICAgICBkZWYgX3ByZXBhcmVfdG9fcHJvY2Vzcyhz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgIyBDaGVjayB0aGUgdHJlZSBzdGF0
dXMgZmlyc3Qgc28gd2UgY2FuIGZhaWwgZWFybHkuCi0gICAgICAgIEVuc3VyZUJ1aWxkZXJzQXJl
R3JlZW5TdGVwKHRvb2wsIG9wdGlvbnMpLnJ1bigpCisgICAgICAgIEVuc3VyZUJ1aWxkZXJzQXJl
R3JlZW5TdGVwKHRvb2wsIG9wdGlvbnMpLnJ1bih7fSkKIAotICAgIGRlZiBfcHJvY2Vzc19wYXRj
aChzZWxmLCBwYXRjaCwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgZGVmIF9wcm9jZXNzX3Bh
dGNoKHNlbGYsIHRvb2wsIG9wdGlvbnMsIHN0YXRlKToKKyAgICAgICAgcGF0Y2ggPSBzdGF0ZVsi
cGF0Y2giXQogICAgICAgICBzZXF1ZW5jZSA9IExhbmRpbmdTZXF1ZW5jZShwYXRjaCwgb3B0aW9u
cywgdG9vbCkKICAgICAgICAgc2VxdWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzKCkKIApAQCAt
MzE0LDM3ICszMDUsMjAgQEAgY2xhc3MgUm9sbG91dChDb21tYW5kKToKICAgICBuYW1lID0gInJv
bGxvdXQiCiAgICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICBvcHRpb25zID0gQnVpbGRTdGVwcy5jbGVhbmluZ19vcHRpb25zKCkKLSAg
ICAgICAgb3B0aW9ucyArPSBCdWlsZFN0ZXBzLmJ1aWxkX29wdGlvbnMoKQotICAgICAgICBvcHRp
b25zICs9IEJ1aWxkU3RlcHMubGFuZF9vcHRpb25zKCkKLSAgICAgICAgb3B0aW9ucy5hcHBlbmQo
bWFrZV9vcHRpb24oIi0tY29tcGxldGUtcm9sbG91dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRl
c3Q9ImNvbXBsZXRlX3JvbGxvdXQiLCBoZWxwPSJDb21taXQgdGhlIHJldmVydCBhbmQgcmUtb3Bl
biB0aGUgb3JpZ2luYWwgYnVnLiIpKQotICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICJS
ZXZlcnQgdGhlIGdpdmVuIHJldmlzaW9uIGluIHRoZSB3b3JraW5nIGNvcHkgYW5kIG9wdGlvbmFs
bHkgY29tbWl0IHRoZSByZXZlcnQgYW5kIHJlLW9wZW4gdGhlIG9yaWdpbmFsIGJ1ZyIsICJSRVZJ
U0lPTiBbQlVHSURdIiwgb3B0aW9ucz1vcHRpb25zKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAg
IGRlZiBfY3JlYXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLCByZXZpc2lvbik6Ci0gICAg
ICAgICMgRmlyc3QsIGRpc2NhcmQgdGhlIENoYW5nZUxvZyBjaGFuZ2VzIGZyb20gdGhlIHJvbGxv
dXQuCi0gICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHRvb2wuc2NtKCkubW9kaWZpZWRfY2hhbmdl
bG9ncygpCi0gICAgICAgIHRvb2wuc2NtKCkucmV2ZXJ0X2ZpbGVzKGNoYW5nZWxvZ19wYXRocykK
LQotICAgICAgICAjIFNlY29uZCwgbWFrZSBuZXcgQ2hhbmdlTG9nIGVudHJpZXMgZm9yIHRoaXMg
cm9sbG91dC4KLSAgICAgICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cg
YnkgYWRkaW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4KLSAgICAgICAgUHJlcGFyZUNoYW5nZWxvZ1N0
ZXAodG9vbCwgTm9uZSkucnVuKCkKLSAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5n
ZWxvZ19wYXRoczoKLSAgICAgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkudXBkYXRl
X2Zvcl9yZXZlcnQocmV2aXNpb24pCisgICAgICAgIHNlbGYuX3NlcXVlbmNlID0gU3RlcFNlcXVl
bmNlKFsKKyAgICAgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAsCisgICAgICAgICAg
ICBVcGRhdGVTdGVwLAorICAgICAgICAgICAgUmV2ZXJ0UmV2aXNpb25TdGVwLAorICAgICAgICAg
ICAgUHJlcGFyZUNoYW5nZWxvZ0ZvclJldmVydFN0ZXAsCisgICAgICAgICAgICBDb21wbGV0ZVJv
bGxvdXQsCisgICAgICAgIF0pCisgICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgIlJldmVy
dCB0aGUgZ2l2ZW4gcmV2aXNpb24gaW4gdGhlIHdvcmtpbmcgY29weSBhbmQgb3B0aW9uYWxseSBj
b21taXQgdGhlIHJldmVydCBhbmQgcmUtb3BlbiB0aGUgb3JpZ2luYWwgYnVnIiwgIlJFVklTSU9O
IFtCVUdJRF0iLCBvcHRpb25zPXNlbGYuX3NlcXVlbmNlLm9wdGlvbnMoKSkKIAogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgX3BhcnNlX2J1Z19pZF9mcm9tX3JldmlzaW9uX2RpZmYodG9vbCwg
cmV2aXNpb24pOgogICAgICAgICBvcmlnaW5hbF9kaWZmID0gdG9vbC5zY20oKS5kaWZmX2Zvcl9y
ZXZpc2lvbihyZXZpc2lvbikKICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChvcmlnaW5hbF9k
aWZmKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfcmVvcGVuX2J1Z19hZnRlcl9yb2xs
b3V0KHRvb2wsIGJ1Z19pZCwgY29tbWVudF90ZXh0KToKLSAgICAgICAgaWYgYnVnX2lkOgotICAg
ICAgICAgICAgdG9vbC5idWdzLnJlb3Blbl9idWcoYnVnX2lkLCBjb21tZW50X3RleHQpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQotICAgICAgICAgICAgbG9n
KCJObyBidWdzIHdlcmUgdXBkYXRlZCBvciByZS1vcGVuZWQgdG8gcmVmbGVjdCB0aGlzIHJvbGxv
dXQuIikKLQogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAg
ICAgICByZXZpc2lvbiA9IGFyZ3NbMF0KICAgICAgICAgYnVnX2lkID0gc2VsZi5fcGFyc2VfYnVn
X2lkX2Zyb21fcmV2aXNpb25fZGlmZih0b29sLCByZXZpc2lvbikKQEAgLTM1NCwxNyArMzI4LDgg
QEAgY2xhc3MgUm9sbG91dChDb21tYW5kKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICAgbG9nKCJGYWlsZWQgdG8gcGFyc2UgYnVnIG51bWJlciBmcm9tIGRpZmYuICBObyBidWdz
IHdpbGwgYmUgdXBkYXRlZC9yZW9wZW5lZCBhZnRlciB0aGUgcm9sbG91dC4iKQogCi0gICAgICAg
IENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAodG9vbCwgb3B0aW9ucykucnVuKCkKLSAgICAgICAg
VXBkYXRlU3RlcCh0b29sLCBvcHRpb25zKS5ydW4oKQotICAgICAgICB0b29sLnNjbSgpLmFwcGx5
X3JldmVyc2VfZGlmZihyZXZpc2lvbikKLSAgICAgICAgc2VsZi5fY3JlYXRlX2NoYW5nZWxvZ3Nf
Zm9yX3JldmVydCh0b29sLCByZXZpc2lvbikKLQotICAgICAgICAjIEZJWE1FOiBGdWxseSBhdXRv
bWF0ZWQgcm9sbG91dCBpcyBub3QgMTAwJSBpZGlvdC1wcm9vZiB5ZXQsIHNvIGZvciBub3cganVz
dCBsb2cgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGNvbXBsZXRlIHRoZSByb2xsb3V0Lgot
ICAgICAgICAjIE9uY2Ugd2UgdHJ1c3Qgcm9sbG91dCB3ZSB3aWxsIHJlbW92ZSB0aGlzIG9wdGlv
bi4KLSAgICAgICAgaWYgbm90IG9wdGlvbnMuY29tcGxldGVfcm9sbG91dDoKLSAgICAgICAgICAg
IGxvZygiXG5OT1RFOiBSb2xsb3V0IHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuUGxlYXNlIHZl
cmlmeSB0aGUgcm9sbG91dCBkaWZmIGFuZCB1c2UgXCJidWd6aWxsYS10b29sIGxhbmQtZGlmZiAl
c1wiIHRvIGNvbW1pdCB0aGUgcm9sbG91dC4iICUgYnVnX2lkKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgIyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCEhCi0gICAgICAg
ICAgICAjIGNvbW1lbnRfdGV4dCA9IFdlYktpdExhbmRpbmdTY3JpcHRzLmJ1aWxkX2FuZF9jb21t
aXQodG9vbC5zY20oKSwgb3B0aW9ucykKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJP
T1BTISBUaGlzIG9wdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgKHlldCkuIikKLSAgICAgICAgICAg
IHNlbGYuX3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91dCh0b29sLCBidWdfaWQsIGNvbW1lbnRfdGV4
dCkKKyAgICAgICAgc3RhdGUgPSB7CisgICAgICAgICAgICAicmV2aXNpb24iOiByZXZpc2lvbiwK
KyAgICAgICAgICAgICJidWdfaWQiOiBidWdfaWQsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5f
c2VxdWVuY2UucnVuKHRvb2wsIG9wdGlvbnMsIHN0YXRlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5CmluZGV4
IGExZWQ0MWEuLjM0MjhjZTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkKQEAgLTQ0LDYgKzQ0LDcgQEAg
Y2xhc3MgRG93bmxvYWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAgICAgICAgb3B0aW9u
cy5idWlsZCA9IFRydWUKICAgICAgICAgb3B0aW9ucy50ZXN0ID0gVHJ1ZQogICAgICAgICBvcHRp
b25zLmNsb3NlX2J1ZyA9IFRydWUKKyAgICAgICAgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0ID0g
RmFsc2UKICAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAogICAgIGRlZiB0ZXN0X2J1aWxkKHNlbGYp
OgpAQCAtNzUsMyArNzYsMTEgQEAgY2xhc3MgRG93bmxvYWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNU
ZXN0KToKIAogICAgIGRlZiB0ZXN0X2xhbmRfcGF0Y2hlcyhzZWxmKToKICAgICAgICAgc2VsZi5h
c3NlcnRfZXhlY3V0ZV9vdXRwdXRzKExhbmRQYXRjaGVzKCksIFs0Ml0sIG9wdGlvbnM9c2VsZi5f
ZGVmYXVsdF9vcHRpb25zKCkpCisKKyAgICBkZWYgdGVzdF9yb2xsb3V0KHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoUm9sbG91dCgpLCBbODUyXSwgb3B0aW9ucz1z
ZWxmLl9kZWZhdWx0X29wdGlvbnMoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXRlX3JvbGxvdXQo
c2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9kZWZhdWx0X29wdGlvbnMoKQorICAgICAg
ICBvcHRpb25zLmNvbXBsZXRlX3JvbGxvdXQgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4
ZWN1dGVfb3V0cHV0cyhSb2xsb3V0KCksIFs4NTJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0
aW9ucygpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRz
L3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMu
cHkKaW5kZXggNTNiOWU0OC4uNmRhZjA4NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvY29tbWFuZHMvcXVldWVzLnB5CkBAIC0xMzksNyArMTM5LDggQEAgY2xhc3MgQ29tbWl0
UXVldWUoQWJzdHJhY3RRdWV1ZSwgTGFuZGluZ1NlcXVlbmNlRXJyb3JIYW5kbGVyKToKICAgICAj
IExhbmRpbmdTZXF1ZW5jZUVycm9ySGFuZGxlciBtZXRob2RzCiAKICAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgaGFuZGxlX3NjcmlwdF9lcnJvcihjbHMsIHRvb2wsIHBhdGNoLCBzY3JpcHRfZXJy
b3IpOgorICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlw
dF9lcnJvcik6CisgICAgICAgIHBhdGNoID0gc3RhdGVbInBhdGNoIl0KICAgICAgICAgdG9vbC5i
dWdzLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaFsiaWQiXSwgc2NyaXB0X2Vy
cm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkKIAogCkBAIC0xODIsNyArMTgzLDcgQEAgY2xhc3Mg
QWJzdHJhY3RSZXZpZXdRdWV1ZShBYnN0cmFjdFF1ZXVlLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0
aW9uRGVsZWdhdGUsIExhbmQKICAgICAjIExhbmRpbmdTZXF1ZW5jZUVycm9ySGFuZGxlciBtZXRo
b2RzCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaGFuZGxlX3NjcmlwdF9lcnJvcihjbHMs
IHRvb2wsIHBhdGNoLCBzY3JpcHRfZXJyb3IpOgorICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9y
KGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6CiAgICAgICAgIGxvZyhzY3JpcHRfZXJy
b3IubWVzc2FnZV93aXRoX291dHB1dCgpKQogCiAKQEAgLTIwNSw3ICsyMDYsOCBAQCBjbGFzcyBT
dHlsZVF1ZXVlKEFic3RyYWN0UmV2aWV3UXVldWUpOgogICAgICAgICAgICAgcmFpc2UgZQogCiAg
ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGhhbmRsZV9zY3JpcHRfZXJyb3IoY2xzLCB0b29sLCBw
YXRjaCwgc2NyaXB0X2Vycm9yKToKKyAgICBkZWYgaGFuZGxlX3NjcmlwdF9lcnJvcihjbHMsIHRv
b2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpOgorICAgICAgICBwYXRjaCA9IHN0YXRlWyJwYXRjaCJd
CiAgICAgICAgIGNvbW1hbmQgPSBzY3JpcHRfZXJyb3Iuc2NyaXB0X2FyZ3MKICAgICAgICAgaWYg
dHlwZShjb21tYW5kKSBpcyBsaXN0OgogICAgICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmRbMF0K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9sYW5kaW5nc2VxdWVuY2Uu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5CmluZGV4
IDkwNjgzZjQuLmEyNDVhN2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9sYW5kaW5nc2VxdWVuY2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2xh
bmRpbmdzZXF1ZW5jZS5weQpAQCAtNDMsMTIgKzQzLDE1IEBAIGNsYXNzIExhbmRpbmdTZXF1ZW5j
ZUVycm9ySGFuZGxlcigpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3Vi
Y2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogIyBGSVhNRTogVGhpcyBjbGFzcyBpcyBzbG93aW5n
IGJlaW5nIGtpbGxlZCBhbmQgcmVwbGFjZWQgd2l0aCBTdGVwU2VxdWVuY2UuCisjICAgICAgICBU
aGlzIGNsYXNzIGlzIHZlcnkgY2xvc2UgdG8gYmVpbmcgcmVtb3ZlZC4KIGNsYXNzIExhbmRpbmdT
ZXF1ZW5jZToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0Y2gsIG9wdGlvbnMsIHRvb2wpOgot
ICAgICAgICBzZWxmLl9wYXRjaCA9IHBhdGNoCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCiAgICAgICAgIHNlbGYuX3Rvb2wgPSB0b29sCiAgICAgICAgIHNlbGYuX3BvcnQgPSBXZWJL
aXRQb3J0LnBvcnQoc2VsZi5fb3B0aW9ucy5wb3J0KQorICAgICAgICBzZWxmLl9zdGF0ZSA9IHsK
KyAgICAgICAgICAgICJwYXRjaCI6IHBhdGNoLAorICAgICAgICB9CiAKICAgICBkZWYgcnVuKHNl
bGYpOgogICAgICAgICBzZWxmLmNsZWFuKCkKQEAgLTU3LDggKzYwLDggQEAgY2xhc3MgTGFuZGlu
Z1NlcXVlbmNlOgogICAgICAgICBzZWxmLmNoZWNrX2J1aWxkZXJzKCkKICAgICAgICAgc2VsZi5i
dWlsZCgpCiAgICAgICAgIHNlbGYudGVzdCgpCi0gICAgICAgIGNvbW1pdF9sb2cgPSBzZWxmLmNv
bW1pdCgpCi0gICAgICAgIHNlbGYuY2xvc2VfcGF0Y2goY29tbWl0X2xvZykKKyAgICAgICAgc2Vs
Zi5jb21taXQoKQorICAgICAgICBzZWxmLmNsb3NlX3BhdGNoKCkKICAgICAgICAgc2VsZi5jbG9z
ZV9idWcoKQogCiAgICAgZGVmIHJ1bl9hbmRfaGFuZGxlX2Vycm9ycyhzZWxmKToKQEAgLTczLDQx
ICs3NiwzMiBAQCBjbGFzcyBMYW5kaW5nU2VxdWVuY2U6CiAgICAgICAgICAgICAgICAgbG9nKGUu
bWVzc2FnZV93aXRoX291dHB1dCgpKQogICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5wYXJl
bnRfY29tbWFuZDoKICAgICAgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5fdG9vbC5jb21tYW5k
X2J5X25hbWUoc2VsZi5fb3B0aW9ucy5wYXJlbnRfY29tbWFuZCkKLSAgICAgICAgICAgICAgICBj
b21tYW5kLmhhbmRsZV9zY3JpcHRfZXJyb3Ioc2VsZi5fdG9vbCwgc2VsZi5fcGF0Y2gsIGUpCisg
ICAgICAgICAgICAgICAgY29tbWFuZC5oYW5kbGVfc2NyaXB0X2Vycm9yKHNlbGYuX3Rvb2wsIHNl
bGYuX3N0YXRlLCBlKQogICAgICAgICAgICAgV29ya1F1ZXVlLmV4aXRfYWZ0ZXJfaGFuZGxlZF9l
cnJvcihlKQogCiAgICAgZGVmIGNsZWFuKHNlbGYpOgotICAgICAgICBzdGVwID0gQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5U3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25zKQotICAgICAgICBzdGVw
LnJ1bigpCisgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAoc2VsZi5fdG9vbCwgc2Vs
Zi5fb3B0aW9ucykucnVuKHNlbGYuX3N0YXRlKQogCiAgICAgZGVmIHVwZGF0ZShzZWxmKToKLSAg
ICAgICAgc3RlcCA9IFVwZGF0ZVN0ZXAoc2VsZi5fdG9vbCwgc2VsZi5fb3B0aW9ucykKLSAgICAg
ICAgc3RlcC5ydW4oKQorICAgICAgICBVcGRhdGVTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlv
bnMpLnJ1bihzZWxmLl9zdGF0ZSkKIAogICAgIGRlZiBhcHBseV9wYXRjaChzZWxmKToKLSAgICAg
ICAgc3RlcCA9IEFwcGx5UGF0Y2hTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMsIHNlbGYu
X3BhdGNoKQotICAgICAgICBzdGVwLnJ1bigpCisgICAgICAgIEFwcGx5UGF0Y2hTdGVwKHNlbGYu
X3Rvb2wsIHNlbGYuX29wdGlvbnMpLnJ1bihzZWxmLl9zdGF0ZSkKIAogICAgIGRlZiBjaGVja19i
dWlsZGVycyhzZWxmKToKLSAgICAgICAgc3RlcCA9IEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5TdGVw
KHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHN0ZXAucnVuKCkKKyAgICAgICAg
RW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAoc2VsZi5fdG9vbCwgc2VsZi5fb3B0aW9ucykucnVu
KHNlbGYuX3N0YXRlKQogCiAgICAgZGVmIGJ1aWxkKHNlbGYpOgotICAgICAgICBzdGVwID0gQnVp
bGRTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHN0ZXAucnVuKCkKKyAg
ICAgICAgQnVpbGRTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpLnJ1bihzZWxmLl9zdGF0
ZSkKIAogICAgIGRlZiB0ZXN0KHNlbGYpOgotICAgICAgICBzdGVwID0gUnVuVGVzdHNTdGVwKHNl
bGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHN0ZXAucnVuKCkKKyAgICAgICAgUnVu
VGVzdHNTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpLnJ1bihzZWxmLl9zdGF0ZSkKIAog
ICAgIGRlZiBjb21taXQoc2VsZik6Ci0gICAgICAgIHN0ZXAgPSBDb21taXRTdGVwKHNlbGYuX3Rv
b2wsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHJldHVybiBzdGVwLnJ1bigpCisgICAgICAgIENv
bW1pdFN0ZXAoc2VsZi5fdG9vbCwgc2VsZi5fb3B0aW9ucykucnVuKHNlbGYuX3N0YXRlKQogCi0g
ICAgZGVmIGNsb3NlX3BhdGNoKHNlbGYsIGNvbW1pdF9sb2cpOgotICAgICAgICBzdGVwID0gQ2xv
c2VQYXRjaFN0ZXAoc2VsZi5fdG9vbCwgc2VsZi5fb3B0aW9ucywgc2VsZi5fcGF0Y2gpCi0gICAg
ICAgIHN0ZXAucnVuKGNvbW1pdF9sb2cpCisgICAgZGVmIGNsb3NlX3BhdGNoKHNlbGYpOgorICAg
ICAgICBDbG9zZVBhdGNoU3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25zKS5ydW4oc2VsZi5f
c3RhdGUpCiAKICAgICBkZWYgY2xvc2VfYnVnKHNlbGYpOgotICAgICAgICBzdGVwID0gQ2xvc2VC
dWdTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMsIHNlbGYuX3BhdGNoKQotICAgICAgICBz
dGVwLnJ1bigpCisgICAgICAgIENsb3NlQnVnU3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25z
KS5ydW4oc2VsZi5fc3RhdGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvbW9ja19idWd6aWxsYXRvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9j
a19idWd6aWxsYXRvb2wucHkKaW5kZXggZTYwMDk0Ny4uNmJlYWU3MyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQpAQCAtMTMzLDYgKzEz
Myw5IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAgICAgICAgICByZXR1cm4gIlBhdGNoMiIK
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCb2d1cyBjb21taXRfaWQgaW4gY29tbWl0X21lc3Nh
Z2VfZm9yX2xvY2FsX2NvbW1pdC4iKQogCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYs
IHJldmlzaW9uKToKKyAgICAgICAgcmV0dXJuICJEaWZmRm9yUmV2aXNpb24lc1xuaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDUiICUgcmV2aXNpb24KKwogICAgIGRl
ZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgogICAgICAgICAjIElkZWFsbHkgd2UnZCByZXR1
cm4gc29tZXRoaW5nIG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4KICAgICAgICAgIyBUaGUgcHJvYmxl
bSBpcyB0aGF0IExhbmREaWZmIHdpbGwgdHJ5IHRvIGFjdHVhbGx5IHJlYWQgdGhlIHBhdGggZnJv
bSBkaXNrIQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3N0ZXBzZXF1
ZW5jZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zdGVwc2VxdWVuY2UucHkKaW5k
ZXggNmYwODVjOS4uNzAzY2EzNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL3N0ZXBzZXF1ZW5jZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3Rl
cHNlcXVlbmNlLnB5CkBAIC0zMyw2ICszMyw3IEBAIGZyb20gbW9kdWxlcy5zY20gaW1wb3J0IENo
ZWNrb3V0TmVlZHNVcGRhdGUKIGZyb20gbW9kdWxlcy53b3JrcXVldWUgaW1wb3J0IFdvcmtRdWV1
ZQogCiAKKyMgRklYTUU6IFVuaWZ5IHdpdGggTWV0YVN0ZXA/CiBjbGFzcyBTdGVwU2VxdWVuY2Uo
b2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RlcHMpOgogICAgICAgICBzZWxmLl9z
dGVwcyA9IHN0ZXBzCkBAIC00OCwxMyArNDksMTMgQEAgY2xhc3MgU3RlcFNlcXVlbmNlKG9iamVj
dCk6CiAgICAgICAgIGNvbGxlY3RlZF9vcHRpb25zID0gc29ydGVkKHNldChjb2xsZWN0ZWRfb3B0
aW9ucykpCiAgICAgICAgIHJldHVybiBjb2xsZWN0ZWRfb3B0aW9ucwogCi0gICAgZGVmIF9ydW4o
c2VsZiwgdG9vbCwgb3B0aW9ucywgcGF0Y2gpOgorICAgIGRlZiBydW4oc2VsZiwgdG9vbCwgb3B0
aW9ucywgc3RhdGUpOgogICAgICAgICBmb3Igc3RlcCBpbiBzZWxmLl9zdGVwczoKLSAgICAgICAg
ICAgIHN0ZXAodG9vbCwgb3B0aW9ucywgcGF0Y2gpLnJ1bigpCisgICAgICAgICAgICBzdGVwKHRv
b2wsIG9wdGlvbnMpLnJ1bihzdGF0ZSkKIAotICAgIGRlZiBydW5fYW5kX2hhbmRsZV9lcnJvcnMo
c2VsZiwgdG9vbCwgb3B0aW9ucywgcGF0Y2g9Tm9uZSk6CisgICAgZGVmIHJ1bl9hbmRfaGFuZGxl
X2Vycm9ycyhzZWxmLCB0b29sLCBvcHRpb25zLCBzdGF0ZT1Ob25lKToKICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgc2VsZi5fcnVuKHRvb2wsIG9wdGlvbnMsIHBhdGNoKQorICAgICAgICAgICAg
c2VsZi5ydW4odG9vbCwgb3B0aW9ucywgc3RhdGUpCiAgICAgICAgIGV4Y2VwdCBDaGVja291dE5l
ZWRzVXBkYXRlLCBlOgogICAgICAgICAgICAgbG9nKCJDb21taXQgZmFpbGVkIGJlY2F1c2UgdGhl
IGNoZWNrb3V0IGlzIG91dCBvZiBkYXRlLiAgUGxlYXNlIHVwZGF0ZSBhbmQgdHJ5IGFnYWluLiIp
CiAgICAgICAgICAgICBsb2coIllvdSBjYW4gcGFzcyAtLW5vLWJ1aWxkIHRvIHNraXAgYnVpbGRp
bmcvdGVzdGluZyBhZnRlciB1cGRhdGUgaWYgeW91IGJlbGlldmUgdGhlIG5ldyBjb21taXRzIGRp
ZCBub3QgYWZmZWN0IHRoZSByZXN1bHRzLiIpCkBAIC02NCw1ICs2NSw1IEBAIGNsYXNzIFN0ZXBT
ZXF1ZW5jZShvYmplY3QpOgogICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2Vfd2l0aF9vdXRw
dXQoKSkKICAgICAgICAgICAgIGlmIG9wdGlvbnMucGFyZW50X2NvbW1hbmQ6CiAgICAgICAgICAg
ICAgICAgY29tbWFuZCA9IHRvb2wuY29tbWFuZF9ieV9uYW1lKG9wdGlvbnMucGFyZW50X2NvbW1h
bmQpCi0gICAgICAgICAgICAgICAgY29tbWFuZC5oYW5kbGVfc2NyaXB0X2Vycm9yKHRvb2wsIHBh
dGNoLCBlKQorICAgICAgICAgICAgICAgIGNvbW1hbmQuaGFuZGxlX3NjcmlwdF9lcnJvcih0b29s
LCBzdGF0ZSwgZSkKICAgICAgICAgICAgIFdvcmtRdWV1ZS5leGl0X2FmdGVyX2hhbmRsZWRfZXJy
b3IoZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44729</attachid>
            <date>2009-12-12 00:14:07 -0800</date>
            <delta_ts>2009-12-14 21:27:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32406-20091212001405.patch</filename>
            <type>text/plain</type>
            <size>12077</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5NjA0YWUyLi5lNTAxOGY0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTIt
MTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBDb252ZXJ0IHJvbGxvdXQgdG8gU3Rl
cFNlcXVlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjQwNgorCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHk6CisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgorICAgICAgICAqIFNj
cmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHk6CisKIDIwMDktMTItMTEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZHN0
ZXBzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkKaW5kZXgg
ZDA4ZjYzNS4uZTllNmU1YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2J1aWxkc3RlcHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3Rl
cHMucHkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ29tbWFuZE9wdGlvbnMob2JqZWN0KToKICAg
ICBjbG9zZV9idWcgPSBtYWtlX29wdGlvbigiLS1uby1jbG9zZSIsIGFjdGlvbj0ic3RvcmVfZmFs
c2UiLCBkZXN0PSJjbG9zZV9idWciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkxlYXZlIGJ1ZyBvcGVu
IGFmdGVyIGxhbmRpbmcuIikKICAgICBwb3J0ID0gbWFrZV9vcHRpb24oIi0tcG9ydCIsIGFjdGlv
bj0ic3RvcmUiLCBkZXN0PSJwb3J0IiwgZGVmYXVsdD1Ob25lLCBoZWxwPSJTcGVjaWZ5IGEgcG9y
dCAoZS5nLiwgbWFjLCBxdCwgZ3RrLCAuLi4pLiIpCiAgICAgcmV2aWV3ZXIgPSBtYWtlX29wdGlv
bigiLXIiLCAiLS1yZXZpZXdlciIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0
PSJyZXZpZXdlciIsIGhlbHA9IlVwZGF0ZSBDaGFuZ2VMb2dzIHRvIHNheSBSZXZpZXdlZCBieSBS
RVZJRVdFUi4iKQorICAgIGNvbXBsZXRlX3JvbGxvdXQgPSBtYWtlX29wdGlvbigiLS1jb21wbGV0
ZS1yb2xsb3V0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iY29tcGxldGVfcm9sbG91dCIs
IGhlbHA9IkNvbW1pdCB0aGUgcmV2ZXJ0IGFuZCByZS1vcGVuIHRoZSBvcmlnaW5hbCBidWcuIikK
IAogCiBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKQEAgLTc1LDExICs3Niw1MCBAQCBjbGFz
cyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
ciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKIAorIyBGSVhNRTogVW5pZnkgd2l0aCBT
dGVwU2VxdWVuY2U/ICBJJ20gbm90IHN1cmUgeWV0IHdoaWNoIGlzIHRoZSBiZXR0ZXIgZGVzaWdu
LgorY2xhc3MgTWV0YVN0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBzdWJzdGVwcyA9IFtdICMgT3Zl
cnJpZGUgaW4gc3ViY2xhc3NlcworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25z
KToKKyAgICAgICAgQWJzdHJhY3RTdGVwLl9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMpCisg
ICAgICAgIHNlbGYuX3N0ZXBfaW5zdGFuY2VzID0gW10KKyAgICAgICAgZm9yIHN0ZXBfY2xhc3Mg
aW4gc2VsZi5zdWJzdGVwczoKKyAgICAgICAgICAgIHNlbGYuX3N0ZXBfaW5zdGFuY2VzLmFwcGVu
ZChzdGVwX2NsYXNzKHRvb2wsIG9wdGlvbnMpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRl
ZiBfY29sbGVjdF9vcHRpb25zX2Zyb21fc3RlcHMoc3RlcHMpOgorICAgICAgICBjb2xsZWN0ZWRf
b3B0aW9ucyA9IFtdCisgICAgICAgIGZvciBzdGVwIGluIHN0ZXBzOgorICAgICAgICAgICAgY29s
bGVjdGVkX29wdGlvbnMgPSBjb2xsZWN0ZWRfb3B0aW9ucyArIHN0ZXAub3B0aW9ucygpCisgICAg
ICAgIHJldHVybiBjb2xsZWN0ZWRfb3B0aW9ucworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IG9wdGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJuIGNscy5fY29sbGVjdF9vcHRpb25zX2Zyb21f
c3RlcHMoY2xzLnN1YnN0ZXBzKQorCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CisgICAgICAg
IGZvciBzdGVwIGluIHNlbGYuX3N0ZXBfaW5zdGFuY2VzOgorICAgICAgICAgICAgIHN0ZXAucnVu
KHN0YXRlKQorCisKIGNsYXNzIFByZXBhcmVDaGFuZ2Vsb2dTdGVwKEFic3RyYWN0U3RlcCk6CiAg
ICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBh
cmUtQ2hhbmdlTG9nIikKIAogCitjbGFzcyBQcmVwYXJlQ2hhbmdlbG9nRm9yUmV2ZXJ0U3RlcChB
YnN0cmFjdFN0ZXApOgorICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgorICAgICAgICAjIEZpcnN0
LCBkaXNjYXJkIHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0LgorICAgICAg
ICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCisgICAgICAgIGNoYW5n
ZWxvZ19wYXRocyA9IHNlbGYuX3Rvb2wuc2NtKCkubW9kaWZpZWRfY2hhbmdlbG9ncygpCisgICAg
ICAgIHNlbGYuX3Rvb2wuc2NtKCkucmV2ZXJ0X2ZpbGVzKGNoYW5nZWxvZ19wYXRocykKKworICAg
ICAgICAjIFNlY29uZCwgbWFrZSBuZXcgQ2hhbmdlTG9nIGVudHJpZXMgZm9yIHRoaXMgcm9sbG91
dC4KKyAgICAgICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRk
aW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4KKyAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicHJlcGFy
ZS1DaGFuZ2VMb2ciKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3Bh
dGhzOgorICAgICAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3Jl
dmVydChzdGF0ZVsicmV2aXNpb24iXSkKKworCiBjbGFzcyBDbGVhbldvcmtpbmdEaXJlY3RvcnlT
dGVwKEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMs
IGFsbG93X2xvY2FsX2NvbW1pdHM9RmFsc2UpOgogICAgICAgICBBYnN0cmFjdFN0ZXAuX19pbml0
X18oc2VsZiwgdG9vbCwgb3B0aW9ucykKQEAgLTEyNyw2ICsxNjcsMTEgQEAgY2xhc3MgQXBwbHlQ
YXRjaFN0ZXAoQWJzdHJhY3RTdGVwKToKICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5hcHBseV9w
YXRjaChzdGF0ZVsicGF0Y2giXSwgZm9yY2U9c2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmUp
CiAKIAorY2xhc3MgUmV2ZXJ0UmV2aXNpb25TdGVwKEFic3RyYWN0U3RlcCk6CisgICAgZGVmIHJ1
bihzZWxmLCBzdGF0ZSk6CisgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuYXBwbHlfcmV2ZXJzZV9k
aWZmKHN0YXRlWyJyZXZpc2lvbiJdKQorCisKIGNsYXNzIEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5T
dGVwKEFic3RyYWN0U3RlcCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG9wdGlvbnMoY2xz
KToKQEAgLTI4MCw2ICszMjUsMzYgQEAgY2xhc3MgQ2xvc2VCdWdGb3JMYW5kRGlmZlN0ZXAoQWJz
dHJhY3RTdGVwKToKICAgICAgICAgICAgIGxvZygiTm8gYnVnIGlkIHByb3ZpZGVkLiIpCiAKIAor
Y2xhc3MgQ29tcGxldGVSb2xsb3V0KE1ldGFTdGVwKToKKyAgICBzdWJzdGVwcyA9IFsKKyAgICAg
ICAgQnVpbGRTdGVwLAorICAgICAgICBDb21taXRTdGVwLAorICAgIF0KKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CisgICAgICAgIGNvbGxlY3RlZF9vcHRpb25zID0g
Y2xzLl9jb2xsZWN0X29wdGlvbnNfZnJvbV9zdGVwcyhjbHMuc3Vic3RlcHMpCisgICAgICAgIGNv
bGxlY3RlZF9vcHRpb25zLmFwcGVuZChDb21tYW5kT3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0KQor
ICAgICAgICByZXR1cm4gY29sbGVjdGVkX29wdGlvbnMKKworICAgIGRlZiBydW4oc2VsZiwgc3Rh
dGUpOgorICAgICAgICBidWdfaWQgPSBzdGF0ZVsiYnVnX2lkIl0KKyAgICAgICAgIyBGSVhNRTog
RnVsbHkgYXV0b21hdGVkIHJvbGxvdXQgaXMgbm90IDEwMCUgaWRpb3QtcHJvb2YgeWV0LCBzbyBm
b3Igbm93IGp1c3QgbG9nIHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBjb21wbGV0ZSB0aGUg
cm9sbG91dC4KKyAgICAgICAgIyBPbmNlIHdlIHRydXN0IHJvbGxvdXQgd2Ugd2lsbCByZW1vdmUg
dGhpcyBvcHRpb24uCisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmNvbXBsZXRlX3JvbGxv
dXQ6CisgICAgICAgICAgICBsb2coIlxuTk9URTogUm9sbG91dCBzdXBwb3J0IGlzIGV4cGVyaW1l
bnRhbC5cblBsZWFzZSB2ZXJpZnkgdGhlIHJvbGxvdXQgZGlmZiBhbmQgdXNlIFwiYnVnemlsbGEt
dG9vbCBsYW5kLWRpZmYgJXNcIiB0byBjb21taXQgdGhlIHJvbGxvdXQuIiAlIGJ1Z19pZCkKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIE1ldGFTdGVwLnJ1bihzZWxmLCBzdGF0ZSkKKwor
ICAgICAgICBpZiBub3QgYnVnX2lkOgorICAgICAgICAgICAgbG9nKHN0YXRlWyJjb21taXRfdGV4
dCJdKQorICAgICAgICAgICAgbG9nKCJObyBidWdzIHdlcmUgdXBkYXRlZCBvciByZS1vcGVuZWQg
dG8gcmVmbGVjdCB0aGlzIHJvbGxvdXQuIikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAj
IEZJWE1FOiBJJ20gbm90IHN1cmUgc3RhdGVbImNvbW1pdF90ZXh0Il0gaXMgcXVpdGUgcmlnaHQg
aGVyZS4KKyAgICAgICAgc2VsZi5fdG9vbC5idWdzLnJlb3Blbl9idWcoYnVnX2lkLCBzdGF0ZVsi
Y29tbWl0X3RleHQiXSkKKworCiAjIEZJWE1FOiBUaGlzIGNsYXNzIGlzIGEgZGlub3NhdXIgYW5k
IHNob3VsZCBiZSBleHRpbmN0IHNvb24uCiBjbGFzcyBCdWlsZFN0ZXBzOgogICAgICMgRklYTUU6
IFRoZSBvcHRpb25zIHNob3VsZCByZWFsbHkgbGl2ZSBvbiBlYWNoICJTdGVwIiBvYmplY3QuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQucHkKaW5k
ZXggOWE4NWFlZi4uMGI2ZTNhYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jb21tYW5kcy9kb3dubG9hZC5weQpAQCAtMzQsNyArMzQsNyBAQCBmcm9tIG9wdHBhcnNlIGlt
cG9ydCBtYWtlX29wdGlvbgogCiBmcm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IHBhcnNlX2J1
Z19pZAogIyBGSVhNRTogVGhpcyBsaXN0IGlzIHJlZGljdWxvdXMuICBXZSBuZWVkIHRvIGxlYXJu
IHRoZSB3YXlzIG9mIF9fYWxsX18uCi1mcm9tIG1vZHVsZXMuYnVpbGRzdGVwcyBpbXBvcnQgQ29t
bWFuZE9wdGlvbnMsIEJ1aWxkU3RlcHMsIEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5TdGVwLCBVcGRh
dGVDaGFuZ2Vsb2dzV2l0aFJldmlld2VyU3RlcCwgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwg
VXBkYXRlU3RlcCwgQXBwbHlQYXRjaFN0ZXAsIEJ1aWxkU3RlcCwgQ2hlY2tTdHlsZVN0ZXAsIFJ1
blRlc3RzU3RlcCwgQ29tbWl0U3RlcCwgQ2xvc2VQYXRjaFN0ZXAsIENsb3NlQnVnU3RlcCwgQ2xv
c2VCdWdGb3JMYW5kRGlmZlN0ZXAsIFByZXBhcmVDaGFuZ2Vsb2dTdGVwCitmcm9tIG1vZHVsZXMu
YnVpbGRzdGVwcyBpbXBvcnQgQ29tbWFuZE9wdGlvbnMsIEJ1aWxkU3RlcHMsIEVuc3VyZUJ1aWxk
ZXJzQXJlR3JlZW5TdGVwLCBVcGRhdGVDaGFuZ2Vsb2dzV2l0aFJldmlld2VyU3RlcCwgQ2xlYW5X
b3JraW5nRGlyZWN0b3J5U3RlcCwgVXBkYXRlU3RlcCwgQXBwbHlQYXRjaFN0ZXAsIEJ1aWxkU3Rl
cCwgQ2hlY2tTdHlsZVN0ZXAsIFJ1blRlc3RzU3RlcCwgQ29tbWl0U3RlcCwgQ2xvc2VQYXRjaFN0
ZXAsIENsb3NlQnVnU3RlcCwgQ2xvc2VCdWdGb3JMYW5kRGlmZlN0ZXAsIFByZXBhcmVDaGFuZ2Vs
b2dTdGVwLCBQcmVwYXJlQ2hhbmdlbG9nRm9yUmV2ZXJ0U3RlcCwgUmV2ZXJ0UmV2aXNpb25TdGVw
LCBDb21wbGV0ZVJvbGxvdXQKIGZyb20gbW9kdWxlcy5jaGFuZ2Vsb2dzIGltcG9ydCBDaGFuZ2VM
b2cKIGZyb20gbW9kdWxlcy5jb21tZW50cyBpbXBvcnQgYnVnX2NvbW1lbnRfZnJvbV9jb21taXRf
dGV4dAogZnJvbSBtb2R1bGVzLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKQEAgLTI3MSwy
OCArMjcxLDE4IEBAIGNsYXNzIExhbmRQYXRjaGVzKEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFu
ZCk6CiAgICAgICAgIHJldHVybiBhbGxfcGF0Y2hlcwogCiAKLSMgRklYTUU6IFJlcXVpcmVzIHVu
aXQgdGVzdC4KIGNsYXNzIFJvbGxvdXQoQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJyb2xsb3V0Igog
ICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAg
ICAgICAgb3B0aW9ucyA9IEJ1aWxkU3RlcHMuY2xlYW5pbmdfb3B0aW9ucygpCi0gICAgICAgIG9w
dGlvbnMgKz0gQnVpbGRTdGVwcy5idWlsZF9vcHRpb25zKCkKLSAgICAgICAgb3B0aW9ucyArPSBC
dWlsZFN0ZXBzLmxhbmRfb3B0aW9ucygpCi0gICAgICAgIG9wdGlvbnMuYXBwZW5kKG1ha2Vfb3B0
aW9uKCItLWNvbXBsZXRlLXJvbGxvdXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJjb21w
bGV0ZV9yb2xsb3V0IiwgaGVscD0iQ29tbWl0IHRoZSByZXZlcnQgYW5kIHJlLW9wZW4gdGhlIG9y
aWdpbmFsIGJ1Zy4iKSkKLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiUmV2ZXJ0IHRo
ZSBnaXZlbiByZXZpc2lvbiBpbiB0aGUgd29ya2luZyBjb3B5IGFuZCBvcHRpb25hbGx5IGNvbW1p
dCB0aGUgcmV2ZXJ0IGFuZCByZS1vcGVuIHRoZSBvcmlnaW5hbCBidWciLCAiUkVWSVNJT04gW0JV
R0lEXSIsIG9wdGlvbnM9b3B0aW9ucykKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2Ny
ZWF0ZV9jaGFuZ2Vsb2dzX2Zvcl9yZXZlcnQodG9vbCwgcmV2aXNpb24pOgotICAgICAgICAjIEZp
cnN0LCBkaXNjYXJkIHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0LgotICAg
ICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSB0b29sLnNjbSgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQot
ICAgICAgICB0b29sLnNjbSgpLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCi0KLSAgICAg
ICAgIyBTZWNvbmQsIG1ha2UgbmV3IENoYW5nZUxvZyBlbnRyaWVzIGZvciB0aGlzIHJvbGxvdXQu
Ci0gICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGlu
ZyBhIC0tcmV2ZXJ0PSBvcHRpb24uCi0gICAgICAgIFByZXBhcmVDaGFuZ2Vsb2dTdGVwKHRvb2ws
IE5vbmUpLnJ1bih7fSkKLSAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxvZ19w
YXRoczoKLSAgICAgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkudXBkYXRlX2Zvcl9y
ZXZlcnQocmV2aXNpb24pCisgICAgICAgIHNlbGYuX3NlcXVlbmNlID0gU3RlcFNlcXVlbmNlKFsK
KyAgICAgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAsCisgICAgICAgICAgICBVcGRh
dGVTdGVwLAorICAgICAgICAgICAgUmV2ZXJ0UmV2aXNpb25TdGVwLAorICAgICAgICAgICAgUHJl
cGFyZUNoYW5nZWxvZ0ZvclJldmVydFN0ZXAsCisgICAgICAgICAgICBDb21wbGV0ZVJvbGxvdXQs
CisgICAgICAgIF0pCisgICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgIlJldmVydCB0aGUg
Z2l2ZW4gcmV2aXNpb24gaW4gdGhlIHdvcmtpbmcgY29weSBhbmQgb3B0aW9uYWxseSBjb21taXQg
dGhlIHJldmVydCBhbmQgcmUtb3BlbiB0aGUgb3JpZ2luYWwgYnVnIiwgIlJFVklTSU9OIFtCVUdJ
RF0iLCBvcHRpb25zPXNlbGYuX3NlcXVlbmNlLm9wdGlvbnMoKSkKIAogICAgIEBzdGF0aWNtZXRo
b2QKICAgICBkZWYgX3BhcnNlX2J1Z19pZF9mcm9tX3JldmlzaW9uX2RpZmYodG9vbCwgcmV2aXNp
b24pOgpAQCAtMzE2LDE3ICszMDYsOCBAQCBjbGFzcyBSb2xsb3V0KENvbW1hbmQpOgogICAgICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBwYXJzZSBidWcgbnVt
YmVyIGZyb20gZGlmZi4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRhdGVkL3Jlb3BlbmVkIGFmdGVyIHRo
ZSByb2xsb3V0LiIpCiAKLSAgICAgICAgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCh0b29sLCBv
cHRpb25zKS5ydW4oe30pCi0gICAgICAgIFVwZGF0ZVN0ZXAodG9vbCwgb3B0aW9ucykucnVuKHt9
KQotICAgICAgICB0b29sLnNjbSgpLmFwcGx5X3JldmVyc2VfZGlmZihyZXZpc2lvbikKLSAgICAg
ICAgc2VsZi5fY3JlYXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLCByZXZpc2lvbikKLQot
ICAgICAgICAjIEZJWE1FOiBGdWxseSBhdXRvbWF0ZWQgcm9sbG91dCBpcyBub3QgMTAwJSBpZGlv
dC1wcm9vZiB5ZXQsIHNvIGZvciBub3cganVzdCBsb2cgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93
IHRvIGNvbXBsZXRlIHRoZSByb2xsb3V0LgotICAgICAgICAjIE9uY2Ugd2UgdHJ1c3Qgcm9sbG91
dCB3ZSB3aWxsIHJlbW92ZSB0aGlzIG9wdGlvbi4KLSAgICAgICAgaWYgbm90IG9wdGlvbnMuY29t
cGxldGVfcm9sbG91dDoKLSAgICAgICAgICAgIGxvZygiXG5OT1RFOiBSb2xsb3V0IHN1cHBvcnQg
aXMgZXhwZXJpbWVudGFsLlxuUGxlYXNlIHZlcmlmeSB0aGUgcm9sbG91dCBkaWZmIGFuZCB1c2Ug
XCJidWd6aWxsYS10b29sIGxhbmQtZGlmZiAlc1wiIHRvIGNvbW1pdCB0aGUgcm9sbG91dC4iICUg
YnVnX2lkKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBmdW5jdGlv
biBkb2VzIG5vdCBleGlzdCEhCi0gICAgICAgICAgICAjIGNvbW1lbnRfdGV4dCA9IFdlYktpdExh
bmRpbmdTY3JpcHRzLmJ1aWxkX2FuZF9jb21taXQodG9vbC5zY20oKSwgb3B0aW9ucykKLSAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJPT1BTISBUaGlzIG9wdGlvbiBpcyBub3QgaW1wbGVt
ZW50ZWQgKHlldCkuIikKLSAgICAgICAgICAgIHNlbGYuX3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91
dCh0b29sLCBidWdfaWQsIGNvbW1lbnRfdGV4dCkKKyAgICAgICAgc3RhdGUgPSB7CisgICAgICAg
ICAgICAicmV2aXNpb24iOiByZXZpc2lvbiwKKyAgICAgICAgICAgICJidWdfaWQiOiBidWdfaWQs
CisgICAgICAgIH0KKyAgICAgICAgc2VsZi5fc2VxdWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3Jz
KHRvb2wsIG9wdGlvbnMsIHN0YXRlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5CmluZGV4IGZmMjA5ZDkuLmVl
MTcyOTYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9k
b3dubG9hZF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29t
bWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRG93bmxv
YWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAgICAgICAgb3B0aW9ucy5idWlsZCA9IFRy
dWUKICAgICAgICAgb3B0aW9ucy50ZXN0ID0gVHJ1ZQogICAgICAgICBvcHRpb25zLmNsb3NlX2J1
ZyA9IFRydWUKKyAgICAgICAgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0ID0gRmFsc2UKICAgICAg
ICAgcmV0dXJuIG9wdGlvbnMKIAogICAgIGRlZiB0ZXN0X2J1aWxkKHNlbGYpOgpAQCAtODMsMyAr
ODQsMTMgQEAgY2xhc3MgRG93bmxvYWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAgICBk
ZWYgdGVzdF9sYW5kX3BhdGNoZXMoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIy
IHJldmlld2VkIHBhdGNoZXMgZm91bmQgb24gYnVnIDQyLlxuUHJvY2Vzc2luZyAyIHBhdGNoZXMg
ZnJvbSAxIGJ1Zy5cblVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG5Qcm9jZXNzaW5nIHBhdGNo
IDE5NyBmcm9tIGJ1ZyA0Mi5cbkJ1aWxkaW5nIFdlYktpdFxuVXBkYXRpbmcgd29ya2luZyBkaXJl
Y3RvcnlcblByb2Nlc3NpbmcgcGF0Y2ggMTI4IGZyb20gYnVnIDQyLlxuQnVpbGRpbmcgV2ViS2l0
XG4iCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhMYW5kUGF0Y2hlcygpLCBb
NDJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3Rfcm9sbG91dChzZWxmKToKKyAgICAgICAgZXhw
ZWN0ZWRfc3RkZXJyID0gIlVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG5SdW5uaW5nIHByZXBh
cmUtQ2hhbmdlTG9nXG5cbk5PVEU6IFJvbGxvdXQgc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG5Q
bGVhc2UgdmVyaWZ5IHRoZSByb2xsb3V0IGRpZmYgYW5kIHVzZSBcImJ1Z3ppbGxhLXRvb2wgbGFu
ZC1kaWZmIDEyMzQ1XCIgdG8gY29tbWl0IHRoZSByb2xsb3V0LlxuIgorICAgICAgICBzZWxmLmFz
c2VydF9leGVjdXRlX291dHB1dHMoUm9sbG91dCgpLCBbODUyXSwgb3B0aW9ucz1zZWxmLl9kZWZh
dWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgIGRl
ZiB0ZXN0X2NvbXBsZXRlX3JvbGxvdXQoc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9k
ZWZhdWx0X29wdGlvbnMoKQorICAgICAgICBvcHRpb25zLmNvbXBsZXRlX3JvbGxvdXQgPSBUcnVl
CisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeVxu
UnVubmluZyBwcmVwYXJlLUNoYW5nZUxvZ1xuXG5OT1RFOiBSb2xsb3V0IHN1cHBvcnQgaXMgZXhw
ZXJpbWVudGFsLlxuUGxlYXNlIHZlcmlmeSB0aGUgcm9sbG91dCBkaWZmIGFuZCB1c2UgXCJidWd6
aWxsYS10b29sIGxhbmQtZGlmZiAxMjM0NVwiIHRvIGNvbW1pdCB0aGUgcm9sbG91dC5cbiIKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFJvbGxvdXQoKSwgWzg1Ml0sIG9wdGlv
bnM9c2VsZi5fZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRl
cnIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxs
YXRvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wu
cHkKaW5kZXggZTYwMDk0Ny4uNmJlYWU3MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQpAQCAtMTMzLDYgKzEzMyw5IEBAIGNsYXNzIE1v
Y2tTQ00oTW9jayk6CiAgICAgICAgICAgICByZXR1cm4gIlBhdGNoMiIKICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCJCb2d1cyBjb21taXRfaWQgaW4gY29tbWl0X21lc3NhZ2VfZm9yX2xvY2FsX2Nv
bW1pdC4iKQogCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAg
ICAgICAgcmV0dXJuICJEaWZmRm9yUmV2aXNpb24lc1xuaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIzNDUiICUgcmV2aXNpb24KKwogICAgIGRlZiBtb2RpZmllZF9jaGFu
Z2Vsb2dzKHNlbGYpOgogICAgICAgICAjIElkZWFsbHkgd2UnZCByZXR1cm4gc29tZXRoaW5nIG1v
cmUgaW50ZXJlc3RpbmcgaGVyZS4KICAgICAgICAgIyBUaGUgcHJvYmxlbSBpcyB0aGF0IExhbmRE
aWZmIHdpbGwgdHJ5IHRvIGFjdHVhbGx5IHJlYWQgdGhlIHBhdGggZnJvbSBkaXNrIQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44841</attachid>
            <date>2009-12-14 21:27:35 -0800</date>
            <delta_ts>2009-12-14 21:29:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32406-20091214212734.patch</filename>
            <type>text/plain</type>
            <size>12013</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxN2NkYTU2Li5kNDRiZWRmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMDktMTIt
MTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBDb252ZXJ0IHJvbGxvdXQgdG8gU3Rl
cFNlcXVlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjQwNgorCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHk6CisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgorICAgICAgICAqIFNj
cmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHk6CisKKzIwMDktMTItMTQgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KIAogICAgICAgICBbYnp0XSBLaWxsIExhbmRpbmdTZXF1ZW5jZQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weQppbmRleCBkMDhmNjM1Li5lOWU2ZTViIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVpbGRzdGVwcy5weQpAQCAtNDgsNiArNDgsNyBA
QCBjbGFzcyBDb21tYW5kT3B0aW9ucyhvYmplY3QpOgogICAgIGNsb3NlX2J1ZyA9IG1ha2Vfb3B0
aW9uKCItLW5vLWNsb3NlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsb3NlX2J1ZyIs
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0iTGVhdmUgYnVnIG9wZW4gYWZ0ZXIgbGFuZGluZy4iKQogICAg
IHBvcnQgPSBtYWtlX29wdGlvbigiLS1wb3J0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBvcnQi
LCBkZWZhdWx0PU5vbmUsIGhlbHA9IlNwZWNpZnkgYSBwb3J0IChlLmcuLCBtYWMsIHF0LCBndGss
IC4uLikuIikKICAgICByZXZpZXdlciA9IG1ha2Vfb3B0aW9uKCItciIsICItLXJldmlld2VyIiwg
YWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2VyIiwgaGVscD0iVXBk
YXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIpCisgICAgY29tcGxl
dGVfcm9sbG91dCA9IG1ha2Vfb3B0aW9uKCItLWNvbXBsZXRlLXJvbGxvdXQiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJjb21wbGV0ZV9yb2xsb3V0IiwgaGVscD0iQ29tbWl0IHRoZSByZXZl
cnQgYW5kIHJlLW9wZW4gdGhlIG9yaWdpbmFsIGJ1Zy4iKQogCiAKIGNsYXNzIEFic3RyYWN0U3Rl
cChvYmplY3QpOgpAQCAtNzUsMTEgKzc2LDUwIEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3Qp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGlt
cGxlbWVudCIKIAogCisjIEZJWE1FOiBVbmlmeSB3aXRoIFN0ZXBTZXF1ZW5jZT8gIEknbSBub3Qg
c3VyZSB5ZXQgd2hpY2ggaXMgdGhlIGJldHRlciBkZXNpZ24uCitjbGFzcyBNZXRhU3RlcChBYnN0
cmFjdFN0ZXApOgorICAgIHN1YnN0ZXBzID0gW10gIyBPdmVycmlkZSBpbiBzdWJjbGFzc2VzCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMpOgorICAgICAgICBBYnN0cmFjdFN0
ZXAuX19pbml0X18oc2VsZiwgdG9vbCwgb3B0aW9ucykKKyAgICAgICAgc2VsZi5fc3RlcF9pbnN0
YW5jZXMgPSBbXQorICAgICAgICBmb3Igc3RlcF9jbGFzcyBpbiBzZWxmLnN1YnN0ZXBzOgorICAg
ICAgICAgICAgc2VsZi5fc3RlcF9pbnN0YW5jZXMuYXBwZW5kKHN0ZXBfY2xhc3ModG9vbCwgb3B0
aW9ucykpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9jb2xsZWN0X29wdGlvbnNfZnJv
bV9zdGVwcyhzdGVwcyk6CisgICAgICAgIGNvbGxlY3RlZF9vcHRpb25zID0gW10KKyAgICAgICAg
Zm9yIHN0ZXAgaW4gc3RlcHM6CisgICAgICAgICAgICBjb2xsZWN0ZWRfb3B0aW9ucyA9IGNvbGxl
Y3RlZF9vcHRpb25zICsgc3RlcC5vcHRpb25zKCkKKyAgICAgICAgcmV0dXJuIGNvbGxlY3RlZF9v
cHRpb25zCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAg
ICByZXR1cm4gY2xzLl9jb2xsZWN0X29wdGlvbnNfZnJvbV9zdGVwcyhjbHMuc3Vic3RlcHMpCisK
KyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgZm9yIHN0ZXAgaW4gc2VsZi5fc3Rl
cF9pbnN0YW5jZXM6CisgICAgICAgICAgICAgc3RlcC5ydW4oc3RhdGUpCisKKwogY2xhc3MgUHJl
cGFyZUNoYW5nZWxvZ1N0ZXAoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRl
KToKICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQogCiAKK2Ns
YXNzIFByZXBhcmVDaGFuZ2Vsb2dGb3JSZXZlcnRTdGVwKEFic3RyYWN0U3RlcCk6CisgICAgZGVm
IHJ1bihzZWxmLCBzdGF0ZSk6CisgICAgICAgICMgRmlyc3QsIGRpc2NhcmQgdGhlIENoYW5nZUxv
ZyBjaGFuZ2VzIGZyb20gdGhlIHJvbGxvdXQuCisgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wu
c2NtKCkuY2hlY2tvdXRfcm9vdCkKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9v
bC5zY20oKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKCkKKyAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5y
ZXZlcnRfZmlsZXMoY2hhbmdlbG9nX3BhdGhzKQorCisgICAgICAgICMgU2Vjb25kLCBtYWtlIG5l
dyBDaGFuZ2VMb2cgZW50cmllcyBmb3IgdGhpcyByb2xsb3V0LgorICAgICAgICAjIFRoaXMgY291
bGQgbW92ZSB0byBwcmVwYXJlLUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9u
LgorICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJwcmVwYXJlLUNoYW5nZUxvZyIpCisgICAgICAg
IGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CisgICAgICAgICAgICBDaGFu
Z2VMb2coY2hhbmdlbG9nX3BhdGgpLnVwZGF0ZV9mb3JfcmV2ZXJ0KHN0YXRlWyJyZXZpc2lvbiJd
KQorCisKIGNsYXNzIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAoQWJzdHJhY3RTdGVwKToKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwgb3B0aW9ucywgYWxsb3dfbG9jYWxfY29tbWl0cz1G
YWxzZSk6CiAgICAgICAgIEFic3RyYWN0U3RlcC5fX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25z
KQpAQCAtMTI3LDYgKzE2NywxMSBAQCBjbGFzcyBBcHBseVBhdGNoU3RlcChBYnN0cmFjdFN0ZXAp
OgogICAgICAgICBzZWxmLl90b29sLnNjbSgpLmFwcGx5X3BhdGNoKHN0YXRlWyJwYXRjaCJdLCBm
b3JjZT1zZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSkKIAogCitjbGFzcyBSZXZlcnRSZXZp
c2lvblN0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAg
ICAgc2VsZi5fdG9vbC5zY20oKS5hcHBseV9yZXZlcnNlX2RpZmYoc3RhdGVbInJldmlzaW9uIl0p
CisKKwogY2xhc3MgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAoQWJzdHJhY3RTdGVwKToKICAg
ICBAY2xhc3NtZXRob2QKICAgICBkZWYgb3B0aW9ucyhjbHMpOgpAQCAtMjgwLDYgKzMyNSwzNiBA
QCBjbGFzcyBDbG9zZUJ1Z0ZvckxhbmREaWZmU3RlcChBYnN0cmFjdFN0ZXApOgogICAgICAgICAg
ICAgbG9nKCJObyBidWcgaWQgcHJvdmlkZWQuIikKIAogCitjbGFzcyBDb21wbGV0ZVJvbGxvdXQo
TWV0YVN0ZXApOgorICAgIHN1YnN0ZXBzID0gWworICAgICAgICBCdWlsZFN0ZXAsCisgICAgICAg
IENvbW1pdFN0ZXAsCisgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9wdGlvbnMo
Y2xzKToKKyAgICAgICAgY29sbGVjdGVkX29wdGlvbnMgPSBjbHMuX2NvbGxlY3Rfb3B0aW9uc19m
cm9tX3N0ZXBzKGNscy5zdWJzdGVwcykKKyAgICAgICAgY29sbGVjdGVkX29wdGlvbnMuYXBwZW5k
KENvbW1hbmRPcHRpb25zLmNvbXBsZXRlX3JvbGxvdXQpCisgICAgICAgIHJldHVybiBjb2xsZWN0
ZWRfb3B0aW9ucworCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CisgICAgICAgIGJ1Z19pZCA9
IHN0YXRlWyJidWdfaWQiXQorICAgICAgICAjIEZJWE1FOiBGdWxseSBhdXRvbWF0ZWQgcm9sbG91
dCBpcyBub3QgMTAwJSBpZGlvdC1wcm9vZiB5ZXQsIHNvIGZvciBub3cganVzdCBsb2cgd2l0aCBp
bnN0cnVjdGlvbnMgb24gaG93IHRvIGNvbXBsZXRlIHRoZSByb2xsb3V0LgorICAgICAgICAjIE9u
Y2Ugd2UgdHJ1c3Qgcm9sbG91dCB3ZSB3aWxsIHJlbW92ZSB0aGlzIG9wdGlvbi4KKyAgICAgICAg
aWYgbm90IHNlbGYuX29wdGlvbnMuY29tcGxldGVfcm9sbG91dDoKKyAgICAgICAgICAgIGxvZygi
XG5OT1RFOiBSb2xsb3V0IHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuUGxlYXNlIHZlcmlmeSB0
aGUgcm9sbG91dCBkaWZmIGFuZCB1c2UgXCJidWd6aWxsYS10b29sIGxhbmQtZGlmZiAlc1wiIHRv
IGNvbW1pdCB0aGUgcm9sbG91dC4iICUgYnVnX2lkKQorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgTWV0YVN0ZXAucnVuKHNlbGYsIHN0YXRlKQorCisgICAgICAgIGlmIG5vdCBidWdfaWQ6
CisgICAgICAgICAgICBsb2coc3RhdGVbImNvbW1pdF90ZXh0Il0pCisgICAgICAgICAgICBsb2co
Ik5vIGJ1Z3Mgd2VyZSB1cGRhdGVkIG9yIHJlLW9wZW5lZCB0byByZWZsZWN0IHRoaXMgcm9sbG91
dC4iKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgRklYTUU6IEknbSBub3Qgc3VyZSBz
dGF0ZVsiY29tbWl0X3RleHQiXSBpcyBxdWl0ZSByaWdodCBoZXJlLgorICAgICAgICBzZWxmLl90
b29sLmJ1Z3MucmVvcGVuX2J1ZyhidWdfaWQsIHN0YXRlWyJjb21taXRfdGV4dCJdKQorCisKICMg
RklYTUU6IFRoaXMgY2xhc3MgaXMgYSBkaW5vc2F1ciBhbmQgc2hvdWxkIGJlIGV4dGluY3Qgc29v
bi4KIGNsYXNzIEJ1aWxkU3RlcHM6CiAgICAgIyBGSVhNRTogVGhlIG9wdGlvbnMgc2hvdWxkIHJl
YWxseSBsaXZlIG9uIGVhY2ggIlN0ZXAiIG9iamVjdC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weQppbmRleCA5YTg1YWVmLi4wYjZlM2FhIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5
CkBAIC0zNCw3ICszNCw3IEBAIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKIGZy
b20gbW9kdWxlcy5idWd6aWxsYSBpbXBvcnQgcGFyc2VfYnVnX2lkCiAjIEZJWE1FOiBUaGlzIGxp
c3QgaXMgcmVkaWN1bG91cy4gIFdlIG5lZWQgdG8gbGVhcm4gdGhlIHdheXMgb2YgX19hbGxfXy4K
LWZyb20gbW9kdWxlcy5idWlsZHN0ZXBzIGltcG9ydCBDb21tYW5kT3B0aW9ucywgQnVpbGRTdGVw
cywgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAsIFVwZGF0ZUNoYW5nZWxvZ3NXaXRoUmV2aWV3
ZXJTdGVwLCBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwLCBVcGRhdGVTdGVwLCBBcHBseVBhdGNo
U3RlcCwgQnVpbGRTdGVwLCBDaGVja1N0eWxlU3RlcCwgUnVuVGVzdHNTdGVwLCBDb21taXRTdGVw
LCBDbG9zZVBhdGNoU3RlcCwgQ2xvc2VCdWdTdGVwLCBDbG9zZUJ1Z0ZvckxhbmREaWZmU3RlcCwg
UHJlcGFyZUNoYW5nZWxvZ1N0ZXAKK2Zyb20gbW9kdWxlcy5idWlsZHN0ZXBzIGltcG9ydCBDb21t
YW5kT3B0aW9ucywgQnVpbGRTdGVwcywgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAsIFVwZGF0
ZUNoYW5nZWxvZ3NXaXRoUmV2aWV3ZXJTdGVwLCBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwLCBV
cGRhdGVTdGVwLCBBcHBseVBhdGNoU3RlcCwgQnVpbGRTdGVwLCBDaGVja1N0eWxlU3RlcCwgUnVu
VGVzdHNTdGVwLCBDb21taXRTdGVwLCBDbG9zZVBhdGNoU3RlcCwgQ2xvc2VCdWdTdGVwLCBDbG9z
ZUJ1Z0ZvckxhbmREaWZmU3RlcCwgUHJlcGFyZUNoYW5nZWxvZ1N0ZXAsIFByZXBhcmVDaGFuZ2Vs
b2dGb3JSZXZlcnRTdGVwLCBSZXZlcnRSZXZpc2lvblN0ZXAsIENvbXBsZXRlUm9sbG91dAogZnJv
bSBtb2R1bGVzLmNoYW5nZWxvZ3MgaW1wb3J0IENoYW5nZUxvZwogZnJvbSBtb2R1bGVzLmNvbW1l
bnRzIGltcG9ydCBidWdfY29tbWVudF9mcm9tX2NvbW1pdF90ZXh0CiBmcm9tIG1vZHVsZXMuZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgpAQCAtMjcxLDI4ICsyNzEsMTggQEAgY2xhc3MgTGFu
ZFBhdGNoZXMoQWJzdHJhY3RQYXRjaExhbmRpbmdDb21tYW5kKToKICAgICAgICAgcmV0dXJuIGFs
bF9wYXRjaGVzCiAKIAotIyBGSVhNRTogUmVxdWlyZXMgdW5pdCB0ZXN0LgogY2xhc3MgUm9sbG91
dChDb21tYW5kKToKICAgICBuYW1lID0gInJvbGxvdXQiCiAgICAgc2hvd19pbl9tYWluX2hlbHAg
PSBUcnVlCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gQnVpbGRT
dGVwcy5jbGVhbmluZ19vcHRpb25zKCkKLSAgICAgICAgb3B0aW9ucyArPSBCdWlsZFN0ZXBzLmJ1
aWxkX29wdGlvbnMoKQotICAgICAgICBvcHRpb25zICs9IEJ1aWxkU3RlcHMubGFuZF9vcHRpb25z
KCkKLSAgICAgICAgb3B0aW9ucy5hcHBlbmQobWFrZV9vcHRpb24oIi0tY29tcGxldGUtcm9sbG91
dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImNvbXBsZXRlX3JvbGxvdXQiLCBoZWxwPSJD
b21taXQgdGhlIHJldmVydCBhbmQgcmUtb3BlbiB0aGUgb3JpZ2luYWwgYnVnLiIpKQotICAgICAg
ICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICJSZXZlcnQgdGhlIGdpdmVuIHJldmlzaW9uIGluIHRo
ZSB3b3JraW5nIGNvcHkgYW5kIG9wdGlvbmFsbHkgY29tbWl0IHRoZSByZXZlcnQgYW5kIHJlLW9w
ZW4gdGhlIG9yaWdpbmFsIGJ1ZyIsICJSRVZJU0lPTiBbQlVHSURdIiwgb3B0aW9ucz1vcHRpb25z
KQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY3JlYXRlX2NoYW5nZWxvZ3NfZm9yX3Jl
dmVydCh0b29sLCByZXZpc2lvbik6Ci0gICAgICAgICMgRmlyc3QsIGRpc2NhcmQgdGhlIENoYW5n
ZUxvZyBjaGFuZ2VzIGZyb20gdGhlIHJvbGxvdXQuCi0gICAgICAgIGNoYW5nZWxvZ19wYXRocyA9
IHRvb2wuc2NtKCkubW9kaWZpZWRfY2hhbmdlbG9ncygpCi0gICAgICAgIHRvb2wuc2NtKCkucmV2
ZXJ0X2ZpbGVzKGNoYW5nZWxvZ19wYXRocykKLQotICAgICAgICAjIFNlY29uZCwgbWFrZSBuZXcg
Q2hhbmdlTG9nIGVudHJpZXMgZm9yIHRoaXMgcm9sbG91dC4KLSAgICAgICAgIyBUaGlzIGNvdWxk
IG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4K
LSAgICAgICAgUHJlcGFyZUNoYW5nZWxvZ1N0ZXAodG9vbCwgTm9uZSkucnVuKHt9KQotICAgICAg
ICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgotICAgICAgICAgICAgQ2hh
bmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChyZXZpc2lvbikKKyAgICAg
ICAgc2VsZi5fc2VxdWVuY2UgPSBTdGVwU2VxdWVuY2UoWworICAgICAgICAgICAgQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5U3RlcCwKKyAgICAgICAgICAgIFVwZGF0ZVN0ZXAsCisgICAgICAgICAgICBS
ZXZlcnRSZXZpc2lvblN0ZXAsCisgICAgICAgICAgICBQcmVwYXJlQ2hhbmdlbG9nRm9yUmV2ZXJ0
U3RlcCwKKyAgICAgICAgICAgIENvbXBsZXRlUm9sbG91dCwKKyAgICAgICAgXSkKKyAgICAgICAg
Q29tbWFuZC5fX2luaXRfXyhzZWxmLCAiUmV2ZXJ0IHRoZSBnaXZlbiByZXZpc2lvbiBpbiB0aGUg
d29ya2luZyBjb3B5IGFuZCBvcHRpb25hbGx5IGNvbW1pdCB0aGUgcmV2ZXJ0IGFuZCByZS1vcGVu
IHRoZSBvcmlnaW5hbCBidWciLCAiUkVWSVNJT04gW0JVR0lEXSIsIG9wdGlvbnM9c2VsZi5fc2Vx
dWVuY2Uub3B0aW9ucygpKQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfcGFyc2VfYnVn
X2lkX2Zyb21fcmV2aXNpb25fZGlmZih0b29sLCByZXZpc2lvbik6CkBAIC0zMTYsMTcgKzMwNiw4
IEBAIGNsYXNzIFJvbGxvdXQoQ29tbWFuZCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgICAgIGxvZygiRmFpbGVkIHRvIHBhcnNlIGJ1ZyBudW1iZXIgZnJvbSBkaWZmLiAgTm8gYnVn
cyB3aWxsIGJlIHVwZGF0ZWQvcmVvcGVuZWQgYWZ0ZXIgdGhlIHJvbGxvdXQuIikKIAotICAgICAg
ICBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwKHRvb2wsIG9wdGlvbnMpLnJ1bih7fSkKLSAgICAg
ICAgVXBkYXRlU3RlcCh0b29sLCBvcHRpb25zKS5ydW4oe30pCi0gICAgICAgIHRvb2wuc2NtKCku
YXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlzaW9uKQotICAgICAgICBzZWxmLl9jcmVhdGVfY2hhbmdl
bG9nc19mb3JfcmV2ZXJ0KHRvb2wsIHJldmlzaW9uKQotCi0gICAgICAgICMgRklYTUU6IEZ1bGx5
IGF1dG9tYXRlZCByb2xsb3V0IGlzIG5vdCAxMDAlIGlkaW90LXByb29mIHlldCwgc28gZm9yIG5v
dyBqdXN0IGxvZyB3aXRoIGluc3RydWN0aW9ucyBvbiBob3cgdG8gY29tcGxldGUgdGhlIHJvbGxv
dXQuCi0gICAgICAgICMgT25jZSB3ZSB0cnVzdCByb2xsb3V0IHdlIHdpbGwgcmVtb3ZlIHRoaXMg
b3B0aW9uLgotICAgICAgICBpZiBub3Qgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0OgotICAgICAg
ICAgICAgbG9nKCJcbk5PVEU6IFJvbGxvdXQgc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG5QbGVh
c2UgdmVyaWZ5IHRoZSByb2xsb3V0IGRpZmYgYW5kIHVzZSBcImJ1Z3ppbGxhLXRvb2wgbGFuZC1k
aWZmICVzXCIgdG8gY29tbWl0IHRoZSByb2xsb3V0LiIgJSBidWdfaWQpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0ISEKLSAg
ICAgICAgICAgICMgY29tbWVudF90ZXh0ID0gV2ViS2l0TGFuZGluZ1NjcmlwdHMuYnVpbGRfYW5k
X2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQotICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJy
b3IoIk9PUFMhIFRoaXMgb3B0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCAoeWV0KS4iKQotICAgICAg
ICAgICAgc2VsZi5fcmVvcGVuX2J1Z19hZnRlcl9yb2xsb3V0KHRvb2wsIGJ1Z19pZCwgY29tbWVu
dF90ZXh0KQorICAgICAgICBzdGF0ZSA9IHsKKyAgICAgICAgICAgICJyZXZpc2lvbiI6IHJldmlz
aW9uLAorICAgICAgICAgICAgImJ1Z19pZCI6IGJ1Z19pZCwKKyAgICAgICAgfQorICAgICAgICBz
ZWxmLl9zZXF1ZW5jZS5ydW5fYW5kX2hhbmRsZV9lcnJvcnModG9vbCwgb3B0aW9ucywgc3RhdGUp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxv
YWRfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93
bmxvYWRfdW5pdHRlc3QucHkKaW5kZXggZmYyMDlkOS4uZTdiZGE0MSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZF91bml0dGVz
dC5weQpAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBEb3dubG9hZENvbW1hbmRzVGVzdChDb21tYW5k
c1Rlc3QpOgogICAgICAgICBvcHRpb25zLmJ1aWxkID0gVHJ1ZQogICAgICAgICBvcHRpb25zLnRl
c3QgPSBUcnVlCiAgICAgICAgIG9wdGlvbnMuY2xvc2VfYnVnID0gVHJ1ZQorICAgICAgICBvcHRp
b25zLmNvbXBsZXRlX3JvbGxvdXQgPSBGYWxzZQogICAgICAgICByZXR1cm4gb3B0aW9ucwogCiAg
ICAgZGVmIHRlc3RfYnVpbGQoc2VsZik6CkBAIC04MywzICs4NCwxMyBAQCBjbGFzcyBEb3dubG9h
ZENvbW1hbmRzVGVzdChDb21tYW5kc1Rlc3QpOgogICAgIGRlZiB0ZXN0X2xhbmRfcGF0Y2hlcyhz
ZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIjIgcmV2aWV3ZWQgcGF0Y2hlcyBmb3Vu
ZCBvbiBidWcgNDIuXG5Qcm9jZXNzaW5nIDIgcGF0Y2hlcyBmcm9tIDEgYnVnLlxuVXBkYXRpbmcg
d29ya2luZyBkaXJlY3RvcnlcblByb2Nlc3NpbmcgcGF0Y2ggMTk3IGZyb20gYnVnIDQyLlxuQnVp
bGRpbmcgV2ViS2l0XG5VcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeVxuUHJvY2Vzc2luZyBwYXRj
aCAxMjggZnJvbSBidWcgNDIuXG5CdWlsZGluZyBXZWJLaXRcbiIKICAgICAgICAgc2VsZi5hc3Nl
cnRfZXhlY3V0ZV9vdXRwdXRzKExhbmRQYXRjaGVzKCksIFs0Ml0sIG9wdGlvbnM9c2VsZi5fZGVm
YXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBk
ZWYgdGVzdF9yb2xsb3V0KHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiVXBkYXRp
bmcgd29ya2luZyBkaXJlY3RvcnlcblJ1bm5pbmcgcHJlcGFyZS1DaGFuZ2VMb2dcblxuTk9URTog
Um9sbG91dCBzdXBwb3J0IGlzIGV4cGVyaW1lbnRhbC5cblBsZWFzZSB2ZXJpZnkgdGhlIHJvbGxv
dXQgZGlmZiBhbmQgdXNlIFwiYnVnemlsbGEtdG9vbCBsYW5kLWRpZmYgMTIzNDVcIiB0byBjb21t
aXQgdGhlIHJvbGxvdXQuXG4iCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhS
b2xsb3V0KCksIFs4NTJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3RfY29tcGxldGVfcm9sbG91
dChzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX2RlZmF1bHRfb3B0aW9ucygpCisgICAg
ICAgIG9wdGlvbnMuY29tcGxldGVfcm9sbG91dCA9IFRydWUKKyAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0gIldpbGwgcmUtb3BlbiBidWcgMTIzNDUgYWZ0ZXIgcm9sbG91dC5cblVwZGF0aW5nIHdv
cmtpbmcgZGlyZWN0b3J5XG5SdW5uaW5nIHByZXBhcmUtQ2hhbmdlTG9nXG5CdWlsZGluZyBXZWJL
aXRcbiIKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFJvbGxvdXQoKSwgWzg1
Ml0sIG9wdGlvbnM9b3B0aW9ucywgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQppbmRl
eCBlNjAwOTQ3Li42YmVhZTczIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvbW9ja19idWd6aWxsYXRvb2wucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L21vY2tfYnVnemlsbGF0b29sLnB5CkBAIC0xMzMsNiArMTMzLDkgQEAgY2xhc3MgTW9ja1NDTShN
b2NrKToKICAgICAgICAgICAgIHJldHVybiAiUGF0Y2gyIgogICAgICAgICByYWlzZSBFeGNlcHRp
b24oIkJvZ3VzIGNvbW1pdF9pZCBpbiBjb21taXRfbWVzc2FnZV9mb3JfbG9jYWxfY29tbWl0LiIp
CiAKKyAgICBkZWYgZGlmZl9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICBy
ZXR1cm4gIkRpZmZGb3JSZXZpc2lvbiVzXG5odHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjM0NSIgJSByZXZpc2lvbgorCiAgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Mo
c2VsZik6CiAgICAgICAgICMgSWRlYWxseSB3ZSdkIHJldHVybiBzb21ldGhpbmcgbW9yZSBpbnRl
cmVzdGluZyBoZXJlLgogICAgICAgICAjIFRoZSBwcm9ibGVtIGlzIHRoYXQgTGFuZERpZmYgd2ls
bCB0cnkgdG8gYWN0dWFsbHkgcmVhZCB0aGUgcGF0aCBmcm9tIGRpc2shCg==
</data>
<flag name="review"
          id="26759"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>