<?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>99884</bug_id>
          
          <creation_ts>2012-10-19 16:20:14 -0700</creation_ts>
          <short_desc>[V8] Vastly simplify V8GCController&apos;s NodeVisitor</short_desc>
          <delta_ts>2012-10-22 11:50:26 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dcarney</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746739</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 16:20:14 -0700</bug_when>
    <thetext>[V8] Vastly simplify V8GCController&apos;s NodeVisitor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746743</commentid>
    <comment_count>1</comment_count>
      <attachid>169718</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 16:22:09 -0700</bug_when>
    <thetext>Created attachment 169718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746753</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 16:35:49 -0700</bug_when>
    <thetext>I didn&apos;t mention this in the ChangeLog, but I also got rid of an entire memcpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746855</commentid>
    <comment_count>3</comment_count>
      <attachid>169718</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-19 19:31:39 -0700</bug_when>
    <thetext>Comment on attachment 169718
Patch

On heavy-GC tests, this should show a speed win, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746860</commentid>
    <comment_count>4</comment_count>
      <attachid>169718</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-19 19:38:52 -0700</bug_when>
    <thetext>Comment on attachment 169718
Patch

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

Looks good at a first glance. Let me take a detailed look later.

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:136
&gt; +    // FIXME: What about &lt;audio&gt;?

Are you caring about that &lt;audio&gt; is an active Node?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746873</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 20:53:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 169718 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169718&amp;action=review
&gt; 
&gt; Looks good at a first glance. Let me take a detailed look later.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:136
&gt; &gt; +    // FIXME: What about &lt;audio&gt;?
&gt; 
&gt; Are you caring about that &lt;audio&gt; is an active Node?

Oh, you&apos;re right.  &lt;audio&gt; inherits from HTMLMediaElement.  I&apos;ll remove the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746874</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 20:54:25 -0700</bug_when>
    <thetext>&gt; On heavy-GC tests, this should show a speed win, no?

Yes.  We can try it on Kentaro&apos;s createElement case if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747007</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-20 15:49:39 -0700</bug_when>
    <thetext>I would like to see the perf results if possible.  On whatever benchmark you like of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747016</commentid>
    <comment_count>8</comment_count>
      <attachid>169779</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 18:08:51 -0700</bug_when>
    <thetext>Created attachment 169779
Updated patch with new PerformanceTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747017</commentid>
    <comment_count>9</comment_count>
      <attachid>169780</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 18:09:41 -0700</bug_when>
    <thetext>Created attachment 169780
perf test results (first five are with patch; last five are without)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747018</commentid>
    <comment_count>10</comment_count>
      <attachid>169781</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 18:17:14 -0700</bug_when>
    <thetext>Created attachment 169781
Updated patch with new PerformanceTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747019</commentid>
    <comment_count>11</comment_count>
      <attachid>169782</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 18:18:42 -0700</bug_when>
    <thetext>Created attachment 169782
gc-mini-tree (first three are with patch; last three are without)

Just for fun, I added a third PerformanceTest with a workload that shows the new algorithm running 20% faster than the old algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747020</commentid>
    <comment_count>12</comment_count>
      <attachid>169783</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 18:29:15 -0700</bug_when>
    <thetext>Created attachment 169783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747035</commentid>
    <comment_count>13</comment_count>
      <attachid>169783</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 20:22:05 -0700</bug_when>
    <thetext>Comment on attachment 169783
Patch

Looks like I broke some tests.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747037</commentid>
    <comment_count>14</comment_count>
      <attachid>169783</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-20 20:30:43 -0700</bug_when>
    <thetext>Comment on attachment 169783
Patch

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

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:136
&gt; +    // FIXME: What about &lt;audio&gt;?

What&apos;s this about?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:147
&gt; +    while (Node* parent = node-&gt;parentOrHostNode())
&gt; +        node = parent;

Don&apos;t we already have a function for this?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:170
&gt; +bool operator&lt;(const ImplicitReference&amp; lhs, const ImplicitReference&amp; rhs)
&gt; +{
&gt; +    return lhs.root() &lt; rhs.root();

I would have named these &quot;left&quot; and &quot;right&quot;

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:208
&gt; +            currentGroup.shrink(0);

Why?  And if so, why not have the Vector declared in the for loop block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747040</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 20:41:19 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 169783 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169783&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:136
&gt; &gt; +    // FIXME: What about &lt;audio&gt;?
&gt; 
&gt; What&apos;s this about?

Kentaro pointed out in Comment #4 that &lt;audio&gt; is fine because it&apos;s a subclass of HTMLMediaElement, which is an ActiveDOMObject.

&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:147
&gt; &gt; +    while (Node* parent = node-&gt;parentOrHostNode())
&gt; &gt; +        node = parent;
&gt; 
&gt; Don&apos;t we already have a function for this?

Not that I know of.

&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:170
&gt; &gt; +bool operator&lt;(const ImplicitReference&amp; lhs, const ImplicitReference&amp; rhs)
&gt; &gt; +{
&gt; &gt; +    return lhs.root() &lt; rhs.root();
&gt; 
&gt; I would have named these &quot;left&quot; and &quot;right&quot;
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:208
&gt; &gt; +            currentGroup.shrink(0);
&gt; 
&gt; Why?  And if so, why not have the Vector declared in the for loop block?

That&apos;s the trick that saves 20% on gc-mini-tree.  If we declared the vector in the for loop block, we&apos;d have to malloc it every time.  Using shrink lets us re-use the buffer for each iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747045</commentid>
    <comment_count>16</comment_count>
      <attachid>169786</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-20 23:05:18 -0700</bug_when>
    <thetext>Created attachment 169786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747125</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-21 09:59:22 -0700</bug_when>
    <thetext>I should re-run the benchmarks with the updated patch.  I&apos;m sure it&apos;s not a regression.  I&apos;m just not sure if mini-tree will show the same improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747264</commentid>
    <comment_count>18</comment_count>
      <attachid>169786</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-21 23:45:48 -0700</bug_when>
    <thetext>Comment on attachment 169786
Patch

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

Looks OK. Please just re-run the benchmarks and verify the speed-up.

&gt; PerformanceTests/ChangeLog:12
&gt; +        * Bindings/gc-forest.html: Added.
&gt; +        * Bindings/gc-mini-tree.html: Added.
&gt; +        * Bindings/gc-tree.html: Added.

It looks like you missed adding these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747708</commentid>
    <comment_count>19</comment_count>
      <attachid>169943</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 11:19:25 -0700</bug_when>
    <thetext>Created attachment 169943
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747709</commentid>
    <comment_count>20</comment_count>
      <attachid>169944</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 11:21:33 -0700</bug_when>
    <thetext>Created attachment 169944
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747713</commentid>
    <comment_count>21</comment_count>
      <attachid>169945</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 11:24:14 -0700</bug_when>
    <thetext>Created attachment 169945
Perf test results (first five are without patch; second five are with patch)

Here&apos;s a summary of the perf tests results (average of five runs):

gc-forest: 1.14% better
gc-mini-tree: 5.09% better
gc-tree: 4.60% better

The performance improvements are icing on this patch (in my view).  The main thing I wanted to do here is to delete the nutty code.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747730</commentid>
    <comment_count>22</comment_count>
      <attachid>169944</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 11:50:21 -0700</bug_when>
    <thetext>Comment on attachment 169944
Patch for landing

Clearing flags on attachment: 169944

Committed r132114: &lt;http://trac.webkit.org/changeset/132114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747731</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 11:50:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169718</attachid>
            <date>2012-10-19 16:22:09 -0700</date>
            <delta_ts>2012-10-20 18:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99884-20121019162052.patch</filename>
            <type>text/plain</type>
            <size>9963</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmYmE5OWU5MjEzMGM0
NjRjYzc4NDRlMmVkMjI0MGU5NDhlMTk4MS4uNDEwYWE0MjA5MTQ5ZWIyNzcxMjdmY2JmMzg3MTQx
OTk5ZDViZDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDEyLTEwLTE5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVmlzaXRvciB3YXMgdmFzdGx5IG1vcmUgY29tcGxp
Y2F0ZWQgdGhhbiBuZWNlc3NhcnkuIFRoaXMgcGF0Y2gKKyAgICAgICAgc2ltcGxpZmllcyB0aGUg
YXBwcm9hY2ggc2lnbmlmaWNhbnRseSBhbmQgaW1wcm92ZXMgdGhlIGFsZ29yaXRobWljCisgICAg
ICAgIGNvbXBsZXhpdHkgZnJvbSBPKE4gbG9nIE4pIHRvIE8oTikuCisKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RWaXNp
dG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSW1wbGljaXRSZWZl
cmVuY2VzRm9yTm9kZVdpdGhFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpyb290
Rm9yR0MpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVZpc2l0b3I6OnZpc2l0RE9NV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlVmlzaXRvcjo6YXBwbHlHcm91cGluZyk6CisgICAgICAg
IChOb2RlVmlzaXRvcik6CisKKzIwMTItMTAtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKwogICAgICAgICBbVjhdIFY4RE9NV3JhcHBlciBzaG91bGQgYXZvaWQgdXNpbmcgaXRz
IGRvY3VtZW50IHBhcmFtZXRlciAoc28gd2UgY2FuIHJlbW92ZSBpdCBzb29uKQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4NzYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkwMDdkYWI5N2Rl
N2VkMzAwMzVjOWE1ZDgwMWRlMDM5YjEyNjdhZTMuLjhjZDgxOGY2Njk1YzBmYmIzNjRjZmQ2NjYz
ZmE5ZmU4OWM3YzA3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5jcHAKQEAgLTEwMSwxOTkgKzEwMSw4NyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAot
Ly8gSW1wbGVtZW50cyB2ODo6UmV0YWluZWRPYmplY3RJbmZvLgotY2xhc3MgVW5zcGVjaWZpZWRH
cm91cCA6IHB1YmxpYyBSZXRhaW5lZE9iamVjdEluZm8geworY2xhc3MgT2JqZWN0VmlzaXRvciA6
IHB1YmxpYyBET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBVbnNwZWNpZmllZEdyb3VwKHZvaWQqIG9iamVjdCkKLSAgICAgICAgOiBtX29iamVjdChv
YmplY3QpCi0gICAgewotICAgICAgICBBU1NFUlQobV9vYmplY3QpOwotICAgIH0KLSAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgRGlzcG9zZSgpIHsgZGVsZXRlIHRoaXM7IH0KLSAgCi0gICAgdmlydHVh
bCBib29sIElzRXF1aXZhbGVudCh2ODo6UmV0YWluZWRPYmplY3RJbmZvKiBvdGhlcikKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChvdGhlcik7Ci0gICAgICAgIHJldHVybiBvdGhlciA9PSB0aGlzIHx8
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJldGFpbmVkT2JqZWN0SW5mbyo+KG90aGVyKS0+R2V0RXF1
aXZhbGVuY2VDbGFzcygpID09IHRoaXMtPkdldEVxdWl2YWxlbmNlQ2xhc3MoKTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIGludHB0cl90IEdldEhhc2goKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB0
ckhhc2g8dm9pZCo+OjpoYXNoKG1fb2JqZWN0KTsKLSAgICB9Ci0gICAgCi0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiBHZXRMYWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gIk9iamVjdCBncm91
cCI7Ci0gICAgfQotCi0gICAgdmlydHVhbCBpbnRwdHJfdCBHZXRFcXVpdmFsZW5jZUNsYXNzKCkK
KyAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqIHN0b3JlLCB2b2lkKiBvYmpl
Y3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9vYmplY3QpOworICAgICAgICBWOERP
TVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpLT52aXNpdERPTVdyYXBwZXIoc3RvcmUs
IG9iamVjdCwgd3JhcHBlcik7CiAgICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQqIG1fb2JqZWN0
OwogfTsKIAotY2xhc3MgR3JvdXBJZCB7Ci1wdWJsaWM6Ci0gICAgR3JvdXBJZCgpIDogbV90eXBl
KE51bGxUeXBlKSwgbV9ncm91cElkKDApIHt9Ci0gICAgR3JvdXBJZChOb2RlKiBub2RlKSA6IG1f
dHlwZShOb2RlVHlwZSksIG1fbm9kZShub2RlKSB7fQotICAgIEdyb3VwSWQodm9pZCogb3RoZXIp
IDogbV90eXBlKE90aGVyVHlwZSksIG1fb3RoZXIob3RoZXIpIHt9Ci0gICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTnVsbFR5cGU7IH0KLSAgICB1aW50cHRyX3Qg
Z3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQotICAgIFJldGFpbmVkT2JqZWN0
SW5mbyogY3JlYXRlUmV0YWluZWRPYmplY3RJbmZvKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgTnVsbFR5cGU6Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgY2FzZSBOb2RlVHlwZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgUmV0
YWluZWRET01JbmZvKG1fbm9kZSk7Ci0gICAgICAgIGNhc2UgT3RoZXJUeXBlOgotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBVbnNwZWNpZmllZEdyb3VwKG1fb3RoZXIpOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KK3N0YXRpYyB2b2lkIGFkZEltcGxp
Y2l0UmVmZXJlbmNlc0Zvck5vZGVXaXRoRXZlbnRMaXN0ZW5lcnMoTm9kZSogbm9kZSwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKK3sKKyAgICBBU1NFUlQobm9kZS0+aGFzRXZl
bnRMaXN0ZW5lcnMoKSk7CisKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+
IGxpc3RlbmVyczsKKworICAgIEV2ZW50TGlzdGVuZXJJdGVyYXRvciBpdGVyYXRvcihub2RlKTsK
KyAgICB3aGlsZSAoRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVu
ZXIoKSkgeworICAgICAgICBpZiAobGlzdGVuZXItPnR5cGUoKSAhPSBFdmVudExpc3RlbmVyOjpK
U0V2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFY4QWJz
dHJhY3RFdmVudExpc3RlbmVyKiB2OGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7CisgICAgICAgIGlmICghdjhsaXN0ZW5lci0+aGFzRXhp
c3RpbmdMaXN0ZW5lck9iamVjdCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxp
c3RlbmVycy5hcHBlbmQodjhsaXN0ZW5lci0+ZXhpc3RpbmdMaXN0ZW5lck9iamVjdFBlcnNpc3Rl
bnRIYW5kbGUoKSk7CiAgICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBlbnVtIFR5cGUgewotICAg
ICAgICBOdWxsVHlwZSwKLSAgICAgICAgTm9kZVR5cGUsCi0gICAgICAgIE90aGVyVHlwZQotICAg
IH07Ci0gICAgVHlwZSBtX3R5cGU7Ci0gICAgdW5pb24gewotICAgICAgICB1aW50cHRyX3QgbV9n
cm91cElkOwotICAgICAgICBOb2RlKiBtX25vZGU7Ci0gICAgICAgIHZvaWQqIG1fb3RoZXI7Ci0g
ICAgfTsKLX07Ci0KLWNsYXNzIEdyb3VwZXJJdGVtIHsKLXB1YmxpYzoKLSAgICBHcm91cGVySXRl
bShHcm91cElkIGdyb3VwSWQsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIDog
bV9ncm91cElkKGdyb3VwSWQpLCBtX3dyYXBwZXIod3JhcHBlcikge30KLSAgICB1aW50cHRyX3Qg
Z3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZC5ncm91cElkKCk7IH0KLSAgICBSZXRh
aW5lZE9iamVjdEluZm8qIGNyZWF0ZVJldGFpbmVkT2JqZWN0SW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JvdXBJZC5jcmVhdGVSZXRhaW5lZE9iamVjdEluZm8oKTsgfQotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAot
cHJpdmF0ZToKLSAgICBHcm91cElkIG1fZ3JvdXBJZDsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiBtX3dyYXBwZXI7Ci19OworICAgIGlmIChsaXN0ZW5lcnMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CiAKLWJvb2wgb3BlcmF0b3I8KGNvbnN0IEdyb3VwZXJJdGVtJiBhLCBjb25z
dCBHcm91cGVySXRlbSYgYikKLXsKLSAgICByZXR1cm4gYS5ncm91cElkKCkgPCBiLmdyb3VwSWQo
KTsKKyAgICB2ODo6Vjg6OkFkZEltcGxpY2l0UmVmZXJlbmNlcyh3cmFwcGVyLCBsaXN0ZW5lcnMu
ZGF0YSgpLCBsaXN0ZW5lcnMuc2l6ZSgpKTsKIH0KIAotdHlwZWRlZiBWZWN0b3I8R3JvdXBlckl0
ZW0+IEdyb3VwZXJMaXN0OwotCi0vLyBJZiB0aGUgbm9kZSBpcyBpbiBkb2N1bWVudCwgcHV0IGl0
IGluIHRoZSBvd25lckRvY3VtZW50J3Mgb2JqZWN0IGdyb3VwLgotLy8KLS8vIElmIGFuIGltYWdl
IGVsZW1lbnQgd2FzIGNyZWF0ZWQgYnkgSmF2YVNjcmlwdCAibmV3IEltYWdlIiwKLS8vIGl0IGlz
IG5vdCBpbiBhIGRvY3VtZW50LiBIb3dldmVyLCBpZiB0aGUgbG9hZCBldmVudCBoYXMgbm90Ci0v
LyBiZWVuIGZpcmVkIChzdGlsbCBvbmxvYWRpbmcpLCBpdCBpcyB0cmVhdGVkIGFzIGluIHRoZSBk
b2N1bWVudC4KLS8vCi0vLyBPdGhlcndpc2UsIHRoZSBub2RlIGlzIHB1dCBpbiBhbiBvYmplY3Qg
Z3JvdXAgaWRlbnRpZmllZCBieSB0aGUgcm9vdAotLy8gZWxlbWVudCBvZiB0aGUgdHJlZSB0byB3
aGljaCBpdCBiZWxvbmdzLgotc3RhdGljIEdyb3VwSWQgY2FsY3VsYXRlR3JvdXBJZChOb2RlKiBu
b2RlKQorc3RhdGljIE5vZGUqIHJvb3RGb3JHQyhOb2RlKiBub2RlKQogeworICAgIC8vIEZJWE1F
OiBXaGF0IGFib3V0IDxhdWRpbz4/CiAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSB8fCAobm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTEltYWdl
RWxlbWVudCo+KG5vZGUpLT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkpCi0gICAgICAgIHJldHVybiBH
cm91cElkKG5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICByZXR1cm4gbm9kZS0+ZG9jdW1lbnQo
KTsKIAotICAgIE5vZGUqIHJvb3QgPSBub2RlOwogICAgIGlmIChub2RlLT5pc0F0dHJpYnV0ZU5v
ZGUoKSkgewotICAgICAgICByb290ID0gc3RhdGljX2Nhc3Q8QXR0cio+KG5vZGUpLT5vd25lckVs
ZW1lbnQoKTsKLSAgICAgICAgLy8gSWYgdGhlIGF0dHJpYnV0ZSBoYXMgbm8gZWxlbWVudCwgbm8g
bmVlZCB0byBwdXQgaXQgaW4gdGhlIGdyb3VwLAotICAgICAgICAvLyBiZWNhdXNlIGl0J2xsIGFs
d2F5cyBiZSBhIGdyb3VwIG9mIDEuCi0gICAgICAgIGlmICghcm9vdCkKLSAgICAgICAgICAgIHJl
dHVybiBHcm91cElkKCk7CisgICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDxBdHRyKj4obm9kZSkt
Pm93bmVyRWxlbWVudCgpOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm4g
MDsKICAgICB9Ci0gICAgd2hpbGUgKE5vZGUqIHBhcmVudCA9IHJvb3QtPnBhcmVudE9ySG9zdE5v
ZGUoKSkKLSAgICAgICAgcm9vdCA9IHBhcmVudDsKIAotICAgIHJldHVybiBHcm91cElkKHJvb3Qp
OwotfQorICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkp
CisgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAKLWNsYXNzIE9iamVjdFZpc2l0b3IgOiBwdWJsaWMg
RE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCB2aXNpdERP
TVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgVjhET01XcmFwcGVyOjpkb21X
cmFwcGVyVHlwZSh3cmFwcGVyKS0+dmlzaXRET01XcmFwcGVyKHN0b3JlLCBvYmplY3QsIHdyYXBw
ZXIpOwotICAgIH0KLX07CisgICAgcmV0dXJuIG5vZGU7Cit9CiAKIGNsYXNzIE5vZGVWaXNpdG9y
IDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IgewogcHVibGljOgogICAgIHZv
aWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIE5vZGUqIG5vZGUsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewotICAgICAgICBpZiAobm9kZS0+aGFzRXZl
bnRMaXN0ZW5lcnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4gPiBsaXN0ZW5lcnM7Ci0gICAgICAgICAgICBFdmVudExpc3RlbmVySXRlcmF0b3IgaXRl
cmF0b3Iobm9kZSk7Ci0gICAgICAgICAgICB3aGlsZSAoRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkgewotICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5l
ci0+dHlwZSgpICE9IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFY4QWJzdHJhY3RFdmVudExp
c3RlbmVyKiB2OGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIq
PihsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgaWYgKCF2OGxpc3RlbmVyLT5oYXNFeGlzdGlu
Z0xpc3RlbmVyT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIGxpc3RlbmVycy5hcHBlbmQodjhsaXN0ZW5lci0+ZXhpc3RpbmdMaXN0ZW5lck9i
amVjdFBlcnNpc3RlbnRIYW5kbGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
IWxpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRJbXBsaWNp
dFJlZmVyZW5jZXMod3JhcHBlciwgbGlzdGVuZXJzLmRhdGEoKSwgbGlzdGVuZXJzLnNpemUoKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCisgICAg
ICAgICAgICBhZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0aEV2ZW50TGlzdGVuZXJzKG5v
ZGUsIHdyYXBwZXIpOwogCi0gICAgICAgIEdyb3VwSWQgZ3JvdXBJZCA9IGNhbGN1bGF0ZUdyb3Vw
SWQobm9kZSk7Ci0gICAgICAgIGlmICghZ3JvdXBJZCkKKyAgICAgICAgTm9kZSogcm9vdCA9IHJv
b3RGb3JHQyhub2RlKTsKKyAgICAgICAgaWYgKCFyb290KQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdyYXBwZXIpKTsK
KyAgICAgICAgR3JvdXBNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ncm91cHMuYWRkKHJvb3QsIFdyYXBw
ZXJWZWN0b3IoKSkuaXRlcmF0b3I7CisgICAgICAgIGl0LT52YWx1ZS5hcHBlbmQod3JhcHBlcik7
CiAgICAgfQogCiAgICAgdm9pZCBhcHBseUdyb3VwaW5nKCkKICAgICB7Ci0gICAgICAgIC8vIEdy
b3VwIGJ5IHNvcnRpbmcgYnkgdGhlIGdyb3VwIGlkLgotICAgICAgICBzdGQ6OnNvcnQobV9ncm91
cGVyLmJlZ2luKCksIG1fZ3JvdXBlci5lbmQoKSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2dyb3VwZXIuc2l6ZSgpOyApIHsKLSAgICAgICAgICAgIC8vIFNlZWsgdG8gdGhl
IG5leHQga2V5IChvciB0aGUgZW5kIG9mIHRoZSBsaXN0KS4KLSAgICAgICAgICAgIHNpemVfdCBu
ZXh0S2V5SW5kZXggPSBtX2dyb3VwZXIuc2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IGk7IGogPCBtX2dyb3VwZXIuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAo
bV9ncm91cGVyW2ldLmdyb3VwSWQoKSAhPSBtX2dyb3VwZXJbal0uZ3JvdXBJZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG5leHRLZXlJbmRleCA9IGo7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChHcm91
cE1hcDo6aXRlcmF0b3IgaXQgPSBtX2dyb3Vwcy5iZWdpbigpOyBpdCAhPSBtX2dyb3Vwcy5lbmQo
KTsgKytpdCkgeworICAgICAgICAgICAgTm9kZSogcm9vdCA9IGl0LT5rZXk7CisgICAgICAgICAg
ICBXcmFwcGVyVmVjdG9yJiBncm91cCA9IGl0LT52YWx1ZTsKIAotICAgICAgICAgICAgQVNTRVJU
KG5leHRLZXlJbmRleCA+IGkpOwotCi0gICAgICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQg
YSBncm91cCBpZiBpdCBoYXMgbW9yZSB0aGFuIG9uZSBvYmplY3QuIElmIGl0IG9ubHkKLSAgICAg
ICAgICAgIC8vIGhhcyBvbmUgb2JqZWN0LCBpdCBoYXMgbm90aGluZyBlbHNlIHRoYXQgbmVlZHMg
dG8gYmUga2VwdCBhbGl2ZS4KLSAgICAgICAgICAgIGlmIChuZXh0S2V5SW5kZXggLSBpIDw9IDEp
IHsKLSAgICAgICAgICAgICAgICBpID0gbmV4dEtleUluZGV4OworICAgICAgICAgICAgQVNTRVJU
KGdyb3VwLnNpemUoKSA+IDApOworICAgICAgICAgICAgaWYgKGdyb3VwLnNpemUoKSA9PSAxKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBz
aXplX3Qgcm9vdEluZGV4ID0gaTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHY4
OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBncm91cDsKLSAgICAgICAgICAgIGdyb3VwLnJlc2Vy
dmVDYXBhY2l0eShuZXh0S2V5SW5kZXggLSBpKTsKLSAgICAgICAgICAgIGZvciAoOyBpIDwgbmV4
dEtleUluZGV4OyArK2kpIHsKLSAgICAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+IHdyYXBwZXIgPSBtX2dyb3VwZXJbaV0ud3JhcHBlcigpOwotICAgICAgICAgICAgICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGdyb3VwLmFwcGVuZCh3
cmFwcGVyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGdyb3VwLnNpemUoKSA+
IDEpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmZ3JvdXBbMF0sIGdy
b3VwLnNpemUoKSwgbV9ncm91cGVyW3Jvb3RJbmRleF0uY3JlYXRlUmV0YWluZWRPYmplY3RJbmZv
KCkpOwogCi0gICAgICAgICAgICBBU1NFUlQoaSA9PSBuZXh0S2V5SW5kZXgpOworICAgICAgICAg
ICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmZ3JvdXBbMF0sIGdyb3VwLnNpemUoKSwgbmV3IFJl
dGFpbmVkRE9NSW5mbyhyb290KSk7CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
R3JvdXBlckxpc3QgbV9ncm91cGVyOworICAgIHR5cGVkZWYgVmVjdG9yPHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4gPiBXcmFwcGVyVmVjdG9yOworICAgIHR5cGVkZWYgSGFzaE1hcDxOb2RlKiwg
V3JhcHBlclZlY3Rvcj4gR3JvdXBNYXA7CisKKyAgICBHcm91cE1hcCBtX2dyb3VwczsKIH07CiAK
IC8vIENyZWF0ZSBvYmplY3QgZ3JvdXBzIGZvciBET00gdHJlZSBub2Rlcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169779</attachid>
            <date>2012-10-20 18:08:51 -0700</date>
            <delta_ts>2012-10-20 18:17:29 -0700</delta_ts>
            <desc>Updated patch with new PerformanceTests</desc>
            <filename>bug-99884-20121020180745.patch</filename>
            <type>text/plain</type>
            <size>12540</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA2NmQ4ZGQ1ZDFmMDM2
ODc1ZTU4Yzg0NDZhZjNkNWEwZDJmZTM4Ny4uMzkyNmMyM2QwZjM2Mjk4ZjRjZjMwMDNlOTBiNjUx
YmE3YWZmNTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVmlzaXRvciB3YXMgdmFzdGx5IG1vcmUgY29tcGxp
Y2F0ZWQgdGhhbiBuZWNlc3NhcnkuIFRoaXMgcGF0Y2gKKyAgICAgICAgc2ltcGxpZmllcyB0aGUg
YXBwcm9hY2ggc2lnbmlmaWNhbnRseSBhbmQgaW1wcm92ZXMgdGhlIGFsZ29yaXRobWljCisgICAg
ICAgIGNvbXBsZXhpdHkgZnJvbSBPKE4gbG9nIE4pIHRvIE8oTikuCisKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RWaXNp
dG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSW1wbGljaXRSZWZl
cmVuY2VzRm9yTm9kZVdpdGhFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpyb290
Rm9yR0MpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVZpc2l0b3I6OnZpc2l0RE9NV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlVmlzaXRvcjo6YXBwbHlHcm91cGluZyk6CisgICAgICAg
IChOb2RlVmlzaXRvcik6CisKIDIwMTItMTAtMjAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25A
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW0FDXSBCdWlsZCBmaXggYWZ0ZXIgcjEzMTkzMwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkw
MDdkYWI5N2RlN2VkMzAwMzVjOWE1ZDgwMWRlMDM5YjEyNjdhZTMuLjQzYjJjMzIzNzAzMWQzMjI0
NGFlY2Q2YTkzYzQ5ZDU2NDFjOWZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTEwMSwxOTkgKzEwMSwxMTYgQEAgcHVibGljOgogICAg
IH0KIH07CiAKLS8vIEltcGxlbWVudHMgdjg6OlJldGFpbmVkT2JqZWN0SW5mby4KLWNsYXNzIFVu
c3BlY2lmaWVkR3JvdXAgOiBwdWJsaWMgUmV0YWluZWRPYmplY3RJbmZvIHsKK2NsYXNzIE9iamVj
dFZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgVW5zcGVjaWZpZWRHcm91cCh2b2lkKiBvYmplY3QpCi0gICAgICAgIDog
bV9vYmplY3Qob2JqZWN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2JqZWN0KTsKLSAgICB9
Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIERpc3Bvc2UoKSB7IGRlbGV0ZSB0aGlzOyB9Ci0gIAot
ICAgIHZpcnR1YWwgYm9vbCBJc0VxdWl2YWxlbnQodjg6OlJldGFpbmVkT2JqZWN0SW5mbyogb3Ro
ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQob3RoZXIpOwotICAgICAgICByZXR1cm4gb3RoZXIg
PT0gdGhpcyB8fCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXRhaW5lZE9iamVjdEluZm8qPihvdGhl
ciktPkdldEVxdWl2YWxlbmNlQ2xhc3MoKSA9PSB0aGlzLT5HZXRFcXVpdmFsZW5jZUNsYXNzKCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCBpbnRwdHJfdCBHZXRIYXNoKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX29iamVjdCk7Ci0gICAgfQotICAgIAotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogR2V0TGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJP
YmplY3QgZ3JvdXAiOwotICAgIH0KLQotICAgIHZpcnR1YWwgaW50cHRyX3QgR2V0RXF1aXZhbGVu
Y2VDbGFzcygpCisgICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwg
dm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fb2JqZWN0KTsKKyAg
ICAgICAgVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dmlzaXRET01XcmFw
cGVyKHN0b3JlLCBvYmplY3QsIHdyYXBwZXIpOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
KiBtX29iamVjdDsKIH07CiAKLWNsYXNzIEdyb3VwSWQgewotcHVibGljOgotICAgIEdyb3VwSWQo
KSA6IG1fdHlwZShOdWxsVHlwZSksIG1fZ3JvdXBJZCgwKSB7fQotICAgIEdyb3VwSWQoTm9kZSog
bm9kZSkgOiBtX3R5cGUoTm9kZVR5cGUpLCBtX25vZGUobm9kZSkge30KLSAgICBHcm91cElkKHZv
aWQqIG90aGVyKSA6IG1fdHlwZShPdGhlclR5cGUpLCBtX290aGVyKG90aGVyKSB7fQotICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE51bGxUeXBlOyB9Ci0gICAg
dWludHB0cl90IGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBSZXRh
aW5lZE9iamVjdEluZm8qIGNyZWF0ZVJldGFpbmVkT2JqZWN0SW5mbygpIGNvbnN0Ci0gICAgewot
ICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIE51bGxUeXBlOgotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGNhc2UgTm9kZVR5cGU6Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IFJldGFpbmVkRE9NSW5mbyhtX25vZGUpOwotICAgICAgICBjYXNlIE90aGVyVHlwZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgVW5zcGVjaWZpZWRHcm91cChtX290aGVyKTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CitzdGF0aWMgdm9p
ZCBhZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0aEV2ZW50TGlzdGVuZXJzKE5vZGUqIG5v
ZGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCit7CisgICAgQVNTRVJUKG5v
ZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpOworCisgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4
OjpWYWx1ZT4gPiBsaXN0ZW5lcnM7CisKKyAgICBFdmVudExpc3RlbmVySXRlcmF0b3IgaXRlcmF0
b3Iobm9kZSk7CisgICAgd2hpbGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gaXRlcmF0b3Iu
bmV4dExpc3RlbmVyKCkpIHsKKyAgICAgICAgaWYgKGxpc3RlbmVyLT50eXBlKCkgIT0gRXZlbnRM
aXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lciogdjhsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4
QWJzdHJhY3RFdmVudExpc3RlbmVyKj4obGlzdGVuZXIpOworICAgICAgICBpZiAoIXY4bGlzdGVu
ZXItPmhhc0V4aXN0aW5nTGlzdGVuZXJPYmplY3QoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKHY4bGlzdGVuZXItPmV4aXN0aW5nTGlzdGVuZXJPYmpl
Y3RQZXJzaXN0ZW50SGFuZGxlKCkpOwogICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgZW51bSBU
eXBlIHsKLSAgICAgICAgTnVsbFR5cGUsCi0gICAgICAgIE5vZGVUeXBlLAotICAgICAgICBPdGhl
clR5cGUKLSAgICB9OwotICAgIFR5cGUgbV90eXBlOwotICAgIHVuaW9uIHsKLSAgICAgICAgdWlu
dHB0cl90IG1fZ3JvdXBJZDsKLSAgICAgICAgTm9kZSogbV9ub2RlOwotICAgICAgICB2b2lkKiBt
X290aGVyOwotICAgIH07Ci19OwotCi1jbGFzcyBHcm91cGVySXRlbSB7Ci1wdWJsaWM6Ci0gICAg
R3JvdXBlckl0ZW0oR3JvdXBJZCBncm91cElkLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKSA6IG1fZ3JvdXBJZChncm91cElkKSwgbV93cmFwcGVyKHdyYXBwZXIpIHt9Ci0gICAg
dWludHB0cl90IGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQuZ3JvdXBJZCgpOyB9
Ci0gICAgUmV0YWluZWRPYmplY3RJbmZvKiBjcmVhdGVSZXRhaW5lZE9iamVjdEluZm8oKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQuY3JlYXRlUmV0YWluZWRPYmplY3RJbmZvKCk7IH0KLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV93cmFw
cGVyOyB9CiAKLXByaXZhdGU6Ci0gICAgR3JvdXBJZCBtX2dyb3VwSWQ7Ci0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gbV93cmFwcGVyOwotfTsKKyAgICBpZiAobGlzdGVuZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi1ib29sIG9wZXJhdG9yPChjb25zdCBHcm91cGVySXRl
bSYgYSwgY29uc3QgR3JvdXBlckl0ZW0mIGIpCi17Ci0gICAgcmV0dXJuIGEuZ3JvdXBJZCgpIDwg
Yi5ncm91cElkKCk7CisgICAgdjg6OlY4OjpBZGRJbXBsaWNpdFJlZmVyZW5jZXMod3JhcHBlciwg
bGlzdGVuZXJzLmRhdGEoKSwgbGlzdGVuZXJzLnNpemUoKSk7CiB9CiAKLXR5cGVkZWYgVmVjdG9y
PEdyb3VwZXJJdGVtPiBHcm91cGVyTGlzdDsKLQotLy8gSWYgdGhlIG5vZGUgaXMgaW4gZG9jdW1l
bnQsIHB1dCBpdCBpbiB0aGUgb3duZXJEb2N1bWVudCdzIG9iamVjdCBncm91cC4KLS8vCi0vLyBJ
ZiBhbiBpbWFnZSBlbGVtZW50IHdhcyBjcmVhdGVkIGJ5IEphdmFTY3JpcHQgIm5ldyBJbWFnZSIs
Ci0vLyBpdCBpcyBub3QgaW4gYSBkb2N1bWVudC4gSG93ZXZlciwgaWYgdGhlIGxvYWQgZXZlbnQg
aGFzIG5vdAotLy8gYmVlbiBmaXJlZCAoc3RpbGwgb25sb2FkaW5nKSwgaXQgaXMgdHJlYXRlZCBh
cyBpbiB0aGUgZG9jdW1lbnQuCi0vLwotLy8gT3RoZXJ3aXNlLCB0aGUgbm9kZSBpcyBwdXQgaW4g
YW4gb2JqZWN0IGdyb3VwIGlkZW50aWZpZWQgYnkgdGhlIHJvb3QKLS8vIGVsZW1lbnQgb2YgdGhl
IHRyZWUgdG8gd2hpY2ggaXQgYmVsb25ncy4KLXN0YXRpYyBHcm91cElkIGNhbGN1bGF0ZUdyb3Vw
SWQoTm9kZSogbm9kZSkKK3N0YXRpYyBOb2RlKiByb290Rm9yR0MoTm9kZSogbm9kZSkKIHsKKyAg
ICAvLyBGSVhNRTogV2hhdCBhYm91dCA8YXVkaW8+PwogICAgIGlmIChub2RlLT5pbkRvY3VtZW50
KCkgfHwgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0
PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKQotICAgICAg
ICByZXR1cm4gR3JvdXBJZChub2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG5vZGUt
PmRvY3VtZW50KCk7CiAKLSAgICBOb2RlKiByb290ID0gbm9kZTsKICAgICBpZiAobm9kZS0+aXNB
dHRyaWJ1dGVOb2RlKCkpIHsKLSAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PEF0dHIqPihub2Rl
KS0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUgaGFzIG5vIGVs
ZW1lbnQsIG5vIG5lZWQgdG8gcHV0IGl0IGluIHRoZSBncm91cCwKLSAgICAgICAgLy8gYmVjYXVz
ZSBpdCdsbCBhbHdheXMgYmUgYSBncm91cCBvZiAxLgotICAgICAgICBpZiAoIXJvb3QpCi0gICAg
ICAgICAgICByZXR1cm4gR3JvdXBJZCgpOworICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8QXR0
cio+KG5vZGUpLT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSByb290LT5wYXJl
bnRPckhvc3ROb2RlKCkpCi0gICAgICAgIHJvb3QgPSBwYXJlbnQ7CiAKLSAgICByZXR1cm4gR3Jv
dXBJZChyb290KTsKKyAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKQorICAgICAgICBub2RlID0gcGFyZW50OworCisgICAgcmV0dXJuIG5vZGU7CiB9CiAK
LWNsYXNzIE9iamVjdFZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRv
ciB7CitjbGFzcyBJbXBsaWNpdFJlZmVyZW5jZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCB2aXNpdERP
TVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIEltcGxpY2l0UmVmZXJlbmNlKE5vZGUqIHJvb3Qs
IHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlcikKKyAgICAgICAgOiBtX3Jvb3Qocm9v
dCkKKyAgICAgICAgLCBtX3dyYXBwZXIod3JhcHBlcikKICAgICB7Ci0gICAgICAgIFY4RE9NV3Jh
cHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnZpc2l0RE9NV3JhcHBlcihzdG9yZSwgb2Jq
ZWN0LCB3cmFwcGVyKTsKICAgICB9CisKKyAgICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9yb290OyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyKCkgY29uc3Qg
eyByZXR1cm4gbV93cmFwcGVyOyB9CisKK3B1YmxpYzoKKyAgICBOb2RlKiBtX3Jvb3Q7CisgICAg
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBtX3dyYXBwZXI7CiB9OwogCitib29sIG9wZXJhdG9y
PChjb25zdCBJbXBsaWNpdFJlZmVyZW5jZSYgbGhzLCBjb25zdCBJbXBsaWNpdFJlZmVyZW5jZSYg
cmhzKQoreworICAgIHJldHVybiBsaHMucm9vdCgpIDwgcmhzLnJvb3QoKTsKK30KKwogY2xhc3Mg
Tm9kZVZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciB7CiBwdWJs
aWM6CiAgICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgTm9kZSogbm9kZSwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKICAgICB7Ci0gICAgICAgIGlmIChu
b2RlLT5oYXNFdmVudExpc3RlbmVycygpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8djg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiA+IGxpc3RlbmVyczsKLSAgICAgICAgICAgIEV2ZW50TGlzdGVuZXJJ
dGVyYXRvciBpdGVyYXRvcihub2RlKTsKLSAgICAgICAgICAgIHdoaWxlIChFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IGl0ZXJhdG9yLm5leHRMaXN0ZW5lcigpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGxpc3RlbmVyLT50eXBlKCkgIT0gRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyVHlw
ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgVjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIqIHY4bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZl
bnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKLSAgICAgICAgICAgICAgICBpZiAoIXY4bGlzdGVuZXIt
Pmhhc0V4aXN0aW5nTGlzdGVuZXJPYmplY3QoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmFwcGVuZCh2OGxpc3RlbmVyLT5leGlzdGlu
Z0xpc3RlbmVyT2JqZWN0UGVyc2lzdGVudEhhbmRsZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICghbGlzdGVuZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB2ODo6Vjg6
OkFkZEltcGxpY2l0UmVmZXJlbmNlcyh3cmFwcGVyLCBsaXN0ZW5lcnMuZGF0YSgpLCBsaXN0ZW5l
cnMuc2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+aGFzRXZlbnRMaXN0ZW5l
cnMoKSkKKyAgICAgICAgICAgIGFkZEltcGxpY2l0UmVmZXJlbmNlc0Zvck5vZGVXaXRoRXZlbnRM
aXN0ZW5lcnMobm9kZSwgd3JhcHBlcik7CiAKLSAgICAgICAgR3JvdXBJZCBncm91cElkID0gY2Fs
Y3VsYXRlR3JvdXBJZChub2RlKTsKLSAgICAgICAgaWYgKCFncm91cElkKQorICAgICAgICBOb2Rl
KiByb290ID0gcm9vdEZvckdDKG5vZGUpOworICAgICAgICBpZiAoIXJvb3QpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fZ3JvdXBlci5hcHBlbmQoR3JvdXBlckl0ZW0oZ3JvdXBJZCwg
d3JhcHBlcikpOworICAgICAgICBtX2dyb3Vwcy5hcHBlbmQoSW1wbGljaXRSZWZlcmVuY2Uocm9v
dCwgd3JhcHBlcikpOwogICAgIH0KIAogICAgIHZvaWQgYXBwbHlHcm91cGluZygpCiAgICAgewot
ICAgICAgICAvLyBHcm91cCBieSBzb3J0aW5nIGJ5IHRoZSBncm91cCBpZC4KLSAgICAgICAgc3Rk
Ojpzb3J0KG1fZ3JvdXBlci5iZWdpbigpLCBtX2dyb3VwZXIuZW5kKCkpOwotCi0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncm91cGVyLnNpemUoKTsgKSB7Ci0gICAgICAgICAgICAv
LyBTZWVrIHRvIHRoZSBuZXh0IGtleSAob3IgdGhlIGVuZCBvZiB0aGUgbGlzdCkuCi0gICAgICAg
ICAgICBzaXplX3QgbmV4dEtleUluZGV4ID0gbV9ncm91cGVyLnNpemUoKTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSBpOyBqIDwgbV9ncm91cGVyLnNpemUoKTsgKytqKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fZ3JvdXBlcltpXS5ncm91cElkKCkgIT0gbV9ncm91cGVyW2pdLmdyb3Vw
SWQoKSkgewotICAgICAgICAgICAgICAgICAgICBuZXh0S2V5SW5kZXggPSBqOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIEFTU0VSVChuZXh0S2V5SW5kZXggPiBpKTsKLQotICAgICAgICAgICAgLy8gV2Ug
b25seSBjYXJlIGFib3V0IGEgZ3JvdXAgaWYgaXQgaGFzIG1vcmUgdGhhbiBvbmUgb2JqZWN0LiBJ
ZiBpdCBvbmx5Ci0gICAgICAgICAgICAvLyBoYXMgb25lIG9iamVjdCwgaXQgaGFzIG5vdGhpbmcg
ZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGtlcHQgYWxpdmUuCi0gICAgICAgICAgICBpZiAobmV4dEtl
eUluZGV4IC0gaSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAgaSA9IG5leHRLZXlJbmRleDsKKyAg
ICAgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBjdXJyZW50R3JvdXA7Cisg
ICAgICAgIHN0ZDo6c29ydChtX2dyb3Vwcy5iZWdpbigpLCBtX2dyb3Vwcy5lbmQoKSk7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyb3Vwcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgc2l6ZV90IGJlZ2luID0gaTsKKyAgICAgICAgICAgIE5vZGUqIHJvb3QgPSBtX2dy
b3Vwc1tpXS5yb290KCk7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgKytpOwor
ICAgICAgICAgICAgfSB3aGlsZSAoaSA8IG1fZ3JvdXBzLnNpemUoKSAmJiBtX2dyb3Vwc1tpXS5y
b290KCkgPT0gcm9vdCk7CisKKyAgICAgICAgICAgIHNpemVfdCBlbmQgPSBpOworICAgICAgICAg
ICAgc2l6ZV90IHNpemUgPSBlbmQgLSBiZWdpbjsKKyAgICAgICAgICAgIGlmIChzaXplID09IDEp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHNpemVfdCByb290SW5kZXggPSBpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGdyb3VwOwotICAgICAgICAgICAgZ3JvdXAucmVz
ZXJ2ZUNhcGFjaXR5KG5leHRLZXlJbmRleCAtIGkpOwotICAgICAgICAgICAgZm9yICg7IGkgPCBu
ZXh0S2V5SW5kZXg7ICsraSkgewotICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4gd3JhcHBlciA9IG1fZ3JvdXBlcltpXS53cmFwcGVyKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYXBwZW5k
KHdyYXBwZXIpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoZ3JvdXAuc2l6ZSgp
ID4gMSkKLSAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZncm91cFswXSwg
Z3JvdXAuc2l6ZSgpLCBtX2dyb3VwZXJbcm9vdEluZGV4XS5jcmVhdGVSZXRhaW5lZE9iamVjdElu
Zm8oKSk7CisgICAgICAgICAgICBjdXJyZW50R3JvdXAucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGJlZ2luOyBqIDwgZW5kOyArK2opCisgICAgICAg
ICAgICAgICAgY3VycmVudEdyb3VwLmFwcGVuZChtX2dyb3Vwc1tqXS53cmFwcGVyKCkpOwogCi0g
ICAgICAgICAgICBBU1NFUlQoaSA9PSBuZXh0S2V5SW5kZXgpOworICAgICAgICAgICAgdjg6OlY4
OjpBZGRPYmplY3RHcm91cChjdXJyZW50R3JvdXAuZGF0YSgpLCBjdXJyZW50R3JvdXAuc2l6ZSgp
LCBuZXcgUmV0YWluZWRET01JbmZvKHJvb3QpKTsKKyAgICAgICAgICAgIGN1cnJlbnRHcm91cC5z
aHJpbmsoMCk7CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR3JvdXBlckxpc3Qg
bV9ncm91cGVyOworICAgIFZlY3RvcjxJbXBsaWNpdFJlZmVyZW5jZT4gbV9ncm91cHM7CiB9Owog
CiAvLyBDcmVhdGUgb2JqZWN0IGdyb3VwcyBmb3IgRE9NIHRyZWUgbm9kZXMuCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLWZvcmVzdC5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9CaW5kaW5ncy9nYy1mb3Jlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMThmZTE1Y2YwYjEzYjUw
ZWM5YjhjOTczNWUyM2U0Y2I3MzMzYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9CaW5kaW5ncy9nYy1mb3Jlc3QuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVUaW1lKHtydW46IGZ1bmN0aW9u
KCkgeworICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDAwOyBpKyspCisgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICB9KSgpOworICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJlZS5odG1sIGIv
UGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9nYy10cmVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk5NjI4
OGNmNDc3NGZkNWViMjI1YWU0ODc2ZGM2ZDc4NGQ1OGY5YgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJlZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIubWVhc3VyZVRpbWUoe3J1bjog
ZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7IGkrKykKKyAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IikpOworICAgIH0pKCk7CisgICAgUGVyZlRlc3RSdW5uZXIuZ2MoKTsKK319
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA5MWYwYzE3N2U0YTYwNWMz
NjcwZDhhMGUwNmMzMmU1YzNjOTcxYzY1Li5hY2ZiN2YwYjEzNzc2NjZlNTVjYmFiZjhmZWJhMDVi
YWNjYTMxNDU0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTIwICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2lt
cGxpZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHNvbWUgcGVyZm9ybWFuY2UgdGVzdHMgZm9y
IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KKworICAgICAgICAqIEJpbmRpbmdzL2djLWZvcmVzdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBCaW5kaW5ncy9nYy10cmVlLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTEwLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1
bXAgdXAgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIG9mIGh0bWw1LWZ1bGwtcmVuZGVyIHRvIDUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>169780</attachid>
            <date>2012-10-20 18:09:41 -0700</date>
            <delta_ts>2012-10-20 18:09:41 -0700</delta_ts>
            <desc>perf test results (first five are with patch; last five are without)</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>45866</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvYWJhcnRoL2dpdC9hYmFydGgtd2Via2l0JzsKICAgIHZhciByZW1v
dGVQYXRoID0gJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsn
OwogICAgdmFyIG51bWJlck9mRmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1
Z2lucyA9IGZhbHNlOwogICAgdmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVu
Y3Rpb24gbG9hZFNjcmlwdChzcmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3lu
YyA9IHRydWU7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2Fk
ID0gbG9hZGVkOwogICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9y
ID0gZmFpbGVkOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAg
IH0KCiAgICBmdW5jdGlvbiBsb2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQo
dHJ1bmtQYXRoICsgJy8nICsgcGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luc1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdp
bigpIHsKICAgICAgICBudW1iZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVy
T2ZMb2FkZWRQbHVnaW5zID09IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0
KGluaXQsIDApOyAgICAgICAgICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRv
TG9hZFBsdWdpbihwbHVnaW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgi
RmFpbGVkIHRvIGxvYWQgIiArIHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVM
b2FkZWRKUXVlcnkodHJ1bmtQYXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9h
ZFBsdWdpbnModHJ1bmtQYXRoKTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsg
Jy8nICsgalF1ZXJ5LAogICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAg
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8n
ICsgalF1ZXJ5LAogICAgICAgICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgp
LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1
ZXJ5LiIpOyB9KTsKICAgICAgICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2Np
YXRlZFRlc3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdGhpcy51bml0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gcmVzdWx0LnVuaXQ7IH0KICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHJlc3VsdC52YWx1ZXMgPyByZXN1bHQudmFsdWVzLm1hcChmdW5jdGlvbiAodmFs
dWUpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVlOyB9KSA6
IHVuZGVmaW5lZDsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3Nv
Y2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1pbiA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJl
c3VsdC5taW47IH0KICAgIHRoaXMubWF4ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRl
ZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0Lm1heDsgfQogICAgdGhpcy5zdGRldiA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3Vs
dC5zdGRldjsgfQogICAgdGhpcy5zdGRldlJhdGlvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVz
dWx0LnN0ZGV2IC8gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1
bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpIC8gdGhp
cy5tZWFuKCk7IH0KICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlv
biAob3RoZXIpIHsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRo
aXMubWVhbigpKTsKICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuc3RkZXYoKSAmJiBkaWZmID4g
b3RoZXIuc3RkZXYoKTsKICAgIH0KICAgIHRoaXMucnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
YXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRl
c2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0K
ICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Vi
a2l0LXJldmlzaW9uJ107IH0KICAgIHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
dmFyIGxhYmVsID0gJ3InICsgdGhpcy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlz
LmRlc2NyaXB0aW9uKCkpCiAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRl
c2NyaXB0aW9uKCk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJm
VGVzdChuYW1lKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0
ID0gbnVsbDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKCiAgICAvLyBXZSBj
YW4ndCBkbyB0aGlzIGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0
ZXN0IG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0
b3IuCiAgICBmdW5jdGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3Qg
cmVzdWx0LgogICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3Qu
CiAgICAgICAgaWYgKCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICB2YXIgdW5pdCA9IHRlc3RSZXN1bHRzWzBdLnVuaXQoKTsgLy8g
RklYTUU6IFdlIHNob3VsZCB2ZXJpZnkgdGhhdCBhbGwgcmVzdWx0cyBoYXZlIHRoZSBzYW1lIHVu
aXQuCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsgLy8g
RklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8gPSB1
bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICoga2ls
byAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0
b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsgdW5p
dDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAgY2Fj
aGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5p
dCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IG5hbWU7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFt
ZS5pbmRleE9mKCc6JykgPj0gMDsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3
UmVzdWx0KSB7CiAgICAgICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNh
Y2hlZFVuaXQgPSBudWxsOwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAg
fQogICAgdGhpcy5yZXN1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0K
ICAgIHRoaXMuc2NhbGluZ0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2Fs
aW5nRmFjdG9ySWZOZWVkZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsK
ICAgIH0KICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGlu
Z0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0
aGlzLnNtYWxsZXJJc0JldHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudW5pdCgpID09
ICdtcycgfHwgdGhpcy51bml0KCkgPT0gJ2J5dGVzJzsgfQp9Cgp2YXIgcGxvdENvbG9yID0gJ3Jn
YigyMzAsNTAsNTApJzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRpb25zID0gewogICAgbGluZXM6IHtz
aG93OnRydWUsIGxpbmVXaWR0aDogMH0sCiAgICBjb2xvcjogcGxvdENvbG9yLAogICAgcG9pbnRz
OiB7c2hvdzogdHJ1ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6IHtzaG93OiBmYWxzZX19OwoKdmFy
IG1haW5QbG90T3B0aW9ucyA9IHsKICAgIHhheGlzOiB7CiAgICAgICAgbWluOiAtMC41LAogICAg
ICAgIHRpY2tTaXplOiAxLAogICAgfSwKICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwKICAg
IHNlcmllczogeyBzaGFkb3dTaXplOiAwIH0sCiAgICBiYXJzOiB7c2hvdzogdHJ1ZSwgYWxpZ246
ICdjZW50ZXInLCBiYXJXaWR0aDogMC41fSwKICAgIGxpbmVzOiB7IHNob3c6IGZhbHNlIH0sCiAg
ICBwb2ludHM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogewogICAgICAgIGJvcmRlcldpZHRo
OiAxLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2NjYycsCiAgICAgICAgYmFja2dyb3VuZENvbG9y
OiAnI2ZmZicsCiAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgIGF1dG9IaWdobGlnaHQ6
IGZhbHNlLAogICAgfQp9OwoKdmFyIHRpbWVQbG90T3B0aW9ucyA9IHsKICAgIHlheGlzOiB7IHNo
b3c6IGZhbHNlIH0sCiAgICB4YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgbGluZXM6IHsgc2hv
dzogdHJ1ZSB9LAogICAgZ3JpZDogeyBib3JkZXJXaWR0aDogMSwgYm9yZGVyQ29sb3I6ICcjY2Nj
JyB9LAogICAgY29sb3JzOiBbIHBsb3RDb2xvciBdCn07CgpmdW5jdGlvbiBjcmVhdGVQbG90KGNv
bnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNsYXNz
PSJwbG90Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3RzIj48L2Rpdj4nCiAgICAgICAgKyAn
PHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNo
aWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRoJzogKDEwMCAqIHRlc3QucmVzdWx0cygpLmxlbmd0
aCArIDI1KSArICdweCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7CiAgICAkKGNvbnRhaW5lcikuYXBw
ZW5kKHNlY3Rpb24pOwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbign
LnBsb3QnKTsKICAgIHZhciBtaW5Jc1plcm8gPSB0cnVlOwogICAgYXR0YWNoUGxvdCh0ZXN0LCBw
bG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwoKICAgIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBzZWN0
aW9uLmNoaWxkcmVuKCcudGltZS1wbG90cycpKTsKCiAgICB2YXIgdG9vbHRpcCA9IHNlY3Rpb24u
Y2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Rob3Zlcics
IGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbSkgewog
ICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0ZW0uc2Vy
aWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRhdGFwb2lu
dFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB2YXIgc2VjdGlvbk9m
ZnNldCA9ICQoc2VjdGlvbikub2Zmc2V0KCk7CiAgICAgICAgICAgIHRvb2x0aXAuY3NzKHtsZWZ0
OiBpdGVtLnBhZ2VYIC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkg
LyAyLCB0b3A6IGl0ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0LnRvcCArIDEwfSk7CiAgICAgICAg
ICAgIHRvb2x0aXAuZmFkZUluKDIwMCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIHRvb2x0
aXAuaGlkZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLm1vdXNlb3V0KGZ1bmN0aW9uICgp
IHsKICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5jbGlj
ayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgIG1pbklzWmVybyA9ICFtaW5Jc1plcm87CiAgICAgICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90
Q29udGFpbmVyLCBtaW5Jc1plcm8pOwogICAgfSk7CgogICAgcmV0dXJuIHNlY3Rpb247Cn0KCmZ1
bmN0aW9uIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBjb250YWluZXIpIHsKICAgIHZhciByZXN1bHRz
ID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQbG90ID0gZmFsc2U7CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb250YWluZXIu
YXBwZW5kKCc8ZGl2PjwvZGl2PicpOwogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzW2ldLnZh
bHVlcygpOwogICAgICAgIGlmICghdmFsdWVzKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICBhdHRhY2hlZFBsb3QgPSB0cnVlOwoKICAgICAgICAkLnBsb3QoY29udGFpbmVyLmNoaWxkcmVu
KCkubGFzdCgpLCBbdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBb
aW5kZXgsIHZhbHVlXTsgfSldLAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB7fSwgdGltZVBs
b3RPcHRpb25zLCB7eWF4aXM6IHttaW46IE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcykgKiAw
LjksIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDEuMX0sCiAgICAgICAgICAg
ICAgICB4YXhpczoge21pbjogLTAuNSwgbWF4OiB2YWx1ZXMubGVuZ3RoIC0gMC41fX0pKTsKICAg
IH0KICAgIGlmICghYXR0YWNoZWRQbG90KQogICAgICAgIGNvbnRhaW5lci5jaGlsZHJlbigpLnJl
bW92ZSgpOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklz
WmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICB2YXIgdmFsdWVz
ID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywgcmVzdWx0LCBpbmRleCkgewogICAg
ICAgIHZhciBuZXdWYWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgcmV0dXJuIG5ld1Zh
bHVlcyA/IHZhbHVlcy5jb25jYXQobmV3VmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0
dXJuIFtpbmRleCwgdmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAgICB9LCBbXSk7CgogICAgdmFyIHBs
b3REYXRhID0gW107CiAgICBpZiAodmFsdWVzLmxlbmd0aCkKICAgICAgICBwbG90RGF0YSA9IFsk
LmV4dGVuZCh0cnVlLCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07
CiAgICBlbHNlIHsKICAgICAgICBmdW5jdGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykg
eyByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlk
LCBkYXRhOiByZXN1bHRzLm1hcChjYWxsYmFjayl9KTsgfQogICAgICAgIHBsb3REYXRhID0gW21h
a2VTdWJwb2ludHMoJ21pbicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5k
ZXgsIHJlc3VsdC5taW4oKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAog
ICAgICAgIG1ha2VTdWJwb2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAg
ICAgICBtYWtlU3VicG9pbnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSldOwogICAg
fQoKICAgIHBsb3REYXRhLnB1c2goe2lkOiAnJm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwg
Y29sb3I6IHBsb3RDb2xvcn0pOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVu
ZCh0cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklz
WmVybyA/IDAgOiBNYXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4LAogICAgICAgIG1h
eDogTWF0aC5tYXguYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/IDEuMSA6IDEuMDEp
fX0pOwoKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAt
IDAuNTsKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1
bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJl
bCgpXTsgfSk7CgogICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxv
dE9wdGlvbnMpOwp9CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAg
IHZhciBkZWNpbWFsID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9Cgpm
dW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9
IGZyYWN0aW9uICogMTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSAr
ICclJzsKfQoKZnVuY3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1l
bW9yeSwgcmVmZXJlbmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+
PHRyPjx0aD5UZXN0PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4s
IGluZGV4KSB7CiAgICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZl
cmVuY2VJbmRleCA/IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30i
PicgKyBydW4ubGFiZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1
cCwgY2VsbCkgeyByZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0
Ym9keT48L3Rib2R5PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5h
bWUgaW4gdGVzdHMpCiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3RO
YW1lcy5zb3J0KCkubWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0g
dGVzdHNbdGVzdE5hbWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3Vs
ZElnbm9yZU1lbW9yeSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVm
ZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3
aWRnZXRzOiBbJ3plYnJhJ119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMp
IHsKICAgIC8vIEltcGxlbWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlz
dGljcy9sZWFybi1jb3JyZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5
ID0gaXRlcmF0aW9ucwogICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFy
IHN1bVhTcXVhcmVkID0gMDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRp
bWVzWSA9IDA7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICB2YXIgeCA9IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3Vt
WCArPSB4OwogICAgICAgIHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsK
ICAgICAgICBzdW1ZU3F1YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5
OwogICAgfQoKICAgIHZhciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAq
IHN1bVkpIC8KICAgICAgICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKSAqCiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNx
dWFyZWQgLSBzdW1ZICogc3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5m
aW5pdHkpCiAgICAgICAgciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBz
dW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKTsKICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAt
IHNsb3BlICogc3VtWCAvIHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwg
aW50ZXJjZXB0OiBpbnRlcmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2ln
biA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdo
dDogMThweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAn
PHBvbHlnb24gZmlsbD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAg
ICArICc8cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4Ljcs
IDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9
IjYiIGZpbGw9IndoaXRlIiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJs
ZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgn
PHRyPjx0ZCBjbGFzcz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1
bml0Ij4nICsgdGVzdC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1
cEZvclJ1bihyZXN1bHQsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29u
Q2VsbCA9ICcnOwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91
bGRDb21wYXJlID0gcmVzdWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3Vs
ZENvbXBhcmUgJiYgcmVmZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlm
ZmVyZW5jZSA9IHJlZmVyZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAg
ICAgICAgICB2YXIgYmV0dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZm
ZXJlbmNlIDwgMCA6IHBlcmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBh
cmlzb24gPSAnJzsKICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAg
ICAgICAgICAgaWYgKHJlZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChy
ZXN1bHQpKSB7CiAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShN
YXRoLmFicyhwZXJjZW50RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29y
c2UmbmJzcDsnKTsKICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRl
cicgOiAnIHdvcnNlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwog
ICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAn
Ij4nICsgY29tcGFyaXNvbiArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21w
YXJlKQogICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+JzsKCiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2
YXIgd2FybmluZyA9ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAg
ICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25SZXN1bHQgPSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25BbmFseXNpcyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Np
b25SZXN1bHQuc2xvcGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRo
UHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVn
cmVzc2lvblJlc3VsdC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0
LnNsb3BlKSA+IDAuMDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNz
PSJyZWdyZXNzaW9uLXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3
aXRoICcgKyByZWdyZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bh
bj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcm
c2lnbWE7PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsgJywgbWlu
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcs
IG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVn
cmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJv
dXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxl
IGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBz
dGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSAr
IGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIgdGl0bGU9
IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1hdFBlcmNl
bnRhZ2UocmVzdWx0LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlz
b25DZWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVu
Y2UpIHsKICAgICAgICByZXR1cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6
IDMpICsgJyIgY2xhc3M9Im1pc3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1
bkluZGV4ID0gMDsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVm
ZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGls
ZSAocnVuc1tydW5JbmRleF0gIT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bklu
ZGV4Kys7CiAgICAgICAgaWYgKHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAg
ICByZWZlcmVuY2VSZXN1bHQgPSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1
bkluZGV4XSA9IGk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBp
KyspIHsKICAgICAgICB2YXIgcmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAg
ICBpZiAocmVzdWx0SW5kZXggPT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBl
bmQobWFya3VwRm9yTWlzc2luZ1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0
SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hp
bGRyZW4oJ3Rib2R5JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJv
d1swXSAmJiBldmVudC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIg
Zmlyc3RDZWxsID0gdGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAo
Zmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0
Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5j
aGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAg
ICAgICAgICAgIHBsb3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9
KTsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAg
ICBvZmZzZXQubGVmdCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91
dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAg
IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRl
ckhlaWdodCgpICsgNX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7
Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAg
ICAgaWQ6ICdjb21wYXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICByZXR1cm4gcy5pbmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDog
ZnVuY3Rpb24ocykgewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0
cmluZyhzLmluZGV4T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNl
ZCkgPyAwIDogcGFyc2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAg
fSk7CgogICAgdmFyIHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpT
T04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1
bmN0aW9uIChpbmRleCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50
cnkpOwogICAgICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRz
LCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0p
CiAgICAgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAg
ICAgICAgdGVzdHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCBy
ZXN1bHQsIHJ1bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1l
bW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgn
I3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxl
bWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRD
b250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxk
SWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5j
dGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFu
IHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNs
YXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAg
ICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQs
IGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVj
a2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRl
c3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoK
ICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBjaGVja2JveCkgewogICAg
ICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7
CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdjaGVja2VkJykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVt
b3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tl
ZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsK
ICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0i
YXBwbGljYXRpb24vanNvbiI+W3sidGltZXN0YW1wIjogMTM1MDc4MDkxOCwgIndlYmtpdC1yZXZp
c2lvbiI6ICIxMzE5ODgiLCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZ2MtdHJlZTpNYWxsb2MiOiB7
Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6
IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLXRyZWU6SlNIZWFwIjogeyJtaW4i
OiAyMDc3MzE1Mi4wLCAibWF4IjogMjA3NzgzNTIuMCwgIm1lZGlhbiI6IDIwNzc1OTkwLjAsICJ2
YWx1ZXMiOiBbMjA3NzY3MjguMCwgMjA3NzM4MDguMCwgMjA3NzUyMTIuMCwgMjA3NzM2MzYuMCwg
MjA3NzUzODAuMCwgMjA3NzQyODguMCwgMjA3NzU3MzYuMCwgMjA3NzQ0MzYuMCwgMjA3NzY0NDQu
MCwgMjA3NzQ4MTIuMCwgMjA3NzY1MDQuMCwgMjA3NzMxNTIuMCwgMjA3NzY2NjAuMCwgMjA3NzYx
OTIuMCwgMjA3Nzc2MzYuMCwgMjA3NzU3ODguMCwgMjA3Nzc5ODAuMCwgMjA3Nzc1ODguMCwgMjA3
NzgwNTYuMCwgMjA3NzgzNTIuMF0sICJzdGRldiI6IDE1NjYuMzI2MzIyMTIwNDUzOCwgImF2ZyI6
IDIwNzc1OTE5LjQsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlIjogeyJtaW4i
OiAxMTQyLjI0MDk5OTk5NDEwMSwgIm1heCI6IDEyMzAuNTEzOTk5OTk1MzA5OSwgIm1lZGlhbiI6
IDEyMTIuMDUzNDk5OTk5NDU2LCAidmFsdWVzIjogWzExNDIuMjQwOTk5OTk0MTAxLCAxMjExLjUz
OTk5OTk4OTMyNywgMTE2Ny43OTc5OTk5ODAzOTM4LCAxMjEyLjU2NzAwMDAwOTU4NTIsIDExNDgu
MzMyOTk5OTkwMDg4OSwgMTIwNS43NTk5OTk5ODI1NDcsIDExNTEuNzIxMDAwMDAxOTk4NiwgMTIx
NS4wMjg5OTk5ODQ0OTcyLCAxMTU3LjYyNDk5OTk5MjU0OTQsIDEyMTMuMzY1MDAwMDAzMjUwMywg
MTIxNi44OTcwMDAwMDU3MDE2LCAxMjIwLjU2MzAwMDAwOTg2MDgsIDExNTguNTgwOTk5OTk2MDQ3
NSwgMTE4MC45MjQwMDAwMTQ3ODM4LCAxMTY0Ljc3NjAwMDAxOTYyODYsIDEyMjAuMDc0OTk5OTkw
MTc0NSwgMTIyMy4wNjY5OTk5ODQ0Mzk1LCAxMjI4LjA3MTAwMDAxOTU1NCwgMTIyNi40MTQ5OTk5
ODI4MDc4LCAxMjMwLjUxMzk5OTk5NTMwOTldLCAic3RkZXYiOiAzMS40MDIzMzEwNDgxMDAzMzYs
ICJhdmciOiAxMTk0Ljc5MzA5OTk5NzMzMjUsICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy1m
b3Jlc3QiOiB7Im1pbiI6IDc5NC40NzI5OTk5ODcxOTI1LCAibWF4IjogODE0LjM3NDAwMDAwODY4
MzcsICJtZWRpYW4iOiA4MDAuNTU2NTAwMDA1NzY4NiwgInZhbHVlcyI6IFs4MTMuMjAwMDAwMDA0
MTQ0NCwgODAxLjk5OTk5OTk5NjA0MTksIDgwMC44MDIwMDAwMTI0ODE2LCA4MTQuMzc0MDAwMDA4
NjgzNywgODExLjg2ODAwMDAxODg3NiwgODA3LjgzNTk5OTk5MjY3NjEsIDc5NC44MjgwMDAwMTI3
ODUyLCA4MDcuMTcxMDAwMDIyMjA4MywgNzk3LjMyMzAwMDAwNjE0NDksIDc5Ny4yNzM5OTk5ODIy
ODA3LCA4MDMuMDkyOTk5OTk0OTg3NiwgODAzLjE2NTk5OTk5Nzg3MjksIDc5OS4wMTAwMDAwMTcw
MDYsIDc5OC41NTEwMDAwMTQ0MTMxLCA3OTYuNjM5MDAwMDA3NDE3LCA3OTYuNTcwMDAwMDA1ODg2
LCA3OTQuNDcyOTk5OTg3MTkyNSwgNzk4LjQ4NTAwMDAwNjYyMTcsIDgwMC4zMTA5OTk5OTkwNTU2
LCA4MDEuMDcyMDAwMDAyMDIyOF0sICJzdGRldiI6IDYuMDE3MzU1MjA5OTE1ODksICJhdmciOiA4
MDEuOTAyMzAwMDA0NDM5OCwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpNYWxs
b2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFsw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwg
ImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpKU0hlYXAi
OiB7Im1pbiI6IDEwNjE3NjAwLjAsICJtYXgiOiAxMzY2NjcwNC4wLCAibWVkaWFuIjogMTM2NjEw
OTIuMCwgInZhbHVlcyI6IFsxMzY2NjcwNC4wLCAxMzY2NDk4NC4wLCAxMDYxNzYwMC4wLCAxMzY1
OTg4OC4wLCAxMzY1OTg4NC4wLCAxMzY2MDQ3Mi4wLCAxMzY2MDYwOC4wLCAxMzY2MDk0OC4wLCAx
MzY2MTE0OC4wLCAxMzY2MTAzNi4wLCAxMzY2MDYwOC4wLCAxMzY1ODYzNi4wLCAxMzY2MjI2OC4w
LCAxMzY2MDQ4OC4wLCAxMzY2MjAyOC4wLCAxMzY2MTUwNC4wLCAxMzY2MjEwNC4wLCAxMzY2MTQ0
MC4wLCAxMzY2NDA5Ni4wLCAxMzY2MjM1Ni4wXSwgInN0ZGV2IjogNjgwNjcxLjAzMDk2NTYxMiwg
ImF2ZyI6IDEzNTA5NDQwLjAsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21p
dW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5
ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgwOTY4LCAid2Via2l0LXJldmlzaW9uIjogIjEzMTk4
OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9nYy10cmVlOk1hbGxvYyI6IHsibWluIjogMC4wLCAi
bWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczMTUyLjAs
ICJtYXgiOiAyMDc3ODM1Mi4wLCAibWVkaWFuIjogMjA3NzU5OTAuMCwgInZhbHVlcyI6IFsyMDc3
NjcyOC4wLCAyMDc3MzgwOC4wLCAyMDc3NTIxMi4wLCAyMDc3MzYzNi4wLCAyMDc3NTM4MC4wLCAy
MDc3NDI4OC4wLCAyMDc3NTczNi4wLCAyMDc3NDQzNi4wLCAyMDc3NjQ0NC4wLCAyMDc3NDgxMi4w
LCAyMDc3NjUwNC4wLCAyMDc3MzE1Mi4wLCAyMDc3NjY2MC4wLCAyMDc3NjE5Mi4wLCAyMDc3NzYz
Ni4wLCAyMDc3NTc4OC4wLCAyMDc3Nzk4MC4wLCAyMDc3NzU4OC4wLCAyMDc3ODA1Ni4wLCAyMDc3
ODM1Mi4wXSwgInN0ZGV2IjogMTU2Ni4zMjYzMjIxMjA0NTM4LCAiYXZnIjogMjA3NzU5MTkuNCwg
InVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLXRyZWUiOiB7Im1pbiI6IDEyMjYuNDEwMDAw
MDAyOTQzLCAibWF4IjogMTMwOS41MTc5OTk5OTQ1Njg1LCAibWVkaWFuIjogMTI0MC40MzM0OTk5
ODgyODUsICJ2YWx1ZXMiOiBbMTI1OS43MjEwMDAwMDk0NDkyLCAxMjgwLjgwOTk5OTk5NjU2MzQs
IDEzMDkuNTE3OTk5OTk0NTY4NSwgMTI3OS4zNDE5OTk5OTQzNTgsIDEyNzcuMzkxOTk5OTg5MDQ5
NSwgMTI4Mi42MDcwMDAwMDEwMDc3LCAxMjgxLjA0Njk5OTk5Njc2MDksIDEyNjQuMDQ4MDAwMDEx
ODI2LCAxMjI2LjQxMDAwMDAwMjk0MywgMTIyNi42MzQ5OTk5OTkwNzgsIDEyMjguNTczMDAwMDAw
MzI0LCAxMjQwLjY0OTk5OTk5MjQ1NjMsIDEyMzkuOTgwOTk5OTkxNTMwNiwgMTIzOS45ODA5OTk5
OTE1MzA2LCAxMjQwLjIxNjk5OTk4NDExMzUsIDEyMzYuMTIwOTk5OTk0NDU1LCAxMjMzLjEzOTk5
OTk5NjYzOCwgMTIzMy40MjkwMDAwMTQ0MzkyLCAxMjQyLjgzMDk5OTk4MTM3OTEsIDEyMzguNDM2
OTk5OTkyNzAwM10sICJzdGRldiI6IDI0LjE5MDYwMjgxNTQxNzI4MiwgImF2ZyI6IDEyNTMuMDQ0
NDk5OTk2NzU4NSwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdCI6IHsibWluIjog
ODAxLjM5OTAwMDAxODEzNjYsICJtYXgiOiA4MzkuNTgwOTk5OTc4MzUyMywgIm1lZGlhbiI6IDgx
MC41NjE1MDAwMDk0OTg2LCAidmFsdWVzIjogWzgzOS4xOTkwMDAwMDkxMDI3LCA4MjYuOTU2MDAw
MDA0NDI5NCwgODM5LjU4MDk5OTk3ODM1MjMsIDgyOC45NzU5OTk5ODk3Nzk3LCA4MjIuODMyMDAw
MDA1MjkxOCwgODA4LjQzNjk5OTk5OTY4NTIsIDgwMi4xMzQwMDAwMjY4NTM4LCA4MDYuMzgyMDAw
MDA5NzYyMSwgODE0LjYzMTAwMDAxNTY1MTgsIDgxMC4yNDA5OTk5OTkyMjMzLCA4MDEuNTAxMDAw
MDA5MDExNSwgODEwLjY1NzAwMDAyMzYzODgsIDgwOS4xODQ5OTk5OTA5NzU1LCA4MTAuNDY1OTk5
OTk1MzU4MywgODA2LjA0Mjk5OTk4OTU4NiwgODAzLjc4MDk5OTk5NTA2OTYsIDgwMS4zOTkwMDAw
MTgxMzY2LCA4MjcuNjU5MDAwMDAyMzEzNCwgODIxLjU5MzAwMDAwMDU3NTYsIDgyNC42NzI5OTk5
OTU1Mjc4XSwgInN0ZGV2IjogMTIuMTk0ODgyMzkwODUwNTE2LCAiYXZnIjogODE1LjgxNjMwMDAw
MjkxNjMsICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4i
OiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAs
ICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3Q6SlNIZWFwIjogeyJtaW4iOiAx
MDYxNzYwMC4wLCAibWF4IjogMTM2NjY3MDQuMCwgIm1lZGlhbiI6IDEzNjYxMDkyLjAsICJ2YWx1
ZXMiOiBbMTM2NjY3MDQuMCwgMTM2NjQ5ODQuMCwgMTA2MTc2MDAuMCwgMTM2NTk4ODguMCwgMTM2
NTk4ODguMCwgMTM2NjA0NzIuMCwgMTM2NjA2MDguMCwgMTM2NjA5NDguMCwgMTM2NjExNDguMCwg
MTM2NjEwMzYuMCwgMTM2NjA2MDguMCwgMTM2NTg2MzYuMCwgMTM2NjIyNzIuMCwgMTM2NjA0OTIu
MCwgMTM2NjIwMzIuMCwgMTM2NjE1MTIuMCwgMTM2NjIxMTIuMCwgMTM2NjE0NDguMCwgMTM2NjQx
MDQuMCwgMTM2NjIzNjQuMF0sICJzdGRldiI6IDY4MDY3MS42OTE0NzAyNzksICJhdmciOiAxMzUw
OTQ0Mi43OTk5OTk5OTksICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0i
LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMi
fSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgxMDE4LCAid2Via2l0LXJldmlzaW9uIjogIjEzMTk4OCIs
ICJyZXN1bHRzIjogeyJCaW5kaW5ncy9nYy10cmVlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4
IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczMTUyLjAsICJt
YXgiOiAyMDc3ODM1Mi4wLCAibWVkaWFuIjogMjA3NzU5OTAuMCwgInZhbHVlcyI6IFsyMDc3Njcy
OC4wLCAyMDc3MzgwOC4wLCAyMDc3NTIxMi4wLCAyMDc3MzYzNi4wLCAyMDc3NTM4MC4wLCAyMDc3
NDI4OC4wLCAyMDc3NTczNi4wLCAyMDc3NDQzNi4wLCAyMDc3NjQ0NC4wLCAyMDc3NDgxMi4wLCAy
MDc3NjUwNC4wLCAyMDc3MzE1Mi4wLCAyMDc3NjY2MC4wLCAyMDc3NjE5Mi4wLCAyMDc3NzYzNi4w
LCAyMDc3NTc4OC4wLCAyMDc3Nzk4MC4wLCAyMDc3NzU4OC4wLCAyMDc3ODA1Ni4wLCAyMDc3ODM1
Mi4wXSwgInN0ZGV2IjogMTU2Ni4zMjYzMjIxMjA0NTM4LCAiYXZnIjogMjA3NzU5MTkuNCwgInVu
aXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLXRyZWUiOiB7Im1pbiI6IDExMzguMTQxMDAwMDAz
MDg4MywgIm1heCI6IDEyMzEuODcyMDAwMDAzOTMyLCAibWVkaWFuIjogMTIwOS43NzU0OTk5OTk1
MjMyLCAidmFsdWVzIjogWzExMzguMTQxMDAwMDAzMDg4MywgMTIwNC45MDg5OTk5OTI3NjczLCAx
MTYyLjE5Njk5OTk5NzgzMTksIDEyMjYuMDMwOTk5OTk4MzI5MiwgMTE0Ni40NTgwMDAwMDI4OTQ2
LCAxMjEwLjQ1Njk5OTk3OTIxNDcsIDExNjguMTQ0OTk5OTc0MTc0NCwgMTIwOS43MDgwMDAwMDk0
MTM4LCAxMTUxLjI3Njk5OTk5NzIwOCwgMTIzMS44NzIwMDAwMDM5MzIsIDEyMDkuODQyOTk5OTg5
NjMyNSwgMTIyMC40MTI5OTk5NzM2MzI0LCAxMTU4LjUyNzk5OTk5OTkzMywgMTE1Ny45NDg5OTk5
ODU4MTk3LCAxMTU2LjczMDk5OTk5NTQ4ODcsIDEyMTEuNDgyOTk5OTkxODU4NCwgMTIxMi41NDM5
OTk5Nzk5NzEsIDEyMTQuNTUzMDAwMDI3MDgxLCAxMjE5LjU3ODAwMDAxODM3MzEsIDEyMTYuMTM3
OTk5OTg4ODU5NV0sICJzdGRldiI6IDMxLjU4NDE4MTk3NzE3NjU1MiwgImF2ZyI6IDExOTEuMzQ3
NzQ5OTk1NDc1MiwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdCI6IHsibWluIjog
ODAzLjQ2NjAwMDAxMjEyMjEsICJtYXgiOiA4MjUuMjk3OTk5OTgxNTU4LCAibWVkaWFuIjogODEx
LjU2Nzk5OTk5MDA3NDksICJ2YWx1ZXMiOiBbODI1LjI5Nzk5OTk4MTU1OCwgODEzLjM5MTAwMDAw
MzMyMTEsIDgyMC4zNzM5OTk5NzM1MjYyLCA4MjIuODYyOTk5OTc5NDA2NiwgODIzLjI3MzAwMDAx
NjM0MjgsIDgxNi42ODk5OTk5Nzc4MjUyLCA4MDguNDEzOTk5OTk5MTc0OCwgODA3LjE1OTAwMDAx
ODE0NTksIDgwNi4zOTkwMDAwMjI3OTMyLCA4MDMuNDY2MDAwMDEyMTIyMSwgODA5LjA3MDk5OTk5
NjAzODIsIDgyNC4wMjEwMDAwMDc2MzMxLCA4MTAuNTE5OTk5OTk5MDg3MywgODExLjk0Nzk5OTk4
Nzc1MTIsIDgxMi4xODMwMDAwMDE4MjM1LCA4MDguMDI5MDAwMDA3MDgxOCwgODExLjE4Nzk5OTk5
MjM5ODUsIDgxNC4zNDg5OTk5OTI5NDQzLCA4MTAuMTU0MDAwMDA2MTUwNSwgODEwLjAzMTAwMDAw
MDg5MDNdLCAic3RkZXYiOiA2LjQ4Njc0ODU0NjAwODI0NSwgImF2ZyI6IDgxMy40NDEwNDk5OTg4
MDA3LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0Ok1hbGxvYyI6IHsibWluIjog
MC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAi
dW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0OkpTSGVhcCI6IHsibWluIjogMTA2
MTc2MDAuMCwgIm1heCI6IDEzNjY2NzAwLjAsICJtZWRpYW4iOiAxMzY2MTA5Mi4wLCAidmFsdWVz
IjogWzEzNjY2NzAwLjAsIDEzNjY0OTg0LjAsIDEwNjE3NjAwLjAsIDEzNjU5ODgwLjAsIDEzNjU5
ODg4LjAsIDEzNjYwNDcyLjAsIDEzNjYwNjA4LjAsIDEzNjYwOTQ4LjAsIDEzNjYxMTQ4LjAsIDEz
NjYxMDM2LjAsIDEzNjYwNjA4LjAsIDEzNjU4NjM2LjAsIDEzNjYyMjcyLjAsIDEzNjYwNDkyLjAs
IDEzNjYyMDM2LjAsIDEzNjYxNTEyLjAsIDEzNjYyMTEyLjAsIDEzNjYxNDQ4LjAsIDEzNjY0MTA0
LjAsIDEzNjYyMzY0LjBdLCAic3RkZXYiOiA2ODA2NzEuNTk2OTY1ODUxMSwgImF2ZyI6IDEzNTA5
NDQyLjQwMDAwMDAwMiwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIs
ICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9uIjogIjE2Mjk4MyJ9
LCB7InRpbWVzdGFtcCI6IDEzNTA3ODEwNjksICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMxOTg4Iiwg
InJlc3VsdHMiOiB7IkJpbmRpbmdzL2djLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgi
OiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5
dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjogMjA3NzMxMDQuMCwgIm1h
eCI6IDIwNzc4Mzg4LjAsICJtZWRpYW4iOiAyMDc3NTk5MC4wLCAidmFsdWVzIjogWzIwNzc2NzI4
LjAsIDIwNzczODA0LjAsIDIwNzc1MjA4LjAsIDIwNzczNjM2LjAsIDIwNzc1Mzc2LjAsIDIwNzc0
Mjg4LjAsIDIwNzc1NzMyLjAsIDIwNzc0NDMyLjAsIDIwNzc2NDQwLjAsIDIwNzc0ODEyLjAsIDIw
Nzc2NTAwLjAsIDIwNzczMTA0LjAsIDIwNzc2NDEyLjAsIDIwNzc2MTU2LjAsIDIwNzc3MzgwLjAs
IDIwNzc1ODI0LjAsIDIwNzc3OTg0LjAsIDIwNzc3NjE2LjAsIDIwNzc4MDgwLjAsIDIwNzc4Mzg4
LjBdLCAic3RkZXYiOiAxNTU4LjQ0NTU4MTg0NDY3MTMsICJhdmciOiAyMDc3NTg5NS4wMDAwMDAw
MDcsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlIjogeyJtaW4iOiAxMTg0Ljg1
NjAwMDAwNzEzMDIsICJtYXgiOiAxMjExLjkwNzk5OTk5NzQ5MjksICJtZWRpYW4iOiAxMTkxLjQ0
NDUwMDAwMDIxNiwgInZhbHVlcyI6IFsxMTkxLjUwNDk5OTk5NTIzMTYsIDExODUuODMwMDAwMDAy
MTcsIDEyMTEuOTA3OTk5OTk3NDkyOSwgMTE4NS43Mjc5OTk5ODIxOTEyLCAxMTk1LjIxOTk5OTk5
NDE1MTMsIDExODguODA5OTk5OTkyMzcyNSwgMTE5MS4zODQwMDAwMDUyMDA1LCAxMTg4LjAxNzAw
MDAwNzY3NiwgMTE5Mi40NTAwMDAwMDIyODE3LCAxMTg3LjMwODAwMDAyMjMxMjYsIDExODguOTQ3
MDAwMDE2OTI0LCAxMTg5LjExNTk5OTk5NDEwMSwgMTE5MS4zMDE5OTk5OTE5OTI1LCAxMTk5LjQz
NTk5OTk5NTMzMDMsIDEyMDQuOTQ2MDAwMDEyNTY5MSwgMTE4NC44NTYwMDAwMDcxMzAyLCAxMTkx
Ljk0OTAwMDAwMDAyMjQsIDExOTguMjY4MDAwMDA3Mzc0MiwgMTIxMC4xOTA5OTk5OTEwMjc2LCAx
MTk1Ljk0MDk5OTk4MzU3N10sICJzdGRldiI6IDcuNzk5OTg0MzM5OTUxOTQ4LCAiYXZnIjogMTE5
My42NTU2MDAwMDAwNTY0LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0IjogeyJt
aW4iOiA4MDAuNzg5MDAwMDAwODA0NywgIm1heCI6IDg1My44MzE5OTk5OTM0MTc0LCAibWVkaWFu
IjogODEwLjU0MDQ5OTk5NTExMzQsICJ2YWx1ZXMiOiBbODE2LjU5MDAwMDAwMjE3OTMsIDgyMC44
NDgwMDAwMDMwMjQ5LCA4MjAuNDE4OTk5OTk2MDM2MywgODUzLjgzMTk5OTk5MzQxNzQsIDgyMy41
MjcwMDAwMDA0Njc1LCA4MjcuMzExMDAwMDAwOTE4MywgODA5LjYwOTk5OTk5NjYxLCA4MjQuNTEy
OTk5OTk5NTY5NywgODAyLjUzNjAwMDAwMjg3NDEsIDgxMy4yMTY5OTk5ODgwNzE2LCA4MTAuNDI2
MDAwMDEwOTIwNywgODEwLjUwNjAwMDAwODg5OTcsIDgxOS44OTcwMDAwMDg0OTU1LCA4MDYuOTQx
OTk5OTk1NjE1MywgODAwLjc4OTAwMDAwMDgwNDcsIDgwNC42MDY5OTk5OTgyMTM3LCA4MDYuMTUw
OTk5OTk3MDQ0LCA4MTAuNTc0OTk5OTgxMzI3LCA4MDQuNzM1MDAwMDEyNDQyNSwgODA2LjQwNjk5
OTk5NjM5NzZdLCAic3RkZXYiOiAxMi4xMjA2Nzc5NzE1ODM2ODksICJhdmciOiA4MTQuNjcxODk5
OTk5NjY2NSwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpNYWxsb2MiOiB7Im1p
biI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAu
MCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpKU0hlYXAiOiB7Im1pbiI6
IDEwNjE3NjAwLjAsICJtYXgiOiAxMzY2NjcwNC4wLCAibWVkaWFuIjogMTM2NjEwOTIuMCwgInZh
bHVlcyI6IFsxMzY2NjcwNC4wLCAxMzY2NDk4NC4wLCAxMDYxNzYwMC4wLCAxMzY1OTg4OC4wLCAx
MzY1OTg4OC4wLCAxMzY2MDQ3Mi4wLCAxMzY2MDYwNC4wLCAxMzY2MDk0OC4wLCAxMzY2MTE0OC4w
LCAxMzY2MTAzNi4wLCAxMzY2MDYwOC4wLCAxMzY1ODYzNi4wLCAxMzY2MjI3Mi4wLCAxMzY2MDQ5
Mi4wLCAxMzY2MjAzNi4wLCAxMzY2MTUxMi4wLCAxMzY2MjEwOC4wLCAxMzY2MTQ0MC4wLCAxMzY2
NDA5Ni4wLCAxMzY2MjM1Ni4wXSwgInN0ZGV2IjogNjgwNjcxLjM2MDQwNTQ4NDEsICJhdmciOiAx
MzUwOTQ0MS4zOTk5OTk5OTksICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21p
dW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5
ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgxMTIyLCAid2Via2l0LXJldmlzaW9uIjogIjEzMTk4
OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9nYy10cmVlOk1hbGxvYyI6IHsibWluIjogMC4wLCAi
bWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczMTUyLjAs
ICJtYXgiOiAyMDc3ODM1Mi4wLCAibWVkaWFuIjogMjA3NzU5OTAuMCwgInZhbHVlcyI6IFsyMDc3
NjcyOC4wLCAyMDc3MzgwOC4wLCAyMDc3NTIxMi4wLCAyMDc3MzYzNi4wLCAyMDc3NTM4MC4wLCAy
MDc3NDI4OC4wLCAyMDc3NTczNi4wLCAyMDc3NDQzNi4wLCAyMDc3NjQ0NC4wLCAyMDc3NDgxMi4w
LCAyMDc3NjUwNC4wLCAyMDc3MzE1Mi4wLCAyMDc3NjY2MC4wLCAyMDc3NjE5Mi4wLCAyMDc3NzYz
Ni4wLCAyMDc3NTc4OC4wLCAyMDc3Nzk4MC4wLCAyMDc3NzU4OC4wLCAyMDc3ODA1Ni4wLCAyMDc3
ODM1Mi4wXSwgInN0ZGV2IjogMTU2Ni4zMjYzMjIxMjA0NTM4LCAiYXZnIjogMjA3NzU5MTkuNCwg
InVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLXRyZWUiOiB7Im1pbiI6IDEyNzUuNzUxOTk5
OTg2ODIzNiwgIm1heCI6IDEzNTUuODA2MDAwMDA2ODUwOCwgIm1lZGlhbiI6IDEyODMuMzM1NTAw
MDAzODg2NCwgInZhbHVlcyI6IFsxMzQ3Ljg0MTAwMDAwOTc5MzgsIDEyODEuNDEzOTk5OTk3MzEy
MiwgMTMwNS4xMTI5OTk5ODAzMzgsIDEyNzguODQzMDAwMDA3MzI3NiwgMTMzNC40ODY5OTk5ODU1
MjksIDEyOTMuMTAzMDAwMDAzNjExNywgMTM1NS44MDYwMDAwMDY4NTA4LCAxMjc1Ljc1MTk5OTk4
NjgyMzYsIDEzMzQuMDU4MDAwMDA3NjQ0MywgMTI3OS41MzMwMDAwMjI2Mzg2LCAxMjgxLjQzNTk5
OTk5MDIwOCwgMTI3OS44NDQ5OTk5ODI3NDI2LCAxMjgwLjkxNDAwMDAwMjY2NzMsIDEyODEuNTQ5
MDAwMDA2NjM0NywgMTI4Mi42ODIwMDAwMTkxMjIsIDEyODMuOTg4OTk5OTg4NjUxLCAxMjgyLjU4
ODAwMDAwMTg1MTUsIDEyODQuMDEyMDAwMDE4MjY1LCAxMzM3LjMxNDAwMDAwMzk3MTIsIDEzNDMu
OTI0OTk5OTkzNzYwMV0sICJzdGRldiI6IDI4LjU1MTk1OTE1MjIwMTcwNywgImF2ZyI6IDEzMDEu
MjEwMjAwMDAwNzg3LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0IjogeyJtaW4i
OiA4MDEuNTA2MDAwMDE3OTgwMSwgIm1heCI6IDgyMy42MDI5OTk5OTcwOTI0LCAibWVkaWFuIjog
ODA4LjI0NTAwMDAwNzQ0NTksICJ2YWx1ZXMiOiBbODEwLjg4NDk5OTk4NDQwOTcsIDgwOC4yMDUw
MDAwMDg0NTY0LCA4MDguMjU2OTk5OTk2OTU2NCwgODA3Ljk3NDAwMDAyNDg0MjEsIDgwOC4yNzYw
MDAwMjUyMTY1LCA4MDMuNTU0MDAwMDEyODA5NCwgODAxLjUwNjAwMDAxNzk4MDEsIDgxNi43MTcw
MDAwMDg3OTM1LCA4MDIuNjkxMDAwMDE4OTY3MywgODAyLjczNjk5OTk5MDg4NDIsIDgwOS4zOTMw
MDAwMDMxODMzLCA4MTAuNjM3MDAwMDE2ODY4MSwgODA3Ljg0MTAwMDAwMTY0NDcsIDgwNi41NzA5
OTk5OTM3MDk4LCA4MDkuODgwOTk5OTkzNzY1NywgODIzLjYwMjk5OTk5NzA5MjQsIDgwNS42OTU5
OTk5OTU4MDUzLCA4MDguMjMzMDAwMDE3OTM1NCwgODE3LjAyNjAwMDAwNDI2MTcsIDgwOS44Njcw
MDAwMDM1NzgxXSwgInN0ZGV2IjogNS4yODg5MDY0NDYwOTM0NDcsICJhdmciOiA4MDguOTc3NTAw
MDA1ODU4LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0Ok1hbGxvYyI6IHsibWlu
IjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4w
LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0OkpTSGVhcCI6IHsibWluIjog
MTA2MTc2MDAuMCwgIm1heCI6IDEzNjY2NzA0LjAsICJtZWRpYW4iOiAxMzY2MTA5Mi4wLCAidmFs
dWVzIjogWzEzNjY2NzA0LjAsIDEzNjY0OTg0LjAsIDEwNjE3NjAwLjAsIDEzNjU5ODg4LjAsIDEz
NjU5ODg4LjAsIDEzNjYwNDcyLjAsIDEzNjYwNjA4LjAsIDEzNjYwOTQ4LjAsIDEzNjYxMTQ4LjAs
IDEzNjYxMDM2LjAsIDEzNjYwNjA4LjAsIDEzNjU4NjM2LjAsIDEzNjYyMjcyLjAsIDEzNjYwNDky
LjAsIDEzNjYyMDM2LjAsIDEzNjYxNTEyLjAsIDEzNjYyMTEyLjAsIDEzNjYxNDQ4LjAsIDEzNjY0
MTA0LjAsIDEzNjYyMzY0LjBdLCAic3RkZXYiOiA2ODA2NzEuNzM4NjY1NDg1MywgImF2ZyI6IDEz
NTA5NDQzLjAsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJh
bmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMifSwgeyJ0
aW1lc3RhbXAiOiAxMzUwNzgxMjIxLCAid2Via2l0LXJldmlzaW9uIjogIjEzMTk4OCIsICJyZXN1
bHRzIjogeyJCaW5kaW5ncy9nYy10cmVlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4w
LCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9
LCAiQmluZGluZ3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczMTUyLjAsICJtYXgiOiAy
MDc3ODM0OC4wLCAibWVkaWFuIjogMjA3NzU5ODguMCwgInZhbHVlcyI6IFsyMDc3NjcyOC4wLCAy
MDc3MzgwOC4wLCAyMDc3NTIxMi4wLCAyMDc3MzYzNi4wLCAyMDc3NTM4MC4wLCAyMDc3NDI4OC4w
LCAyMDc3NTczNi4wLCAyMDc3NDQzMi4wLCAyMDc3NjQ0NC4wLCAyMDc3NDgxMi4wLCAyMDc3NjUw
NC4wLCAyMDc3MzE1Mi4wLCAyMDc3NjY2MC4wLCAyMDc3NjE5Mi4wLCAyMDc3NzYzNi4wLCAyMDc3
NTc4NC4wLCAyMDc3Nzk3Ni4wLCAyMDc3NzU4NC4wLCAyMDc3ODA0OC4wLCAyMDc3ODM0OC4wXSwg
InN0ZGV2IjogMTU2NS4xNDIxMzI0MzgxNjU4LCAiYXZnIjogMjA3NzU5MTguMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkJpbmRpbmdzL2djLXRyZWUiOiB7Im1pbiI6IDExMTUuMTI0OTk5OTgyMDcyLCAi
bWF4IjogMTI0Mi41NDgwMDAwMDkyNjQ4LCAibWVkaWFuIjogMTIxNy42NTk0OTk5OTA5ODY3LCAi
dmFsdWVzIjogWzExMTUuMTI0OTk5OTgyMDcyLCAxMjI5LjA4MjAwMDAwNTI5MTgsIDExOTkuMzMw
MDAwMDAzMTAxMywgMTIzNy40NzkwMDAwMDMwNzcsIDExMjAuNzU5OTk5OTkwNjk2LCAxMjM2Ljcz
Njk5OTk5OTI2NjEsIDExMTYuNTM2MDAwMDE1OTEyNiwgMTI0MC45MDU5OTk5OTE4MSwgMTExOC42
MjMwMDAwMTY2Njg4LCAxMjQxLjYzOTAwMDAxNDQwMiwgMTIzNS44NjMwMDAwMDg5NzYsIDEyMzcu
ODkwOTk5OTk3MDM0NywgMTE4Ni43NjY5OTk5Nzc0MDgsIDEyMDYuMjM2OTk5OTc2NjgxNSwgMTE5
Ni40NTg5OTk5OTg4Njc1LCAxMjM3LjkzODAwMDAwNTY3LCAxMjM3LjI4Njk5OTk5NjI4NTksIDEy
NDIuNTQ4MDAwMDA5MjY0OCwgMTE3OS4yMDE5OTk5OTkzNSwgMTE4NC45MDIwMDAwMDgxNTFdLCAi
c3RkZXYiOiA0Ny4xOTkyNDEwODQ3NTgsICJhdmciOiAxMjAwLjA2NTU0OTk5OTk5OTEsICJ1bml0
IjogIm1zIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3QiOiB7Im1pbiI6IDgyMi4xMTUwMDAwMTcyMjAy
LCAibWF4IjogODQ3Ljc1Nzk5OTk4ODk3MTMsICJtZWRpYW4iOiA4MzEuMTE5NDk5OTk4NzQ5Miwg
InZhbHVlcyI6IFs4NDcuNzU3OTk5OTg4OTcxMywgODM0LjQ4NjAwMDAwNzAxODQsIDgzOC4xODIw
MDAwMDY3ODE5LCA4MzEuMDI1OTk5OTk5ODM4LCA4MzAuMTgwOTk5OTk3NTM3NiwgODQ1LjI5MjAw
MDAxMjcwNTEsIDgyOC42NDAwMDAwMjE1NTA4LCA4MjcuNDI2MDAwMDAzNDcwMSwgODI3Ljk3ODAw
MDAxNTcxODksIDgyMi4xMTUwMDAwMTcyMjAyLCA4MzkuODIxMDAwMDAxMzkzMywgODI0LjgxOTAw
MDAwMTI5ODMsIDgzMS45NjMwMDAwMDQxNzk4LCA4MzAuMjgxOTk5OTgwNzk4LCA4MzIuMjI0OTk5
OTkxMDEyNywgODM0LjgzOTk5OTk5NTg5MjksIDgzMy45MTMwMDAwMDk0ODgzLCA4MzEuMjEyOTk5
OTk3NjYwNSwgODI1LjM2MjAwMDAwMzIyNDIsIDgyOC4xNTA5OTk5OTQyNV0sICJzdGRldiI6IDYu
NTA5NTAyODc1NjcyMTI2LCAiYXZnIjogODMyLjI4MzY1MDAwMjUwMDMsICJ1bml0IjogIm1zIn0s
ICJCaW5kaW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJt
ZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJC
aW5kaW5ncy9nYy1mb3Jlc3Q6SlNIZWFwIjogeyJtaW4iOiAxMDYxNzYwMC4wLCAibWF4IjogMTM2
NjY3MDQuMCwgIm1lZGlhbiI6IDEzNjYxMDkyLjAsICJ2YWx1ZXMiOiBbMTM2NjY3MDQuMCwgMTM2
NjQ5ODQuMCwgMTA2MTc2MDAuMCwgMTM2NTk4ODQuMCwgMTM2NTk4ODguMCwgMTM2NjA0NzIuMCwg
MTM2NjA2MDguMCwgMTM2NjA5NDguMCwgMTM2NjExNDguMCwgMTM2NjEwMzYuMCwgMTM2NjA2MDgu
MCwgMTM2NTg2MzYuMCwgMTM2NjIyNzIuMCwgMTM2NjA0ODguMCwgMTM2NjIwMzIuMCwgMTM2NjE1
MDguMCwgMTM2NjIxMDguMCwgMTM2NjE0NDQuMCwgMTM2NjQxMDAuMCwgMTM2NjIzNTYuMF0sICJz
dGRldiI6IDY4MDY3MS4zMTQ1MjczNDEzLCAiYXZnIjogMTM1MDk0NDEuMiwgInVuaXQiOiAiYnl0
ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwg
ImNocm9taXVtLXJldmlzaW9uIjogIjE2Mjk4MyJ9LCB7InRpbWVzdGFtcCI6IDEzNTA3ODEyNzYs
ICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMxOTg4IiwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2djLXRy
ZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1
ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYi
OiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlOkpT
SGVhcCI6IHsibWluIjogMjA3NzMxNDguMCwgIm1heCI6IDIwNzc4MzUyLjAsICJtZWRpYW4iOiAy
MDc3NTk4OC4wLCAidmFsdWVzIjogWzIwNzc2NzI4LjAsIDIwNzczODA4LjAsIDIwNzc1MjEyLjAs
IDIwNzczNjM2LjAsIDIwNzc1MzgwLjAsIDIwNzc0Mjg4LjAsIDIwNzc1NzM2LjAsIDIwNzc0NDM2
LjAsIDIwNzc2NDQ0LjAsIDIwNzc0ODEyLjAsIDIwNzc2NTA0LjAsIDIwNzczMTQ4LjAsIDIwNzc2
NjYwLjAsIDIwNzc2MTkyLjAsIDIwNzc3NjM2LjAsIDIwNzc1Nzg0LjAsIDIwNzc3OTc2LjAsIDIw
Nzc3NTg4LjAsIDIwNzc4MDU2LjAsIDIwNzc4MzUyLjBdLCAic3RkZXYiOiAxNTY2LjQzOTY2NDAz
MDQ1NDIsICJhdmciOiAyMDc3NTkxOC44LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2Mt
dHJlZSI6IHsibWluIjogMTIwOC44ODc5OTk5OTM3NDksICJtYXgiOiAxMjQ0LjgyNjAwMDAwOTE5
NzcsICJtZWRpYW4iOiAxMjE3LjA5NTAwMDAxNDUyNCwgInZhbHVlcyI6IFsxMjE0LjUzOTk5OTk4
NjMwMDIsIDEyMjEuMTAxMDAwMDAyODE4MiwgMTI0NC44MjYwMDAwMDkxOTc3LCAxMjIwLjQxMTk5
OTk5NTEyMTcsIDEyMTQuNDc0MDAwMDA3NjEyNiwgMTIyNC4yNTQwMDAwMDA2NTU3LCAxMjEyLjU4
MzAwMDAxNTAwMTcsIDEyMjcuODQwMDAwMDA2ODM2LCAxMjEyLjU1NjAwMDAxMzEzNzIsIDEyMjQu
NjIyOTk5OTg3MzMyMiwgMTIxNS4xNjkwMDAwMDI3ODg0LCAxMjE1Ljc4ODk5OTk3OTg1LCAxMjE4
LjMxMDk5OTk3NTA3NCwgMTIxOC4yNDc5OTk5OTAxMjYxLCAxMjE2Ljk0MDAwMDAxMjk4MjYsIDEy
MDkuNTcxMDAwMDEzOTY2LCAxMjE1Ljg2Njk5OTk5MTcwMzgsIDEyMTcuMjUwMDAwMDE2MDY1Mywg
MTIyNi43ODY5OTk5OTIzMjc4LCAxMjA4Ljg4Nzk5OTk5Mzc0OV0sICJzdGRldiI6IDguMDQxOTM4
NjczNTE1MDg5LCAiYXZnIjogMTIxOS4wMDE0NDk5OTk2MzIzLCAidW5pdCI6ICJtcyJ9LCAiQmlu
ZGluZ3MvZ2MtZm9yZXN0IjogeyJtaW4iOiA4MTguMzQ1OTk5OTg1NDY3NiwgIm1heCI6IDgzOS41
MzM5OTk5OTg4MjEsICJtZWRpYW4iOiA4MjQuNTU4MDAwMDA3NTI3OSwgInZhbHVlcyI6IFs4Mzcu
Nzk0OTk5OTk5NDU5OCwgODI1LjgzODk5OTk5NzM1ODgsIDgzNC4yNjQwMDAwMDQ2MjMxLCA4MzAu
MTgwOTk5OTk3NTM3NiwgODI4LjU4ODAwMDAwMzk0NywgODI4LjA2MTAwMDAwNzQzNzUsIDgyNy4z
NjI5OTk5ODk0MTgzLCA4MjAuODc5MDAwMDA2MjQzNiwgODIzLjg1MTk5OTk3MjI0ODQsIDgyMy4w
MDAwMDAwMDM5NTgxLCA4MjguNzM2MDAwMDI0OTQ2NCwgODE4LjM0NTk5OTk4NTQ2NzYsIDgzOS41
MzM5OTk5OTg4MjEsIDgyMS40OTM5OTk5NzQzMzY1LCA4MjMuODIyMDAwMDA1NzQ4MSwgODIzLjA0
MDAwMDAxNzQ5OTYsIDgyMC45MDY5OTk5ODY2MTg4LCA4MjQuOTU0MDAwMDEwNjIwOCwgODI0LjE2
MjAwMDAwNDQzNSwgODIwLjEzNzk5OTk4MDk0MzNdLCAic3RkZXYiOiA1LjczMTUzMTA4MzI3NjAz
NywgImF2ZyI6IDgyNi4yNDc3NDk5OTg1ODM1LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2Mt
Zm9yZXN0Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAi
dmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0
ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9y
ZXN0OkpTSGVhcCI6IHsibWluIjogMTA2MTc2MDAuMCwgIm1heCI6IDEzNjY2NzA0LjAsICJtZWRp
YW4iOiAxMzY2MTA5Mi4wLCAidmFsdWVzIjogWzEzNjY2NzA0LjAsIDEzNjY0OTg0LjAsIDEwNjE3
NjAwLjAsIDEzNjU5ODg4LjAsIDEzNjU5ODg0LjAsIDEzNjYwNDcyLjAsIDEzNjYwNjA4LjAsIDEz
NjYwOTQ4LjAsIDEzNjYxMTQ4LjAsIDEzNjYxMDM2LjAsIDEzNjYwNjA4LjAsIDEzNjU4NjM2LjAs
IDEzNjYyMjY4LjAsIDEzNjYwNDg4LjAsIDEzNjYyMDMyLjAsIDEzNjYxNTA4LjAsIDEzNjYyMTA4
LjAsIDEzNjYxNDQ0LjAsIDEzNjY0MDk2LjAsIDEzNjYyMzU2LjBdLCAic3RkZXYiOiA2ODA2NzEu
MjE5NDI0MzE5LCAiYXZnIjogMTM1MDk0NDAuOCwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9y
bSI6ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlz
aW9uIjogIjE2Mjk4MyJ9LCB7InRpbWVzdGFtcCI6IDEzNTA3ODEzMzQsICJ3ZWJraXQtcmV2aXNp
b24iOiAiMTMxOTg4IiwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2djLXRyZWU6TWFsbG9jIjogeyJt
aW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAw
LjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjog
MjA3NzMxNTIuMCwgIm1heCI6IDIwNzc4MzUyLjAsICJtZWRpYW4iOiAyMDc3NTk5MC4wLCAidmFs
dWVzIjogWzIwNzc2NzI4LjAsIDIwNzczODA4LjAsIDIwNzc1MjEyLjAsIDIwNzczNjM2LjAsIDIw
Nzc1Mzc2LjAsIDIwNzc0Mjg4LjAsIDIwNzc1NzM2LjAsIDIwNzc0NDM2LjAsIDIwNzc2NDQ0LjAs
IDIwNzc0ODEyLjAsIDIwNzc2NTA0LjAsIDIwNzczMTUyLjAsIDIwNzc2NjYwLjAsIDIwNzc2MTky
LjAsIDIwNzc3NjM2LjAsIDIwNzc1Nzg4LjAsIDIwNzc3OTgwLjAsIDIwNzc3NTg4LjAsIDIwNzc4
MDU2LjAsIDIwNzc4MzUyLjBdLCAic3RkZXYiOiAxNTY2LjM5OTA3NTMxNzU2NjUsICJhdmciOiAy
MDc3NTkxOS4yMDAwMDAwMDMsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlIjog
eyJtaW4iOiAxMzgxLjM2NTk5OTk4Njg4MzMsICJtYXgiOiAxNDE1LjA1NDk5OTk5MDM4ODgsICJt
ZWRpYW4iOiAxMzg5LjU3ODAwMDAxNjYyNywgInZhbHVlcyI6IFsxMzg2LjY5Mjk5OTk3ODU0OTgs
IDEzOTcuMDk0OTk5OTkyOTg3MSwgMTQxNS4wNTQ5OTk5OTAzODg4LCAxMzg4LjczMTk5OTk5MjE2
MDEsIDEzOTAuMDk3MDAwMDI0OTgsIDEzOTAuMTM4OTk5OTk1NTQyNywgMTM4MS4zNjU5OTk5ODY4
ODMzLCAxMzg2LjcwODAwMDAwNTQ1NTcsIDEzOTAuMTM2MDAwMDAxODAzLCAxMzg4LjY1MTAwMDAx
NTY3MDQsIDEzODYuNjYzMDAwMDEyMDQ5NSwgMTM4Ny44NDg5OTk5OTE1NDczLCAxMzgyLjc2NzAw
MDAwMjc4NjUsIDEzOTIuNDUxMDAwMDIxNTM3OCwgMTM5Mi4xMzY5OTk5ODc5OTcxLCAxMzkwLjI0
OTk5OTk5Njc0MDQsIDEzODkuMDU5MDAwMDA4MjczOSwgMTQxMC42MjA5OTk5ODgxNjg1LCAxMzgy
LjQ5NDk5OTk5ODAxNjMsIDEzOTMuNjQyOTk5OTg4NTE1XSwgInN0ZGV2IjogOC4zNTYzODg4OTQ0
MTM4NDksICJhdmciOiAxMzkxLjEzMDM0OTk5OTAwMjQsICJ1bml0IjogIm1zIn0sICJCaW5kaW5n
cy9nYy1mb3Jlc3QiOiB7Im1pbiI6IDgyMS41MDAwMDAwMjAwMjM0LCAibWF4IjogODUxLjgyNzAw
MDAwNTg2OTIsICJtZWRpYW4iOiA4MzIuNjU2NTAwMDAyNDg1NywgInZhbHVlcyI6IFs4NDcuNDU2
OTk5OTk2MjExNCwgODMyLjU1Mzk5OTk5MzI1MTYsIDgzMS44OTE5OTk5ODc0MTk3LCA4MzUuMzgx
OTk5OTkwMjA0MywgODMxLjM5OTk5OTk5NTQ4MzEsIDgzNC44MDU5OTk5OTg5MzQ2LCA4MzIuNzU5
MDAwMDExNzE5OCwgODI5LjIxMzk5OTk5NzU5MTYsIDgyNi4zODg5OTk5OTQzNzg1LCA4MjEuNTAw
MDAwMDIwMDIzNCwgODM0LjIwNDAwMDAxMzQxNDgsIDgyOC44NzUwMDAwMDY1MTkzLCA4MzQuMjUz
MDAwMDA4MTc1MSwgODMzLjQ5NjAwMDAwNjU2MjEsIDgzMC4zNjY5OTk5ODc3NDU3LCA4NTEuODI3
MDAwMDA1ODY5MiwgODM3Ljc2OTk5OTk4MzcyMDUsIDgyNy45ODk5OTk5OTA2Nzc1LCA4MjUuMzQ0
OTk5OTkwMTkzMiwgODM5LjMxMTk5OTk5NjQyNTZdLCAic3RkZXYiOiA3LjAyNjAwNzYxMzMxOTc3
MiwgImF2ZyI6IDgzMy4zMzk1OTk5OTg3MjYyLCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2Mt
Zm9yZXN0Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAi
dmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0
ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9y
ZXN0OkpTSGVhcCI6IHsibWluIjogMTA2MTc2MDAuMCwgIm1heCI6IDEzNjY2NzA0LjAsICJtZWRp
YW4iOiAxMzY2MTA5Mi4wLCAidmFsdWVzIjogWzEzNjY2NzA0LjAsIDEzNjY0OTg0LjAsIDEwNjE3
NjAwLjAsIDEzNjU5ODg4LjAsIDEzNjU5ODg4LjAsIDEzNjYwNDcyLjAsIDEzNjYwNjA4LjAsIDEz
NjYwOTQ4LjAsIDEzNjYxMTQ4LjAsIDEzNjYxMDM2LjAsIDEzNjYwNjA4LjAsIDEzNjU4NjM2LjAs
IDEzNjYyMjcyLjAsIDEzNjYwNDkyLjAsIDEzNjYyMDM2LjAsIDEzNjYxNTEyLjAsIDEzNjYyMTEy
LjAsIDEzNjYxNDQ4LjAsIDEzNjY0MTA0LjAsIDEzNjYyMzY0LjBdLCAic3RkZXYiOiA2ODA2NzEu
NzM4NjY1NDg1MywgImF2ZyI6IDEzNTA5NDQzLjAsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZv
cm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZp
c2lvbiI6ICIxNjI5ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgxNDAxLCAid2Via2l0LXJldmlz
aW9uIjogIjEzMTk4OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9nYy10cmVlOk1hbGxvYyI6IHsi
bWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjog
MC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6
IDIwNzczMTUyLjAsICJtYXgiOiAyMDc3ODM1Mi4wLCAibWVkaWFuIjogMjA3NzU5OTAuMCwgInZh
bHVlcyI6IFsyMDc3NjcyOC4wLCAyMDc3MzgwOC4wLCAyMDc3NTIxMi4wLCAyMDc3MzYzNi4wLCAy
MDc3NTM4MC4wLCAyMDc3NDI4OC4wLCAyMDc3NTczNi4wLCAyMDc3NDQzNi4wLCAyMDc3NjQ0NC4w
LCAyMDc3NDgxMi4wLCAyMDc3NjUwNC4wLCAyMDc3MzE1Mi4wLCAyMDc3NjY2MC4wLCAyMDc3NjE5
Mi4wLCAyMDc3NzYzNi4wLCAyMDc3NTc4OC4wLCAyMDc3Nzk4MC4wLCAyMDc3NzU4OC4wLCAyMDc3
ODA1Ni4wLCAyMDc3ODM1Mi4wXSwgInN0ZGV2IjogMTU2Ni4zMjYzMjIxMjA0NTM4LCAiYXZnIjog
MjA3NzU5MTkuNCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLXRyZWUiOiB7Im1pbiI6
IDEyMjkuODUyOTk5OTk3MDkyNCwgIm1heCI6IDEyOTIuNTM5OTk5OTk0OTE1LCAibWVkaWFuIjog
MTIzOC43OTI0OTk5OTI5OTY1LCAidmFsdWVzIjogWzEyNzcuNDI2OTk5OTkzNjIyMywgMTIyOS45
MTUwMDAwMDM1Mjk3LCAxMjQ3LjcwMjAwMDAyMjQwMDIsIDEyMzEuMTA5MDAwMDE0ODM5NywgMTI4
OS40MTA5OTk5NzYwOTg1LCAxMjMwLjE0MDk5OTk3ODE3NTQsIDEyOTAuOTE1OTk5OTk4MTA1Nywg
MTIyOS44NTI5OTk5OTcwOTI0LCAxMjkyLjUzOTk5OTk5NDkxNSwgMTIzOC4wNDI5OTk5OTAyODQ0
LCAxMjM4LjUyNzk5OTk4NzEyNzMsIDEyMzcuNDIyMDAwMDA1NjA4NCwgMTIzMC40NzAwMDAwMDk1
MTgxLCAxMjM3LjY0NjAwMDAyMzIzMjgsIDEyMzkuMDU2OTk5OTk4ODY1NiwgMTI0OS40Njc5OTk5
OTQ1MjIsIDEyMzIuMTY2OTk5OTgwMTA4OCwgMTI0Mi4zMTg5OTk5ODI2NzE4LCAxMjgzLjE1NDAw
MDAwNDI4NzgsIDEyODQuOTgxMDAwMDA0MzM2Ml0sICJzdGRldiI6IDI0LjE1OTI3NjEwODMwOTI5
NiwgImF2ZyI6IDEyNTEuNjEzNDQ5OTk3OTY3MywgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2dj
LWZvcmVzdCI6IHsibWluIjogODIyLjM5Mzk5OTk4Nzk4MDQsICJtYXgiOiA4NDQuOTk3MDAwMDA3
NDI0NSwgIm1lZGlhbiI6IDgyOS4xNDU0OTk5OTk4Njc4LCAidmFsdWVzIjogWzg0NC45OTcwMDAw
MDc0MjQ1LCA4MzMuNTUzMDAwMDA0MDMwOCwgODQyLjIyNzAwMDAxNTU1NSwgODMwLjQxNDAwMDAy
NTQ4NDcsIDgzOC4wNjM5OTk5ODEzODY2LCA4MjguNzE0MDAwMDAyOTQ2NywgODI2LjY3MDk5OTk4
Nzk4MjIsIDgyMy44NDk5OTk5ODYxMjMzLCA4NDIuMDA4OTk5OTg1NDA5OSwgODIyLjM5Mzk5OTk4
Nzk4MDQsIDgzMC4yNTUwMDAwMDgwMzczLCA4MzEuNjY1OTk5OTgzNjcwMiwgODI5LjI2NTAwMDAw
NzU4MSwgODI1LjU0NDk5OTk5OTY5MjcsIDgyOS4wMjU5OTk5OTIxNTQ1LCA4MjIuODYwOTk5OTkz
MjgxNCwgODI5LjU2ODAwMDAxNTU2OTksIDgyNS4xNjg5OTk5ODg4MTg1LCA4MjUuNjc3MDAwMDE1
Mjc1NiwgODI0LjA4Mzk5OTk5MjU4MTFdLCAic3RkZXYiOiA2LjcwOTgwMzA2OTg3MDI1MSwgImF2
ZyI6IDgzMC4zMDA0NDk5OTkwNDkzLCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0
Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVz
IjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2Ijog
MC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0OkpT
SGVhcCI6IHsibWluIjogMTA2MTc1OTIuMCwgIm1heCI6IDEzNjY2NzAwLjAsICJtZWRpYW4iOiAx
MzY2MTA4OC4wLCAidmFsdWVzIjogWzEzNjY2NzAwLjAsIDEzNjY0OTgwLjAsIDEwNjE3NTkyLjAs
IDEzNjU5ODcyLjAsIDEzNjU5ODg0LjAsIDEzNjYwNDY4LjAsIDEzNjYwNjA0LjAsIDEzNjYwOTQ0
LjAsIDEzNjYxMTQ0LjAsIDEzNjYxMDMyLjAsIDEzNjYwNjA0LjAsIDEzNjU4NjMyLjAsIDEzNjYy
MjY0LjAsIDEzNjYwNDg0LjAsIDEzNjYyMDI4LjAsIDEzNjYxNTA0LjAsIDEzNjYyMTA0LjAsIDEz
NjYxNDQwLjAsIDEzNjY0MDk2LjAsIDEzNjYyMzU2LjBdLCAic3RkZXYiOiA2ODA2NzIuMTE1OTE5
MjExOCwgImF2ZyI6IDEzNTA5NDM2LjYsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAi
Y2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6
ICIxNjI5ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgxNDU5LCAid2Via2l0LXJldmlzaW9uIjog
IjEzMTk4OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9nYy10cmVlIjogeyJtaW4iOiAxMTA4LjA0
NzAwMDAxNjA4NTgsICJtYXgiOiAxMTkzLjc2NTAwMDAwMzYyMjgsICJtZWRpYW4iOiAxMTc0LjE3
Njk5OTk5MzUwNiwgInZhbHVlcyI6IFsxMTA4LjA0NzAwMDAxNjA4NTgsIDExNzcuNjM5MDAwMDAx
MzYzNSwgMTEzMi4xNjQ5OTk5ODgxNjMsIDExNzUuMzIxOTk5OTk1NTAzNiwgMTExMC40Mzc5OTk5
NzQyMzc4LCAxMTgzLjE3MTk5OTk5MDAwODgsIDExMTIuMDYwMDAwMDE0MDI1NywgMTE3Ny43MDY5
OTk5OTUyOCwgMTExMy4xNTYwMDAwMDY3MTEsIDExODIuMTkwMDAwMDIxMzY0NSwgMTE3NC4yMzg5
OTk5ODUzOTEzLCAxMTcwLjk0MTk5OTk5NzAxMjMsIDExMTguMDg2MDAwMDAyMjIyMSwgMTEyMS40
OTM5OTk5OTE3OTg4LCAxMTIyLjA0NDk5OTk5NjQzMywgMTE3Ni40ODI5OTk5ODgzNjYsIDExNzgu
NTAwMDAwMDA5MDgwNCwgMTE4Mi4wMTQ5OTk5OTg1MDA2LCAxMTkzLjc2NTAwMDAwMzYyMjgsIDEx
NzQuMTE1MDAwMDAxNjIwNV0sICJzdGRldiI6IDMxLjY4NDY3MzIzMTQ4Nzk1NiwgImF2ZyI6IDEx
NTQuMTc4OTk5OTk4ODM5NiwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLXRyZWU6TWFsbG9j
IjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJh
dmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3QiOiB7Im1pbiI6
IDgxOS41MDgwMDAwMTUwNDgzLCAibWF4IjogODQ1LjgzMTAwMDAxMzI3NjksICJtZWRpYW4iOiA4
MjcuMDkwOTk5OTk5MiwgInZhbHVlcyI6IFs4MzcuMTc5MDAwMDIzNzUyNSwgODI4LjA0NTAwMDAw
MjAyMSwgODM5LjAwNTk5OTk5NDY5NywgODMzLjM4NjAwMDAxMjk3ODksIDgzNC4wNDY5OTk5ODIw
OTI1LCA4MjcuNjkyMDAwMDIwNzYxLCA4MjUuMjM2MDAwMDA0MjI0NSwgODE5LjUwODAwMDAxNTA0
ODMsIDgyNy4wNDY5OTk5OTg4NTYzLCA4MjUuMTUwOTk5OTk3Mjc2OCwgODMyLjM3MzAwMDAxMjAx
MjIsIDg0NS44MzEwMDAwMTMyNzY5LCA4MjcuMDI1OTk5OTg0NDcxMSwgODI1LjY2Mjk5OTk5NTk4
NDEsIDgyNy4xMzQ5OTk5OTk1NDM3LCA4MjMuNTQ3OTk5OTg1NzQ4OSwgODI2LjI5Nzk5OTk5OTk1
MTYsIDgyNi42MDkwMDAwMTA2NDg3LCA4MjUuMjcyOTk5OTk0OTIyNCwgODI5LjgxMjk5OTk4OTM3
MTddLCAic3RkZXYiOiA2LjA5NTY2NzUzMzAwNzU3MywgImF2ZyI6IDgyOS4yOTMzMDAwMDE4ODIs
ICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4iOiAwLjAs
ICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0
IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjogMjA3NzMxNTIu
MCwgIm1heCI6IDIwNzc4MzUyLjAsICJtZWRpYW4iOiAyMDc3NTk5MC4wLCAidmFsdWVzIjogWzIw
Nzc2NzI4LjAsIDIwNzczODA4LjAsIDIwNzc1MjEyLjAsIDIwNzczNjM2LjAsIDIwNzc1MzgwLjAs
IDIwNzc0Mjg4LjAsIDIwNzc1NzM2LjAsIDIwNzc0NDMyLjAsIDIwNzc2NDQ0LjAsIDIwNzc0ODEy
LjAsIDIwNzc2NTA0LjAsIDIwNzczMTUyLjAsIDIwNzc2NjYwLjAsIDIwNzc2MTkyLjAsIDIwNzc3
NjM2LjAsIDIwNzc1Nzg4LjAsIDIwNzc3OTgwLjAsIDIwNzc3NTg4LjAsIDIwNzc4MDU2LjAsIDIw
Nzc4MzUyLjBdLCAic3RkZXYiOiAxNTY2LjUyNTk0NTE1MzgxODIsICJhdmciOiAyMDc3NTkxOS4y
MDAwMDAwMDMsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3Q6SlNIZWFwIjog
eyJtaW4iOiAxMDYxNzU4OC4wLCAibWF4IjogMTM2NjY3MDAuMCwgIm1lZGlhbiI6IDEzNjYxMDg4
LjAsICJ2YWx1ZXMiOiBbMTM2NjY3MDAuMCwgMTM2NjQ5NzYuMCwgMTA2MTc1ODguMCwgMTM2NTk4
NzIuMCwgMTM2NTk4ODAuMCwgMTM2NjA0NjQuMCwgMTM2NjA1OTIuMCwgMTM2NjA5NDQuMCwgMTM2
NjExNDQuMCwgMTM2NjEwMzIuMCwgMTM2NjA2MDQuMCwgMTM2NTg2MzIuMCwgMTM2NjIyNjguMCwg
MTM2NjA0ODguMCwgMTM2NjIwMzIuMCwgMTM2NjE1MDguMCwgMTM2NjIxMDguMCwgMTM2NjE0NDQu
MCwgMTM2NjQxMDAuMCwgMTM2NjIzNjAuMF0sICJzdGRldiI6IDY4MDY3My4xMDYzMTU4MzE0LCAi
YXZnIjogMTM1MDk0MzYuNzk5OTk5OTk3LCAidW5pdCI6ICJieXRlcyJ9fSwgInBsYXRmb3JtIjog
ImNocm9taXVtIiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24i
OiAiMTYyOTgzIn1dPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169781</attachid>
            <date>2012-10-20 18:17:14 -0700</date>
            <delta_ts>2012-10-20 18:29:44 -0700</delta_ts>
            <desc>Updated patch with new PerformanceTests</desc>
            <filename>bug-99884-20121020181609.patch</filename>
            <type>text/plain</type>
            <size>13222</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA2NmQ4ZGQ1ZDFmMDM2
ODc1ZTU4Yzg0NDZhZjNkNWEwZDJmZTM4Ny4uMzkyNmMyM2QwZjM2Mjk4ZjRjZjMwMDNlOTBiNjUx
YmE3YWZmNTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVmlzaXRvciB3YXMgdmFzdGx5IG1vcmUgY29tcGxp
Y2F0ZWQgdGhhbiBuZWNlc3NhcnkuIFRoaXMgcGF0Y2gKKyAgICAgICAgc2ltcGxpZmllcyB0aGUg
YXBwcm9hY2ggc2lnbmlmaWNhbnRseSBhbmQgaW1wcm92ZXMgdGhlIGFsZ29yaXRobWljCisgICAg
ICAgIGNvbXBsZXhpdHkgZnJvbSBPKE4gbG9nIE4pIHRvIE8oTikuCisKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RWaXNp
dG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSW1wbGljaXRSZWZl
cmVuY2VzRm9yTm9kZVdpdGhFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpyb290
Rm9yR0MpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVZpc2l0b3I6OnZpc2l0RE9NV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlVmlzaXRvcjo6YXBwbHlHcm91cGluZyk6CisgICAgICAg
IChOb2RlVmlzaXRvcik6CisKIDIwMTItMTAtMjAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25A
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW0FDXSBCdWlsZCBmaXggYWZ0ZXIgcjEzMTkzMwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkw
MDdkYWI5N2RlN2VkMzAwMzVjOWE1ZDgwMWRlMDM5YjEyNjdhZTMuLjQzYjJjMzIzNzAzMWQzMjI0
NGFlY2Q2YTkzYzQ5ZDU2NDFjOWZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTEwMSwxOTkgKzEwMSwxMTYgQEAgcHVibGljOgogICAg
IH0KIH07CiAKLS8vIEltcGxlbWVudHMgdjg6OlJldGFpbmVkT2JqZWN0SW5mby4KLWNsYXNzIFVu
c3BlY2lmaWVkR3JvdXAgOiBwdWJsaWMgUmV0YWluZWRPYmplY3RJbmZvIHsKK2NsYXNzIE9iamVj
dFZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgVW5zcGVjaWZpZWRHcm91cCh2b2lkKiBvYmplY3QpCi0gICAgICAgIDog
bV9vYmplY3Qob2JqZWN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2JqZWN0KTsKLSAgICB9
Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIERpc3Bvc2UoKSB7IGRlbGV0ZSB0aGlzOyB9Ci0gIAot
ICAgIHZpcnR1YWwgYm9vbCBJc0VxdWl2YWxlbnQodjg6OlJldGFpbmVkT2JqZWN0SW5mbyogb3Ro
ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQob3RoZXIpOwotICAgICAgICByZXR1cm4gb3RoZXIg
PT0gdGhpcyB8fCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXRhaW5lZE9iamVjdEluZm8qPihvdGhl
ciktPkdldEVxdWl2YWxlbmNlQ2xhc3MoKSA9PSB0aGlzLT5HZXRFcXVpdmFsZW5jZUNsYXNzKCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCBpbnRwdHJfdCBHZXRIYXNoKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX29iamVjdCk7Ci0gICAgfQotICAgIAotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogR2V0TGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJP
YmplY3QgZ3JvdXAiOwotICAgIH0KLQotICAgIHZpcnR1YWwgaW50cHRyX3QgR2V0RXF1aXZhbGVu
Y2VDbGFzcygpCisgICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwg
dm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fb2JqZWN0KTsKKyAg
ICAgICAgVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dmlzaXRET01XcmFw
cGVyKHN0b3JlLCBvYmplY3QsIHdyYXBwZXIpOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
KiBtX29iamVjdDsKIH07CiAKLWNsYXNzIEdyb3VwSWQgewotcHVibGljOgotICAgIEdyb3VwSWQo
KSA6IG1fdHlwZShOdWxsVHlwZSksIG1fZ3JvdXBJZCgwKSB7fQotICAgIEdyb3VwSWQoTm9kZSog
bm9kZSkgOiBtX3R5cGUoTm9kZVR5cGUpLCBtX25vZGUobm9kZSkge30KLSAgICBHcm91cElkKHZv
aWQqIG90aGVyKSA6IG1fdHlwZShPdGhlclR5cGUpLCBtX290aGVyKG90aGVyKSB7fQotICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE51bGxUeXBlOyB9Ci0gICAg
dWludHB0cl90IGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBSZXRh
aW5lZE9iamVjdEluZm8qIGNyZWF0ZVJldGFpbmVkT2JqZWN0SW5mbygpIGNvbnN0Ci0gICAgewot
ICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIE51bGxUeXBlOgotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGNhc2UgTm9kZVR5cGU6Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IFJldGFpbmVkRE9NSW5mbyhtX25vZGUpOwotICAgICAgICBjYXNlIE90aGVyVHlwZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgVW5zcGVjaWZpZWRHcm91cChtX290aGVyKTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CitzdGF0aWMgdm9p
ZCBhZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0aEV2ZW50TGlzdGVuZXJzKE5vZGUqIG5v
ZGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCit7CisgICAgQVNTRVJUKG5v
ZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpOworCisgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4
OjpWYWx1ZT4gPiBsaXN0ZW5lcnM7CisKKyAgICBFdmVudExpc3RlbmVySXRlcmF0b3IgaXRlcmF0
b3Iobm9kZSk7CisgICAgd2hpbGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gaXRlcmF0b3Iu
bmV4dExpc3RlbmVyKCkpIHsKKyAgICAgICAgaWYgKGxpc3RlbmVyLT50eXBlKCkgIT0gRXZlbnRM
aXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lciogdjhsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4
QWJzdHJhY3RFdmVudExpc3RlbmVyKj4obGlzdGVuZXIpOworICAgICAgICBpZiAoIXY4bGlzdGVu
ZXItPmhhc0V4aXN0aW5nTGlzdGVuZXJPYmplY3QoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKHY4bGlzdGVuZXItPmV4aXN0aW5nTGlzdGVuZXJPYmpl
Y3RQZXJzaXN0ZW50SGFuZGxlKCkpOwogICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgZW51bSBU
eXBlIHsKLSAgICAgICAgTnVsbFR5cGUsCi0gICAgICAgIE5vZGVUeXBlLAotICAgICAgICBPdGhl
clR5cGUKLSAgICB9OwotICAgIFR5cGUgbV90eXBlOwotICAgIHVuaW9uIHsKLSAgICAgICAgdWlu
dHB0cl90IG1fZ3JvdXBJZDsKLSAgICAgICAgTm9kZSogbV9ub2RlOwotICAgICAgICB2b2lkKiBt
X290aGVyOwotICAgIH07Ci19OwotCi1jbGFzcyBHcm91cGVySXRlbSB7Ci1wdWJsaWM6Ci0gICAg
R3JvdXBlckl0ZW0oR3JvdXBJZCBncm91cElkLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKSA6IG1fZ3JvdXBJZChncm91cElkKSwgbV93cmFwcGVyKHdyYXBwZXIpIHt9Ci0gICAg
dWludHB0cl90IGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQuZ3JvdXBJZCgpOyB9
Ci0gICAgUmV0YWluZWRPYmplY3RJbmZvKiBjcmVhdGVSZXRhaW5lZE9iamVjdEluZm8oKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQuY3JlYXRlUmV0YWluZWRPYmplY3RJbmZvKCk7IH0KLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV93cmFw
cGVyOyB9CiAKLXByaXZhdGU6Ci0gICAgR3JvdXBJZCBtX2dyb3VwSWQ7Ci0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gbV93cmFwcGVyOwotfTsKKyAgICBpZiAobGlzdGVuZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi1ib29sIG9wZXJhdG9yPChjb25zdCBHcm91cGVySXRl
bSYgYSwgY29uc3QgR3JvdXBlckl0ZW0mIGIpCi17Ci0gICAgcmV0dXJuIGEuZ3JvdXBJZCgpIDwg
Yi5ncm91cElkKCk7CisgICAgdjg6OlY4OjpBZGRJbXBsaWNpdFJlZmVyZW5jZXMod3JhcHBlciwg
bGlzdGVuZXJzLmRhdGEoKSwgbGlzdGVuZXJzLnNpemUoKSk7CiB9CiAKLXR5cGVkZWYgVmVjdG9y
PEdyb3VwZXJJdGVtPiBHcm91cGVyTGlzdDsKLQotLy8gSWYgdGhlIG5vZGUgaXMgaW4gZG9jdW1l
bnQsIHB1dCBpdCBpbiB0aGUgb3duZXJEb2N1bWVudCdzIG9iamVjdCBncm91cC4KLS8vCi0vLyBJ
ZiBhbiBpbWFnZSBlbGVtZW50IHdhcyBjcmVhdGVkIGJ5IEphdmFTY3JpcHQgIm5ldyBJbWFnZSIs
Ci0vLyBpdCBpcyBub3QgaW4gYSBkb2N1bWVudC4gSG93ZXZlciwgaWYgdGhlIGxvYWQgZXZlbnQg
aGFzIG5vdAotLy8gYmVlbiBmaXJlZCAoc3RpbGwgb25sb2FkaW5nKSwgaXQgaXMgdHJlYXRlZCBh
cyBpbiB0aGUgZG9jdW1lbnQuCi0vLwotLy8gT3RoZXJ3aXNlLCB0aGUgbm9kZSBpcyBwdXQgaW4g
YW4gb2JqZWN0IGdyb3VwIGlkZW50aWZpZWQgYnkgdGhlIHJvb3QKLS8vIGVsZW1lbnQgb2YgdGhl
IHRyZWUgdG8gd2hpY2ggaXQgYmVsb25ncy4KLXN0YXRpYyBHcm91cElkIGNhbGN1bGF0ZUdyb3Vw
SWQoTm9kZSogbm9kZSkKK3N0YXRpYyBOb2RlKiByb290Rm9yR0MoTm9kZSogbm9kZSkKIHsKKyAg
ICAvLyBGSVhNRTogV2hhdCBhYm91dCA8YXVkaW8+PwogICAgIGlmIChub2RlLT5pbkRvY3VtZW50
KCkgfHwgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0
PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKQotICAgICAg
ICByZXR1cm4gR3JvdXBJZChub2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG5vZGUt
PmRvY3VtZW50KCk7CiAKLSAgICBOb2RlKiByb290ID0gbm9kZTsKICAgICBpZiAobm9kZS0+aXNB
dHRyaWJ1dGVOb2RlKCkpIHsKLSAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PEF0dHIqPihub2Rl
KS0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUgaGFzIG5vIGVs
ZW1lbnQsIG5vIG5lZWQgdG8gcHV0IGl0IGluIHRoZSBncm91cCwKLSAgICAgICAgLy8gYmVjYXVz
ZSBpdCdsbCBhbHdheXMgYmUgYSBncm91cCBvZiAxLgotICAgICAgICBpZiAoIXJvb3QpCi0gICAg
ICAgICAgICByZXR1cm4gR3JvdXBJZCgpOworICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8QXR0
cio+KG5vZGUpLT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSByb290LT5wYXJl
bnRPckhvc3ROb2RlKCkpCi0gICAgICAgIHJvb3QgPSBwYXJlbnQ7CiAKLSAgICByZXR1cm4gR3Jv
dXBJZChyb290KTsKKyAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKQorICAgICAgICBub2RlID0gcGFyZW50OworCisgICAgcmV0dXJuIG5vZGU7CiB9CiAK
LWNsYXNzIE9iamVjdFZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRv
ciB7CitjbGFzcyBJbXBsaWNpdFJlZmVyZW5jZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCB2aXNpdERP
TVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIEltcGxpY2l0UmVmZXJlbmNlKE5vZGUqIHJvb3Qs
IHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlcikKKyAgICAgICAgOiBtX3Jvb3Qocm9v
dCkKKyAgICAgICAgLCBtX3dyYXBwZXIod3JhcHBlcikKICAgICB7Ci0gICAgICAgIFY4RE9NV3Jh
cHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnZpc2l0RE9NV3JhcHBlcihzdG9yZSwgb2Jq
ZWN0LCB3cmFwcGVyKTsKICAgICB9CisKKyAgICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9yb290OyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyKCkgY29uc3Qg
eyByZXR1cm4gbV93cmFwcGVyOyB9CisKK3B1YmxpYzoKKyAgICBOb2RlKiBtX3Jvb3Q7CisgICAg
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBtX3dyYXBwZXI7CiB9OwogCitib29sIG9wZXJhdG9y
PChjb25zdCBJbXBsaWNpdFJlZmVyZW5jZSYgbGhzLCBjb25zdCBJbXBsaWNpdFJlZmVyZW5jZSYg
cmhzKQoreworICAgIHJldHVybiBsaHMucm9vdCgpIDwgcmhzLnJvb3QoKTsKK30KKwogY2xhc3Mg
Tm9kZVZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciB7CiBwdWJs
aWM6CiAgICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgTm9kZSogbm9kZSwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKICAgICB7Ci0gICAgICAgIGlmIChu
b2RlLT5oYXNFdmVudExpc3RlbmVycygpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8djg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiA+IGxpc3RlbmVyczsKLSAgICAgICAgICAgIEV2ZW50TGlzdGVuZXJJ
dGVyYXRvciBpdGVyYXRvcihub2RlKTsKLSAgICAgICAgICAgIHdoaWxlIChFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IGl0ZXJhdG9yLm5leHRMaXN0ZW5lcigpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGxpc3RlbmVyLT50eXBlKCkgIT0gRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyVHlw
ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgVjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIqIHY4bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZl
bnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKLSAgICAgICAgICAgICAgICBpZiAoIXY4bGlzdGVuZXIt
Pmhhc0V4aXN0aW5nTGlzdGVuZXJPYmplY3QoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmFwcGVuZCh2OGxpc3RlbmVyLT5leGlzdGlu
Z0xpc3RlbmVyT2JqZWN0UGVyc2lzdGVudEhhbmRsZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICghbGlzdGVuZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB2ODo6Vjg6
OkFkZEltcGxpY2l0UmVmZXJlbmNlcyh3cmFwcGVyLCBsaXN0ZW5lcnMuZGF0YSgpLCBsaXN0ZW5l
cnMuc2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+aGFzRXZlbnRMaXN0ZW5l
cnMoKSkKKyAgICAgICAgICAgIGFkZEltcGxpY2l0UmVmZXJlbmNlc0Zvck5vZGVXaXRoRXZlbnRM
aXN0ZW5lcnMobm9kZSwgd3JhcHBlcik7CiAKLSAgICAgICAgR3JvdXBJZCBncm91cElkID0gY2Fs
Y3VsYXRlR3JvdXBJZChub2RlKTsKLSAgICAgICAgaWYgKCFncm91cElkKQorICAgICAgICBOb2Rl
KiByb290ID0gcm9vdEZvckdDKG5vZGUpOworICAgICAgICBpZiAoIXJvb3QpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fZ3JvdXBlci5hcHBlbmQoR3JvdXBlckl0ZW0oZ3JvdXBJZCwg
d3JhcHBlcikpOworICAgICAgICBtX2dyb3Vwcy5hcHBlbmQoSW1wbGljaXRSZWZlcmVuY2Uocm9v
dCwgd3JhcHBlcikpOwogICAgIH0KIAogICAgIHZvaWQgYXBwbHlHcm91cGluZygpCiAgICAgewot
ICAgICAgICAvLyBHcm91cCBieSBzb3J0aW5nIGJ5IHRoZSBncm91cCBpZC4KLSAgICAgICAgc3Rk
Ojpzb3J0KG1fZ3JvdXBlci5iZWdpbigpLCBtX2dyb3VwZXIuZW5kKCkpOwotCi0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncm91cGVyLnNpemUoKTsgKSB7Ci0gICAgICAgICAgICAv
LyBTZWVrIHRvIHRoZSBuZXh0IGtleSAob3IgdGhlIGVuZCBvZiB0aGUgbGlzdCkuCi0gICAgICAg
ICAgICBzaXplX3QgbmV4dEtleUluZGV4ID0gbV9ncm91cGVyLnNpemUoKTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSBpOyBqIDwgbV9ncm91cGVyLnNpemUoKTsgKytqKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fZ3JvdXBlcltpXS5ncm91cElkKCkgIT0gbV9ncm91cGVyW2pdLmdyb3Vw
SWQoKSkgewotICAgICAgICAgICAgICAgICAgICBuZXh0S2V5SW5kZXggPSBqOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIEFTU0VSVChuZXh0S2V5SW5kZXggPiBpKTsKLQotICAgICAgICAgICAgLy8gV2Ug
b25seSBjYXJlIGFib3V0IGEgZ3JvdXAgaWYgaXQgaGFzIG1vcmUgdGhhbiBvbmUgb2JqZWN0LiBJ
ZiBpdCBvbmx5Ci0gICAgICAgICAgICAvLyBoYXMgb25lIG9iamVjdCwgaXQgaGFzIG5vdGhpbmcg
ZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGtlcHQgYWxpdmUuCi0gICAgICAgICAgICBpZiAobmV4dEtl
eUluZGV4IC0gaSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAgaSA9IG5leHRLZXlJbmRleDsKKyAg
ICAgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBjdXJyZW50R3JvdXA7Cisg
ICAgICAgIHN0ZDo6c29ydChtX2dyb3Vwcy5iZWdpbigpLCBtX2dyb3Vwcy5lbmQoKSk7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyb3Vwcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgc2l6ZV90IGJlZ2luID0gaTsKKyAgICAgICAgICAgIE5vZGUqIHJvb3QgPSBtX2dy
b3Vwc1tpXS5yb290KCk7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgKytpOwor
ICAgICAgICAgICAgfSB3aGlsZSAoaSA8IG1fZ3JvdXBzLnNpemUoKSAmJiBtX2dyb3Vwc1tpXS5y
b290KCkgPT0gcm9vdCk7CisKKyAgICAgICAgICAgIHNpemVfdCBlbmQgPSBpOworICAgICAgICAg
ICAgc2l6ZV90IHNpemUgPSBlbmQgLSBiZWdpbjsKKyAgICAgICAgICAgIGlmIChzaXplID09IDEp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHNpemVfdCByb290SW5kZXggPSBpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGdyb3VwOwotICAgICAgICAgICAgZ3JvdXAucmVz
ZXJ2ZUNhcGFjaXR5KG5leHRLZXlJbmRleCAtIGkpOwotICAgICAgICAgICAgZm9yICg7IGkgPCBu
ZXh0S2V5SW5kZXg7ICsraSkgewotICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4gd3JhcHBlciA9IG1fZ3JvdXBlcltpXS53cmFwcGVyKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYXBwZW5k
KHdyYXBwZXIpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoZ3JvdXAuc2l6ZSgp
ID4gMSkKLSAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZncm91cFswXSwg
Z3JvdXAuc2l6ZSgpLCBtX2dyb3VwZXJbcm9vdEluZGV4XS5jcmVhdGVSZXRhaW5lZE9iamVjdElu
Zm8oKSk7CisgICAgICAgICAgICBjdXJyZW50R3JvdXAucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGJlZ2luOyBqIDwgZW5kOyArK2opCisgICAgICAg
ICAgICAgICAgY3VycmVudEdyb3VwLmFwcGVuZChtX2dyb3Vwc1tqXS53cmFwcGVyKCkpOwogCi0g
ICAgICAgICAgICBBU1NFUlQoaSA9PSBuZXh0S2V5SW5kZXgpOworICAgICAgICAgICAgdjg6OlY4
OjpBZGRPYmplY3RHcm91cChjdXJyZW50R3JvdXAuZGF0YSgpLCBjdXJyZW50R3JvdXAuc2l6ZSgp
LCBuZXcgUmV0YWluZWRET01JbmZvKHJvb3QpKTsKKyAgICAgICAgICAgIGN1cnJlbnRHcm91cC5z
aHJpbmsoMCk7CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR3JvdXBlckxpc3Qg
bV9ncm91cGVyOworICAgIFZlY3RvcjxJbXBsaWNpdFJlZmVyZW5jZT4gbV9ncm91cHM7CiB9Owog
CiAvLyBDcmVhdGUgb2JqZWN0IGdyb3VwcyBmb3IgRE9NIHRyZWUgbm9kZXMuCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLWZvcmVzdC5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9CaW5kaW5ncy9nYy1mb3Jlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMThmZTE1Y2YwYjEzYjUw
ZWM5YjhjOTczNWUyM2U0Y2I3MzMzYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9CaW5kaW5ncy9nYy1mb3Jlc3QuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVUaW1lKHtydW46IGZ1bmN0aW9u
KCkgeworICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDAwOyBpKyspCisgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICB9KSgpOworICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtbWluaS10cmVlLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLW1pbmktdHJlZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIwMzA3NjkxNTUzMjQ0ZmJiNzZlYTUyYzZkYzRlYWUzNDRkMzIxMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLW1pbmktdHJlZS5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIubWVh
c3VyZVRpbWUoe3J1bjogZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDUwMDAwMDsgaSsrKQorICAgICAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpKTsKKyAgICB9KSgpOworICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJl
ZS5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9nYy10cmVlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDk5NjI4OGNmNDc3NGZkNWViMjI1YWU0ODc2ZGM2ZDc4NGQ1OGY5YgotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJlZS5odG1sCkBAIC0wLDAgKzEs
MTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIubWVhc3VyZVRp
bWUoe3J1bjogZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcm9v
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwMDA7IGkrKykKKyAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIH0pKCk7CisgICAgUGVyZlRlc3RSdW5uZXIu
Z2MoKTsKK319KTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA5MWYwYzE3
N2U0YTYwNWMzNjcwZDhhMGUwNmMzMmU1YzNjOTcxYzY1Li44ZWY2M2NlZWZiMGI2ZmMzYWMxYjlm
NjZhZTljNGFhODU0NzBhZmE3IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTEwLTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBW
YXN0bHkgc2ltcGxpZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHNvbWUgcGVyZm9ybWFuY2Ug
dGVzdHMgZm9yIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KKworICAgICAgICAqIEJpbmRpbmdzL2dj
LWZvcmVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBCaW5kaW5ncy9nYy1taW5pLXRyZWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogQmluZGluZ3MvZ2MtdHJlZS5odG1sOiBBZGRlZC4KKwogMjAx
Mi0xMC0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdW1w
IHVwIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBvZiBodG1sNS1mdWxsLXJlbmRlciB0byA1Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>169782</attachid>
            <date>2012-10-20 18:18:42 -0700</date>
            <delta_ts>2012-10-20 18:18:42 -0700</delta_ts>
            <desc>gc-mini-tree (first three are with patch; last three are without)</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>28575</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvYWJhcnRoL2dpdC9hYmFydGgtd2Via2l0JzsKICAgIHZhciByZW1v
dGVQYXRoID0gJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsn
OwogICAgdmFyIG51bWJlck9mRmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1
Z2lucyA9IGZhbHNlOwogICAgdmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVu
Y3Rpb24gbG9hZFNjcmlwdChzcmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3lu
YyA9IHRydWU7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2Fk
ID0gbG9hZGVkOwogICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9y
ID0gZmFpbGVkOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAg
IH0KCiAgICBmdW5jdGlvbiBsb2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQo
dHJ1bmtQYXRoICsgJy8nICsgcGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luc1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdp
bigpIHsKICAgICAgICBudW1iZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVy
T2ZMb2FkZWRQbHVnaW5zID09IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0
KGluaXQsIDApOyAgICAgICAgICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRv
TG9hZFBsdWdpbihwbHVnaW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgi
RmFpbGVkIHRvIGxvYWQgIiArIHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVM
b2FkZWRKUXVlcnkodHJ1bmtQYXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9h
ZFBsdWdpbnModHJ1bmtQYXRoKTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsg
Jy8nICsgalF1ZXJ5LAogICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAg
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8n
ICsgalF1ZXJ5LAogICAgICAgICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgp
LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1
ZXJ5LiIpOyB9KTsKICAgICAgICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2Np
YXRlZFRlc3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdGhpcy51bml0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gcmVzdWx0LnVuaXQ7IH0KICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHJlc3VsdC52YWx1ZXMgPyByZXN1bHQudmFsdWVzLm1hcChmdW5jdGlvbiAodmFs
dWUpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVlOyB9KSA6
IHVuZGVmaW5lZDsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3Nv
Y2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1pbiA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJl
c3VsdC5taW47IH0KICAgIHRoaXMubWF4ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRl
ZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0Lm1heDsgfQogICAgdGhpcy5zdGRldiA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3Vs
dC5zdGRldjsgfQogICAgdGhpcy5zdGRldlJhdGlvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVz
dWx0LnN0ZGV2IC8gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1
bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpIC8gdGhp
cy5tZWFuKCk7IH0KICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlv
biAob3RoZXIpIHsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRo
aXMubWVhbigpKTsKICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuc3RkZXYoKSAmJiBkaWZmID4g
b3RoZXIuc3RkZXYoKTsKICAgIH0KICAgIHRoaXMucnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
YXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRl
c2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0K
ICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Vi
a2l0LXJldmlzaW9uJ107IH0KICAgIHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
dmFyIGxhYmVsID0gJ3InICsgdGhpcy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlz
LmRlc2NyaXB0aW9uKCkpCiAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRl
c2NyaXB0aW9uKCk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJm
VGVzdChuYW1lKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0
ID0gbnVsbDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKCiAgICAvLyBXZSBj
YW4ndCBkbyB0aGlzIGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0
ZXN0IG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0
b3IuCiAgICBmdW5jdGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3Qg
cmVzdWx0LgogICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3Qu
CiAgICAgICAgaWYgKCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICB2YXIgdW5pdCA9IHRlc3RSZXN1bHRzWzBdLnVuaXQoKTsgLy8g
RklYTUU6IFdlIHNob3VsZCB2ZXJpZnkgdGhhdCBhbGwgcmVzdWx0cyBoYXZlIHRoZSBzYW1lIHVu
aXQuCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsgLy8g
RklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8gPSB1
bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICoga2ls
byAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0
b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsgdW5p
dDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAgY2Fj
aGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5p
dCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IG5hbWU7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFt
ZS5pbmRleE9mKCc6JykgPj0gMDsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3
UmVzdWx0KSB7CiAgICAgICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNh
Y2hlZFVuaXQgPSBudWxsOwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAg
fQogICAgdGhpcy5yZXN1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0K
ICAgIHRoaXMuc2NhbGluZ0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2Fs
aW5nRmFjdG9ySWZOZWVkZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsK
ICAgIH0KICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGlu
Z0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0
aGlzLnNtYWxsZXJJc0JldHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudW5pdCgpID09
ICdtcycgfHwgdGhpcy51bml0KCkgPT0gJ2J5dGVzJzsgfQp9Cgp2YXIgcGxvdENvbG9yID0gJ3Jn
YigyMzAsNTAsNTApJzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRpb25zID0gewogICAgbGluZXM6IHtz
aG93OnRydWUsIGxpbmVXaWR0aDogMH0sCiAgICBjb2xvcjogcGxvdENvbG9yLAogICAgcG9pbnRz
OiB7c2hvdzogdHJ1ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6IHtzaG93OiBmYWxzZX19OwoKdmFy
IG1haW5QbG90T3B0aW9ucyA9IHsKICAgIHhheGlzOiB7CiAgICAgICAgbWluOiAtMC41LAogICAg
ICAgIHRpY2tTaXplOiAxLAogICAgfSwKICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwKICAg
IHNlcmllczogeyBzaGFkb3dTaXplOiAwIH0sCiAgICBiYXJzOiB7c2hvdzogdHJ1ZSwgYWxpZ246
ICdjZW50ZXInLCBiYXJXaWR0aDogMC41fSwKICAgIGxpbmVzOiB7IHNob3c6IGZhbHNlIH0sCiAg
ICBwb2ludHM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogewogICAgICAgIGJvcmRlcldpZHRo
OiAxLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2NjYycsCiAgICAgICAgYmFja2dyb3VuZENvbG9y
OiAnI2ZmZicsCiAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgIGF1dG9IaWdobGlnaHQ6
IGZhbHNlLAogICAgfQp9OwoKdmFyIHRpbWVQbG90T3B0aW9ucyA9IHsKICAgIHlheGlzOiB7IHNo
b3c6IGZhbHNlIH0sCiAgICB4YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgbGluZXM6IHsgc2hv
dzogdHJ1ZSB9LAogICAgZ3JpZDogeyBib3JkZXJXaWR0aDogMSwgYm9yZGVyQ29sb3I6ICcjY2Nj
JyB9LAogICAgY29sb3JzOiBbIHBsb3RDb2xvciBdCn07CgpmdW5jdGlvbiBjcmVhdGVQbG90KGNv
bnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNsYXNz
PSJwbG90Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3RzIj48L2Rpdj4nCiAgICAgICAgKyAn
PHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNo
aWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRoJzogKDEwMCAqIHRlc3QucmVzdWx0cygpLmxlbmd0
aCArIDI1KSArICdweCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7CiAgICAkKGNvbnRhaW5lcikuYXBw
ZW5kKHNlY3Rpb24pOwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbign
LnBsb3QnKTsKICAgIHZhciBtaW5Jc1plcm8gPSB0cnVlOwogICAgYXR0YWNoUGxvdCh0ZXN0LCBw
bG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwoKICAgIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBzZWN0
aW9uLmNoaWxkcmVuKCcudGltZS1wbG90cycpKTsKCiAgICB2YXIgdG9vbHRpcCA9IHNlY3Rpb24u
Y2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Rob3Zlcics
IGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbSkgewog
ICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0ZW0uc2Vy
aWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRhdGFwb2lu
dFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB2YXIgc2VjdGlvbk9m
ZnNldCA9ICQoc2VjdGlvbikub2Zmc2V0KCk7CiAgICAgICAgICAgIHRvb2x0aXAuY3NzKHtsZWZ0
OiBpdGVtLnBhZ2VYIC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkg
LyAyLCB0b3A6IGl0ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0LnRvcCArIDEwfSk7CiAgICAgICAg
ICAgIHRvb2x0aXAuZmFkZUluKDIwMCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIHRvb2x0
aXAuaGlkZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLm1vdXNlb3V0KGZ1bmN0aW9uICgp
IHsKICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5jbGlj
ayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgIG1pbklzWmVybyA9ICFtaW5Jc1plcm87CiAgICAgICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90
Q29udGFpbmVyLCBtaW5Jc1plcm8pOwogICAgfSk7CgogICAgcmV0dXJuIHNlY3Rpb247Cn0KCmZ1
bmN0aW9uIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBjb250YWluZXIpIHsKICAgIHZhciByZXN1bHRz
ID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQbG90ID0gZmFsc2U7CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb250YWluZXIu
YXBwZW5kKCc8ZGl2PjwvZGl2PicpOwogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzW2ldLnZh
bHVlcygpOwogICAgICAgIGlmICghdmFsdWVzKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICBhdHRhY2hlZFBsb3QgPSB0cnVlOwoKICAgICAgICAkLnBsb3QoY29udGFpbmVyLmNoaWxkcmVu
KCkubGFzdCgpLCBbdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBb
aW5kZXgsIHZhbHVlXTsgfSldLAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB7fSwgdGltZVBs
b3RPcHRpb25zLCB7eWF4aXM6IHttaW46IE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcykgKiAw
LjksIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDEuMX0sCiAgICAgICAgICAg
ICAgICB4YXhpczoge21pbjogLTAuNSwgbWF4OiB2YWx1ZXMubGVuZ3RoIC0gMC41fX0pKTsKICAg
IH0KICAgIGlmICghYXR0YWNoZWRQbG90KQogICAgICAgIGNvbnRhaW5lci5jaGlsZHJlbigpLnJl
bW92ZSgpOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklz
WmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICB2YXIgdmFsdWVz
ID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywgcmVzdWx0LCBpbmRleCkgewogICAg
ICAgIHZhciBuZXdWYWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgcmV0dXJuIG5ld1Zh
bHVlcyA/IHZhbHVlcy5jb25jYXQobmV3VmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0
dXJuIFtpbmRleCwgdmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAgICB9LCBbXSk7CgogICAgdmFyIHBs
b3REYXRhID0gW107CiAgICBpZiAodmFsdWVzLmxlbmd0aCkKICAgICAgICBwbG90RGF0YSA9IFsk
LmV4dGVuZCh0cnVlLCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07
CiAgICBlbHNlIHsKICAgICAgICBmdW5jdGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykg
eyByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlk
LCBkYXRhOiByZXN1bHRzLm1hcChjYWxsYmFjayl9KTsgfQogICAgICAgIHBsb3REYXRhID0gW21h
a2VTdWJwb2ludHMoJ21pbicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5k
ZXgsIHJlc3VsdC5taW4oKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAog
ICAgICAgIG1ha2VTdWJwb2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAg
ICAgICBtYWtlU3VicG9pbnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSldOwogICAg
fQoKICAgIHBsb3REYXRhLnB1c2goe2lkOiAnJm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwg
Y29sb3I6IHBsb3RDb2xvcn0pOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVu
ZCh0cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklz
WmVybyA/IDAgOiBNYXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4LAogICAgICAgIG1h
eDogTWF0aC5tYXguYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/IDEuMSA6IDEuMDEp
fX0pOwoKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAt
IDAuNTsKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1
bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJl
bCgpXTsgfSk7CgogICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxv
dE9wdGlvbnMpOwp9CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAg
IHZhciBkZWNpbWFsID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9Cgpm
dW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9
IGZyYWN0aW9uICogMTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSAr
ICclJzsKfQoKZnVuY3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1l
bW9yeSwgcmVmZXJlbmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+
PHRyPjx0aD5UZXN0PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4s
IGluZGV4KSB7CiAgICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZl
cmVuY2VJbmRleCA/IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30i
PicgKyBydW4ubGFiZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1
cCwgY2VsbCkgeyByZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0
Ym9keT48L3Rib2R5PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5h
bWUgaW4gdGVzdHMpCiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3RO
YW1lcy5zb3J0KCkubWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0g
dGVzdHNbdGVzdE5hbWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3Vs
ZElnbm9yZU1lbW9yeSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVm
ZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3
aWRnZXRzOiBbJ3plYnJhJ119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMp
IHsKICAgIC8vIEltcGxlbWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlz
dGljcy9sZWFybi1jb3JyZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5
ID0gaXRlcmF0aW9ucwogICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFy
IHN1bVhTcXVhcmVkID0gMDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRp
bWVzWSA9IDA7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICB2YXIgeCA9IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3Vt
WCArPSB4OwogICAgICAgIHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsK
ICAgICAgICBzdW1ZU3F1YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5
OwogICAgfQoKICAgIHZhciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAq
IHN1bVkpIC8KICAgICAgICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKSAqCiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNx
dWFyZWQgLSBzdW1ZICogc3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5m
aW5pdHkpCiAgICAgICAgciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBz
dW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKTsKICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAt
IHNsb3BlICogc3VtWCAvIHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwg
aW50ZXJjZXB0OiBpbnRlcmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2ln
biA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdo
dDogMThweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAn
PHBvbHlnb24gZmlsbD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAg
ICArICc8cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4Ljcs
IDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9
IjYiIGZpbGw9IndoaXRlIiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJs
ZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgn
PHRyPjx0ZCBjbGFzcz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1
bml0Ij4nICsgdGVzdC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1
cEZvclJ1bihyZXN1bHQsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29u
Q2VsbCA9ICcnOwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91
bGRDb21wYXJlID0gcmVzdWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3Vs
ZENvbXBhcmUgJiYgcmVmZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlm
ZmVyZW5jZSA9IHJlZmVyZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAg
ICAgICAgICB2YXIgYmV0dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZm
ZXJlbmNlIDwgMCA6IHBlcmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBh
cmlzb24gPSAnJzsKICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAg
ICAgICAgICAgaWYgKHJlZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChy
ZXN1bHQpKSB7CiAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShN
YXRoLmFicyhwZXJjZW50RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29y
c2UmbmJzcDsnKTsKICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRl
cicgOiAnIHdvcnNlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwog
ICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAn
Ij4nICsgY29tcGFyaXNvbiArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21w
YXJlKQogICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+JzsKCiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2
YXIgd2FybmluZyA9ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAg
ICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25SZXN1bHQgPSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25BbmFseXNpcyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Np
b25SZXN1bHQuc2xvcGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRo
UHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVn
cmVzc2lvblJlc3VsdC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0
LnNsb3BlKSA+IDAuMDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNz
PSJyZWdyZXNzaW9uLXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3
aXRoICcgKyByZWdyZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bh
bj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcm
c2lnbWE7PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsgJywgbWlu
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcs
IG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVn
cmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJv
dXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxl
IGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBz
dGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSAr
IGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIgdGl0bGU9
IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1hdFBlcmNl
bnRhZ2UocmVzdWx0LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlz
b25DZWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVu
Y2UpIHsKICAgICAgICByZXR1cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6
IDMpICsgJyIgY2xhc3M9Im1pc3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1
bkluZGV4ID0gMDsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVm
ZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGls
ZSAocnVuc1tydW5JbmRleF0gIT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bklu
ZGV4Kys7CiAgICAgICAgaWYgKHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAg
ICByZWZlcmVuY2VSZXN1bHQgPSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1
bkluZGV4XSA9IGk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBp
KyspIHsKICAgICAgICB2YXIgcmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAg
ICBpZiAocmVzdWx0SW5kZXggPT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBl
bmQobWFya3VwRm9yTWlzc2luZ1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0
SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hp
bGRyZW4oJ3Rib2R5JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJv
d1swXSAmJiBldmVudC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIg
Zmlyc3RDZWxsID0gdGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAo
Zmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0
Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5j
aGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAg
ICAgICAgICAgIHBsb3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9
KTsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAg
ICBvZmZzZXQubGVmdCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91
dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAg
IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRl
ckhlaWdodCgpICsgNX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7
Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAg
ICAgaWQ6ICdjb21wYXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICByZXR1cm4gcy5pbmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDog
ZnVuY3Rpb24ocykgewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0
cmluZyhzLmluZGV4T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNl
ZCkgPyAwIDogcGFyc2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAg
fSk7CgogICAgdmFyIHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpT
T04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1
bmN0aW9uIChpbmRleCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50
cnkpOwogICAgICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRz
LCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0p
CiAgICAgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAg
ICAgICAgdGVzdHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCBy
ZXN1bHQsIHJ1bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1l
bW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgn
I3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxl
bWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRD
b250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxk
SWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5j
dGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFu
IHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNs
YXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAg
ICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQs
IGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVj
a2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRl
c3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoK
ICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBjaGVja2JveCkgewogICAg
ICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7
CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdjaGVja2VkJykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVt
b3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tl
ZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsK
ICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0i
YXBwbGljYXRpb24vanNvbiI+W3sidGltZXN0YW1wIjogMTM1MDc4MTg4MSwgIndlYmtpdC1yZXZp
c2lvbiI6ICIxMzE5ODgiLCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZ2MtbWluaS10cmVlOk1hbGxv
YyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAi
YXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlIjogeyJt
aW4iOiAxMDIwLjM1MTAwMDAxMzc2MTIsICJtYXgiOiAxMDQ5LjIzODk5OTk4NTM5MTMsICJtZWRp
YW4iOiAxMDI3Ljk4NzQ5OTk5NzgzNDcsICJ2YWx1ZXMiOiBbMTAzOS40NjUwMDAwMDg5MzE0LCAx
MDI2Ljk5NzAwMDAwODEyMywgMTAyOC42NzIwMDAwMTQ5MjE3LCAxMDI1LjIxNjk5OTk4NzYwNiwg
MTA0MC43ODU5OTk5OTc3NTE4LCAxMDI4LjE1MzAwMDAyMTEyMDUsIDEwMjYuMzUyOTk5OTkzODMy
OCwgMTAyMy4zNDM5OTk5ODY1MzY4LCAxMDQxLjM4Nzk5OTk4MzI3MTYsIDEwMjQuMjQ4MDAwMDAx
NTM0OCwgMTAzNS44ODQwMDAwMTE3MTk4LCAxMDIwLjM1MTAwMDAxMzc2MTIsIDEwNDkuMjM4OTk5
OTg1MzkxMywgMTAzMi41MzEwMDAwMDQzODI4LCAxMDI4LjI4ODAwMDAwMTMzOTIsIDEwMjcuNzAw
MDAwMDA2MDA3LCAxMDI2LjQ1NTAwMDAxMzgxMTUsIDEwMjkuNDcxMDAwMDE2MjAxMywgMTAyNy44
MjE5OTk5NzQ1NDg4LCAxMDI1LjgzNTk5OTk4NjE1NjhdLCAic3RkZXYiOiA3LjI4MTY1NDA2Nzc4
NzYzNiwgImF2ZyI6IDEwMzAuNDEwMDAwMDAwODQ3NSwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdz
L2djLW1pbmktdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDEwNjE5NTY4LjAsICJtYXgiOiAxMzY2ODc3
Mi4wLCAibWVkaWFuIjogMTM2NjMyOTguMCwgInZhbHVlcyI6IFsxMzY2ODc3Mi4wLCAxMzY2Njk5
Mi4wLCAxMDYxOTU2OC4wLCAxMzY2MjE5Ni4wLCAxMzY2MjUzNi4wLCAxMzY2MjU2NC4wLCAxMzY2
MjgzNi4wLCAxMzY2MzA4OC4wLCAxMzY2MzMzNi4wLCAxMzY2MzI2MC4wLCAxMzY2MzE0MC4wLCAx
MzY2MDE5Ni4wLCAxMzY2NDYyOC4wLCAxMzY2MjQ0NC4wLCAxMzY2Mzc1Ni4wLCAxMzY2MzY5Ni4w
LCAxMzY2Mzk3Ni4wLCAxMzY2MzUwNC4wLCAxMzY2NTk5Mi4wLCAxMzY2NDI4MC4wXSwgInN0ZGV2
IjogNjgwNzAxLjU2NTQ2NDA5MDMsICJhdmciOiAxMzUxMTUzNy45OTk5OTk5OTgsICJ1bml0Ijog
ImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVu
ayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgx
OTIyLCAid2Via2l0LXJldmlzaW9uIjogIjEzMTk4OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9n
Yy1taW5pLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAw
LjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBd
LCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9n
Yy1taW5pLXRyZWUiOiB7Im1pbiI6IDEwMTguMDYwMDAwMDAyMTUxNCwgIm1heCI6IDEwNTMuOTk4
OTk5OTk2MTEwOCwgIm1lZGlhbiI6IDEwMjYuNTExMDAwMDE4MjE3NiwgInZhbHVlcyI6IFsxMDQ1
LjE2OTk5OTk5NzU5NzIsIDEwMzguMDQ2MDAwMDAxNDg2NCwgMTA1My45OTg5OTk5OTYxMTA4LCAx
MDMwLjMxMjk5OTk5NTY1ODIsIDEwMjUuODM0MDAwMDAwMDMxNywgMTAyMS4xNDQ5OTk5NzY5Njg0
LCAxMDI0LjczODAwMDAwNzM0NjMsIDEwMTguMDYwMDAwMDAyMTUxNCwgMTAyNS4xNjIwMDAwMDUz
NjYzLCAxMDIwLjEwMDAwMDAyMzM3NjIsIDEwMTkuNjE1OTk5OTc1OTQwMiwgMTAyMS42ODkwMDAw
MTU2MTI3LCAxMDI2LjM1MjAwMDAxNTMyMjEsIDEwMzEuMzY3MDAwMDE3NzgwOCwgMTAyNy42NDIw
MDAwMDA5MjM5LCAxMDI5LjYyNjAwMDAwMzE5MDcsIDEwMjYuNjcwMDAwMDIxMTEzLCAxMDMwLjEz
MjAwMDAxNDQxODcsIDEwMjYuOTM1MDAwMDAxNjg1NywgMTAyNi4zMjkwMDAwMTQ4MTE4XSwgInN0
ZGV2IjogOC43MTEyMjM0NzI3NzU4NDIsICJhdmciOiAxMDI4LjQ0NjI1MDAwNDM0NDYsICJ1bml0
IjogIm1zIn0sICJCaW5kaW5ncy9nYy1taW5pLXRyZWU6SlNIZWFwIjogeyJtaW4iOiAxMDYxOTU2
OC4wLCAibWF4IjogMTM2Njg3NzIuMCwgIm1lZGlhbiI6IDEzNjYzMjk4LjAsICJ2YWx1ZXMiOiBb
MTM2Njg3NzIuMCwgMTM2NjY5OTIuMCwgMTA2MTk1NjguMCwgMTM2NjIxOTYuMCwgMTM2NjI1MzYu
MCwgMTM2NjI1NjQuMCwgMTM2NjI4MzYuMCwgMTM2NjMwODguMCwgMTM2NjMzMzYuMCwgMTM2NjMy
NjAuMCwgMTM2NjMxNDAuMCwgMTM2NjAxOTYuMCwgMTM2NjQ2MjguMCwgMTM2NjI0NDQuMCwgMTM2
NjM3NTYuMCwgMTM2NjM2OTYuMCwgMTM2NjM5NzYuMCwgMTM2NjM1MDQuMCwgMTM2NjU5OTIuMCwg
MTM2NjQyODAuMF0sICJzdGRldiI6IDY4MDcwMS41NjU0NjQwOTAzLCAiYXZnIjogMTM1MTE1Mzcu
OTk5OTk5OTk4LCAidW5pdCI6ICJieXRlcyJ9fSwgInBsYXRmb3JtIjogImNocm9taXVtIiwgImJy
YW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTYyOTgzIn0sIHsi
dGltZXN0YW1wIjogMTM1MDc4MTk0OSwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzE5ODgiLCAicmVz
dWx0cyI6IHsiQmluZGluZ3MvZ2MtbWluaS10cmVlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4
IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlIjogeyJtaW4iOiAxMDQ0LjIyMDAwMDAxMDY4
MjMsICJtYXgiOiAxMDY2LjczMTk5OTk3NzQ5MTgsICJtZWRpYW4iOiAxMDU1LjAxNzk5OTk5OTEw
ODcsICJ2YWx1ZXMiOiBbMTA1NS43MjgwMDAwMDY2Mzg1LCAxMDU0LjcwMzk5OTk4MDEyLCAxMDUy
LjA3MDAwMDAwNTE4NzUsIDEwNjEuMjk0MDAwMDEzNzMxNCwgMTA1OS45MjUwMDAwMDg2NjEzLCAx
MDY2LjczMTk5OTk3NzQ5MTgsIDEwNTAuMjI2OTk5OTk5NzIyNSwgMTA1NS4zMTc5OTk5OTg4MDYs
IDEwNjIuODAyMDAwMDAwMzc0NCwgMTA2MC40MzAwMDAwMTIyNzQ4LCAxMDQ3Ljc1MjAwMDAxMzEz
MzUsIDEwNTIuOTQ1MDAwMDAzMDkyLCAxMDU5LjEzNDAwMDAxMDA5LCAxMDYxLjg0MzAwMDAwMzEz
NjcsIDEwNTQuNzE3OTk5OTk5NDExNCwgMTA1MS4wMTY5OTk5OTA2NzkzLCAxMDQ3LjA3MDAwMDAw
MDUzMDksIDEwNTYuOTIwMDAwMDAyNzE5NSwgMTA0NS40NTEwMDAwMTI2OTAyLCAxMDQ0LjIyMDAw
MDAxMDY4MjNdLCAic3RkZXYiOiA2LjIxNzY2MDI4Njc1MjY0NSwgImF2ZyI6IDEwNTUuMDE1MDAw
MDAyNDU5MSwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLW1pbmktdHJlZTpKU0hlYXAiOiB7
Im1pbiI6IDEwNjE5ODA0LjAsICJtYXgiOiAxMzY2ODc3Mi4wLCAibWVkaWFuIjogMTM2NjM1NjQu
MCwgInZhbHVlcyI6IFsxMzY2ODc3Mi4wLCAxMzY2Njk4OC4wLCAxMDYxOTgwNC4wLCAxMzY2MjI5
Mi4wLCAxMzY2MjYwNC4wLCAxMzY2MjY4NC4wLCAxMzY2Mjc4OC4wLCAxMzY2MzMzMi4wLCAxMzY2
MzY4OC4wLCAxMzY2MzQ0MC4wLCAxMzY2MzE0NC4wLCAxMzY2MDMwOC4wLCAxMzY2NDYyMC4wLCAx
MzY2MjY4OC4wLCAxMzY2NDA3Mi4wLCAxMzY2NDEzNi4wLCAxMzY2NDQ3Mi4wLCAxMzY2NDA1Mi4w
LCAxMzY2NjIzNi4wLCAxMzY2NDkyNC4wXSwgInN0ZGV2IjogNjgwNjk2LjQxNzAxMDE3MDksICJh
dmciOiAxMzUxMTc1Mi4yLCAidW5pdCI6ICJieXRlcyJ9fSwgInBsYXRmb3JtIjogImNocm9taXVt
IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTYyOTgz
In0sIHsidGltZXN0YW1wIjogMTM1MDc4MjAwNywgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzE5ODgi
LCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZ2MtbWluaS10cmVlOk1hbGxvYyI6IHsibWluIjogMC4w
LCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5p
dCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlIjogeyJtaW4iOiAxMjg3LjMxMjAw
MDAwMDM4MzcsICJtYXgiOiAxMzY3Ljg4MDAwMDAwNTI0MzMsICJtZWRpYW4iOiAxMzE1Ljk5MDk5
OTk5NTg0NzIsICJ2YWx1ZXMiOiBbMTI4Ny4zMTIwMDAwMDAzODM3LCAxMzU2LjgxOTk5OTk4NjMy
ODIsIDEzMDkuMzUxOTk5OTgyMDI3MywgMTM2Ny44ODAwMDAwMDUyNDMzLCAxMzEyLjI2MTk5OTk5
MjE4OCwgMTM0Ny44Njg5OTk5OTAxNjksIDEzMzcuNTAxOTk5OTgwMzA0NCwgMTM0OS42MzA5OTk5
OTAwNDA0LCAxMjk4LjU3NjAwMDAwMTA0ODcsIDEzNDcuMzYzMDAwMDA4MDQ0OCwgMTM0OC44MjE5
OTk5OTk5Mjc0LCAxMzQ1LjA4OTk5OTk4Nzk3NjYsIDEyOTguNTQ4OTk5OTk5MTg0MiwgMTI5Ni4x
MjQwMDAwMTQ5NywgMTMwNC44OTcwMDAwMjM2Mjk1LCAxMzE1LjkwMzAwMDAwOTcxMTgsIDEzMTcu
NzU3MDAwMDExNjI0OCwgMTMxNi4wNzg5OTk5ODE5ODI2LCAxMzEzLjU1OTAwMDAwMTk4NzQsIDEz
MTQuMTczOTk5OTk5MTg0Ml0sICJzdGRldiI6IDIzLjUzNTEyNTA1MjgwODE4MywgImF2ZyI6IDEz
MjQuMjc2MDQ5OTk4Mjk3OCwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLW1pbmktdHJlZTpK
U0hlYXAiOiB7Im1pbiI6IDEwNjE5NTY4LjAsICJtYXgiOiAxMzY2ODc3Mi4wLCAibWVkaWFuIjog
MTM2NjMyOTguMCwgInZhbHVlcyI6IFsxMzY2ODc3Mi4wLCAxMzY2Njk5Mi4wLCAxMDYxOTU2OC4w
LCAxMzY2MjE5Ni4wLCAxMzY2MjUzNi4wLCAxMzY2MjU2NC4wLCAxMzY2MjgzNi4wLCAxMzY2MzA4
OC4wLCAxMzY2MzMzNi4wLCAxMzY2MzI2MC4wLCAxMzY2MzE0MC4wLCAxMzY2MDE5Ni4wLCAxMzY2
NDYyOC4wLCAxMzY2MjQ0MC4wLCAxMzY2Mzc1Mi4wLCAxMzY2MzY5Mi4wLCAxMzY2Mzk3Mi4wLCAx
MzY2MzUwMC4wLCAxMzY2NTgyMC4wLCAxMzY2NDI0NC4wXSwgInN0ZGV2IjogNjgwNjk4Ljg1MjM2
MjgwNzEsICJhdmciOiAxMzUxMTUyNi41OTk5OTk5OTgsICJ1bml0IjogImJ5dGVzIn19LCAicGxh
dGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1y
ZXZpc2lvbiI6ICIxNjI5ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgyMDQxLCAid2Via2l0LXJl
dmlzaW9uIjogIjEzMTk4OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9nYy1taW5pLXRyZWU6TWFs
bG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBb
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAs
ICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1taW5pLXRyZWUiOiB7
Im1pbiI6IDEyNzEuNzU4OTk5OTk1NjU0NCwgIm1heCI6IDEzMTcuMzQ3MDAwMDAzNzkyMywgIm1l
ZGlhbiI6IDEyOTEuNjAzNDk5OTk0MzgwNCwgInZhbHVlcyI6IFsxMzA4LjgxNzAwMDAxMTkxMzUs
IDEzMDEuNTkwOTk5OTk1ODI0LCAxMjg0LjY1ODk5OTk5NzE5MTEsIDEzMTcuMzQ3MDAwMDAzNzky
MywgMTI5MS40NjQ5OTk5ODc1MTEsIDEyOTMuNDc1MDAwMDEzMTMxNiwgMTI5MS43OTc5OTk5OTEx
MDQsIDEyODYuMDgwOTk5OTk4Mzc1OCwgMTI3MS43NTg5OTk5OTU2NTQ0LCAxMjc1LjE5NDAwMDAx
NjE5OTQsIDEyODAuMjk2MDAwMDExNzMxLCAxMjc5LjM5Njk5OTk3NjU5NzcsIDEyODMuMjUxOTk5
OTkzODA4NiwgMTI3OS4xMTg5OTk5ODQzNDgyLCAxMjc4LjY2Mzk5OTk4MzEwOTUsIDEyOTcuMDM4
OTk5OTk3MzEyMiwgMTI5NC43OTYwMDAwMDE5NTIsIDEzMDIuNTQ5MDAwMDE0NTUxLCAxMjkxLjc0
MjAwMDAwMTI0OTgsIDEyOTQuODU0OTk5OTg1NTQ1OV0sICJzdGRldiI6IDExLjcwODAzMDg4MTU3
NDcyMywgImF2ZyI6IDEyOTAuMTk0NzQ5OTk4MDQ1MiwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdz
L2djLW1pbmktdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDEwNjE5NTY4LjAsICJtYXgiOiAxMzY2ODc3
Mi4wLCAibWVkaWFuIjogMTM2NjMyOTguMCwgInZhbHVlcyI6IFsxMzY2ODc3Mi4wLCAxMzY2Njk5
Mi4wLCAxMDYxOTU2OC4wLCAxMzY2MjE5Ni4wLCAxMzY2MjUzNi4wLCAxMzY2MjU2NC4wLCAxMzY2
MjgzNi4wLCAxMzY2MzA4OC4wLCAxMzY2MzMzNi4wLCAxMzY2MzI2MC4wLCAxMzY2MzE0MC4wLCAx
MzY2MDE5Ni4wLCAxMzY2NDYyOC4wLCAxMzY2MjQ0NC4wLCAxMzY2Mzc1Ni4wLCAxMzY2MzY5Ni4w
LCAxMzY2Mzk3Ni4wLCAxMzY2MzUwNC4wLCAxMzY2NTk5Mi4wLCAxMzY2NDI4MC4wXSwgInN0ZGV2
IjogNjgwNzAxLjU2NTQ2NDA5MDMsICJhdmciOiAxMzUxMTUzNy45OTk5OTk5OTgsICJ1bml0Ijog
ImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVu
ayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwNzgy
MDc2LCAid2Via2l0LXJldmlzaW9uIjogIjEzMTk4OCIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9n
Yy1taW5pLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAw
LjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBd
LCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9n
Yy1taW5pLXRyZWUiOiB7Im1pbiI6IDExOTYuNDY1OTk5OTkzOTYxMywgIm1heCI6IDEyMzAuMjUz
OTk5OTk0NjAyLCAibWVkaWFuIjogMTIwOC45ODk1MDAwMDk5MjA0LCAidmFsdWVzIjogWzEyMzAu
MjUzOTk5OTk0NjAyLCAxMjI1LjA0Nzk5OTk5Mjk2NjcsIDEyMTMuNTE4OTk5OTgyNjI1MiwgMTIy
Ni43ODYwMDAwMTM4MTcsIDEyMDUuODI1OTk5OTkwMzM4NSwgMTIxNi44NzgwMDAwMDY1NDUzLCAx
MjA4LjMzMDAwMDAyMzEyNDcsIDEyMTQuMDYyMDAwMDEzNjU1LCAxMjAzLjY3Nzk5OTk5MDc1OTQs
IDEyMDguNDQyMDAwMDAyODMzLCAxMjEwLjQxMTAwMDAwNzI5NzgsIDEyMTguNzM2OTk5OTg4MzIz
LCAxMTk2LjQ2NTk5OTk5Mzk2MTMsIDEyMDAuNjI2OTk5OTgzNzk2OCwgMTIwMC40OTMwMDAwMTEx
OTI2LCAxMjEwLjM3Njk5OTk4MTIzNTcsIDEyMDcuNTQ0MDAwMDA0NDE4MiwgMTIwOS41MzcwMDAw
MTcwMDc4LCAxMTk2LjUzNzAwMDAxMDcyMTQsIDExOTkuMDY0OTk5OTkzNDI0OV0sICJzdGRldiI6
IDkuNzM4NzMxNTM1ODg1MDgyLCAiYXZnIjogMTIxMC4xMzA4NTAwMDAxMzIzLCAidW5pdCI6ICJt
cyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlOkpTSGVhcCI6IHsibWluIjogMTA2MTk1NjguMCwg
Im1heCI6IDEzNjY4NzcyLjAsICJtZWRpYW4iOiAxMzY2MzI5OC4wLCAidmFsdWVzIjogWzEzNjY4
NzcyLjAsIDEzNjY2OTkyLjAsIDEwNjE5NTY4LjAsIDEzNjYyMTk2LjAsIDEzNjYyNTM2LjAsIDEz
NjYyNTY0LjAsIDEzNjYyODM2LjAsIDEzNjYzMDg4LjAsIDEzNjYzMzM2LjAsIDEzNjYzMjYwLjAs
IDEzNjYzMTQwLjAsIDEzNjYwMTk2LjAsIDEzNjY0NjI4LjAsIDEzNjYyNDQ0LjAsIDEzNjYzNzU2
LjAsIDEzNjYzNjk2LjAsIDEzNjYzOTc2LjAsIDEzNjYzNTA0LjAsIDEzNjY1OTkyLjAsIDEzNjY0
MjgwLjBdLCAic3RkZXYiOiA2ODA3MDEuNTY1NDY0MDkwMywgImF2ZyI6IDEzNTExNTM3Ljk5OTk5
OTk5OCwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIsICJicmFuY2gi
OiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9uIjogIjE2Mjk4MyJ9XTwvc2NyaXB0
Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169783</attachid>
            <date>2012-10-20 18:29:15 -0700</date>
            <delta_ts>2012-10-20 22:48:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99884-20121020182810.patch</filename>
            <type>text/plain</type>
            <size>11353</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA2NmQ4ZGQ1ZDFmMDM2
ODc1ZTU4Yzg0NDZhZjNkNWEwZDJmZTM4Ny4uMTExOTEwN2E1ZTFjZjg5ZDNmZDkxOWQ3NjU3YjM1
MjA0MmFhYWRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVmlzaXRvciB3YXMgdmFzdGx5IG1vcmUgY29tcGxp
Y2F0ZWQgdGhhbiBuZWNlc3NhcnkuIFRoaXMgcGF0Y2gKKyAgICAgICAgc2ltcGxpZmllcyB0aGUg
YXBwcm9hY2ggc2lnbmlmaWNhbnRseSBhbmQgaW1wcm92ZXMgcGVyZm9ybWFuY2Ugb24KKyAgICAg
ICAgQmluZGluZ3MvZ2MtbWluaS10cmVlLmh0bWwgYnkgMjAlLgorCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2JqZWN0VmlzaXRv
cjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEltcGxpY2l0UmVmZXJl
bmNlc0Zvck5vZGVXaXRoRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6cm9vdEZv
ckdDKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVZpc2l0b3I6OmFwcGx5R3JvdXBpbmcpOgorICAgICAgICAo
Tm9kZVZpc2l0b3IpOgorCiAyMDEyLTEwLTIwICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtBQ10gQnVpbGQgZml4IGFmdGVyIHIxMzE5MzMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCA5MDA3
ZGFiOTdkZTdlZDMwMDM1YzlhNWQ4MDFkZTAzOWIxMjY3YWUzLi40M2IyYzMyMzcwMzFkMzIyNDRh
ZWNkNmE5M2M0OWQ1NjQxYzlmZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC0xMDEsMTk5ICsxMDEsMTE2IEBAIHB1YmxpYzoKICAgICB9
CiB9OwogCi0vLyBJbXBsZW1lbnRzIHY4OjpSZXRhaW5lZE9iamVjdEluZm8uCi1jbGFzcyBVbnNw
ZWNpZmllZEdyb3VwIDogcHVibGljIFJldGFpbmVkT2JqZWN0SW5mbyB7CitjbGFzcyBPYmplY3RW
aXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IgewogcHVibGljOgot
ICAgIGV4cGxpY2l0IFVuc3BlY2lmaWVkR3JvdXAodm9pZCogb2JqZWN0KQotICAgICAgICA6IG1f
b2JqZWN0KG9iamVjdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX29iamVjdCk7Ci0gICAgfQot
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBEaXNwb3NlKCkgeyBkZWxldGUgdGhpczsgfQotICAKLSAg
ICB2aXJ0dWFsIGJvb2wgSXNFcXVpdmFsZW50KHY4OjpSZXRhaW5lZE9iamVjdEluZm8qIG90aGVy
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG90aGVyKTsKLSAgICAgICAgcmV0dXJuIG90aGVyID09
IHRoaXMgfHwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmV0YWluZWRPYmplY3RJbmZvKj4ob3RoZXIp
LT5HZXRFcXVpdmFsZW5jZUNsYXNzKCkgPT0gdGhpcy0+R2V0RXF1aXZhbGVuY2VDbGFzcygpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgaW50cHRyX3QgR2V0SGFzaCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gUHRySGFzaDx2b2lkKj46Omhhc2gobV9vYmplY3QpOwotICAgIH0KLSAgICAKLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIEdldExhYmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiT2Jq
ZWN0IGdyb3VwIjsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGludHB0cl90IEdldEVxdWl2YWxlbmNl
Q2xhc3MoKQorICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIHZv
aWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX29iamVjdCk7CisgICAg
ICAgIFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnZpc2l0RE9NV3JhcHBl
cihzdG9yZSwgb2JqZWN0LCB3cmFwcGVyKTsKICAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCog
bV9vYmplY3Q7CiB9OwogCi1jbGFzcyBHcm91cElkIHsKLXB1YmxpYzoKLSAgICBHcm91cElkKCkg
OiBtX3R5cGUoTnVsbFR5cGUpLCBtX2dyb3VwSWQoMCkge30KLSAgICBHcm91cElkKE5vZGUqIG5v
ZGUpIDogbV90eXBlKE5vZGVUeXBlKSwgbV9ub2RlKG5vZGUpIHt9Ci0gICAgR3JvdXBJZCh2b2lk
KiBvdGhlcikgOiBtX3R5cGUoT3RoZXJUeXBlKSwgbV9vdGhlcihvdGhlcikge30KLSAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBOdWxsVHlwZTsgfQotICAgIHVp
bnRwdHJfdCBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9Ci0gICAgUmV0YWlu
ZWRPYmplY3RJbmZvKiBjcmVhdGVSZXRhaW5lZE9iamVjdEluZm8oKSBjb25zdAotICAgIHsKLSAg
ICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBOdWxsVHlwZToKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICBjYXNlIE5vZGVUeXBlOgotICAgICAgICAgICAgcmV0dXJu
IG5ldyBSZXRhaW5lZERPTUluZm8obV9ub2RlKTsKLSAgICAgICAgY2FzZSBPdGhlclR5cGU6Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IFVuc3BlY2lmaWVkR3JvdXAobV9vdGhlcik7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQorc3RhdGljIHZvaWQg
YWRkSW1wbGljaXRSZWZlcmVuY2VzRm9yTm9kZVdpdGhFdmVudExpc3RlbmVycyhOb2RlKiBub2Rl
LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQoreworICAgIEFTU0VSVChub2Rl
LT5oYXNFdmVudExpc3RlbmVycygpKTsKKworICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+ID4gbGlzdGVuZXJzOworCisgICAgRXZlbnRMaXN0ZW5lckl0ZXJhdG9yIGl0ZXJhdG9y
KG5vZGUpOworICAgIHdoaWxlIChFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGl0ZXJhdG9yLm5l
eHRMaXN0ZW5lcigpKSB7CisgICAgICAgIGlmIChsaXN0ZW5lci0+dHlwZSgpICE9IEV2ZW50TGlz
dGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqIHY4bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKKyAgICAgICAgaWYgKCF2OGxpc3RlbmVy
LT5oYXNFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgbGlzdGVuZXJzLmFwcGVuZCh2OGxpc3RlbmVyLT5leGlzdGluZ0xpc3RlbmVyT2JqZWN0
UGVyc2lzdGVudEhhbmRsZSgpKTsKICAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIGVudW0gVHlw
ZSB7Ci0gICAgICAgIE51bGxUeXBlLAotICAgICAgICBOb2RlVHlwZSwKLSAgICAgICAgT3RoZXJU
eXBlCi0gICAgfTsKLSAgICBUeXBlIG1fdHlwZTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHVpbnRw
dHJfdCBtX2dyb3VwSWQ7Ci0gICAgICAgIE5vZGUqIG1fbm9kZTsKLSAgICAgICAgdm9pZCogbV9v
dGhlcjsKLSAgICB9OwotfTsKLQotY2xhc3MgR3JvdXBlckl0ZW0gewotcHVibGljOgotICAgIEdy
b3VwZXJJdGVtKEdyb3VwSWQgZ3JvdXBJZCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlcikgOiBtX2dyb3VwSWQoZ3JvdXBJZCksIG1fd3JhcHBlcih3cmFwcGVyKSB7fQotICAgIHVp
bnRwdHJfdCBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkLmdyb3VwSWQoKTsgfQot
ICAgIFJldGFpbmVkT2JqZWN0SW5mbyogY3JlYXRlUmV0YWluZWRPYmplY3RJbmZvKCkgY29uc3Qg
eyByZXR1cm4gbV9ncm91cElkLmNyZWF0ZVJldGFpbmVkT2JqZWN0SW5mbygpOyB9Ci0gICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBl
cjsgfQogCi1wcml2YXRlOgotICAgIEdyb3VwSWQgbV9ncm91cElkOwotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IG1fd3JhcHBlcjsKLX07CisgICAgaWYgKGxpc3RlbmVycy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKIAotYm9vbCBvcGVyYXRvcjwoY29uc3QgR3JvdXBlckl0ZW0m
IGEsIGNvbnN0IEdyb3VwZXJJdGVtJiBiKQotewotICAgIHJldHVybiBhLmdyb3VwSWQoKSA8IGIu
Z3JvdXBJZCgpOworICAgIHY4OjpWODo6QWRkSW1wbGljaXRSZWZlcmVuY2VzKHdyYXBwZXIsIGxp
c3RlbmVycy5kYXRhKCksIGxpc3RlbmVycy5zaXplKCkpOwogfQogCi10eXBlZGVmIFZlY3RvcjxH
cm91cGVySXRlbT4gR3JvdXBlckxpc3Q7Ci0KLS8vIElmIHRoZSBub2RlIGlzIGluIGRvY3VtZW50
LCBwdXQgaXQgaW4gdGhlIG93bmVyRG9jdW1lbnQncyBvYmplY3QgZ3JvdXAuCi0vLwotLy8gSWYg
YW4gaW1hZ2UgZWxlbWVudCB3YXMgY3JlYXRlZCBieSBKYXZhU2NyaXB0ICJuZXcgSW1hZ2UiLAot
Ly8gaXQgaXMgbm90IGluIGEgZG9jdW1lbnQuIEhvd2V2ZXIsIGlmIHRoZSBsb2FkIGV2ZW50IGhh
cyBub3QKLS8vIGJlZW4gZmlyZWQgKHN0aWxsIG9ubG9hZGluZyksIGl0IGlzIHRyZWF0ZWQgYXMg
aW4gdGhlIGRvY3VtZW50LgotLy8KLS8vIE90aGVyd2lzZSwgdGhlIG5vZGUgaXMgcHV0IGluIGFu
IG9iamVjdCBncm91cCBpZGVudGlmaWVkIGJ5IHRoZSByb290Ci0vLyBlbGVtZW50IG9mIHRoZSB0
cmVlIHRvIHdoaWNoIGl0IGJlbG9uZ3MuCi1zdGF0aWMgR3JvdXBJZCBjYWxjdWxhdGVHcm91cElk
KE5vZGUqIG5vZGUpCitzdGF0aWMgTm9kZSogcm9vdEZvckdDKE5vZGUqIG5vZGUpCiB7CisgICAg
Ly8gRklYTUU6IFdoYXQgYWJvdXQgPGF1ZGlvPj8KICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgp
IHx8IChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxI
VE1MSW1hZ2VFbGVtZW50Kj4obm9kZSktPmhhc1BlbmRpbmdBY3Rpdml0eSgpKSkKLSAgICAgICAg
cmV0dXJuIEdyb3VwSWQobm9kZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIHJldHVybiBub2RlLT5k
b2N1bWVudCgpOwogCi0gICAgTm9kZSogcm9vdCA9IG5vZGU7CiAgICAgaWYgKG5vZGUtPmlzQXR0
cmlidXRlTm9kZSgpKSB7Ci0gICAgICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxBdHRyKj4obm9kZSkt
Pm93bmVyRWxlbWVudCgpOwotICAgICAgICAvLyBJZiB0aGUgYXR0cmlidXRlIGhhcyBubyBlbGVt
ZW50LCBubyBuZWVkIHRvIHB1dCBpdCBpbiB0aGUgZ3JvdXAsCi0gICAgICAgIC8vIGJlY2F1c2Ug
aXQnbGwgYWx3YXlzIGJlIGEgZ3JvdXAgb2YgMS4KLSAgICAgICAgaWYgKCFyb290KQotICAgICAg
ICAgICAgcmV0dXJuIEdyb3VwSWQoKTsKKyAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PEF0dHIq
Pihub2RlKS0+b3duZXJFbGVtZW50KCk7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gcm9vdC0+cGFyZW50
T3JIb3N0Tm9kZSgpKQotICAgICAgICByb290ID0gcGFyZW50OwogCi0gICAgcmV0dXJuIEdyb3Vw
SWQocm9vdCk7CisgICAgd2hpbGUgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKSkKKyAgICAgICAgbm9kZSA9IHBhcmVudDsKKworICAgIHJldHVybiBub2RlOwogfQogCi1j
bGFzcyBPYmplY3RWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3Ig
eworY2xhc3MgSW1wbGljaXRSZWZlcmVuY2UgewogcHVibGljOgotICAgIHZvaWQgdmlzaXRET01X
cmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICBJbXBsaWNpdFJlZmVyZW5jZShOb2RlKiByb290LCB2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIpCisgICAgICAgIDogbV9yb290KHJvb3Qp
CisgICAgICAgICwgbV93cmFwcGVyKHdyYXBwZXIpCiAgICAgewotICAgICAgICBWOERPTVdyYXBw
ZXI6OmRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpLT52aXNpdERPTVdyYXBwZXIoc3RvcmUsIG9iamVj
dCwgd3JhcHBlcik7CiAgICAgfQorCisgICAgTm9kZSogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdDsgfQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd3JhcHBlcjsgfQorCitwdWJsaWM6CisgICAgTm9kZSogbV9yb290OworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gbV93cmFwcGVyOwogfTsKIAorYm9vbCBvcGVyYXRvcjwo
Y29uc3QgSW1wbGljaXRSZWZlcmVuY2UmIGxocywgY29uc3QgSW1wbGljaXRSZWZlcmVuY2UmIHJo
cykKK3sKKyAgICByZXR1cm4gbGhzLnJvb3QoKSA8IHJocy5yb290KCk7Cit9CisKIGNsYXNzIE5v
ZGVWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IgewogcHVibGlj
OgogICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIE5vZGUqIG5vZGUsIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewotICAgICAgICBpZiAobm9k
ZS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZT4gPiBsaXN0ZW5lcnM7Ci0gICAgICAgICAgICBFdmVudExpc3RlbmVySXRl
cmF0b3IgaXRlcmF0b3Iobm9kZSk7Ci0gICAgICAgICAgICB3aGlsZSAoRXZlbnRMaXN0ZW5lciog
bGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkgewotICAgICAgICAgICAgICAgIGlm
IChsaXN0ZW5lci0+dHlwZSgpICE9IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFY4QWJzdHJh
Y3RFdmVudExpc3RlbmVyKiB2OGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50
TGlzdGVuZXIqPihsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgaWYgKCF2OGxpc3RlbmVyLT5o
YXNFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIGxpc3RlbmVycy5hcHBlbmQodjhsaXN0ZW5lci0+ZXhpc3RpbmdM
aXN0ZW5lck9iamVjdFBlcnNpc3RlbnRIYW5kbGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIWxpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpB
ZGRJbXBsaWNpdFJlZmVyZW5jZXMod3JhcHBlciwgbGlzdGVuZXJzLmRhdGEoKSwgbGlzdGVuZXJz
LnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJz
KCkpCisgICAgICAgICAgICBhZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0aEV2ZW50TGlz
dGVuZXJzKG5vZGUsIHdyYXBwZXIpOwogCi0gICAgICAgIEdyb3VwSWQgZ3JvdXBJZCA9IGNhbGN1
bGF0ZUdyb3VwSWQobm9kZSk7Ci0gICAgICAgIGlmICghZ3JvdXBJZCkKKyAgICAgICAgTm9kZSog
cm9vdCA9IHJvb3RGb3JHQyhub2RlKTsKKyAgICAgICAgaWYgKCFyb290KQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdy
YXBwZXIpKTsKKyAgICAgICAgbV9ncm91cHMuYXBwZW5kKEltcGxpY2l0UmVmZXJlbmNlKHJvb3Qs
IHdyYXBwZXIpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5R3JvdXBpbmcoKQogICAgIHsKLSAg
ICAgICAgLy8gR3JvdXAgYnkgc29ydGluZyBieSB0aGUgZ3JvdXAgaWQuCi0gICAgICAgIHN0ZDo6
c29ydChtX2dyb3VwZXIuYmVnaW4oKSwgbV9ncm91cGVyLmVuZCgpKTsKLQotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZ3JvdXBlci5zaXplKCk7ICkgewotICAgICAgICAgICAgLy8g
U2VlayB0byB0aGUgbmV4dCBrZXkgKG9yIHRoZSBlbmQgb2YgdGhlIGxpc3QpLgotICAgICAgICAg
ICAgc2l6ZV90IG5leHRLZXlJbmRleCA9IG1fZ3JvdXBlci5zaXplKCk7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gaTsgaiA8IG1fZ3JvdXBlci5zaXplKCk7ICsraikgewotICAgICAgICAg
ICAgICAgIGlmIChtX2dyb3VwZXJbaV0uZ3JvdXBJZCgpICE9IG1fZ3JvdXBlcltqXS5ncm91cElk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dEtleUluZGV4ID0gajsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBBU1NFUlQobmV4dEtleUluZGV4ID4gaSk7Ci0KLSAgICAgICAgICAgIC8vIFdlIG9u
bHkgY2FyZSBhYm91dCBhIGdyb3VwIGlmIGl0IGhhcyBtb3JlIHRoYW4gb25lIG9iamVjdC4gSWYg
aXQgb25seQotICAgICAgICAgICAgLy8gaGFzIG9uZSBvYmplY3QsIGl0IGhhcyBub3RoaW5nIGVs
c2UgdGhhdCBuZWVkcyB0byBiZSBrZXB0IGFsaXZlLgotICAgICAgICAgICAgaWYgKG5leHRLZXlJ
bmRleCAtIGkgPD0gMSkgewotICAgICAgICAgICAgICAgIGkgPSBuZXh0S2V5SW5kZXg7CisgICAg
ICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+ID4gY3VycmVudEdyb3VwOworICAg
ICAgICBzdGQ6OnNvcnQobV9ncm91cHMuYmVnaW4oKSwgbV9ncm91cHMuZW5kKCkpOworCisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncm91cHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIHNpemVfdCBiZWdpbiA9IGk7CisgICAgICAgICAgICBOb2RlKiByb290ID0gbV9ncm91
cHNbaV0ucm9vdCgpOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICsraTsKKyAg
ICAgICAgICAgIH0gd2hpbGUgKGkgPCBtX2dyb3Vwcy5zaXplKCkgJiYgbV9ncm91cHNbaV0ucm9v
dCgpID09IHJvb3QpOworCisgICAgICAgICAgICBzaXplX3QgZW5kID0gaTsKKyAgICAgICAgICAg
IHNpemVfdCBzaXplID0gZW5kIC0gYmVnaW47CisgICAgICAgICAgICBpZiAoc2l6ZSA9PSAxKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBz
aXplX3Qgcm9vdEluZGV4ID0gaTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHY4
OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBncm91cDsKLSAgICAgICAgICAgIGdyb3VwLnJlc2Vy
dmVDYXBhY2l0eShuZXh0S2V5SW5kZXggLSBpKTsKLSAgICAgICAgICAgIGZvciAoOyBpIDwgbmV4
dEtleUluZGV4OyArK2kpIHsKLSAgICAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+IHdyYXBwZXIgPSBtX2dyb3VwZXJbaV0ud3JhcHBlcigpOwotICAgICAgICAgICAgICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGdyb3VwLmFwcGVuZCh3
cmFwcGVyKTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGdyb3VwLnNpemUoKSA+
IDEpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmZ3JvdXBbMF0sIGdy
b3VwLnNpemUoKSwgbV9ncm91cGVyW3Jvb3RJbmRleF0uY3JlYXRlUmV0YWluZWRPYmplY3RJbmZv
KCkpOworICAgICAgICAgICAgY3VycmVudEdyb3VwLnJlc2VydmVDYXBhY2l0eShzaXplKTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBiZWdpbjsgaiA8IGVuZDsgKytqKQorICAgICAgICAg
ICAgICAgIGN1cnJlbnRHcm91cC5hcHBlbmQobV9ncm91cHNbal0ud3JhcHBlcigpKTsKIAotICAg
ICAgICAgICAgQVNTRVJUKGkgPT0gbmV4dEtleUluZGV4KTsKKyAgICAgICAgICAgIHY4OjpWODo6
QWRkT2JqZWN0R3JvdXAoY3VycmVudEdyb3VwLmRhdGEoKSwgY3VycmVudEdyb3VwLnNpemUoKSwg
bmV3IFJldGFpbmVkRE9NSW5mbyhyb290KSk7CisgICAgICAgICAgICBjdXJyZW50R3JvdXAuc2hy
aW5rKDApOwogICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdyb3VwZXJMaXN0IG1f
Z3JvdXBlcjsKKyAgICBWZWN0b3I8SW1wbGljaXRSZWZlcmVuY2U+IG1fZ3JvdXBzOwogfTsKIAog
Ly8gQ3JlYXRlIG9iamVjdCBncm91cHMgZm9yIERPTSB0cmVlIG5vZGVzLgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCA5MWYwYzE3N2U0YTYwNWMzNjcwZDhhMGUwNmMzMmU1YzNjOTcxYzY1Li44ZWY2M2NlZWZi
MGI2ZmMzYWMxYjlmNjZhZTljNGFhODU0NzBhZmE3IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEyLTEwLTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxpZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHNvbWUg
cGVyZm9ybWFuY2UgdGVzdHMgZm9yIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KKworICAgICAgICAq
IEJpbmRpbmdzL2djLWZvcmVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBCaW5kaW5ncy9nYy1t
aW5pLXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogQmluZGluZ3MvZ2MtdHJlZS5odG1sOiBB
ZGRlZC4KKwogMjAxMi0xMC0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBCdW1wIHVwIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBvZiBodG1sNS1mdWxsLXJl
bmRlciB0byA1Cg==
</data>
<flag name="review"
          id="183190"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169786</attachid>
            <date>2012-10-20 23:05:18 -0700</date>
            <delta_ts>2012-10-22 11:19:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99884-20121020230359.patch</filename>
            <type>text/plain</type>
            <size>11143</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk0OTU3OTQ5NDk1MjYw
YzAwYTk4YmFiODk1MGUzNzYxN2FlOTNjZS4uOWQ0YzU3ODhkYWM5OTI2N2NiNWFlMDc2MzE4NzVh
ZDZjODJmNGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVmlzaXRvciB3YXMgdmFzdGx5IG1vcmUgY29tcGxp
Y2F0ZWQgdGhhbiBuZWNlc3NhcnkuIFRoaXMgcGF0Y2gKKyAgICAgICAgc2ltcGxpZmllcyB0aGUg
YXBwcm9hY2ggc2lnbmlmaWNhbnRseSBhbmQgaW1wcm92ZXMgcGVyZm9ybWFuY2Ugb24KKyAgICAg
ICAgQmluZGluZ3MvZ2MtbWluaS10cmVlLmh0bWwgYnkgMjAlLgorCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2JqZWN0VmlzaXRv
cjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEltcGxpY2l0UmVmZXJl
bmNlc0Zvck5vZGVXaXRoRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6cm9vdEZv
ckdDKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVZpc2l0b3I6OmFwcGx5R3JvdXBpbmcpOgorICAgICAgICAo
Tm9kZVZpc2l0b3IpOgorCiAyMDEyLTEwLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNTEyNzEwPiBbbWFjXSBUZXh0IHdpdGgg
emVybyBmb250IHNpemUgcmVuZGVycyBhcyAxMnB4IHNvbWV0aW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkwMDdkYWI5N2RlN2VkMzAw
MzVjOWE1ZDgwMWRlMDM5YjEyNjdhZTMuLjk1ZDkxZTI3ZmVhYzIyNjdkNjA4MGY4MzJhZTEyZmUy
Y2FiNDNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5jcHAKQEAgLTEwMSwxOTkgKzEwMSwxMDggQEAgcHVibGljOgogICAgIH0KIH07CiAKLS8vIElt
cGxlbWVudHMgdjg6OlJldGFpbmVkT2JqZWN0SW5mby4KLWNsYXNzIFVuc3BlY2lmaWVkR3JvdXAg
OiBwdWJsaWMgUmV0YWluZWRPYmplY3RJbmZvIHsKK2NsYXNzIE9iamVjdFZpc2l0b3IgOiBwdWJs
aWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
VW5zcGVjaWZpZWRHcm91cCh2b2lkKiBvYmplY3QpCi0gICAgICAgIDogbV9vYmplY3Qob2JqZWN0
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2JqZWN0KTsKLSAgICB9Ci0gICAgCi0gICAgdmly
dHVhbCB2b2lkIERpc3Bvc2UoKSB7IGRlbGV0ZSB0aGlzOyB9Ci0gIAotICAgIHZpcnR1YWwgYm9v
bCBJc0VxdWl2YWxlbnQodjg6OlJldGFpbmVkT2JqZWN0SW5mbyogb3RoZXIpCi0gICAgewotICAg
ICAgICBBU1NFUlQob3RoZXIpOwotICAgICAgICByZXR1cm4gb3RoZXIgPT0gdGhpcyB8fCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpSZXRhaW5lZE9iamVjdEluZm8qPihvdGhlciktPkdldEVxdWl2YWxl
bmNlQ2xhc3MoKSA9PSB0aGlzLT5HZXRFcXVpdmFsZW5jZUNsYXNzKCk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCBpbnRwdHJfdCBHZXRIYXNoKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdHJIYXNo
PHZvaWQqPjo6aGFzaChtX29iamVjdCk7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogR2V0TGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJPYmplY3QgZ3JvdXAiOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgaW50cHRyX3QgR2V0RXF1aXZhbGVuY2VDbGFzcygpCisgICAg
dm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fb2JqZWN0KTsKKyAgICAgICAgVjhET01XcmFw
cGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dmlzaXRET01XcmFwcGVyKHN0b3JlLCBvYmpl
Y3QsIHdyYXBwZXIpOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkKiBtX29iamVjdDsKIH07
CiAKLWNsYXNzIEdyb3VwSWQgewotcHVibGljOgotICAgIEdyb3VwSWQoKSA6IG1fdHlwZShOdWxs
VHlwZSksIG1fZ3JvdXBJZCgwKSB7fQotICAgIEdyb3VwSWQoTm9kZSogbm9kZSkgOiBtX3R5cGUo
Tm9kZVR5cGUpLCBtX25vZGUobm9kZSkge30KLSAgICBHcm91cElkKHZvaWQqIG90aGVyKSA6IG1f
dHlwZShPdGhlclR5cGUpLCBtX290aGVyKG90aGVyKSB7fQotICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IE51bGxUeXBlOyB9Ci0gICAgdWludHB0cl90IGdyb3Vw
SWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBSZXRhaW5lZE9iamVjdEluZm8q
IGNyZWF0ZVJldGFpbmVkT2JqZWN0SW5mbygpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2gg
KG1fdHlwZSkgewotICAgICAgICBjYXNlIE51bGxUeXBlOgotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIGNhc2UgTm9kZVR5cGU6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFJldGFpbmVk
RE9NSW5mbyhtX25vZGUpOwotICAgICAgICBjYXNlIE90aGVyVHlwZToKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgVW5zcGVjaWZpZWRHcm91cChtX290aGVyKTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CitzdGF0aWMgdm9pZCBhZGRJbXBsaWNpdFJl
ZmVyZW5jZXNGb3JOb2RlV2l0aEV2ZW50TGlzdGVuZXJzKE5vZGUqIG5vZGUsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCit7CisgICAgQVNTRVJUKG5vZGUtPmhhc0V2ZW50TGlz
dGVuZXJzKCkpOworCisgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBsaXN0
ZW5lcnM7CisKKyAgICBFdmVudExpc3RlbmVySXRlcmF0b3IgaXRlcmF0b3Iobm9kZSk7CisgICAg
d2hpbGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gaXRlcmF0b3IubmV4dExpc3RlbmVyKCkp
IHsKKyAgICAgICAgaWYgKGxpc3RlbmVyLT50eXBlKCkgIT0gRXZlbnRMaXN0ZW5lcjo6SlNFdmVu
dExpc3RlbmVyVHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lciogdjhsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4QWJzdHJhY3RFdmVudExp
c3RlbmVyKj4obGlzdGVuZXIpOworICAgICAgICBpZiAoIXY4bGlzdGVuZXItPmhhc0V4aXN0aW5n
TGlzdGVuZXJPYmplY3QoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0ZW5l
cnMuYXBwZW5kKHY4bGlzdGVuZXItPmV4aXN0aW5nTGlzdGVuZXJPYmplY3RQZXJzaXN0ZW50SGFu
ZGxlKCkpOwogICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgZW51bSBUeXBlIHsKLSAgICAgICAg
TnVsbFR5cGUsCi0gICAgICAgIE5vZGVUeXBlLAotICAgICAgICBPdGhlclR5cGUKLSAgICB9Owot
ICAgIFR5cGUgbV90eXBlOwotICAgIHVuaW9uIHsKLSAgICAgICAgdWludHB0cl90IG1fZ3JvdXBJ
ZDsKLSAgICAgICAgTm9kZSogbV9ub2RlOwotICAgICAgICB2b2lkKiBtX290aGVyOwotICAgIH07
Ci19OwotCi1jbGFzcyBHcm91cGVySXRlbSB7Ci1wdWJsaWM6Ci0gICAgR3JvdXBlckl0ZW0oR3Jv
dXBJZCBncm91cElkLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKSA6IG1fZ3Jv
dXBJZChncm91cElkKSwgbV93cmFwcGVyKHdyYXBwZXIpIHt9Ci0gICAgdWludHB0cl90IGdyb3Vw
SWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQuZ3JvdXBJZCgpOyB9Ci0gICAgUmV0YWluZWRP
YmplY3RJbmZvKiBjcmVhdGVSZXRhaW5lZE9iamVjdEluZm8oKSBjb25zdCB7IHJldHVybiBtX2dy
b3VwSWQuY3JlYXRlUmV0YWluZWRPYmplY3RJbmZvKCk7IH0KLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVyOyB9CiAKLXByaXZh
dGU6Ci0gICAgR3JvdXBJZCBtX2dyb3VwSWQ7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gbV93cmFwcGVyOwotfTsKKyAgICBpZiAobGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOwogCi1ib29sIG9wZXJhdG9yPChjb25zdCBHcm91cGVySXRlbSYgYSwgY29uc3QgR3Jv
dXBlckl0ZW0mIGIpCi17Ci0gICAgcmV0dXJuIGEuZ3JvdXBJZCgpIDwgYi5ncm91cElkKCk7Cisg
ICAgdjg6OlY4OjpBZGRJbXBsaWNpdFJlZmVyZW5jZXMod3JhcHBlciwgbGlzdGVuZXJzLmRhdGEo
KSwgbGlzdGVuZXJzLnNpemUoKSk7CiB9CiAKLXR5cGVkZWYgVmVjdG9yPEdyb3VwZXJJdGVtPiBH
cm91cGVyTGlzdDsKLQotLy8gSWYgdGhlIG5vZGUgaXMgaW4gZG9jdW1lbnQsIHB1dCBpdCBpbiB0
aGUgb3duZXJEb2N1bWVudCdzIG9iamVjdCBncm91cC4KLS8vCi0vLyBJZiBhbiBpbWFnZSBlbGVt
ZW50IHdhcyBjcmVhdGVkIGJ5IEphdmFTY3JpcHQgIm5ldyBJbWFnZSIsCi0vLyBpdCBpcyBub3Qg
aW4gYSBkb2N1bWVudC4gSG93ZXZlciwgaWYgdGhlIGxvYWQgZXZlbnQgaGFzIG5vdAotLy8gYmVl
biBmaXJlZCAoc3RpbGwgb25sb2FkaW5nKSwgaXQgaXMgdHJlYXRlZCBhcyBpbiB0aGUgZG9jdW1l
bnQuCi0vLwotLy8gT3RoZXJ3aXNlLCB0aGUgbm9kZSBpcyBwdXQgaW4gYW4gb2JqZWN0IGdyb3Vw
IGlkZW50aWZpZWQgYnkgdGhlIHJvb3QKLS8vIGVsZW1lbnQgb2YgdGhlIHRyZWUgdG8gd2hpY2gg
aXQgYmVsb25ncy4KLXN0YXRpYyBHcm91cElkIGNhbGN1bGF0ZUdyb3VwSWQoTm9kZSogbm9kZSkK
K3N0YXRpYyBOb2RlKiByb290Rm9yR0MoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+aW5E
b2N1bWVudCgpIHx8IChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKSAmJiBzdGF0
aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSktPmhhc1BlbmRpbmdBY3Rpdml0eSgpKSkK
LSAgICAgICAgcmV0dXJuIEdyb3VwSWQobm9kZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIHJldHVy
biBub2RlLT5kb2N1bWVudCgpOwogCi0gICAgTm9kZSogcm9vdCA9IG5vZGU7CiAgICAgaWYgKG5v
ZGUtPmlzQXR0cmlidXRlTm9kZSgpKSB7Ci0gICAgICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxBdHRy
Kj4obm9kZSktPm93bmVyRWxlbWVudCgpOwotICAgICAgICAvLyBJZiB0aGUgYXR0cmlidXRlIGhh
cyBubyBlbGVtZW50LCBubyBuZWVkIHRvIHB1dCBpdCBpbiB0aGUgZ3JvdXAsCi0gICAgICAgIC8v
IGJlY2F1c2UgaXQnbGwgYWx3YXlzIGJlIGEgZ3JvdXAgb2YgMS4KLSAgICAgICAgaWYgKCFyb290
KQotICAgICAgICAgICAgcmV0dXJuIEdyb3VwSWQoKTsKKyAgICAgICAgbm9kZSA9IHN0YXRpY19j
YXN0PEF0dHIqPihub2RlKS0+b3duZXJFbGVtZW50KCk7CisgICAgICAgIGlmICghbm9kZSkKKyAg
ICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gcm9v
dC0+cGFyZW50T3JIb3N0Tm9kZSgpKQotICAgICAgICByb290ID0gcGFyZW50OwogCi0gICAgcmV0
dXJuIEdyb3VwSWQocm9vdCk7CisgICAgd2hpbGUgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKSkKKyAgICAgICAgbm9kZSA9IHBhcmVudDsKKworICAgIHJldHVybiBub2Rl
OwogfQogCi1jbGFzcyBPYmplY3RWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8dm9pZD46
OlZpc2l0b3IgeworY2xhc3MgSW1wbGljaXRDb25uZWN0aW9uIHsKIHB1YmxpYzoKLSAgICB2b2lk
IHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqIHN0b3JlLCB2b2lkKiBvYmplY3QsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgSW1wbGljaXRDb25uZWN0aW9uKE5v
ZGUqIHJvb3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlcikKKyAgICAgICAgOiBt
X3Jvb3Qocm9vdCkKKyAgICAgICAgLCBtX3dyYXBwZXIod3JhcHBlcikKICAgICB7Ci0gICAgICAg
IFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnZpc2l0RE9NV3JhcHBlcihz
dG9yZSwgb2JqZWN0LCB3cmFwcGVyKTsKICAgICB9CisKKyAgICBOb2RlKiByb290KCkgY29uc3Qg
eyByZXR1cm4gbV9yb290OyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVy
KCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVyOyB9CisKK3B1YmxpYzoKKyAgICBOb2RlKiBtX3Jv
b3Q7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBtX3dyYXBwZXI7CiB9OwogCitib29s
IG9wZXJhdG9yPChjb25zdCBJbXBsaWNpdENvbm5lY3Rpb24mIGxlZnQsIGNvbnN0IEltcGxpY2l0
Q29ubmVjdGlvbiYgcmlnaHQpCit7CisgICAgcmV0dXJuIGxlZnQucm9vdCgpIDwgcmlnaHQucm9v
dCgpOworfQorCiBjbGFzcyBOb2RlVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPE5vZGU+
OjpWaXNpdG9yIHsKIHB1YmxpYzoKICAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3Rv
cmUqLCBOb2RlKiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAg
IHsKLSAgICAgICAgaWYgKG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpIHsKLSAgICAgICAgICAg
IFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+ID4gbGlzdGVuZXJzOwotICAgICAgICAg
ICAgRXZlbnRMaXN0ZW5lckl0ZXJhdG9yIGl0ZXJhdG9yKG5vZGUpOwotICAgICAgICAgICAgd2hp
bGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gaXRlcmF0b3IubmV4dExpc3RlbmVyKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXItPnR5cGUoKSAhPSBFdmVudExpc3RlbmVyOjpK
U0V2ZW50TGlzdGVuZXJUeXBlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lciogdjhsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKj4obGlzdGVuZXIpOwotICAgICAgICAgICAgICAg
IGlmICghdjhsaXN0ZW5lci0+aGFzRXhpc3RpbmdMaXN0ZW5lck9iamVjdCgpKQotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKHY4
bGlzdGVuZXItPmV4aXN0aW5nTGlzdGVuZXJPYmplY3RQZXJzaXN0ZW50SGFuZGxlKCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFsaXN0ZW5lcnMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIHY4OjpWODo6QWRkSW1wbGljaXRSZWZlcmVuY2VzKHdyYXBwZXIsIGxpc3RlbmVy
cy5kYXRhKCksIGxpc3RlbmVycy5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChub2Rl
LT5oYXNFdmVudExpc3RlbmVycygpKQorICAgICAgICAgICAgYWRkSW1wbGljaXRSZWZlcmVuY2Vz
Rm9yTm9kZVdpdGhFdmVudExpc3RlbmVycyhub2RlLCB3cmFwcGVyKTsKIAotICAgICAgICBHcm91
cElkIGdyb3VwSWQgPSBjYWxjdWxhdGVHcm91cElkKG5vZGUpOwotICAgICAgICBpZiAoIWdyb3Vw
SWQpCisgICAgICAgIE5vZGUqIHJvb3QgPSByb290Rm9yR0Mobm9kZSk7CisgICAgICAgIGlmICgh
cm9vdCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9ncm91cGVyLmFwcGVuZChHcm91
cGVySXRlbShncm91cElkLCB3cmFwcGVyKSk7CisgICAgICAgIG1fY29ubmVjdGlvbnMuYXBwZW5k
KEltcGxpY2l0Q29ubmVjdGlvbihyb290LCB3cmFwcGVyKSk7CiAgICAgfQogCiAgICAgdm9pZCBh
cHBseUdyb3VwaW5nKCkKICAgICB7Ci0gICAgICAgIC8vIEdyb3VwIGJ5IHNvcnRpbmcgYnkgdGhl
IGdyb3VwIGlkLgotICAgICAgICBzdGQ6OnNvcnQobV9ncm91cGVyLmJlZ2luKCksIG1fZ3JvdXBl
ci5lbmQoKSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyb3VwZXIuc2l6
ZSgpOyApIHsKLSAgICAgICAgICAgIC8vIFNlZWsgdG8gdGhlIG5leHQga2V5IChvciB0aGUgZW5k
IG9mIHRoZSBsaXN0KS4KLSAgICAgICAgICAgIHNpemVfdCBuZXh0S2V5SW5kZXggPSBtX2dyb3Vw
ZXIuc2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGk7IGogPCBtX2dyb3VwZXIu
c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAobV9ncm91cGVyW2ldLmdyb3VwSWQo
KSAhPSBtX2dyb3VwZXJbal0uZ3JvdXBJZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRL
ZXlJbmRleCA9IGo7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQVNTRVJUKG5leHRLZXlJbmRleCA+IGkp
OworICAgICAgICBzdGQ6OnNvcnQobV9jb25uZWN0aW9ucy5iZWdpbigpLCBtX2Nvbm5lY3Rpb25z
LmVuZCgpKTsKKyAgICAgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBncm91
cDsKKyAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICB3aGlsZSAoaSA8IG1fY29ubmVjdGlv
bnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBOb2RlKiByb290ID0gbV9jb25uZWN0aW9uc1tpXS5y
b290KCk7CiAKLSAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBhIGdyb3VwIGlmIGl0
IGhhcyBtb3JlIHRoYW4gb25lIG9iamVjdC4gSWYgaXQgb25seQotICAgICAgICAgICAgLy8gaGFz
IG9uZSBvYmplY3QsIGl0IGhhcyBub3RoaW5nIGVsc2UgdGhhdCBuZWVkcyB0byBiZSBrZXB0IGFs
aXZlLgotICAgICAgICAgICAgaWYgKG5leHRLZXlJbmRleCAtIGkgPD0gMSkgewotICAgICAgICAg
ICAgICAgIGkgPSBuZXh0S2V5SW5kZXg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNpemVfdCByb290SW5kZXggPSBpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGdyb3Vw
OwotICAgICAgICAgICAgZ3JvdXAucmVzZXJ2ZUNhcGFjaXR5KG5leHRLZXlJbmRleCAtIGkpOwot
ICAgICAgICAgICAgZm9yICg7IGkgPCBuZXh0S2V5SW5kZXg7ICsraSkgewotICAgICAgICAgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciA9IG1fZ3JvdXBlcltpXS53cmFw
cGVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZ3JvdXAuYXBwZW5kKHdyYXBwZXIpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgIGdyb3VwLmFwcGVuZChtX2Nvbm5lY3Rpb25zW2kr
K10ud3JhcHBlcigpKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKGkgPCBtX2Nvbm5lY3Rpb25zLnNp
emUoKSAmJiByb290ID09IG1fY29ubmVjdGlvbnNbaV0ucm9vdCgpKTsKIAogICAgICAgICAgICAg
aWYgKGdyb3VwLnNpemUoKSA+IDEpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RH
cm91cCgmZ3JvdXBbMF0sIGdyb3VwLnNpemUoKSwgbV9ncm91cGVyW3Jvb3RJbmRleF0uY3JlYXRl
UmV0YWluZWRPYmplY3RJbmZvKCkpOworICAgICAgICAgICAgICAgIHY4OjpWODo6QWRkT2JqZWN0
R3JvdXAoZ3JvdXAuZGF0YSgpLCBncm91cC5zaXplKCksIG5ldyBSZXRhaW5lZERPTUluZm8ocm9v
dCkpOwogCi0gICAgICAgICAgICBBU1NFUlQoaSA9PSBuZXh0S2V5SW5kZXgpOworICAgICAgICAg
ICAgZ3JvdXAuc2hyaW5rKDApOwogICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdy
b3VwZXJMaXN0IG1fZ3JvdXBlcjsKKyAgICBWZWN0b3I8SW1wbGljaXRDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb25zOwogfTsKIAogLy8gQ3JlYXRlIG9iamVjdCBncm91cHMgZm9yIERPTSB0cmVlIG5v
ZGVzLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZwppbmRleCA5MWYwYzE3N2U0YTYwNWMzNjcwZDhhMGUwNmMzMmU1YzNj
OTcxYzY1Li44ZWY2M2NlZWZiMGI2ZmMzYWMxYjlmNjZhZTljNGFhODU0NzBhZmE3IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEwLTIwICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxpZnkgVjhHQ0NvbnRyb2xs
ZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIHNvbWUgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIHRoZSBnYXJiYWdlIGNvbGxl
Y3Rvci4KKworICAgICAgICAqIEJpbmRpbmdzL2djLWZvcmVzdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBCaW5kaW5ncy9nYy1taW5pLXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogQmluZGlu
Z3MvZ2MtdHJlZS5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0xNyAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdW1wIHVwIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9u
cyBvZiBodG1sNS1mdWxsLXJlbmRlciB0byA1Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169943</attachid>
            <date>2012-10-22 11:19:25 -0700</date>
            <delta_ts>2012-10-22 11:21:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99884-20121022111821.patch</filename>
            <type>text/plain</type>
            <size>12998</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmEyOGRlMDg2ZTgyMTIw
NTAyODBmMTliMGMwMDIyYTMyMjQ4YzNlOS4uNTM2OGEzMzQyNWJhYzcyZDAyMzc3Zjk5OGZkZTFi
ZjhjYzYxYTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIyICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50
YXJvIEhhcmEuCisKKyAgICAgICAgTm9kZVZpc2l0b3Igd2FzIHZhc3RseSBtb3JlIGNvbXBsaWNh
dGVkIHRoYW4gbmVjZXNzYXJ5LiBUaGlzIHBhdGNoCisgICAgICAgIHNpbXBsaWZpZXMgdGhlIGFw
cHJvYWNoIHNpZ25pZmljYW50bHkgYW5kIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9uCisgICAgICAg
IEJpbmRpbmdzL2djLW1pbmktdHJlZS5odG1sIGJ5IDIwJS4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdFZpc2l0b3I6
OnZpc2l0RE9NV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjphZGRJbXBsaWNpdFJlZmVyZW5j
ZXNGb3JOb2RlV2l0aEV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RGb3JH
Qyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlVmlzaXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVWaXNpdG9yOjphcHBseUdyb3VwaW5nKToKKyAgICAgICAgKE5v
ZGVWaXNpdG9yKToKKwogMjAxMi0xMC0xNiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCB0aW1lbGluZSBpbnN0cnVtZW50
YXRpb24gZm9yIHNjcm9sbGluZyBvZiBhIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggOTAwN2RhYjk3ZGU3ZWQzMDAzNWM5YTVkODAx
ZGUwMzliMTI2N2FlMy4uOTVkOTFlMjdmZWFjMjI2N2Q2MDgwZjgzMmFlMTJmZTJjYWI0M2UwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAt
MTAxLDE5OSArMTAxLDEwOCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotLy8gSW1wbGVtZW50cyB2
ODo6UmV0YWluZWRPYmplY3RJbmZvLgotY2xhc3MgVW5zcGVjaWZpZWRHcm91cCA6IHB1YmxpYyBS
ZXRhaW5lZE9iamVjdEluZm8geworY2xhc3MgT2JqZWN0VmlzaXRvciA6IHB1YmxpYyBET01XcmFw
cGVyTWFwPHZvaWQ+OjpWaXNpdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBVbnNwZWNpZmll
ZEdyb3VwKHZvaWQqIG9iamVjdCkKLSAgICAgICAgOiBtX29iamVjdChvYmplY3QpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9vYmplY3QpOwotICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
RGlzcG9zZSgpIHsgZGVsZXRlIHRoaXM7IH0KLSAgCi0gICAgdmlydHVhbCBib29sIElzRXF1aXZh
bGVudCh2ODo6UmV0YWluZWRPYmplY3RJbmZvKiBvdGhlcikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChvdGhlcik7Ci0gICAgICAgIHJldHVybiBvdGhlciA9PSB0aGlzIHx8IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlJldGFpbmVkT2JqZWN0SW5mbyo+KG90aGVyKS0+R2V0RXF1aXZhbGVuY2VDbGFzcygp
ID09IHRoaXMtPkdldEVxdWl2YWxlbmNlQ2xhc3MoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGlu
dHB0cl90IEdldEhhc2goKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB0ckhhc2g8dm9pZCo+Ojpo
YXNoKG1fb2JqZWN0KTsKLSAgICB9Ci0gICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBHZXRM
YWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gIk9iamVjdCBncm91cCI7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCBpbnRwdHJfdCBHZXRFcXVpdmFsZW5jZUNsYXNzKCkKKyAgICB2b2lkIHZpc2l0
RE9NV3JhcHBlcihET01EYXRhU3RvcmUqIHN0b3JlLCB2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4obV9vYmplY3QpOworICAgICAgICBWOERPTVdyYXBwZXI6OmRvbVdy
YXBwZXJUeXBlKHdyYXBwZXIpLT52aXNpdERPTVdyYXBwZXIoc3RvcmUsIG9iamVjdCwgd3JhcHBl
cik7CiAgICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQqIG1fb2JqZWN0OwogfTsKIAotY2xhc3Mg
R3JvdXBJZCB7Ci1wdWJsaWM6Ci0gICAgR3JvdXBJZCgpIDogbV90eXBlKE51bGxUeXBlKSwgbV9n
cm91cElkKDApIHt9Ci0gICAgR3JvdXBJZChOb2RlKiBub2RlKSA6IG1fdHlwZShOb2RlVHlwZSks
IG1fbm9kZShub2RlKSB7fQotICAgIEdyb3VwSWQodm9pZCogb3RoZXIpIDogbV90eXBlKE90aGVy
VHlwZSksIG1fb3RoZXIob3RoZXIpIHt9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gTnVsbFR5cGU7IH0KLSAgICB1aW50cHRyX3QgZ3JvdXBJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQotICAgIFJldGFpbmVkT2JqZWN0SW5mbyogY3JlYXRlUmV0
YWluZWRPYmplY3RJbmZvKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7
Ci0gICAgICAgIGNhc2UgTnVsbFR5cGU6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
Y2FzZSBOb2RlVHlwZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgUmV0YWluZWRET01JbmZvKG1f
bm9kZSk7Ci0gICAgICAgIGNhc2UgT3RoZXJUeXBlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBV
bnNwZWNpZmllZEdyb3VwKG1fb3RoZXIpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIH0KK3N0YXRpYyB2b2lkIGFkZEltcGxpY2l0UmVmZXJlbmNlc0Zv
ck5vZGVXaXRoRXZlbnRMaXN0ZW5lcnMoTm9kZSogbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlcikKK3sKKyAgICBBU1NFUlQobm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSk7
CisKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGxpc3RlbmVyczsKKwor
ICAgIEV2ZW50TGlzdGVuZXJJdGVyYXRvciBpdGVyYXRvcihub2RlKTsKKyAgICB3aGlsZSAoRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkgeworICAgICAg
ICBpZiAobGlzdGVuZXItPnR5cGUoKSAhPSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJU
eXBlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFY4QWJzdHJhY3RFdmVudExpc3Rl
bmVyKiB2OGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqPihs
aXN0ZW5lcik7CisgICAgICAgIGlmICghdjhsaXN0ZW5lci0+aGFzRXhpc3RpbmdMaXN0ZW5lck9i
amVjdCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQo
djhsaXN0ZW5lci0+ZXhpc3RpbmdMaXN0ZW5lck9iamVjdFBlcnNpc3RlbnRIYW5kbGUoKSk7CiAg
ICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBOdWxsVHlwZSwK
LSAgICAgICAgTm9kZVR5cGUsCi0gICAgICAgIE90aGVyVHlwZQotICAgIH07Ci0gICAgVHlwZSBt
X3R5cGU7Ci0gICAgdW5pb24gewotICAgICAgICB1aW50cHRyX3QgbV9ncm91cElkOwotICAgICAg
ICBOb2RlKiBtX25vZGU7Ci0gICAgICAgIHZvaWQqIG1fb3RoZXI7Ci0gICAgfTsKLX07Ci0KLWNs
YXNzIEdyb3VwZXJJdGVtIHsKLXB1YmxpYzoKLSAgICBHcm91cGVySXRlbShHcm91cElkIGdyb3Vw
SWQsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIDogbV9ncm91cElkKGdyb3Vw
SWQpLCBtX3dyYXBwZXIod3JhcHBlcikge30KLSAgICB1aW50cHRyX3QgZ3JvdXBJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JvdXBJZC5ncm91cElkKCk7IH0KLSAgICBSZXRhaW5lZE9iamVjdEluZm8q
IGNyZWF0ZVJldGFpbmVkT2JqZWN0SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZC5jcmVh
dGVSZXRhaW5lZE9iamVjdEluZm8oKTsgfQotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotcHJpdmF0ZToKLSAgICBH
cm91cElkIG1fZ3JvdXBJZDsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX3dyYXBw
ZXI7Ci19OworICAgIGlmIChsaXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAK
LWJvb2wgb3BlcmF0b3I8KGNvbnN0IEdyb3VwZXJJdGVtJiBhLCBjb25zdCBHcm91cGVySXRlbSYg
YikKLXsKLSAgICByZXR1cm4gYS5ncm91cElkKCkgPCBiLmdyb3VwSWQoKTsKKyAgICB2ODo6Vjg6
OkFkZEltcGxpY2l0UmVmZXJlbmNlcyh3cmFwcGVyLCBsaXN0ZW5lcnMuZGF0YSgpLCBsaXN0ZW5l
cnMuc2l6ZSgpKTsKIH0KIAotdHlwZWRlZiBWZWN0b3I8R3JvdXBlckl0ZW0+IEdyb3VwZXJMaXN0
OwotCi0vLyBJZiB0aGUgbm9kZSBpcyBpbiBkb2N1bWVudCwgcHV0IGl0IGluIHRoZSBvd25lckRv
Y3VtZW50J3Mgb2JqZWN0IGdyb3VwLgotLy8KLS8vIElmIGFuIGltYWdlIGVsZW1lbnQgd2FzIGNy
ZWF0ZWQgYnkgSmF2YVNjcmlwdCAibmV3IEltYWdlIiwKLS8vIGl0IGlzIG5vdCBpbiBhIGRvY3Vt
ZW50LiBIb3dldmVyLCBpZiB0aGUgbG9hZCBldmVudCBoYXMgbm90Ci0vLyBiZWVuIGZpcmVkIChz
dGlsbCBvbmxvYWRpbmcpLCBpdCBpcyB0cmVhdGVkIGFzIGluIHRoZSBkb2N1bWVudC4KLS8vCi0v
LyBPdGhlcndpc2UsIHRoZSBub2RlIGlzIHB1dCBpbiBhbiBvYmplY3QgZ3JvdXAgaWRlbnRpZmll
ZCBieSB0aGUgcm9vdAotLy8gZWxlbWVudCBvZiB0aGUgdHJlZSB0byB3aGljaCBpdCBiZWxvbmdz
Lgotc3RhdGljIEdyb3VwSWQgY2FsY3VsYXRlR3JvdXBJZChOb2RlKiBub2RlKQorc3RhdGljIE5v
ZGUqIHJvb3RGb3JHQyhOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkg
fHwgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0PEhU
TUxJbWFnZUVsZW1lbnQqPihub2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKQotICAgICAgICBy
ZXR1cm4gR3JvdXBJZChub2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmRv
Y3VtZW50KCk7CiAKLSAgICBOb2RlKiByb290ID0gbm9kZTsKICAgICBpZiAobm9kZS0+aXNBdHRy
aWJ1dGVOb2RlKCkpIHsKLSAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PEF0dHIqPihub2RlKS0+
b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUgaGFzIG5vIGVsZW1l
bnQsIG5vIG5lZWQgdG8gcHV0IGl0IGluIHRoZSBncm91cCwKLSAgICAgICAgLy8gYmVjYXVzZSBp
dCdsbCBhbHdheXMgYmUgYSBncm91cCBvZiAxLgotICAgICAgICBpZiAoIXJvb3QpCi0gICAgICAg
ICAgICByZXR1cm4gR3JvdXBJZCgpOworICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8QXR0cio+
KG5vZGUpLT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSByb290LT5wYXJlbnRP
ckhvc3ROb2RlKCkpCi0gICAgICAgIHJvb3QgPSBwYXJlbnQ7CiAKLSAgICByZXR1cm4gR3JvdXBJ
ZChyb290KTsKKyAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpKQorICAgICAgICBub2RlID0gcGFyZW50OworCisgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWNs
YXNzIE9iamVjdFZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7
CitjbGFzcyBJbXBsaWNpdENvbm5lY3Rpb24gewogcHVibGljOgotICAgIHZvaWQgdmlzaXRET01X
cmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICBJbXBsaWNpdENvbm5lY3Rpb24oTm9kZSogcm9vdCwg
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyKQorICAgICAgICA6IG1fcm9vdChyb290
KQorICAgICAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQogICAgIHsKLSAgICAgICAgVjhET01XcmFw
cGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dmlzaXRET01XcmFwcGVyKHN0b3JlLCBvYmpl
Y3QsIHdyYXBwZXIpOwogICAgIH0KKworICAgIE5vZGUqIHJvb3QoKSBjb25zdCB7IHJldHVybiBt
X3Jvb3Q7IH0KKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIoKSBjb25zdCB7
IHJldHVybiBtX3dyYXBwZXI7IH0KKworcHVibGljOgorICAgIE5vZGUqIG1fcm9vdDsKKyAgICB2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG1fd3JhcHBlcjsKIH07CiAKK2Jvb2wgb3BlcmF0b3I8
KGNvbnN0IEltcGxpY2l0Q29ubmVjdGlvbiYgbGVmdCwgY29uc3QgSW1wbGljaXRDb25uZWN0aW9u
JiByaWdodCkKK3sKKyAgICByZXR1cm4gbGVmdC5yb290KCkgPCByaWdodC5yb290KCk7Cit9CisK
IGNsYXNzIE5vZGVWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3Ig
ewogcHVibGljOgogICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIE5vZGUq
IG5vZGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewotICAgICAg
ICBpZiAobm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPHY4
OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBsaXN0ZW5lcnM7Ci0gICAgICAgICAgICBFdmVudExp
c3RlbmVySXRlcmF0b3IgaXRlcmF0b3Iobm9kZSk7Ci0gICAgICAgICAgICB3aGlsZSAoRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChsaXN0ZW5lci0+dHlwZSgpICE9IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0
ZW5lclR5cGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKiB2OGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgaWYgKCF2OGxp
c3RlbmVyLT5oYXNFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGxpc3RlbmVycy5hcHBlbmQodjhsaXN0ZW5lci0+
ZXhpc3RpbmdMaXN0ZW5lck9iamVjdFBlcnNpc3RlbnRIYW5kbGUoKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoIWxpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
djg6OlY4OjpBZGRJbXBsaWNpdFJlZmVyZW5jZXMod3JhcHBlciwgbGlzdGVuZXJzLmRhdGEoKSwg
bGlzdGVuZXJzLnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmhhc0V2ZW50
TGlzdGVuZXJzKCkpCisgICAgICAgICAgICBhZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0
aEV2ZW50TGlzdGVuZXJzKG5vZGUsIHdyYXBwZXIpOwogCi0gICAgICAgIEdyb3VwSWQgZ3JvdXBJ
ZCA9IGNhbGN1bGF0ZUdyb3VwSWQobm9kZSk7Ci0gICAgICAgIGlmICghZ3JvdXBJZCkKKyAgICAg
ICAgTm9kZSogcm9vdCA9IHJvb3RGb3JHQyhub2RlKTsKKyAgICAgICAgaWYgKCFyb290KQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdy
b3VwSWQsIHdyYXBwZXIpKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoSW1wbGljaXRD
b25uZWN0aW9uKHJvb3QsIHdyYXBwZXIpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5R3JvdXBp
bmcoKQogICAgIHsKLSAgICAgICAgLy8gR3JvdXAgYnkgc29ydGluZyBieSB0aGUgZ3JvdXAgaWQu
Ci0gICAgICAgIHN0ZDo6c29ydChtX2dyb3VwZXIuYmVnaW4oKSwgbV9ncm91cGVyLmVuZCgpKTsK
LQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JvdXBlci5zaXplKCk7ICkgewot
ICAgICAgICAgICAgLy8gU2VlayB0byB0aGUgbmV4dCBrZXkgKG9yIHRoZSBlbmQgb2YgdGhlIGxp
c3QpLgotICAgICAgICAgICAgc2l6ZV90IG5leHRLZXlJbmRleCA9IG1fZ3JvdXBlci5zaXplKCk7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaTsgaiA8IG1fZ3JvdXBlci5zaXplKCk7ICsr
aikgewotICAgICAgICAgICAgICAgIGlmIChtX2dyb3VwZXJbaV0uZ3JvdXBJZCgpICE9IG1fZ3Jv
dXBlcltqXS5ncm91cElkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dEtleUluZGV4ID0g
ajsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBBU1NFUlQobmV4dEtleUluZGV4ID4gaSk7CisgICAgICAg
IHN0ZDo6c29ydChtX2Nvbm5lY3Rpb25zLmJlZ2luKCksIG1fY29ubmVjdGlvbnMuZW5kKCkpOwor
ICAgICAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGdyb3VwOworICAgICAg
ICBzaXplX3QgaSA9IDA7CisgICAgICAgIHdoaWxlIChpIDwgbV9jb25uZWN0aW9ucy5zaXplKCkp
IHsKKyAgICAgICAgICAgIE5vZGUqIHJvb3QgPSBtX2Nvbm5lY3Rpb25zW2ldLnJvb3QoKTsKIAot
ICAgICAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IGEgZ3JvdXAgaWYgaXQgaGFzIG1vcmUg
dGhhbiBvbmUgb2JqZWN0LiBJZiBpdCBvbmx5Ci0gICAgICAgICAgICAvLyBoYXMgb25lIG9iamVj
dCwgaXQgaGFzIG5vdGhpbmcgZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGtlcHQgYWxpdmUuCi0gICAg
ICAgICAgICBpZiAobmV4dEtleUluZGV4IC0gaSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAgaSA9
IG5leHRLZXlJbmRleDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgc2l6ZV90IHJvb3RJbmRleCA9IGk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+ID4gZ3JvdXA7Ci0gICAgICAg
ICAgICBncm91cC5yZXNlcnZlQ2FwYWNpdHkobmV4dEtleUluZGV4IC0gaSk7Ci0gICAgICAgICAg
ICBmb3IgKDsgaSA8IG5leHRLZXlJbmRleDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyID0gbV9ncm91cGVyW2ldLndyYXBwZXIoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAg
ICBncm91cC5hcHBlbmQod3JhcHBlcik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgZ3JvdXAuYXBwZW5kKG1fY29ubmVjdGlvbnNbaSsrXS53cmFwcGVy
KCkpOworICAgICAgICAgICAgfSB3aGlsZSAoaSA8IG1fY29ubmVjdGlvbnMuc2l6ZSgpICYmIHJv
b3QgPT0gbV9jb25uZWN0aW9uc1tpXS5yb290KCkpOwogCiAgICAgICAgICAgICBpZiAoZ3JvdXAu
c2l6ZSgpID4gMSkKLSAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZncm91
cFswXSwgZ3JvdXAuc2l6ZSgpLCBtX2dyb3VwZXJbcm9vdEluZGV4XS5jcmVhdGVSZXRhaW5lZE9i
amVjdEluZm8oKSk7CisgICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cChncm91
cC5kYXRhKCksIGdyb3VwLnNpemUoKSwgbmV3IFJldGFpbmVkRE9NSW5mbyhyb290KSk7CiAKLSAg
ICAgICAgICAgIEFTU0VSVChpID09IG5leHRLZXlJbmRleCk7CisgICAgICAgICAgICBncm91cC5z
aHJpbmsoMCk7CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR3JvdXBlckxpc3Qg
bV9ncm91cGVyOworICAgIFZlY3RvcjxJbXBsaWNpdENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbnM7
CiB9OwogCiAvLyBDcmVhdGUgb2JqZWN0IGdyb3VwcyBmb3IgRE9NIHRyZWUgbm9kZXMuCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLWZvcmVzdC5odG1sIGIvUGVyZm9y
bWFuY2VUZXN0cy9CaW5kaW5ncy9nYy1mb3Jlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMThmZTE1Y2Yw
YjEzYjUwZWM5YjhjOTczNWUyM2U0Y2I3MzMzYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9CaW5kaW5ncy9nYy1mb3Jlc3QuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVUaW1lKHtydW46IGZ1
bmN0aW9uKCkgeworICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyBpKyspCisgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICB9KSgpOworICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtbWluaS10
cmVlLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLW1pbmktdHJlZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIwMzA3NjkxNTUzMjQ0ZmJiNzZlYTUyYzZkYzRlYWUzNDRkMzIxMDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLW1pbmktdHJlZS5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5u
ZXIubWVhc3VyZVRpbWUoe3J1bjogZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwMDAwMDsgaSsrKQorICAgICAgICAgICAgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpKTsKKyAgICB9KSgpOworICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3Mv
Z2MtdHJlZS5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9nYy10cmVlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDk5NjI4OGNmNDc3NGZkNWViMjI1YWU0ODc2ZGM2ZDc4NGQ1OGY5YgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJlZS5odG1sCkBAIC0w
LDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIubWVh
c3VyZVRpbWUoe3J1bjogZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykKKyAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIH0pKCk7CisgICAgUGVyZlRlc3RS
dW5uZXIuZ2MoKTsKK319KTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA5
MWYwYzE3N2U0YTYwNWMzNjcwZDhhMGUwNmMzMmU1YzNjOTcxYzY1Li41NzBlNDlmNjc1OTY5ZmY4
ZDVkNDgzYTdhYmEzYTMyODVkMzU1YTIzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDEyLTEwLTIyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1Y4XSBWYXN0bHkgc2ltcGxpZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgQWRkcyBzb21lIHBlcmZvcm1h
bmNlIHRlc3RzIGZvciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisKKyAgICAgICAgKiBCaW5kaW5n
cy9nYy1mb3Jlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogQmluZGluZ3MvZ2MtbWluaS10cmVl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIEJpbmRpbmdzL2djLXRyZWUuaHRtbDogQWRkZWQuCisK
IDIwMTItMTAtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QnVtcCB1cCB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgb2YgaHRtbDUtZnVsbC1yZW5kZXIgdG8g
NQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169944</attachid>
            <date>2012-10-22 11:21:33 -0700</date>
            <delta_ts>2012-10-22 11:50:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99884-20121022112029.patch</filename>
            <type>text/plain</type>
            <size>13040</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmEyOGRlMDg2ZTgyMTIw
NTAyODBmMTliMGMwMDIyYTMyMjQ4YzNlOS4uZTZmM2VmMzFkMjU5MGNjNzIzZmVjNWFiYjliNmNm
YjYxZDNmYmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEwLTIyICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2ltcGxp
ZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50
YXJvIEhhcmEuCisKKyAgICAgICAgTm9kZVZpc2l0b3Igd2FzIHZhc3RseSBtb3JlIGNvbXBsaWNh
dGVkIHRoYW4gbmVjZXNzYXJ5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZSBwZXJmb3Jt
YW5jZSBvbiB0aGVzZSBuZXcgZ2MgYmVuY2htYXJrczoKKworICAgICAgICBnYy1mb3Jlc3Q6IDEu
MTQlIGJldHRlcgorICAgICAgICBnYy1taW5pLXRyZWU6IDUuMDklIGJldHRlcgorICAgICAgICBn
Yy10cmVlOiA0LjYwJSBiZXR0ZXIKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdFZpc2l0b3I6OnZpc2l0RE9NV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjphZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0aEV2
ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RGb3JHQyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlVmlzaXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVWaXNpdG9yOjphcHBseUdyb3VwaW5nKToKKyAgICAgICAgKE5vZGVWaXNpdG9yKToKKwog
MjAxMi0xMC0xNiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGFkZCB0aW1lbGluZSBpbnN0cnVtZW50YXRpb24gZm9yIHNjcm9s
bGluZyBvZiBhIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJv
bGxlci5jcHAKaW5kZXggOTAwN2RhYjk3ZGU3ZWQzMDAzNWM5YTVkODAxZGUwMzliMTI2N2FlMy4u
OTVkOTFlMjdmZWFjMjI2N2Q2MDgwZjgzMmFlMTJmZTJjYWI0M2UwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtMTAxLDE5OSArMTAxLDEw
OCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotLy8gSW1wbGVtZW50cyB2ODo6UmV0YWluZWRPYmpl
Y3RJbmZvLgotY2xhc3MgVW5zcGVjaWZpZWRHcm91cCA6IHB1YmxpYyBSZXRhaW5lZE9iamVjdElu
Zm8geworY2xhc3MgT2JqZWN0VmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPHZvaWQ+OjpW
aXNpdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBVbnNwZWNpZmllZEdyb3VwKHZvaWQqIG9i
amVjdCkKLSAgICAgICAgOiBtX29iamVjdChvYmplY3QpCi0gICAgewotICAgICAgICBBU1NFUlQo
bV9vYmplY3QpOwotICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgRGlzcG9zZSgpIHsgZGVs
ZXRlIHRoaXM7IH0KLSAgCi0gICAgdmlydHVhbCBib29sIElzRXF1aXZhbGVudCh2ODo6UmV0YWlu
ZWRPYmplY3RJbmZvKiBvdGhlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChvdGhlcik7Ci0gICAg
ICAgIHJldHVybiBvdGhlciA9PSB0aGlzIHx8IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJldGFpbmVk
T2JqZWN0SW5mbyo+KG90aGVyKS0+R2V0RXF1aXZhbGVuY2VDbGFzcygpID09IHRoaXMtPkdldEVx
dWl2YWxlbmNlQ2xhc3MoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGludHB0cl90IEdldEhhc2go
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fb2JqZWN0KTsK
LSAgICB9Ci0gICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBHZXRMYWJlbCgpCi0gICAgewot
ICAgICAgICByZXR1cm4gIk9iamVjdCBncm91cCI7Ci0gICAgfQotCi0gICAgdmlydHVhbCBpbnRw
dHJfdCBHZXRFcXVpdmFsZW5jZUNsYXNzKCkKKyAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01E
YXRhU3RvcmUqIHN0b3JlLCB2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIpCiAgICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4obV9vYmplY3QpOworICAgICAgICBWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHdyYXBw
ZXIpLT52aXNpdERPTVdyYXBwZXIoc3RvcmUsIG9iamVjdCwgd3JhcHBlcik7CiAgICAgfQotCi1w
cml2YXRlOgotICAgIHZvaWQqIG1fb2JqZWN0OwogfTsKIAotY2xhc3MgR3JvdXBJZCB7Ci1wdWJs
aWM6Ci0gICAgR3JvdXBJZCgpIDogbV90eXBlKE51bGxUeXBlKSwgbV9ncm91cElkKDApIHt9Ci0g
ICAgR3JvdXBJZChOb2RlKiBub2RlKSA6IG1fdHlwZShOb2RlVHlwZSksIG1fbm9kZShub2RlKSB7
fQotICAgIEdyb3VwSWQodm9pZCogb3RoZXIpIDogbV90eXBlKE90aGVyVHlwZSksIG1fb3RoZXIo
b3RoZXIpIHt9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
TnVsbFR5cGU7IH0KLSAgICB1aW50cHRyX3QgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3Jv
dXBJZDsgfQotICAgIFJldGFpbmVkT2JqZWN0SW5mbyogY3JlYXRlUmV0YWluZWRPYmplY3RJbmZv
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2Ug
TnVsbFR5cGU6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY2FzZSBOb2RlVHlwZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgUmV0YWluZWRET01JbmZvKG1fbm9kZSk7Ci0gICAgICAg
IGNhc2UgT3RoZXJUeXBlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBVbnNwZWNpZmllZEdyb3Vw
KG1fb3RoZXIpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIH0KK3N0YXRpYyB2b2lkIGFkZEltcGxpY2l0UmVmZXJlbmNlc0Zvck5vZGVXaXRoRXZlbnRM
aXN0ZW5lcnMoTm9kZSogbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikK
K3sKKyAgICBBU1NFUlQobm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSk7CisKKyAgICBWZWN0b3I8
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGxpc3RlbmVyczsKKworICAgIEV2ZW50TGlzdGVu
ZXJJdGVyYXRvciBpdGVyYXRvcihub2RlKTsKKyAgICB3aGlsZSAoRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkgeworICAgICAgICBpZiAobGlzdGVuZXIt
PnR5cGUoKSAhPSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKiB2OGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7CisgICAg
ICAgIGlmICghdjhsaXN0ZW5lci0+aGFzRXhpc3RpbmdMaXN0ZW5lck9iamVjdCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQodjhsaXN0ZW5lci0+ZXhp
c3RpbmdMaXN0ZW5lck9iamVjdFBlcnNpc3RlbnRIYW5kbGUoKSk7CiAgICAgfQotICAgIAotcHJp
dmF0ZToKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBOdWxsVHlwZSwKLSAgICAgICAgTm9kZVR5
cGUsCi0gICAgICAgIE90aGVyVHlwZQotICAgIH07Ci0gICAgVHlwZSBtX3R5cGU7Ci0gICAgdW5p
b24gewotICAgICAgICB1aW50cHRyX3QgbV9ncm91cElkOwotICAgICAgICBOb2RlKiBtX25vZGU7
Ci0gICAgICAgIHZvaWQqIG1fb3RoZXI7Ci0gICAgfTsKLX07Ci0KLWNsYXNzIEdyb3VwZXJJdGVt
IHsKLXB1YmxpYzoKLSAgICBHcm91cGVySXRlbShHcm91cElkIGdyb3VwSWQsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIDogbV9ncm91cElkKGdyb3VwSWQpLCBtX3dyYXBwZXIo
d3JhcHBlcikge30KLSAgICB1aW50cHRyX3QgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3Jv
dXBJZC5ncm91cElkKCk7IH0KLSAgICBSZXRhaW5lZE9iamVjdEluZm8qIGNyZWF0ZVJldGFpbmVk
T2JqZWN0SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZC5jcmVhdGVSZXRhaW5lZE9iamVj
dEluZm8oKTsgfQotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIoKSBjb25z
dCB7IHJldHVybiBtX3dyYXBwZXI7IH0KIAotcHJpdmF0ZToKLSAgICBHcm91cElkIG1fZ3JvdXBJ
ZDsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX3dyYXBwZXI7Ci19OworICAgIGlm
IChsaXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAKLWJvb2wgb3BlcmF0b3I8
KGNvbnN0IEdyb3VwZXJJdGVtJiBhLCBjb25zdCBHcm91cGVySXRlbSYgYikKLXsKLSAgICByZXR1
cm4gYS5ncm91cElkKCkgPCBiLmdyb3VwSWQoKTsKKyAgICB2ODo6Vjg6OkFkZEltcGxpY2l0UmVm
ZXJlbmNlcyh3cmFwcGVyLCBsaXN0ZW5lcnMuZGF0YSgpLCBsaXN0ZW5lcnMuc2l6ZSgpKTsKIH0K
IAotdHlwZWRlZiBWZWN0b3I8R3JvdXBlckl0ZW0+IEdyb3VwZXJMaXN0OwotCi0vLyBJZiB0aGUg
bm9kZSBpcyBpbiBkb2N1bWVudCwgcHV0IGl0IGluIHRoZSBvd25lckRvY3VtZW50J3Mgb2JqZWN0
IGdyb3VwLgotLy8KLS8vIElmIGFuIGltYWdlIGVsZW1lbnQgd2FzIGNyZWF0ZWQgYnkgSmF2YVNj
cmlwdCAibmV3IEltYWdlIiwKLS8vIGl0IGlzIG5vdCBpbiBhIGRvY3VtZW50LiBIb3dldmVyLCBp
ZiB0aGUgbG9hZCBldmVudCBoYXMgbm90Ci0vLyBiZWVuIGZpcmVkIChzdGlsbCBvbmxvYWRpbmcp
LCBpdCBpcyB0cmVhdGVkIGFzIGluIHRoZSBkb2N1bWVudC4KLS8vCi0vLyBPdGhlcndpc2UsIHRo
ZSBub2RlIGlzIHB1dCBpbiBhbiBvYmplY3QgZ3JvdXAgaWRlbnRpZmllZCBieSB0aGUgcm9vdAot
Ly8gZWxlbWVudCBvZiB0aGUgdHJlZSB0byB3aGljaCBpdCBiZWxvbmdzLgotc3RhdGljIEdyb3Vw
SWQgY2FsY3VsYXRlR3JvdXBJZChOb2RlKiBub2RlKQorc3RhdGljIE5vZGUqIHJvb3RGb3JHQyhO
b2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkgfHwgKG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjppbWdUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQq
Pihub2RlKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpKQotICAgICAgICByZXR1cm4gR3JvdXBJZChu
b2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmRvY3VtZW50KCk7CiAKLSAg
ICBOb2RlKiByb290ID0gbm9kZTsKICAgICBpZiAobm9kZS0+aXNBdHRyaWJ1dGVOb2RlKCkpIHsK
LSAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PEF0dHIqPihub2RlKS0+b3duZXJFbGVtZW50KCk7
Ci0gICAgICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUgaGFzIG5vIGVsZW1lbnQsIG5vIG5lZWQgdG8g
cHV0IGl0IGluIHRoZSBncm91cCwKLSAgICAgICAgLy8gYmVjYXVzZSBpdCdsbCBhbHdheXMgYmUg
YSBncm91cCBvZiAxLgotICAgICAgICBpZiAoIXJvb3QpCi0gICAgICAgICAgICByZXR1cm4gR3Jv
dXBJZCgpOworICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8QXR0cio+KG5vZGUpLT5vd25lckVs
ZW1lbnQoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQotICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSByb290LT5wYXJlbnRPckhvc3ROb2RlKCkpCi0g
ICAgICAgIHJvb3QgPSBwYXJlbnQ7CiAKLSAgICByZXR1cm4gR3JvdXBJZChyb290KTsKKyAgICB3
aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICBu
b2RlID0gcGFyZW50OworCisgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWNsYXNzIE9iamVjdFZpc2l0
b3IgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CitjbGFzcyBJbXBsaWNp
dENvbm5lY3Rpb24gewogcHVibGljOgotICAgIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFT
dG9yZSogc3RvcmUsIHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlcikKKyAgICBJbXBsaWNpdENvbm5lY3Rpb24oTm9kZSogcm9vdCwgdjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiB3cmFwcGVyKQorICAgICAgICA6IG1fcm9vdChyb290KQorICAgICAgICAsIG1f
d3JhcHBlcih3cmFwcGVyKQogICAgIHsKLSAgICAgICAgVjhET01XcmFwcGVyOjpkb21XcmFwcGVy
VHlwZSh3cmFwcGVyKS0+dmlzaXRET01XcmFwcGVyKHN0b3JlLCBvYmplY3QsIHdyYXBwZXIpOwog
ICAgIH0KKworICAgIE5vZGUqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICB2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBw
ZXI7IH0KKworcHVibGljOgorICAgIE5vZGUqIG1fcm9vdDsKKyAgICB2ODo6UGVyc2lzdGVudDx2
ODo6VmFsdWU+IG1fd3JhcHBlcjsKIH07CiAKK2Jvb2wgb3BlcmF0b3I8KGNvbnN0IEltcGxpY2l0
Q29ubmVjdGlvbiYgbGVmdCwgY29uc3QgSW1wbGljaXRDb25uZWN0aW9uJiByaWdodCkKK3sKKyAg
ICByZXR1cm4gbGVmdC5yb290KCkgPCByaWdodC5yb290KCk7Cit9CisKIGNsYXNzIE5vZGVWaXNp
dG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IgewogcHVibGljOgogICAg
IHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIE5vZGUqIG5vZGUsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewotICAgICAgICBpZiAobm9kZS0+aGFz
RXZlbnRMaXN0ZW5lcnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4
OjpWYWx1ZT4gPiBsaXN0ZW5lcnM7Ci0gICAgICAgICAgICBFdmVudExpc3RlbmVySXRlcmF0b3Ig
aXRlcmF0b3Iobm9kZSk7Ci0gICAgICAgICAgICB3aGlsZSAoRXZlbnRMaXN0ZW5lciogbGlzdGVu
ZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkgewotICAgICAgICAgICAgICAgIGlmIChsaXN0
ZW5lci0+dHlwZSgpICE9IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIFY4QWJzdHJhY3RFdmVu
dExpc3RlbmVyKiB2OGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIqPihsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgaWYgKCF2OGxpc3RlbmVyLT5oYXNFeGlz
dGluZ0xpc3RlbmVyT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIGxpc3RlbmVycy5hcHBlbmQodjhsaXN0ZW5lci0+ZXhpc3RpbmdMaXN0ZW5l
ck9iamVjdFBlcnNpc3RlbnRIYW5kbGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoIWxpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRJbXBs
aWNpdFJlZmVyZW5jZXMod3JhcHBlciwgbGlzdGVuZXJzLmRhdGEoKSwgbGlzdGVuZXJzLnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCisg
ICAgICAgICAgICBhZGRJbXBsaWNpdFJlZmVyZW5jZXNGb3JOb2RlV2l0aEV2ZW50TGlzdGVuZXJz
KG5vZGUsIHdyYXBwZXIpOwogCi0gICAgICAgIEdyb3VwSWQgZ3JvdXBJZCA9IGNhbGN1bGF0ZUdy
b3VwSWQobm9kZSk7Ci0gICAgICAgIGlmICghZ3JvdXBJZCkKKyAgICAgICAgTm9kZSogcm9vdCA9
IHJvb3RGb3JHQyhub2RlKTsKKyAgICAgICAgaWYgKCFyb290KQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX2dyb3VwZXIuYXBwZW5kKEdyb3VwZXJJdGVtKGdyb3VwSWQsIHdyYXBwZXIp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hcHBlbmQoSW1wbGljaXRDb25uZWN0aW9uKHJvb3Qs
IHdyYXBwZXIpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5R3JvdXBpbmcoKQogICAgIHsKLSAg
ICAgICAgLy8gR3JvdXAgYnkgc29ydGluZyBieSB0aGUgZ3JvdXAgaWQuCi0gICAgICAgIHN0ZDo6
c29ydChtX2dyb3VwZXIuYmVnaW4oKSwgbV9ncm91cGVyLmVuZCgpKTsKLQotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZ3JvdXBlci5zaXplKCk7ICkgewotICAgICAgICAgICAgLy8g
U2VlayB0byB0aGUgbmV4dCBrZXkgKG9yIHRoZSBlbmQgb2YgdGhlIGxpc3QpLgotICAgICAgICAg
ICAgc2l6ZV90IG5leHRLZXlJbmRleCA9IG1fZ3JvdXBlci5zaXplKCk7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gaTsgaiA8IG1fZ3JvdXBlci5zaXplKCk7ICsraikgewotICAgICAgICAg
ICAgICAgIGlmIChtX2dyb3VwZXJbaV0uZ3JvdXBJZCgpICE9IG1fZ3JvdXBlcltqXS5ncm91cElk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dEtleUluZGV4ID0gajsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBBU1NFUlQobmV4dEtleUluZGV4ID4gaSk7CisgICAgICAgIHN0ZDo6c29ydChtX2Nv
bm5lY3Rpb25zLmJlZ2luKCksIG1fY29ubmVjdGlvbnMuZW5kKCkpOworICAgICAgICBWZWN0b3I8
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+IGdyb3VwOworICAgICAgICBzaXplX3QgaSA9IDA7
CisgICAgICAgIHdoaWxlIChpIDwgbV9jb25uZWN0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgICAg
IE5vZGUqIHJvb3QgPSBtX2Nvbm5lY3Rpb25zW2ldLnJvb3QoKTsKIAotICAgICAgICAgICAgLy8g
V2Ugb25seSBjYXJlIGFib3V0IGEgZ3JvdXAgaWYgaXQgaGFzIG1vcmUgdGhhbiBvbmUgb2JqZWN0
LiBJZiBpdCBvbmx5Ci0gICAgICAgICAgICAvLyBoYXMgb25lIG9iamVjdCwgaXQgaGFzIG5vdGhp
bmcgZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGtlcHQgYWxpdmUuCi0gICAgICAgICAgICBpZiAobmV4
dEtleUluZGV4IC0gaSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAgaSA9IG5leHRLZXlJbmRleDsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
c2l6ZV90IHJvb3RJbmRleCA9IGk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZlY3Rvcjx2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+ID4gZ3JvdXA7Ci0gICAgICAgICAgICBncm91cC5yZXNl
cnZlQ2FwYWNpdHkobmV4dEtleUluZGV4IC0gaSk7Ci0gICAgICAgICAgICBmb3IgKDsgaSA8IG5l
eHRLZXlJbmRleDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZh
bHVlPiB3cmFwcGVyID0gbV9ncm91cGVyW2ldLndyYXBwZXIoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBncm91cC5hcHBlbmQo
d3JhcHBlcik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAg
ICAgZ3JvdXAuYXBwZW5kKG1fY29ubmVjdGlvbnNbaSsrXS53cmFwcGVyKCkpOworICAgICAgICAg
ICAgfSB3aGlsZSAoaSA8IG1fY29ubmVjdGlvbnMuc2l6ZSgpICYmIHJvb3QgPT0gbV9jb25uZWN0
aW9uc1tpXS5yb290KCkpOwogCiAgICAgICAgICAgICBpZiAoZ3JvdXAuc2l6ZSgpID4gMSkKLSAg
ICAgICAgICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZncm91cFswXSwgZ3JvdXAuc2l6
ZSgpLCBtX2dyb3VwZXJbcm9vdEluZGV4XS5jcmVhdGVSZXRhaW5lZE9iamVjdEluZm8oKSk7Cisg
ICAgICAgICAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cChncm91cC5kYXRhKCksIGdyb3Vw
LnNpemUoKSwgbmV3IFJldGFpbmVkRE9NSW5mbyhyb290KSk7CiAKLSAgICAgICAgICAgIEFTU0VS
VChpID09IG5leHRLZXlJbmRleCk7CisgICAgICAgICAgICBncm91cC5zaHJpbmsoMCk7CiAgICAg
ICAgIH0KICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR3JvdXBlckxpc3QgbV9ncm91cGVyOworICAg
IFZlY3RvcjxJbXBsaWNpdENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbnM7CiB9OwogCiAvLyBDcmVh
dGUgb2JqZWN0IGdyb3VwcyBmb3IgRE9NIHRyZWUgbm9kZXMuCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0JpbmRpbmdzL2djLWZvcmVzdC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5k
aW5ncy9nYy1mb3Jlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMThmZTE1Y2YwYjEzYjUwZWM5YjhjOTcz
NWUyM2U0Y2I3MzMzYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5k
aW5ncy9nYy1mb3Jlc3QuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVUaW1lKHtydW46IGZ1bmN0aW9uKCkgeworICAg
IChmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKysp
CisgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB9KSgpOwor
ICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtbWluaS10cmVlLmh0bWwgYi9QZXJm
b3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLW1pbmktdHJlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMzA3
NjkxNTUzMjQ0ZmJiNzZlYTUyYzZkYzRlYWUzNDRkMzIxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2djLW1pbmktdHJlZS5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1
bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIubWVhc3VyZVRpbWUo
e3J1bjogZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDUwMDAwMDsgaSsrKQorICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKKyAg
ICB9KSgpOworICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7Cit9fSk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJlZS5odG1sIGIv
UGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9nYy10cmVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk5NjI4
OGNmNDc3NGZkNWViMjI1YWU0ODc2ZGM2ZDc4NGQ1OGY5YgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZ2MtdHJlZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIubWVhc3VyZVRpbWUoe3J1bjog
ZnVuY3Rpb24oKSB7CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7IGkrKykKKyAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IikpOworICAgIH0pKCk7CisgICAgUGVyZlRlc3RSdW5uZXIuZ2MoKTsKK319
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA5MWYwYzE3N2U0YTYwNWMz
NjcwZDhhMGUwNmMzMmU1YzNjOTcxYzY1Li41NzBlNDlmNjc1OTY5ZmY4ZDVkNDgzYTdhYmEzYTMy
ODVkMzU1YTIzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEwLTIyICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBWYXN0bHkgc2lt
cGxpZnkgVjhHQ0NvbnRyb2xsZXIncyBOb2RlVmlzaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW50YXJvIEhhcmEuCisKKyAgICAgICAgQWRkcyBzb21lIHBlcmZvcm1hbmNlIHRlc3RzIGZvciB0
aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisKKyAgICAgICAgKiBCaW5kaW5ncy9nYy1mb3Jlc3QuaHRt
bDogQWRkZWQuCisgICAgICAgICogQmluZGluZ3MvZ2MtbWluaS10cmVlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIEJpbmRpbmdzL2djLXRyZWUuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMTcgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVtcCB1cCB0aGUgbnVt
YmVyIG9mIGl0ZXJhdGlvbnMgb2YgaHRtbDUtZnVsbC1yZW5kZXIgdG8gNQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>169945</attachid>
            <date>2012-10-22 11:24:14 -0700</date>
            <delta_ts>2012-10-22 11:24:58 -0700</delta_ts>
            <desc>Perf test results (first five are without patch; second five are with patch)</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>58228</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvYWJhcnRoL2dpdC9hYmFydGgtd2Via2l0JzsKICAgIHZhciByZW1v
dGVQYXRoID0gJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsn
OwogICAgdmFyIG51bWJlck9mRmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1
Z2lucyA9IGZhbHNlOwogICAgdmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVu
Y3Rpb24gbG9hZFNjcmlwdChzcmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3lu
YyA9IHRydWU7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2Fk
ID0gbG9hZGVkOwogICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9y
ID0gZmFpbGVkOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAg
IH0KCiAgICBmdW5jdGlvbiBsb2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQo
dHJ1bmtQYXRoICsgJy8nICsgcGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luc1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdp
bigpIHsKICAgICAgICBudW1iZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVy
T2ZMb2FkZWRQbHVnaW5zID09IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0
KGluaXQsIDApOyAgICAgICAgICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRv
TG9hZFBsdWdpbihwbHVnaW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgi
RmFpbGVkIHRvIGxvYWQgIiArIHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVM
b2FkZWRKUXVlcnkodHJ1bmtQYXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9h
ZFBsdWdpbnModHJ1bmtQYXRoKTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsg
Jy8nICsgalF1ZXJ5LAogICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAg
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8n
ICsgalF1ZXJ5LAogICAgICAgICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgp
LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1
ZXJ5LiIpOyB9KTsKICAgICAgICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2Np
YXRlZFRlc3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdGhpcy51bml0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gcmVzdWx0LnVuaXQ7IH0KICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHJlc3VsdC52YWx1ZXMgPyByZXN1bHQudmFsdWVzLm1hcChmdW5jdGlvbiAodmFs
dWUpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVlOyB9KSA6
IHVuZGVmaW5lZDsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3Nv
Y2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1pbiA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJl
c3VsdC5taW47IH0KICAgIHRoaXMubWF4ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRl
ZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0Lm1heDsgfQogICAgdGhpcy5zdGRldiA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3Vs
dC5zdGRldjsgfQogICAgdGhpcy5zdGRldlJhdGlvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVz
dWx0LnN0ZGV2IC8gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1
bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpIC8gdGhp
cy5tZWFuKCk7IH0KICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlv
biAob3RoZXIpIHsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRo
aXMubWVhbigpKTsKICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuc3RkZXYoKSAmJiBkaWZmID4g
b3RoZXIuc3RkZXYoKTsKICAgIH0KICAgIHRoaXMucnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
YXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRl
c2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0K
ICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Vi
a2l0LXJldmlzaW9uJ107IH0KICAgIHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
dmFyIGxhYmVsID0gJ3InICsgdGhpcy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlz
LmRlc2NyaXB0aW9uKCkpCiAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRl
c2NyaXB0aW9uKCk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJm
VGVzdChuYW1lKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0
ID0gbnVsbDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKCiAgICAvLyBXZSBj
YW4ndCBkbyB0aGlzIGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0
ZXN0IG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0
b3IuCiAgICBmdW5jdGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3Qg
cmVzdWx0LgogICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3Qu
CiAgICAgICAgaWYgKCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICB2YXIgdW5pdCA9IHRlc3RSZXN1bHRzWzBdLnVuaXQoKTsgLy8g
RklYTUU6IFdlIHNob3VsZCB2ZXJpZnkgdGhhdCBhbGwgcmVzdWx0cyBoYXZlIHRoZSBzYW1lIHVu
aXQuCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsgLy8g
RklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8gPSB1
bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICoga2ls
byAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0
b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsgdW5p
dDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAgY2Fj
aGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5p
dCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IG5hbWU7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFt
ZS5pbmRleE9mKCc6JykgPj0gMDsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3
UmVzdWx0KSB7CiAgICAgICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNh
Y2hlZFVuaXQgPSBudWxsOwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAg
fQogICAgdGhpcy5yZXN1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0K
ICAgIHRoaXMuc2NhbGluZ0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2Fs
aW5nRmFjdG9ySWZOZWVkZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsK
ICAgIH0KICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGlu
Z0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0
aGlzLnNtYWxsZXJJc0JldHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudW5pdCgpID09
ICdtcycgfHwgdGhpcy51bml0KCkgPT0gJ2J5dGVzJzsgfQp9Cgp2YXIgcGxvdENvbG9yID0gJ3Jn
YigyMzAsNTAsNTApJzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRpb25zID0gewogICAgbGluZXM6IHtz
aG93OnRydWUsIGxpbmVXaWR0aDogMH0sCiAgICBjb2xvcjogcGxvdENvbG9yLAogICAgcG9pbnRz
OiB7c2hvdzogdHJ1ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6IHtzaG93OiBmYWxzZX19OwoKdmFy
IG1haW5QbG90T3B0aW9ucyA9IHsKICAgIHhheGlzOiB7CiAgICAgICAgbWluOiAtMC41LAogICAg
ICAgIHRpY2tTaXplOiAxLAogICAgfSwKICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwKICAg
IHNlcmllczogeyBzaGFkb3dTaXplOiAwIH0sCiAgICBiYXJzOiB7c2hvdzogdHJ1ZSwgYWxpZ246
ICdjZW50ZXInLCBiYXJXaWR0aDogMC41fSwKICAgIGxpbmVzOiB7IHNob3c6IGZhbHNlIH0sCiAg
ICBwb2ludHM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogewogICAgICAgIGJvcmRlcldpZHRo
OiAxLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2NjYycsCiAgICAgICAgYmFja2dyb3VuZENvbG9y
OiAnI2ZmZicsCiAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgIGF1dG9IaWdobGlnaHQ6
IGZhbHNlLAogICAgfQp9OwoKdmFyIHRpbWVQbG90T3B0aW9ucyA9IHsKICAgIHlheGlzOiB7IHNo
b3c6IGZhbHNlIH0sCiAgICB4YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgbGluZXM6IHsgc2hv
dzogdHJ1ZSB9LAogICAgZ3JpZDogeyBib3JkZXJXaWR0aDogMSwgYm9yZGVyQ29sb3I6ICcjY2Nj
JyB9LAogICAgY29sb3JzOiBbIHBsb3RDb2xvciBdCn07CgpmdW5jdGlvbiBjcmVhdGVQbG90KGNv
bnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNsYXNz
PSJwbG90Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3RzIj48L2Rpdj4nCiAgICAgICAgKyAn
PHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNo
aWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRoJzogKDEwMCAqIHRlc3QucmVzdWx0cygpLmxlbmd0
aCArIDI1KSArICdweCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7CiAgICAkKGNvbnRhaW5lcikuYXBw
ZW5kKHNlY3Rpb24pOwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbign
LnBsb3QnKTsKICAgIHZhciBtaW5Jc1plcm8gPSB0cnVlOwogICAgYXR0YWNoUGxvdCh0ZXN0LCBw
bG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwoKICAgIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBzZWN0
aW9uLmNoaWxkcmVuKCcudGltZS1wbG90cycpKTsKCiAgICB2YXIgdG9vbHRpcCA9IHNlY3Rpb24u
Y2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Rob3Zlcics
IGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbSkgewog
ICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0ZW0uc2Vy
aWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRhdGFwb2lu
dFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB2YXIgc2VjdGlvbk9m
ZnNldCA9ICQoc2VjdGlvbikub2Zmc2V0KCk7CiAgICAgICAgICAgIHRvb2x0aXAuY3NzKHtsZWZ0
OiBpdGVtLnBhZ2VYIC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkg
LyAyLCB0b3A6IGl0ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0LnRvcCArIDEwfSk7CiAgICAgICAg
ICAgIHRvb2x0aXAuZmFkZUluKDIwMCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIHRvb2x0
aXAuaGlkZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLm1vdXNlb3V0KGZ1bmN0aW9uICgp
IHsKICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5jbGlj
ayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgIG1pbklzWmVybyA9ICFtaW5Jc1plcm87CiAgICAgICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90
Q29udGFpbmVyLCBtaW5Jc1plcm8pOwogICAgfSk7CgogICAgcmV0dXJuIHNlY3Rpb247Cn0KCmZ1
bmN0aW9uIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBjb250YWluZXIpIHsKICAgIHZhciByZXN1bHRz
ID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQbG90ID0gZmFsc2U7CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb250YWluZXIu
YXBwZW5kKCc8ZGl2PjwvZGl2PicpOwogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzW2ldLnZh
bHVlcygpOwogICAgICAgIGlmICghdmFsdWVzKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICBhdHRhY2hlZFBsb3QgPSB0cnVlOwoKICAgICAgICAkLnBsb3QoY29udGFpbmVyLmNoaWxkcmVu
KCkubGFzdCgpLCBbdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBb
aW5kZXgsIHZhbHVlXTsgfSldLAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB7fSwgdGltZVBs
b3RPcHRpb25zLCB7eWF4aXM6IHttaW46IE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcykgKiAw
LjksIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDEuMX0sCiAgICAgICAgICAg
ICAgICB4YXhpczoge21pbjogLTAuNSwgbWF4OiB2YWx1ZXMubGVuZ3RoIC0gMC41fX0pKTsKICAg
IH0KICAgIGlmICghYXR0YWNoZWRQbG90KQogICAgICAgIGNvbnRhaW5lci5jaGlsZHJlbigpLnJl
bW92ZSgpOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklz
WmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICB2YXIgdmFsdWVz
ID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywgcmVzdWx0LCBpbmRleCkgewogICAg
ICAgIHZhciBuZXdWYWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgcmV0dXJuIG5ld1Zh
bHVlcyA/IHZhbHVlcy5jb25jYXQobmV3VmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0
dXJuIFtpbmRleCwgdmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAgICB9LCBbXSk7CgogICAgdmFyIHBs
b3REYXRhID0gW107CiAgICBpZiAodmFsdWVzLmxlbmd0aCkKICAgICAgICBwbG90RGF0YSA9IFsk
LmV4dGVuZCh0cnVlLCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07
CiAgICBlbHNlIHsKICAgICAgICBmdW5jdGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykg
eyByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlk
LCBkYXRhOiByZXN1bHRzLm1hcChjYWxsYmFjayl9KTsgfQogICAgICAgIHBsb3REYXRhID0gW21h
a2VTdWJwb2ludHMoJ21pbicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5k
ZXgsIHJlc3VsdC5taW4oKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAog
ICAgICAgIG1ha2VTdWJwb2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAg
ICAgICBtYWtlU3VicG9pbnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSldOwogICAg
fQoKICAgIHBsb3REYXRhLnB1c2goe2lkOiAnJm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwg
Y29sb3I6IHBsb3RDb2xvcn0pOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVu
ZCh0cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklz
WmVybyA/IDAgOiBNYXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4LAogICAgICAgIG1h
eDogTWF0aC5tYXguYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/IDEuMSA6IDEuMDEp
fX0pOwoKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAt
IDAuNTsKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1
bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJl
bCgpXTsgfSk7CgogICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxv
dE9wdGlvbnMpOwp9CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAg
IHZhciBkZWNpbWFsID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9Cgpm
dW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9
IGZyYWN0aW9uICogMTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSAr
ICclJzsKfQoKZnVuY3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1l
bW9yeSwgcmVmZXJlbmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+
PHRyPjx0aD5UZXN0PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4s
IGluZGV4KSB7CiAgICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZl
cmVuY2VJbmRleCA/IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30i
PicgKyBydW4ubGFiZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1
cCwgY2VsbCkgeyByZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0
Ym9keT48L3Rib2R5PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5h
bWUgaW4gdGVzdHMpCiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3RO
YW1lcy5zb3J0KCkubWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0g
dGVzdHNbdGVzdE5hbWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3Vs
ZElnbm9yZU1lbW9yeSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVm
ZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3
aWRnZXRzOiBbJ3plYnJhJ119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMp
IHsKICAgIC8vIEltcGxlbWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlz
dGljcy9sZWFybi1jb3JyZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5
ID0gaXRlcmF0aW9ucwogICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFy
IHN1bVhTcXVhcmVkID0gMDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRp
bWVzWSA9IDA7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICB2YXIgeCA9IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3Vt
WCArPSB4OwogICAgICAgIHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsK
ICAgICAgICBzdW1ZU3F1YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5
OwogICAgfQoKICAgIHZhciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAq
IHN1bVkpIC8KICAgICAgICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKSAqCiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNx
dWFyZWQgLSBzdW1ZICogc3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5m
aW5pdHkpCiAgICAgICAgciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBz
dW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKTsKICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAt
IHNsb3BlICogc3VtWCAvIHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwg
aW50ZXJjZXB0OiBpbnRlcmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2ln
biA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdo
dDogMThweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAn
PHBvbHlnb24gZmlsbD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAg
ICArICc8cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4Ljcs
IDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9
IjYiIGZpbGw9IndoaXRlIiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJs
ZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgn
PHRyPjx0ZCBjbGFzcz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1
bml0Ij4nICsgdGVzdC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1
cEZvclJ1bihyZXN1bHQsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29u
Q2VsbCA9ICcnOwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91
bGRDb21wYXJlID0gcmVzdWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3Vs
ZENvbXBhcmUgJiYgcmVmZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlm
ZmVyZW5jZSA9IHJlZmVyZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAg
ICAgICAgICB2YXIgYmV0dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZm
ZXJlbmNlIDwgMCA6IHBlcmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBh
cmlzb24gPSAnJzsKICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAg
ICAgICAgICAgaWYgKHJlZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChy
ZXN1bHQpKSB7CiAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShN
YXRoLmFicyhwZXJjZW50RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29y
c2UmbmJzcDsnKTsKICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRl
cicgOiAnIHdvcnNlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwog
ICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAn
Ij4nICsgY29tcGFyaXNvbiArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21w
YXJlKQogICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+JzsKCiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2
YXIgd2FybmluZyA9ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAg
ICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25SZXN1bHQgPSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25BbmFseXNpcyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Np
b25SZXN1bHQuc2xvcGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRo
UHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVn
cmVzc2lvblJlc3VsdC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0
LnNsb3BlKSA+IDAuMDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNz
PSJyZWdyZXNzaW9uLXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3
aXRoICcgKyByZWdyZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bh
bj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcm
c2lnbWE7PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsgJywgbWlu
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcs
IG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVn
cmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJv
dXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxl
IGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBz
dGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSAr
IGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIgdGl0bGU9
IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1hdFBlcmNl
bnRhZ2UocmVzdWx0LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlz
b25DZWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVu
Y2UpIHsKICAgICAgICByZXR1cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6
IDMpICsgJyIgY2xhc3M9Im1pc3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1
bkluZGV4ID0gMDsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVm
ZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGls
ZSAocnVuc1tydW5JbmRleF0gIT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bklu
ZGV4Kys7CiAgICAgICAgaWYgKHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAg
ICByZWZlcmVuY2VSZXN1bHQgPSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1
bkluZGV4XSA9IGk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBp
KyspIHsKICAgICAgICB2YXIgcmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAg
ICBpZiAocmVzdWx0SW5kZXggPT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBl
bmQobWFya3VwRm9yTWlzc2luZ1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0
SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hp
bGRyZW4oJ3Rib2R5JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJv
d1swXSAmJiBldmVudC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIg
Zmlyc3RDZWxsID0gdGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAo
Zmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0
Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5j
aGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAg
ICAgICAgICAgIHBsb3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9
KTsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAg
ICBvZmZzZXQubGVmdCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91
dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAg
IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRl
ckhlaWdodCgpICsgNX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7
Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAg
ICAgaWQ6ICdjb21wYXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICByZXR1cm4gcy5pbmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDog
ZnVuY3Rpb24ocykgewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0
cmluZyhzLmluZGV4T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNl
ZCkgPyAwIDogcGFyc2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAg
fSk7CgogICAgdmFyIHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpT
T04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1
bmN0aW9uIChpbmRleCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50
cnkpOwogICAgICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRz
LCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0p
CiAgICAgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAg
ICAgICAgdGVzdHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCBy
ZXN1bHQsIHJ1bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1l
bW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgn
I3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxl
bWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRD
b250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxk
SWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5j
dGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFu
IHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNs
YXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAg
ICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQs
IGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVj
a2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRl
c3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoK
ICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBjaGVja2JveCkgewogICAg
ICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7
CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdjaGVja2VkJykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVt
b3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tl
ZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsK
ICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0i
YXBwbGljYXRpb24vanNvbiI+W3sidGltZXN0YW1wIjogMTM1MDkyODM2MCwgIndlYmtpdC1yZXZp
c2lvbiI6ICIxMzIwODkiLCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZ2MtbWluaS10cmVlOk1hbGxv
YyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAi
YXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlIjogeyJt
aW4iOiAxMjUyLjI5NDAwMDAwNTM0OTUsICJtYXgiOiAxMjg3LjU1Mjk5OTk3MjgzMTUsICJtZWRp
YW4iOiAxMjU5LjYyMjUwMDAwMTU2OTMsICJ2YWx1ZXMiOiBbMTI3MC44MTQ5OTk5OTYyMTg4LCAx
MjYyLjEwOTk5OTk4MTQ3NiwgMTI2OC42MTgwMDAwMDE4Nzk0LCAxMjY3LjIwNTAwMDAxMTAxNzUs
IDEyNjUuMDQ1OTk5OTg1ODg2NywgMTI2NC43NTkwMDAwMTI0MTgzLCAxMjg3LjU1Mjk5OTk3Mjgz
MTUsIDEyNjcuMjcwOTk5OTg5NzA1MiwgMTI2NC4xODQ5OTk5NzgxNjk4LCAxMjU3LjEwNzk5OTk5
MDY5NDIsIDEyNjAuMzAwMDAwMDIzNTYyNSwgMTI1OC45NDQ5OTk5Nzk1NzYsIDEyNTcuNzU3OTk5
OTkyNDYzNywgMTI1Ny44NjgwMDAwMTUxNTA4LCAxMjU2LjQzNzAwMDAwMzY0MzMsIDEyNTIuMjk0
MDAwMDA1MzQ5NSwgMTI1NS4xMDQ5OTk5ODkyNzEyLCAxMjUzLjU3Mjk5OTk5NDUwMzMsIDEyNTYu
NDY0MDAwMDA1NTA3OCwgMTI1Mi40MzEwMDAwMDA3OTcyXSwgInN0ZGV2IjogOC4yMzExNzA2NTM2
OTM3MjQsICJhdmciOiAxMjYxLjc5MjI0OTk5NjUwNjEsICJ1bml0IjogIm1zIn0sICJCaW5kaW5n
cy9nYy1mb3Jlc3QiOiB7Im1pbiI6IDgxOC4xNzg5OTk5OTQ0MTU4LCAibWF4IjogODM4LjI0Nzk5
OTk4NTQ2OTUsICJtZWRpYW4iOiA4MjkuNDM0NDk5OTg4NTY1MiwgInZhbHVlcyI6IFs4MzguMjQ3
OTk5OTg1NDY5NSwgODM2LjI1NzAwMDAxNzIxMjcsIDgzNy40NDgwMDAwMDU2NzkyLCA4MjkuMTY5
OTk5OTgyNjk2LCA4MzQuNDQ4MDAwMDA4NzA2LCA4MjkuNjk4OTk5OTk0NDM0NCwgODIzLjYyNjAw
MDAyNjcwNjYsIDgyNy42ODYwMDAwMDQxNzc5LCA4MjQuODg1MDAwMDA5MDg5NywgODM2Ljc4MDAw
MDAxMjM2OCwgODMyLjkwNzAwMDAwMzYxNTQsIDgxOC4xNzg5OTk5OTQ0MTU4LCA4MjQuMDM0OTk5
OTk3ODIwNywgODMzLjQ4Njk5OTk5NjIzOTMsIDgyNC4zMzg5OTk5ODQzMjAzLCA4MjUuNzY4MDAw
MDA5NzAyNSwgODMzLjYzNzAwMDAwMzM2MzksIDgyNi41ODkwMDAwMDM4NzgsIDgzMi42OTMwMDAw
MDM5MjgzLCA4MjYuOTA3MDAwMDA5NjY5XSwgInN0ZGV2IjogNS41NjQ4MzM3OTg1NzUxNzEsICJh
dmciOiA4MjkuODM5NDAwMDAyNjc0NiwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLXRyZWU6
SlNIZWFwIjogeyJtaW4iOiAyMDc3MzQ2OC4wLCAibWF4IjogMjA3Nzc4NjQuMCwgIm1lZGlhbiI6
IDIwNzc2MDEwLjAsICJ2YWx1ZXMiOiBbMjA3NzUwMjguMCwgMjA3NzM5MzIuMCwgMjA3NzUyNDAu
MCwgMjA3NzQwNjAuMCwgMjA3NzU4MjguMCwgMjA3NzQ0MjQuMCwgMjA3NzYyNDQuMCwgMjA3NzQz
MTIuMCwgMjA3NzYxOTIuMCwgMjA3NzUwODguMCwgMjA3NzY4NTIuMCwgMjA3NzM0NjguMCwgMjA3
NzYzMjguMCwgMjA3NzYzOTYuMCwgMjA3Nzc4NjQuMCwgMjA3NzU0MzIuMCwgMjA3Nzc0MDQuMCwg
MjA3NzcwMDQuMCwgMjA3Nzc2NjAuMCwgMjA3Nzc4MjAuMF0sICJzdGRldiI6IDEzNjcuMTUxMjI5
NDU4NjI4NywgImF2ZyI6IDIwNzc1ODI4LjgsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9n
Yy1taW5pLXRyZWU6SlNIZWFwIjogeyJtaW4iOiAxMDYxOTQ4MC4wLCAibWF4IjogMTM2NjcwMDQu
MCwgIm1lZGlhbiI6IDEzNjYzNjg4LjAsICJ2YWx1ZXMiOiBbMTM2NjY5NDQuMCwgMTM2NjcwMDQu
MCwgMTA2MTk0ODAuMCwgMTM2NjIzMzIuMCwgMTM2NjI1NjguMCwgMTM2NjI1OTIuMCwgMTM2NjI4
MDAuMCwgMTM2NjMzMDguMCwgMTM2NjMzMTIuMCwgMTM2NjM5NjguMCwgMTM2NjM2MjQuMCwgMTM2
NjA3MjQuMCwgMTM2NjUwNzYuMCwgMTM2NjI5MTIuMCwgMTM2NjQxNjQuMCwgMTM2NjQwNDguMCwg
MTM2NjQyMjguMCwgMTM2NjM3NTIuMCwgMTM2NjYzNzYuMCwgMTM2NjQ0ODQuMF0sICJzdGRldiI6
IDY4MDc1Ni4xNDk0MTkxMjc4LCAiYXZnIjogMTM1MTE2ODQuNzk5OTk5OTk5LCAidW5pdCI6ICJi
eXRlcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZSI6IHsibWluIjogMTI1MC4xODUwMDAwMTE2OTc0LCAi
bWF4IjogMTMwOS45NzY5OTk5OTcxNjEzLCAibWVkaWFuIjogMTI2Mi4zODYwMDAwMDIxNTIzLCAi
dmFsdWVzIjogWzEyNjcuNjMzOTk5OTg4OTAyNCwgMTI3NC43NjY5OTk5OTUzMzYsIDEzMDkuOTc2
OTk5OTk3MTYxMywgMTI1Ni42NDkwMDAwMTcyMDUzLCAxMjUwLjE4NTAwMDAxMTY5NzQsIDEyNTcu
MDY4MDAwMDA2MjU2NiwgMTI2Ni4zMzQ5OTk5OTI5Nzc4LCAxMjU4LjQzMDk5OTk5NDc0MzYsIDEy
NTUuNjE5MDAwMDAzMjA3NSwgMTI2OS45MTEwMDAwMTAzMjQ2LCAxMjYzLjgwMDk5OTk5MzY5MTIs
IDEyNjAuOTcxMDAwMDEwNjEzNCwgMTI2MC4yNDAwMDAwMDMyNTAzLCAxMjc4LjQwMTk5OTk5NjI3
NjYsIDEyNjguMjU5OTk5OTgyNTQ3LCAxMjU3LjYyMzk5OTk5MDc1NTcsIDEyNzIuNzI4OTk5OTg5
MzQsIDEyNjguMjQzOTk5OTc3MTMwNCwgMTI2MC42MTUwMDAwMDY1MSwgMTI1MC42MTIwMDAwMDM0
NTddLCAic3RkZXYiOiAxMy4wMDMzOTM4NTc2NTQwNTQsICJhdmciOiAxMjY1LjQwMzY5OTk5ODU2
OTIsICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy10cmVlOk1hbGxvYyI6IHsibWluIjogMC4w
LCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5p
dCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0Ok1hbGxvYyI6IHsibWluIjogMC4wLCAi
bWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0OkpTSGVhcCI6IHsibWluIjogMTA2MTcyMjAu
MCwgIm1heCI6IDEzNjY0NzAwLjAsICJtZWRpYW4iOiAxMzY2MTA1Mi4wLCAidmFsdWVzIjogWzEz
NjY0NjAwLjAsIDEzNjY0NzAwLjAsIDEwNjE3MjIwLjAsIDEzNjU5OTY0LjAsIDEzNjU5OTg4LjAs
IDEzNjYwNDg4LjAsIDEzNjYwNTg4LjAsIDEzNjYwODkyLjAsIDEzNjYxMTI0LjAsIDEzNjYwOTgw
LjAsIDEzNjYwNTg0LjAsIDEzNjU4NTc2LjAsIDEzNjYxOTkyLjAsIDEzNjYwMzA4LjAsIDEzNjYx
NzU2LjAsIDEzNjYxMzQ0LjAsIDEzNjYyMDE2LjAsIDEzNjYxNDQ4LjAsIDEzNjY0MDEyLjAsIDEz
NjYyMTg0LjBdLCAic3RkZXYiOiA2ODA3MTIuMjAxNTMxOTU3OCwgImF2ZyI6IDEzNTA5MjM4LjE5
OTk5OTk5NywgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIsICJicmFu
Y2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9uIjogIjE2Mjk4MyJ9LCB7InRp
bWVzdGFtcCI6IDEzNTA5Mjg0NDEsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMyMDg5IiwgInJlc3Vs
dHMiOiB7IkJpbmRpbmdzL2djLW1pbmktdHJlZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6
IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0
ZXMifSwgIkJpbmRpbmdzL2djLW1pbmktdHJlZSI6IHsibWluIjogMTI1NS42NzA5OTk5OTE3MDc1
LCAibWF4IjogMTI4Mi4wMDM5OTk5Nzg3Njk2LCAibWVkaWFuIjogMTI2My4xMTU0OTk5OTgwOTM2
LCAidmFsdWVzIjogWzEyODIuMDAzOTk5OTc4NzY5NiwgMTI2Mi45OTg5OTk5OTg2NzIsIDEyNzQu
NzMyMDAwMDE5ODY3LCAxMjY4LjU3MjAwMDAwMDg1ODcsIDEyNzMuMTU5MDAwMDAzOTQzMiwgMTI2
NC4zODg5OTk5ODkwMjM0LCAxMjczLjg0ODk5OTk5MDE1MDMsIDEyNjYuNzIyMDAwMDAwMjk5OSwg
MTI2Mi41MDA5OTk5OTAxNTIyLCAxMjYyLjM3ODk5OTk5MjUwNjYsIDEyNTkuOTExOTk5OTc5NTIy
LCAxMjYxLjY1NTAwMDAwOTM0MTIsIDEyNjcuNzU4MDAwMDAxNzc3LCAxMjU1LjY3MDk5OTk5MTcw
NzUsIDEyNjYuMTU4MDAwMDEzMDkyNSwgMTI1OS4zMjE5OTk5OTgwNjQ3LCAxMjYzLjIzMTk5OTk5
NzUxNTIsIDEyNTYuODA2OTk5OTk3OTM0MywgMTI1Ni44ODU5OTk5ODgyOTg5LCAxMjU2LjUxMzk5
OTk3ODc3ODldLCAic3RkZXYiOiA3LjAxMTk4NTYwMTg3MjI0LCAiYXZnIjogMTI2NC43NjEwNDk5
OTYwMTM4LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0IjogeyJtaW4iOiA4MjUu
MTkxOTk5OTg5MzI4OSwgIm1heCI6IDg0NS42MjA5OTk5ODU4NDAyLCAibWVkaWFuIjogODMyLjk2
Mjk5OTk5MzQ2OTYsICJ2YWx1ZXMiOiBbODQ1LjYyMDk5OTk4NTg0MDIsIDg0MS4yNjYwMDAwMDMw
ODgzLCA4MzkuNjY2OTk5OTkyOTE0NSwgODM0LjMyNzAwMDAxODY3NDksIDgzNS43MzUwMDAwMDA1
NjgxLCA4MzMuNDUyMDAwMDIwNzcwNCwgODI3LjQ4NDAwMDAwODU1MzMsIDgyOS43OTU5OTk5NzYz
NDA3LCA4MjUuMTkxOTk5OTg5MzI4OSwgODI1LjQ5MjAwMDAwMzU3ODEsIDgzNi4yMjcwMDAwMjE2
MDg1LCA4MzAuMjA3MDAwMDIwODkxNCwgODI4LjUyNDAwMDAxMTM4NDUsIDgyOS44OTYwMDAwMTAx
OTQzLCA4MzYuNDE3OTk5OTkxNjgxNCwgODMxLjIzNTk5OTk5ODE3MDksIDgzOC40MjQwMDAwMTU5
NDgsIDgzMy4zMjg5OTk5ODY0MDY0LCA4MzIuNTk3MDAwMDAwNTMyNywgODMwLjMwMzAwMDAyNDI4
N10sICJzdGRldiI6IDUuMzIwNDI1NDE5MjIyMTI3LCAiYXZnIjogODMzLjI1OTY1MDAwNDAzODEs
ICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjogMjA3NzM0
NjQuMCwgIm1heCI6IDIwNzc3ODY0LjAsICJtZWRpYW4iOiAyMDc3NjAwOC4wLCAidmFsdWVzIjog
WzIwNzc1MDI4LjAsIDIwNzczOTMyLjAsIDIwNzc1MjQwLjAsIDIwNzc0MDYwLjAsIDIwNzc1ODI4
LjAsIDIwNzc0NDIwLjAsIDIwNzc2MjQ0LjAsIDIwNzc0MzA4LjAsIDIwNzc2MTg4LjAsIDIwNzc1
MDg0LjAsIDIwNzc2ODQ4LjAsIDIwNzczNDY0LjAsIDIwNzc2MzI4LjAsIDIwNzc2Mzk2LjAsIDIw
Nzc3ODY0LjAsIDIwNzc1NDI4LjAsIDIwNzc3NDA0LjAsIDIwNzc3MDA0LjAsIDIwNzc3NjY0LjAs
IDIwNzc3ODIwLjBdLCAic3RkZXYiOiAxMzY4LjIwOTgzMzA5MjE3MDEsICJhdmciOiAyMDc3NTgy
Ny41OTk5OTk5OTgsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1taW5pLXRyZWU6SlNI
ZWFwIjogeyJtaW4iOiAxMDYxOTQ4MC4wLCAibWF4IjogMTM2NjcwMDQuMCwgIm1lZGlhbiI6IDEz
NjYzNjg4LjAsICJ2YWx1ZXMiOiBbMTM2NjY5NDQuMCwgMTM2NjcwMDQuMCwgMTA2MTk0ODAuMCwg
MTM2NjIzMzIuMCwgMTM2NjI1NjguMCwgMTM2NjI1OTIuMCwgMTM2NjI4MDAuMCwgMTM2NjMzMDgu
MCwgMTM2NjMzMTIuMCwgMTM2NjM5NjguMCwgMTM2NjM2MjQuMCwgMTM2NjA3MjQuMCwgMTM2NjUw
NzYuMCwgMTM2NjI5MTIuMCwgMTM2NjQxNjQuMCwgMTM2NjQwNDguMCwgMTM2NjQyMjguMCwgMTM2
NjM3NTIuMCwgMTM2NjYzNzYuMCwgMTM2NjQ0ODQuMF0sICJzdGRldiI6IDY4MDc1Ni4xNDk0MTkx
Mjc4LCAiYXZnIjogMTM1MTE2ODQuNzk5OTk5OTk5LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGlu
Z3MvZ2MtdHJlZSI6IHsibWluIjogMTIyNC42NjE5OTk5OTMyNTksICJtYXgiOiAxMjYyLjg5MzAw
MDAwNjQ0MywgIm1lZGlhbiI6IDEyMzAuMzUxMDAwMDA1NjEyMSwgInZhbHVlcyI6IFsxMjM3LjI4
NDAwMDAwMjU0NjIsIDEyMjkuNDQ3OTk5OTk4MjI4NiwgMTI2Mi44OTMwMDAwMDY0NDMsIDEyMzAu
MTI5MDAwMDAzMjE2OCwgMTIzMS41MjI5OTk5OTQ5MjI0LCAxMjI3LjI5NzAwMDAwNDkxLCAxMjMy
Ljk0Mjk5OTk4MDg3OCwgMTIyOC44MTI5OTk5OTQyNjEyLCAxMjI5LjA1Njk5OTk4OTU1MjQsIDEy
MjcuNzAyMDAwMDAzNzczNywgMTIzMi45MjQ5OTk5ODkzMzY0LCAxMjMyLjgwMTk5OTk4NDA3NjIs
IDEyMjkuNTA0OTk5OTk1Njk3MywgMTIyOC45NDAwMDAwMDA4NzU0LCAxMjMzLjkwMDk5OTk5OTYw
NTEsIDEyMzAuNTczMDAwMDA4MDA3NSwgMTIzMy4zODkwMDAwMDA4OTc4LCAxMjM5LjAyMzAwMDAw
MTkwNzMsIDEyMjUuMDMyMDAwMDE2NjU0LCAxMjI0LjY2MTk5OTk5MzI1OV0sICJzdGRldiI6IDgu
MDMzMzI1NjQ0MjU3ODE4LCAiYXZnIjogMTIzMi4zOTIwNDk5OTg0NTI0LCAidW5pdCI6ICJtcyJ9
LCAiQmluZGluZ3MvZ2MtdHJlZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1l
ZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJp
bmRpbmdzL2djLWZvcmVzdDpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlh
biI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL2djLWZvcmVzdDpKU0hlYXAiOiB7Im1pbiI6IDEwNjE3MjE2LjAsICJtYXgiOiAxMzY2NDY5
Ni4wLCAibWVkaWFuIjogMTM2NjEwNTAuMCwgInZhbHVlcyI6IFsxMzY2NDU5Ni4wLCAxMzY2NDY5
Ni4wLCAxMDYxNzIxNi4wLCAxMzY1OTk2NC4wLCAxMzY1OTk4OC4wLCAxMzY2MDQ4NC4wLCAxMzY2
MDU4NC4wLCAxMzY2MDg4OC4wLCAxMzY2MTEyMC4wLCAxMzY2MDk4MC4wLCAxMzY2MDU4NC4wLCAx
MzY1ODU3Ni4wLCAxMzY2MTk4OC4wLCAxMzY2MDMwNC4wLCAxMzY2MTc1Mi4wLCAxMzY2MTM0MC4w
LCAxMzY2MjAwOC4wLCAxMzY2MTQ0NC4wLCAxMzY2NDAwOC4wLCAxMzY2MjE4MC4wXSwgInN0ZGV2
IjogNjgwNzEyLjM4NzQ0NjY4NjcsICJhdmciOiAxMzUwOTIzNS4wMDAwMDAwMDIsICJ1bml0Ijog
ImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVu
ayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMifSwgeyJ0aW1lc3RhbXAiOiAxMzUwOTI4
NTIzLCAid2Via2l0LXJldmlzaW9uIjogIjEzMjA4OSIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9n
Yy1taW5pLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAw
LjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBd
LCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9n
Yy1taW5pLXRyZWUiOiB7Im1pbiI6IDExNzkuNzMwMDAwMDAzNDczOCwgIm1heCI6IDEyMDYuNTcx
OTk5OTk1NTAzNiwgIm1lZGlhbiI6IDExODQuMTg5MDAwMDA2ODgxNSwgInZhbHVlcyI6IFsxMTg3
LjkzODAwMDAxNzMxMTQsIDExODIuNjEyMDAwMDA0MTU1NiwgMTE4Mi41MDc5OTk5OTgwNTE3LCAx
MTg3Ljg5MjAwMDAxNjI5MDcsIDExODQuNzA3MDAwMDA3NjIsIDExODQuODM3OTk5OTg2NDg0Niwg
MTE4Ny4yNjgwMDAwMDg3NzEyLCAxMTc5LjczMDAwMDAwMzQ3MzgsIDExODEuMjQwMDAwMDA1MzQ1
OCwgMTE4My42NzEwMDAwMDYxNDMsIDExODIuMTMxMDAwMDA4NjY3LCAxMTgzLjM2Njk5OTk5MDUz
OTYsIDExODEuNjY0OTk5OTgxODc2NSwgMTE4MC44NDM5OTk5ODc3MDEsIDExODMuMzE5MDAwMDAz
MzkzNywgMTIwNi41NzE5OTk5OTU1MDM2LCAxMjAyLjU2MTAwMDAxMjc5MjYsIDExOTkuOTM0MDAw
MDAzODUsIDEyMDMuNjY0MDAwMDAwNTcxOCwgMTIwMy45NDc5OTk5ODAzMDA3XSwgInN0ZGV2Ijog
OS4xMDgxOTAxOTE2Nzc2NSwgImF2ZyI6IDExODguNTIwNDUwMDAwOTQyMiwgInVuaXQiOiAibXMi
fSwgIkJpbmRpbmdzL2djLWZvcmVzdCI6IHsibWluIjogODc3LjI1OTk5OTk3OTI4NzQsICJtYXgi
OiA4OTIuOTg0OTk5OTg0MDM3MSwgIm1lZGlhbiI6IDg4Mi43Mzg0OTk5NzQ5NDg0LCAidmFsdWVz
IjogWzg4OS42MzQwMDAwMjEwMzMsIDg4Ni4zNTcwMDAwMTAzMjA5LCA4OTIuMTI0MDAwMDA1NDI0
LCA4ODkuMTY5MDAwMDAxODU3MSwgODkyLjk4NDk5OTk4NDAzNzEsIDg4MS4yMzgwMDAwMDE3NTgz
LCA4ODAuNDE1MDAwMDIxNDU3NywgODg1Ljk0NDAwMDAwODc0ODgsIDg5Mi43MzAwMDAwMjE0MDE4
LCA4NzguMTQwMDAwMDE1MjY0NCwgODg2LjIyNDk5OTk5NDczOCwgODgyLjU2NDk5OTk3ODA1OCwg
ODgyLjkxMTk5OTk3MTgzODcsIDg3Ny4yNTk5OTk5NzkyODc0LCA4NzkuMTE3MDAwMDA0MDQzOCwg
ODkxLjM1MjAwMDAwNjAwODksIDg4MS42OTg5OTk5OTA0NzYzLCA4NzkuOTg5OTk5OTg2NzE5Mywg
ODc5Ljc1OTAwMDAwMzEwNSwgODc5LjMzNTk5OTk4MzU5NTddLCAic3RkZXYiOiA1LjMwMjM0NTY0
Njk2MDQ4MSwgImF2ZyI6IDg4NC40NDc1NDk5OTk0NTg3LCAidW5pdCI6ICJtcyJ9LCAiQmluZGlu
Z3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczNDY4LjAsICJtYXgiOiAyMDc3Nzg2NC4w
LCAibWVkaWFuIjogMjA3NzYwMTAuMCwgInZhbHVlcyI6IFsyMDc3NTAyOC4wLCAyMDc3MzkzMi4w
LCAyMDc3NTI0MC4wLCAyMDc3NDA2MC4wLCAyMDc3NTgyOC4wLCAyMDc3NDQyNC4wLCAyMDc3NjI0
NC4wLCAyMDc3NDMxMi4wLCAyMDc3NjE5Mi4wLCAyMDc3NTA4OC4wLCAyMDc3Njg1Mi4wLCAyMDc3
MzQ2OC4wLCAyMDc3NjMyOC4wLCAyMDc3NjM5Ni4wLCAyMDc3Nzg2NC4wLCAyMDc3NTQzMi4wLCAy
MDc3NzQwOC4wLCAyMDc3NzAwNC4wLCAyMDc3NzY2NC4wLCAyMDc3NzgyMC4wXSwgInN0ZGV2Ijog
MTM2Ny42NzYyMzEzMDc3MzQzLCAiYXZnIjogMjA3NzU4MjkuMiwgInVuaXQiOiAiYnl0ZXMifSwg
IkJpbmRpbmdzL2djLW1pbmktdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDEwNjE5NDgwLjAsICJtYXgi
OiAxMzY2NzAwNC4wLCAibWVkaWFuIjogMTM2NjM2ODYuMCwgInZhbHVlcyI6IFsxMzY2Njk0NC4w
LCAxMzY2NzAwNC4wLCAxMDYxOTQ4MC4wLCAxMzY2MjMzMi4wLCAxMzY2MjU2NC4wLCAxMzY2MjU5
Mi4wLCAxMzY2MjgwMC4wLCAxMzY2MzMwOC4wLCAxMzY2MzMxMi4wLCAxMzY2Mzk2OC4wLCAxMzY2
MzYyNC4wLCAxMzY2MDcyNC4wLCAxMzY2NTA3Ni4wLCAxMzY2MjkxMi4wLCAxMzY2NDE2NC4wLCAx
MzY2NDA0OC4wLCAxMzY2NDIyOC4wLCAxMzY2Mzc0OC4wLCAxMzY2NjM3Ni4wLCAxMzY2NDQ4NC4w
XSwgInN0ZGV2IjogNjgwNzU2LjA1NTczMTcyMTIsICJhdmciOiAxMzUxMTY4NC40LCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZSI6IHsibWluIjogMTIxNS4zNDY5OTk5OTAyODgy
LCAibWF4IjogMTM0MC41MjEwMDAwMDU1Mzc2LCAibWVkaWFuIjogMTMyMy41MDI1MDAwMDMwODcz
LCAidmFsdWVzIjogWzEyMjIuNTU5OTk5OTk0NzAwOCwgMTMzNC43NjAwMDAwMjcwMTc3LCAxMzE1
LjczOTAwMDAxMjM5OTYsIDEzMzcuMjA1OTk5OTk2NTEzMSwgMTIxNS4zNDY5OTk5OTAyODgyLCAx
MzQwLjUyMTAwMDAwNTUzNzYsIDEyMjEuODQzMDAwMDA2NjI5MiwgMTMzNy4yMzAwMDAwMDQ2Mzgs
IDEyMTkuMDM3MDAwMDAyNTcyMywgMTMzMi45NjY5OTk5OTQ4MjM3LCAxMzM3LjIxODAwMDAwMDU3
NTYsIDEzMzUuMzQ2MDAwMDA3MTIxLCAxMjgyLjA0OTk5OTk3OTc5MDMsIDEyODYuMTUyMDAwMDE1
MTM1OSwgMTI4OC45NTAwMDAwMTY0ODQ0LCAxMzM1LjY4ODk5OTk5OTU0NzQsIDEzMzEuMjY1OTk5
OTkzNzc1LCAxMzM5LjEzMDAwMDAwNzU3MTcsIDEyNjguODk5OTk5OTk1NDgzLCAxMjcyLjA4NDAw
MDAyNTY0M10sICJzdGRldiI6IDQ2LjcyMTY5NjQwOTk3MDM5LCAiYXZnIjogMTI5Ny42OTk3NTAw
MDM4MTI2LCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZTpNYWxsb2MiOiB7Im1pbiI6
IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwg
InVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpNYWxsb2MiOiB7Im1pbiI6IDAu
MCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVu
aXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpKU0hlYXAiOiB7Im1pbiI6IDEwNjE3
MjE2LjAsICJtYXgiOiAxMzY2NDcwMC4wLCAibWVkaWFuIjogMTM2NjEzMjguMCwgInZhbHVlcyI6
IFsxMzY2NDU5Ni4wLCAxMzY2NDcwMC4wLCAxMDYxNzIxNi4wLCAxMzY1OTk0OC4wLCAxMzY1OTky
NC4wLCAxMzY2MDQ4OC4wLCAxMzY2MDU3Mi4wLCAxMzY2MTA0NC4wLCAxMzY2MTM1Ni4wLCAxMzY2
MTMwMC4wLCAxMzY2MDk1Mi4wLCAxMzY1ODc2OC4wLCAxMzY2MjExMi4wLCAxMzY2MDQwNC4wLCAx
MzY2MTU5Mi4wLCAxMzY2MTc0MC4wLCAxMzY2MjIzNi4wLCAxMzY2MTg4MC4wLCAxMzY2NDI1Ni4w
LCAxMzY2MjU0NC4wXSwgInN0ZGV2IjogNjgwNzQ2Ljg1NTgyMzI5NzIsICJhdmciOiAxMzUwOTM4
MS40MDAwMDAwMDIsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAi
YnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMifSwg
eyJ0aW1lc3RhbXAiOiAxMzUwOTI4NjA1LCAid2Via2l0LXJldmlzaW9uIjogIjEzMjA4OSIsICJy
ZXN1bHRzIjogeyJCaW5kaW5ncy9nYy1taW5pLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJt
YXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0Ijog
ImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1taW5pLXRyZWUiOiB7Im1pbiI6IDExNTkuNDQ2MDAwMDA1
MTE4NSwgIm1heCI6IDEyMDYuNTk2MDAwMDAzNjI4NCwgIm1lZGlhbiI6IDExNzIuNzgyNTAwMDEy
NTQ1LCAidmFsdWVzIjogWzExODguNzQzMDAwMDA2MDcwNCwgMTE3NC41OTcwMDAwMDQ3MjM3LCAx
MjA2LjU5NjAwMDAwMzYyODQsIDExNzcuNTU2MDAwMDA5NjQ0OCwgMTE3OS41NTEwMDAwMDgzNTk2
LCAxMTcyLjMyOTAwMDAyMjcyOCwgMTE3My4yMzYwMDAwMDIzNjE4LCAxMTYzLjA3MTk5OTk5NTcz
NjQsIDExNjguNDYyMDAwMDAxNDU0NywgMTE2NS41NTQwMDAwMDY1MjMsIDExNjguMjc2MDAwMDEx
MjQ2NywgMTE2Ny45MTc5OTk5OTE5MTQzLCAxMTk1LjA3MjAwMDAwMjI1NTcsIDExOTguNTc0MDAw
MDA5MTAyNywgMTIwMS42MDgwMDAwMDMwMzQyLCAxMTY4LjU5NDAwMDAxNzAzNzYsIDExNzQuMjU4
MDAwMDEzNjUxMywgMTE2My40NDUwMDAwMTI4NzA5LCAxMTY0Ljg4Njk5OTk5MTcyMjQsIDExNTku
NDQ2MDAwMDA1MTE4NV0sICJzdGRldiI6IDE0LjAxMTA0MjM5NzYxMTAwMiwgImF2ZyI6IDExNzYu
NTg4NzAwMDA1OTU5MywgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdCI6IHsibWlu
IjogODE3LjU1NTAwMDAxNjAwMDEsICJtYXgiOiA4ODEuMTU3MDAwMDI1MjY4NiwgIm1lZGlhbiI6
IDgyNi4zMjE5OTk5OTM1MjQ1LCAidmFsdWVzIjogWzg1Mi44NjM5OTk5ODU4NTY5LCA4ODEuMTU3
MDAwMDI1MjY4NiwgODQwLjM3OTk5OTk3OTYzMiwgODM1LjYzMDk5OTk5NDQ2NDIsIDgzNy4wNzMw
MDAwMDI0MTk2LCA4MjYuODc0OTk5OTk4ODM1OCwgODI2LjE5MTAwMDAwMDEwOCwgODI2LjgzMjk5
OTk5OTE2OTMsIDgyOS41NTU5OTk5ODI0MDM2LCA4MjYuMTQ2MDAwMDA2NzAxOCwgODI2LjQ1Mjk5
OTk4Njk0MSwgODI0LjQ1NDk5OTk5NDQ4NjYsIDgyNS4yNTQwMDAwMjQ4NywgODIwLjk5MzAwMDAw
MTE4MDksIDgyNS43MzQ5OTk5OTEyNTQ5LCA4MjUuNjA4OTk5OTkyMjU1MSwgODI3Ljg4MTk5OTk4
MzIxOTQsIDgyMy43NzMwMDAwMTA5ODc3LCA4MTcuNTU1MDAwMDE2MDAwMSwgODIyLjQ3Mjk5OTk3
ODM0NDldLCAic3RkZXYiOiAxNC4xMjY2NTkzMjE3NjA4MzEsICJhdmciOiA4MzEuMTQ0Mzk5OTk3
NzIsICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjogMjA3
NzM0NjguMCwgIm1heCI6IDIwNzc3ODY0LjAsICJtZWRpYW4iOiAyMDc3NjAxMC4wLCAidmFsdWVz
IjogWzIwNzc1MDI4LjAsIDIwNzczOTMyLjAsIDIwNzc1MjQwLjAsIDIwNzc0MDYwLjAsIDIwNzc1
ODI4LjAsIDIwNzc0NDI0LjAsIDIwNzc2MjQ0LjAsIDIwNzc0MzEyLjAsIDIwNzc2MTkyLjAsIDIw
Nzc1MDg4LjAsIDIwNzc2ODUyLjAsIDIwNzczNDY4LjAsIDIwNzc2MzI4LjAsIDIwNzc2Mzk2LjAs
IDIwNzc3ODY0LjAsIDIwNzc1NDMyLjAsIDIwNzc3NDA4LjAsIDIwNzc3MDA0LjAsIDIwNzc3NjY0
LjAsIDIwNzc3ODIwLjBdLCAic3RkZXYiOiAxMzY3LjY3NjIzMTMwNzczNDMsICJhdmciOiAyMDc3
NTgyOS4yLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlOkpTSGVhcCI6
IHsibWluIjogMTA2MTk0ODAuMCwgIm1heCI6IDEzNjY3MDA0LjAsICJtZWRpYW4iOiAxMzY2MzY4
OC4wLCAidmFsdWVzIjogWzEzNjY2OTQ0LjAsIDEzNjY3MDA0LjAsIDEwNjE5NDgwLjAsIDEzNjYy
MzMyLjAsIDEzNjYyNTY4LjAsIDEzNjYyNTkyLjAsIDEzNjYyODAwLjAsIDEzNjYzMzA4LjAsIDEz
NjYzMzEyLjAsIDEzNjYzOTY4LjAsIDEzNjYzNjI0LjAsIDEzNjYwNzI0LjAsIDEzNjY1MDc2LjAs
IDEzNjYyOTEyLjAsIDEzNjY0MTY0LjAsIDEzNjY0MDQ4LjAsIDEzNjY0MjI4LjAsIDEzNjYzNzUy
LjAsIDEzNjY2Mzc2LjAsIDEzNjY0NDg0LjBdLCAic3RkZXYiOiA2ODA3NTYuMTQ5NDE5MTI3OCwg
ImF2ZyI6IDEzNTExNjg0Ljc5OTk5OTk5OSwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2dj
LXRyZWUiOiB7Im1pbiI6IDEyODMuMjk1MDAwMDAxMDg5NiwgIm1heCI6IDEzNjYuNTUxOTk5OTky
MjI1MywgIm1lZGlhbiI6IDEzMDQuMDYxNTAwMDA2MzU1MywgInZhbHVlcyI6IFsxMzM5LjcxMjAw
MDAxNTQyNDYsIDEyOTAuNDYyMDAwMDA0NDgxNSwgMTMzMS4wODU5OTk5OTEwNDYzLCAxMjk5LjMy
MjAwMDAwNjIxMzgsIDEzNjYuNTUxOTk5OTkyMjI1MywgMTI4OS41ODE5OTk5OTc2MDg0LCAxMzYw
Ljg3MDk5OTk4MjU4MDUsIDEzMTAuMjk5OTk5OTgyODE3LCAxMzY1LjEyODAwMDAwNDkxNTUsIDEy
ODMuMjk1MDAwMDAxMDg5NiwgMTMxMi4zOTk5OTk5OTUyNTAzLCAxMjk3LjY2ODk5OTk5MjMxMSwg
MTI5My4wNDIwMDAwMDQ3ODg5LCAxMzA3LjUyODAwMDAwNDgyMjQsIDEzMDAuNTk1MDAwMDA3ODg4
MywgMTI4OC40NTEwMDAwMDAzNTAyLCAxMjk5LjY0NDAwMDAxMzM1OSwgMTI5OS4yMzU5OTk5OTE2
NTE2LCAxMzQwLjcwNjk5OTk5NTc0NTcsIDEzNTQuNjgzMDAwMDEyMzAxXSwgInN0ZGV2IjogMjgu
MTg4MTUwNDk1MjM2MTU4LCAiYXZnIjogMTMxNi41MTMyNDk5OTk4NDM1LCAidW5pdCI6ICJtcyJ9
LCAiQmluZGluZ3MvZ2MtdHJlZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1l
ZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJp
bmRpbmdzL2djLWZvcmVzdDpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlh
biI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL2djLWZvcmVzdDpKU0hlYXAiOiB7Im1pbiI6IDEwNjE3MjEyLjAsICJtYXgiOiAxMzY2NDY5
Ni4wLCAibWVkaWFuIjogMTM2NjEwNTAuMCwgInZhbHVlcyI6IFsxMzY2NDU5Ni4wLCAxMzY2NDY5
Ni4wLCAxMDYxNzIxMi4wLCAxMzY1OTk1Mi4wLCAxMzY1OTk4OC4wLCAxMzY2MDQ4NC4wLCAxMzY2
MDU4MC4wLCAxMzY2MDg4OC4wLCAxMzY2MTEyMC4wLCAxMzY2MDk4MC4wLCAxMzY2MDU4MC4wLCAx
MzY1ODU3Mi4wLCAxMzY2MTk4NC4wLCAxMzY2MDMwMC4wLCAxMzY2MTc0OC4wLCAxMzY2MTMzNi4w
LCAxMzY2MjAwOC4wLCAxMzY2MTQ0NC4wLCAxMzY2NDAwOC4wLCAxMzY2MjE4NC4wXSwgInN0ZGV2
IjogNjgwNzEyLjg2MTM1MjUyMSwgImF2ZyI6IDEzNTA5MjMzLjAwMDAwMDAwNCwgInVuaXQiOiAi
Ynl0ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5r
IiwgImNocm9taXVtLXJldmlzaW9uIjogIjE2Mjk4MyJ9LCB7InRpbWVzdGFtcCI6IDEzNTA5Mjg2
ODMsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMyMDg5IiwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2dj
LW1pbmktdHJlZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAu
MCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0s
ICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2dj
LW1pbmktdHJlZSI6IHsibWluIjogMTIyOC41MjY5OTk5OTkzMDM0LCAibWF4IjogMTI4NC4yMzI5
OTk5ODM5NDIxLCAibWVkaWFuIjogMTI1Ni40ODA5OTk5ODk0MzUsICJ2YWx1ZXMiOiBbMTIyOC41
MjY5OTk5OTkzMDM0LCAxMjg0LjIzMjk5OTk4Mzk0MjEsIDEyNTYuMjExOTk5OTc4NDA0NSwgMTI4
MS4wMTkwMDAwMTYzODU3LCAxMjYwLjk0MDk5OTk4NTkwNTQsIDEyNzkuMDg5MDAwMDE3ODQ3OSwg
MTI1Ni43NTAwMDAwMDA0NjU3LCAxMjc5LjgxNTAwMDAxNjI0MjMsIDEyNTQuODg5MDAwMDAzNDU5
LCAxMjc0LjgwODk5OTk5NTAwMjUsIDEyNzguNDE0MDAwMDAwMzM5LCAxMjgyLjQyMzAwMDAyNjAy
ODYsIDEyNDUuNDg4OTk5OTkzNTQwMywgMTI1OS41MjI5OTk5ODYwNzQ5LCAxMjQ1LjQ4NTk5OTk5
OTgwMDcsIDEyNTMuNzU2OTk5OTk4NTg2MywgMTI1NS45NjE5OTk5OTU2MzQsIDEyNTIuMDU0OTk5
OTg5OTIzLCAxMjQ4LjI1MTAwMDAxMTgwNTQsIDEyNDkuNTcyMDAwMDAwNjI1OF0sICJzdGRldiI6
IDE1LjYyNjA2NzI4MjY5MTY0NSwgImF2ZyI6IDEyNjEuMzYwNzk5OTk5OTY1OCwgInVuaXQiOiAi
bXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdCI6IHsibWluIjogODI3Ljg4Njk5OTk5MjE4ODEsICJt
YXgiOiA4NDAuMzU3OTk5OTg2NzM2MSwgIm1lZGlhbiI6IDgzMi41NTU5OTk5OTM5Mjg3LCAidmFs
dWVzIjogWzgzOS40MzQwMDAwMjMxNzUsIDg0MC4wMzY5OTk5ODcyMDU1LCA4NDAuMzU3OTk5OTg2
NzM2MSwgODM0LjEwNDk5OTk4NzE3NTcsIDgzMy40MDg5OTk5ODQzODU0LCA4MzEuNzU4MDAwMDE0
ODE1NSwgODMyLjgyNDk5OTk5MDQwNzQsIDgzMC41MDUwMDAwMTk5MTE3LCA4MzYuODA2OTk5OTg1
MTI4NiwgODI5LjYzMTAwMDAwMDUxNzgsIDgyNy44ODY5OTk5OTIxODgxLCA4MzUuMTQxOTk5OTk2
MjY3MywgODI4LjIzNzk5OTk4NzMyMjgsIDgzMi4xMDgwMDAwMDIzMzU4LCA4MjguOTQ5MDAwMDE3
MDE5LCA4MzIuMjg2OTk5OTk3NDUsIDgzMy43MzE5OTk5OTkxNDUsIDgyOS4yMjg5OTk5OTUzOTM3
LCA4MjguNjA3MDAwMDAzMTAzMiwgODMzLjIzNDAwMDAxOTcyOTFdLCAic3RkZXYiOiAzLjg3NDEz
Nzc1NDYwOTg4MSwgImF2ZyI6IDgzMi45MTQwOTk5OTk0NzA0LCAidW5pdCI6ICJtcyJ9LCAiQmlu
ZGluZ3MvZ2MtdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczNDY4LjAsICJtYXgiOiAyMDc3Nzg2
NC4wLCAibWVkaWFuIjogMjA3NzYwMTAuMCwgInZhbHVlcyI6IFsyMDc3NTAyOC4wLCAyMDc3Mzkz
Mi4wLCAyMDc3NTI0MC4wLCAyMDc3NDA2MC4wLCAyMDc3NTgyOC4wLCAyMDc3NDQyNC4wLCAyMDc3
NjI0NC4wLCAyMDc3NDMxMi4wLCAyMDc3NjE5Mi4wLCAyMDc3NTA4OC4wLCAyMDc3Njg1Mi4wLCAy
MDc3MzQ2OC4wLCAyMDc3NjMyOC4wLCAyMDc3NjM5Ni4wLCAyMDc3Nzg2NC4wLCAyMDc3NTQzMi4w
LCAyMDc3NzQwOC4wLCAyMDc3NzAwNC4wLCAyMDc3NzY2NC4wLCAyMDc3NzgyMC4wXSwgInN0ZGV2
IjogMTM2Ny42NzYyMzEzMDc3MzQzLCAiYXZnIjogMjA3NzU4MjkuMiwgInVuaXQiOiAiYnl0ZXMi
fSwgIkJpbmRpbmdzL2djLW1pbmktdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDEwNjE5NDgwLjAsICJt
YXgiOiAxMzY2NzAwNC4wLCAibWVkaWFuIjogMTM2NjM2ODguMCwgInZhbHVlcyI6IFsxMzY2Njk0
NC4wLCAxMzY2NzAwNC4wLCAxMDYxOTQ4MC4wLCAxMzY2MjMzMi4wLCAxMzY2MjU2OC4wLCAxMzY2
MjU5Mi4wLCAxMzY2MjgwMC4wLCAxMzY2MzMwOC4wLCAxMzY2MzMxMi4wLCAxMzY2Mzk2OC4wLCAx
MzY2MzYyNC4wLCAxMzY2MDcyNC4wLCAxMzY2NTA3Ni4wLCAxMzY2MjkxMi4wLCAxMzY2NDE2NC4w
LCAxMzY2NDA0OC4wLCAxMzY2NDIyOC4wLCAxMzY2Mzc1Mi4wLCAxMzY2NjM3Ni4wLCAxMzY2NDQ4
NC4wXSwgInN0ZGV2IjogNjgwNzU2LjE0OTQxOTEyNzgsICJhdmciOiAxMzUxMTY4NC43OTk5OTk5
OTksICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlIjogeyJtaW4iOiAxMjM3LjA3
Mjk5OTk5NjU5ODgsICJtYXgiOiAxMjc1LjkyNDk5OTk5NDQ1ODYsICJtZWRpYW4iOiAxMjU0LjM4
NzQ5OTk5NzM5MjMsICJ2YWx1ZXMiOiBbMTIzNy4wNzI5OTk5OTY1OTg4LCAxMjQxLjQ0MTk5OTk5
ODY0MjEsIDEyNzUuOTI0OTk5OTk0NDU4NiwgMTI0NC42MjAwMDAwMTIyMTksIDEyNDAuNDE2MDAw
MDE1MTAyMywgMTI0NC41ODYwMDAwMTUyNjA3LCAxMjQyLjk0Mjk5OTk5MDE5MTMsIDEyNDguOTI4
MDAwMDE1NDM5NSwgMTI0OC40NDAwMDAwMjQ4NTcsIDEyNTUuODI5MDAwMDAxNTQwNCwgMTI2MC40
MDgwMDAwMDE5MTY3LCAxMjYxLjY0Mzk5OTk4Mzc4OTQsIDEyNjAuODUxOTk5OTc3NjAzNiwgMTI1
OC4xOTkwMDAwMDM1MTQ4LCAxMjU5Ljg3NTk5OTk5NjQzODYsIDEyNjEuODYxOTk5OTg0ODMwNiwg
MTI2OS41MjY5OTk5OTY3NDIyLCAxMjY0LjU0MDk5OTk4MjI3MzIsIDEyNDkuOTU2OTk5OTkyNzE5
LCAxMjUyLjk0NTk5OTk5MzI0NDJdLCAic3RkZXYiOiAxMC41MDkwODU2MjI0NjYxNzUsICJhdmci
OiAxMjU0LjAwMDY5OTk5ODg2ODksICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy10cmVlOk1h
bGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjog
WzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4w
LCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0Ok1hbGxv
YyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAi
YXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtZm9yZXN0OkpTSGVhcCI6
IHsibWluIjogMTA2MTcyMjAuMCwgIm1heCI6IDEzNjY0NzAwLjAsICJtZWRpYW4iOiAxMzY2MTA1
NC4wLCAidmFsdWVzIjogWzEzNjY0NTk2LjAsIDEzNjY0NzAwLjAsIDEwNjE3MjIwLjAsIDEzNjU5
OTYwLjAsIDEzNjU5OTkyLjAsIDEzNjYwNDg4LjAsIDEzNjYwNTg4LjAsIDEzNjYwODkyLjAsIDEz
NjYxMTI0LjAsIDEzNjYwOTg0LjAsIDEzNjYwNTg4LjAsIDEzNjU4NTgwLjAsIDEzNjYxOTkyLjAs
IDEzNjYwMzA4LjAsIDEzNjYxNzUyLjAsIDEzNjYxMzQwLjAsIDEzNjYyMDA4LjAsIDEzNjYxNDQ0
LjAsIDEzNjY0MDA4LjAsIDEzNjYyMTg0LjBdLCAic3RkZXYiOiA2ODA3MTIuMDA5NzY3MjAzNiwg
ImF2ZyI6IDEzNTA5MjM3LjM5OTk5OTk5OSwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6
ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9u
IjogIjE2Mjk4MyJ9LCB7InRpbWVzdGFtcCI6IDEzNTA5Mjg5MDIsICJ3ZWJraXQtcmV2aXNpb24i
OiAiMTMyMDg5IiwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2djLW1pbmktdHJlZTpNYWxsb2MiOiB7
Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6
IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLW1pbmktdHJlZSI6IHsibWluIjog
MTA3MS45NjAwMDAwMDExMjcsICJtYXgiOiAxMDkyLjI5ODk5OTk4MTcyMTksICJtZWRpYW4iOiAx
MDc4LjcxMjk5OTk5NTMzMjIsICJ2YWx1ZXMiOiBbMTA4Ni45NjgwMDAwMTc4MDUsIDEwNzguNDQz
MDAwMDA1NzkxLCAxMDgxLjIyMzk5OTk5NDEwODUsIDEwOTEuMTE1OTk5OTk1OTYzNiwgMTA5Mi4x
MzEwMDAwMTIxNTkzLCAxMDc4Ljk4Mjk5OTk4NDg3MzUsIDEwOTIuMjk4OTk5OTgxNzIxOSwgMTA4
My4xNTA5OTk5OTg5MDY2LCAxMDkwLjEzOTAwMDAwNzE4NDIsIDEwNzkuNjg1MDAwMDA0MjQ2OCwg
MTA3NS42ODEwMDAwMTY2Mjk3LCAxMDc0LjI0MzAwMDAxMDAyODUsIDEwNzYuOTYyMDAwMDIxMDEy
NSwgMTA3OC4zNjg5OTk5OTUyOTEyLCAxMDc2Ljk3MjAwMDAwOTg0NiwgMTA3OS4wNDE5OTk5OTc1
NzEsIDEwNzEuOTYwMDAwMDAxMTI3LCAxMDc3LjY1MjAwMDAwNzIxOTYsIDEwNzYuNjAwMDAwMDAw
MzI2LCAxMDczLjIyMjk5OTk4NDg2NDFdLCAic3RkZXYiOiA2LjQwMjAwOTQxNDU4MTc5MSwgImF2
ZyI6IDEwODAuNzQyMTUwMDAyMzMzNiwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVz
dCI6IHsibWluIjogODYxLjYwNjk5OTk5ODkxMjIsICJtYXgiOiA4NzkuMTM0OTk5OTk1NTg1NSwg
Im1lZGlhbiI6IDg2OC45ODA0OTk5ODg1MzgyLCAidmFsdWVzIjogWzg3OS4xMzQ5OTk5OTU1ODU1
LCA4NzEuMTY5OTk5OTk4NTI4NSwgODc0Ljc5NDAwMDAwMzAyMTIsIDg3My44MTIwMDAwMDUyNzMx
LCA4NzUuODM4OTk5OTg1NzE3MiwgODcxLjUyNDAwMDAxNjUwNjgsIDg2OS40NDk5OTk5OTgzMjM2
LCA4NjkuMDM5OTk5OTkwNDkxMiwgODYxLjYwNjk5OTk5ODkxMjIsIDg2OC45MjA5OTk5ODY1ODUy
LCA4NjguMjA3OTk5OTk5ODY3OCwgODczLjYyOTk5OTk4NzMxNTQsIDg2Ni45NzgwMDAwMDU0NzQz
LCA4NjYuNTkzMDAwMDEzMzgxMiwgODY2LjM4NDAwMDAyMjY2MjgsIDg3NS43NzA5OTk5OTE4MDA2
LCA4NjcuNzU0OTk5OTg0NzU0MiwgODY3Ljg1NDk5OTk4OTUwNCwgODY3LjM3MjAwMDAwNzg5MDIs
IDg2NS4xNzAwMDAwMDQ1ODIxXSwgInN0ZGV2IjogNC4zMjE5ODczMzcwNDg5ODYsICJhdmciOiA4
NzAuMDUwMzk5OTk5MzA4OSwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLXRyZWU6SlNIZWFw
IjogeyJtaW4iOiAyMDc3MzQ2OC4wLCAibWF4IjogMjA3Nzc4NjQuMCwgIm1lZGlhbiI6IDIwNzc2
MDEwLjAsICJ2YWx1ZXMiOiBbMjA3NzUwMjguMCwgMjA3NzM5MzIuMCwgMjA3NzUyNDAuMCwgMjA3
NzQwNjAuMCwgMjA3NzU4MjguMCwgMjA3NzQ0MjQuMCwgMjA3NzYyNDQuMCwgMjA3NzQzMTIuMCwg
MjA3NzYxOTIuMCwgMjA3NzUwODguMCwgMjA3NzY4NTIuMCwgMjA3NzM0NjguMCwgMjA3NzYzMjgu
MCwgMjA3NzYzOTYuMCwgMjA3Nzc4NjQuMCwgMjA3NzU0MzIuMCwgMjA3Nzc0MDguMCwgMjA3Nzcw
MDQuMCwgMjA3Nzc2NjQuMCwgMjA3Nzc4MjAuMF0sICJzdGRldiI6IDEzNjcuNjc2MjMxMzA3NzM0
MywgImF2ZyI6IDIwNzc1ODI5LjIsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1taW5p
LXRyZWU6SlNIZWFwIjogeyJtaW4iOiAxMDYxOTQ4MC4wLCAibWF4IjogMTM2NjcwMDQuMCwgIm1l
ZGlhbiI6IDEzNjYzNjg4LjAsICJ2YWx1ZXMiOiBbMTM2NjY5NDQuMCwgMTM2NjcwMDQuMCwgMTA2
MTk0ODAuMCwgMTM2NjIzMzIuMCwgMTM2NjI1NjguMCwgMTM2NjI1OTIuMCwgMTM2NjI4MDAuMCwg
MTM2NjMzMDguMCwgMTM2NjMzMTIuMCwgMTM2NjM5NjguMCwgMTM2NjM2MjQuMCwgMTM2NjA3MjQu
MCwgMTM2NjUwNzYuMCwgMTM2NjI5MTIuMCwgMTM2NjQxNjQuMCwgMTM2NjQwNDguMCwgMTM2NjQy
MjguMCwgMTM2NjM3NTIuMCwgMTM2NjYzNzYuMCwgMTM2NjQ0ODQuMF0sICJzdGRldiI6IDY4MDc1
Ni4xNDk0MTkxMjc4LCAiYXZnIjogMTM1MTE2ODQuNzk5OTk5OTk5LCAidW5pdCI6ICJieXRlcyJ9
LCAiQmluZGluZ3MvZ2MtdHJlZSI6IHsibWluIjogMTE2Mi40MjA5OTk5ODYzNTI0LCAibWF4Ijog
MTE5Ni4xMTA5OTk5OTc0NzI0LCAibWVkaWFuIjogMTE3My4wMzI5OTk5OTkxMjI3LCAidmFsdWVz
IjogWzExNjkuMDE1OTk5OTk5ODI4NiwgMTE2Mi40MjA5OTk5ODYzNTI0LCAxMTk2LjExMDk5OTk5
NzQ3MjQsIDExNjYuMTA2MDAwMDE4NzcxNywgMTE3NC45NDIwMDAwMTIzNzkxLCAxMTY5Ljc5MzAw
MDAwODIxMjQsIDExNjIuNjQxMDAwMDAyNjIyNiwgMTE2Ny42MTk5OTk5OTI4OTQsIDExNjYuOTUw
OTk5OTkxOTY4MywgMTE2OC40NjMwMDAwMDkwNjkyLCAxMTY4Ljk5NDAwMDAwNjkzMjgsIDExNzIu
NzMwOTk5OTk4NzQ4MywgMTE3Ny43NDMwMDAwMDc0NjczLCAxMTc2LjA3MDk5OTk5NDQwODMsIDEx
NzYuNzI0OTk5OTk3NTMyLCAxMTczLjMzNDk5OTk5OTQ5NywgMTE3My4zNDgwMDAwMTExNzQsIDEx
NzYuMzY4OTk5OTkzNDI4NiwgMTE3NS4yMTYwMDAwMDMyNzQ1LCAxMTc0LjY3ODk5OTk4ODgyNzld
LCAic3RkZXYiOiA3LjIyNzE1MDMyODc4NjI1NCwgImF2ZyI6IDExNzIuNDYzNzUwMDAxMDQzLCAi
dW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2MtdHJlZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1h
eCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6
IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0
ZXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdDpKU0hlYXAiOiB7Im1pbiI6IDEwNjE3MjIwLjAsICJt
YXgiOiAxMzY2NDcwMC4wLCAibWVkaWFuIjogMTM2NjEwNTQuMCwgInZhbHVlcyI6IFsxMzY2NDYw
MC4wLCAxMzY2NDcwMC4wLCAxMDYxNzIyMC4wLCAxMzY1OTk2OC4wLCAxMzY1OTk5Mi4wLCAxMzY2
MDQ4OC4wLCAxMzY2MDU4OC4wLCAxMzY2MDg5Mi4wLCAxMzY2MTEyNC4wLCAxMzY2MDk4NC4wLCAx
MzY2MDU4OC4wLCAxMzY1ODU4MC4wLCAxMzY2MTk5Mi4wLCAxMzY2MDMwOC4wLCAxMzY2MTc1Ni4w
LCAxMzY2MTM0NC4wLCAxMzY2MjAxNi4wLCAxMzY2MTQ0OC4wLCAxMzY2NDAxMi4wLCAxMzY2MjE4
OC4wXSwgInN0ZGV2IjogNjgwNzEyLjQ4MTk5ODI3NTMsICJhdmciOiAxMzUwOTIzOS40MDAwMDAw
MDIsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjog
IndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5ODMifSwgeyJ0aW1lc3Rh
bXAiOiAxMzUwOTI4OTgzLCAid2Via2l0LXJldmlzaW9uIjogIjEzMjA4OSIsICJyZXN1bHRzIjog
eyJCaW5kaW5ncy9nYy1taW5pLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAs
ICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0s
ICJCaW5kaW5ncy9nYy1taW5pLXRyZWUiOiB7Im1pbiI6IDExMzQuNDMxMDAwMDEzMTM3MiwgIm1h
eCI6IDExNzIuOTUzMDAwMDAxMTQzNywgIm1lZGlhbiI6IDExNTcuNDM0NDk5OTk3MTgsICJ2YWx1
ZXMiOiBbMTE1OS4wODM5OTk5ODQ0MzIsIDExNjAuNjQ4OTk5OTk3NjQ3NSwgMTE1Ni44MjU5OTk5
OTEyNjk4LCAxMTYwLjMzNDk5OTk5MzIxMDcsIDExNTguMTQ4MDAwMDE2ODA4NSwgMTE1NC4wMjMw
MDAwMTAwNTY0LCAxMTU4LjA0MzAwMDAwMzA5MDEsIDExNTAuNDI0OTk5OTk5ODEzNywgMTE1My45
NTcwMDAwMDIyNjUsIDExNTQuODgwOTk5OTk0OTI5OSwgMTE0Ny42OTc5OTk5ODYxMjE0LCAxMTQy
LjgzNzAwMDAyMTI0NTMsIDExNDMuMDg0OTk5OTg4Nzg2OSwgMTE0MS4zNDUwMDAwMTA5MTUsIDEx
MzQuNDMxMDAwMDEzMTM3MiwgMTE3Mi45NTMwMDAwMDExNDM3LCAxMTcyLjE4OTk5OTk4Mjk0NzUs
IDExNjkuNTY1OTk5OTk2ODQ4NCwgMTE3Mi4xOTg5OTk5OTMyNzAzLCAxMTY5LjQ3Nzk5OTk5NjE2
MV0sICJzdGRldiI6IDExLjE0MjY0Nzg4NjYyNTUyLCAiYXZnIjogMTE1Ni42MDc2NDk5OTkyMDUs
ICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3QiOiB7Im1pbiI6IDgzMC45NzQwMDAw
MTEzMzc5LCAibWF4IjogODQ3LjM1NzAwMDAyMDU2NTUsICJtZWRpYW4iOiA4MzguMzY3NDk5OTkz
MTgyNywgInZhbHVlcyI6IFs4NDcuMzU3MDAwMDIwNTY1NSwgODQxLjA5OTAwMDAxMjAzNjQsIDg0
My43MTc5OTk5ODkxNjY5LCA4MzguNDA0OTk5OTg3Njg3OSwgODM5LjE4NTk5OTk5NzQyNTgsIDgz
Ni42MzYwMDAwMjE4MjY1LCA4MzUuNTI2OTk5OTg4MzYwMywgODQ0Ljg4NDk5OTk5ODYxMjMsIDgz
My4xMjg5OTk5NzY5MDY5LCA4MzAuOTc0MDAwMDExMzM3OSwgODQyLjM0NjAwMDAxOTQ2MDksIDgz
OC4zMjk5OTk5OTg2Nzc1LCA4MzkuODQ5OTk5OTg5MzgyOSwgODM2Ljg3NjAwMDAxNTc2MzYsIDgz
Mi40OTQwMDAwMDIwNDMzLCA4MzcuOTQ4OTk5OTc4ODM0OCwgODQ0LjU0Mjk5OTk4NDY5NjUsIDgz
OS43ODcwMDAwMDQ0MzUsIDgzNC45OTM5OTk5NzUyNjc4LCA4MzMuNjgzMDAwMDA0Mzg0N10sICJz
dGRldiI6IDQuNDc1OTQ1OTA1MjY4NTg2LCAiYXZnIjogODM4LjU4ODM5OTk5ODg0MzgsICJ1bml0
IjogIm1zIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjogMjA3NzM0NjguMCwg
Im1heCI6IDIwNzc3ODY0LjAsICJtZWRpYW4iOiAyMDc3NjAxMC4wLCAidmFsdWVzIjogWzIwNzc1
MDI4LjAsIDIwNzczOTMyLjAsIDIwNzc1MjQwLjAsIDIwNzc0MDYwLjAsIDIwNzc1ODI4LjAsIDIw
Nzc0NDI0LjAsIDIwNzc2MjQ0LjAsIDIwNzc0MzA4LjAsIDIwNzc2MTkyLjAsIDIwNzc1MDg4LjAs
IDIwNzc2ODUyLjAsIDIwNzczNDY4LjAsIDIwNzc2MzI4LjAsIDIwNzc2Mzk2LjAsIDIwNzc3ODY0
LjAsIDIwNzc1NDMyLjAsIDIwNzc3NDA4LjAsIDIwNzc3MDA0LjAsIDIwNzc3NjY0LjAsIDIwNzc3
ODIwLjBdLCAic3RkZXYiOiAxMzY3LjkxMDA0NjI4ODE2NjUsICJhdmciOiAyMDc3NTgyOS4wMDAw
MDAwMDQsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1taW5pLXRyZWU6SlNIZWFwIjog
eyJtaW4iOiAxMDYxOTQ4MC4wLCAibWF4IjogMTM2NjcwMDQuMCwgIm1lZGlhbiI6IDEzNjYzNjg4
LjAsICJ2YWx1ZXMiOiBbMTM2NjY5NDQuMCwgMTM2NjcwMDQuMCwgMTA2MTk0ODAuMCwgMTM2NjIz
MzIuMCwgMTM2NjI1NjguMCwgMTM2NjI1OTIuMCwgMTM2NjI4MDAuMCwgMTM2NjMzMDguMCwgMTM2
NjMzMTIuMCwgMTM2NjM5NjguMCwgMTM2NjM2MjQuMCwgMTM2NjA3MjQuMCwgMTM2NjUwNzYuMCwg
MTM2NjI5MTIuMCwgMTM2NjQxNjQuMCwgMTM2NjQwNDguMCwgMTM2NjQyMjguMCwgMTM2NjM3NTIu
MCwgMTM2NjYzNzYuMCwgMTM2NjQ0ODQuMF0sICJzdGRldiI6IDY4MDc1Ni4xNDk0MTkxMjc4LCAi
YXZnIjogMTM1MTE2ODQuNzk5OTk5OTk5LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2Mt
dHJlZSI6IHsibWluIjogMTMzMC4wMzE5OTk5OTgwMjc1LCAibWF4IjogMTQwMy40MjA5OTk5OTU0
MzI4LCAibWVkaWFuIjogMTM3Ny44NzA1MDAwMTQ5Nzg1LCAidmFsdWVzIjogWzEzMzAuMDMxOTk5
OTk4MDI3NSwgMTM5Mi42NzEwMDAwMDg3MDQxLCAxMzYzLjA3MDAwMDAyMTI1MjgsIDEzOTYuNzUw
OTk5OTkyOTQ2MiwgMTMzMS4wMTI5OTk5ODgxNjEsIDEzOTUuMDAyMDAwMDA0NzUxNiwgMTMzNC4x
NTc5OTk5ODMyOTAyLCAxMzkzLjU0MDk5OTk5NzY0LCAxMzM0LjczOTAwMDAxMjYzMjUsIDEzOTQu
Njk3OTk5OTg5MTQ4MiwgMTM5Ny43NDMwMDAwMDg2MzE1LCAxNDAwLjY1OTk5OTk4NDc4MjIsIDEz
MzUuMTIxMDAwMDEwOTg1OSwgMTMzNy41NzkwMDAwMTM2NDc2LCAxMzM3LjQwMDk5OTk5NzA0NCwg
MTM5OS40NTIwMDAwMTIzODg1LCAxNDAyLjYyODAwMDAxMDczNjMsIDE0MDMuNDIwOTk5OTk1NDMy
OCwgMTM1Mi4yNjAwMDAwMTQyMTIsIDEzNTIuMTMzOTk5OTg2MTA4NF0sICJzdGRldiI6IDMwLjI4
MTYyNDgzNjYwNTkxNCwgImF2ZyI6IDEzNjkuMjAzNzAwMDAxNTI2MiwgInVuaXQiOiAibXMifSwg
IkJpbmRpbmdzL2djLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRp
YW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5k
aW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4i
OiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5n
cy9nYy1mb3Jlc3Q6SlNIZWFwIjogeyJtaW4iOiAxMDYxNzIyMC4wLCAibWF4IjogMTM2NjQ3MDAu
MCwgIm1lZGlhbiI6IDEzNjYxMDU0LjAsICJ2YWx1ZXMiOiBbMTM2NjQ2MDAuMCwgMTM2NjQ3MDAu
MCwgMTA2MTcyMjAuMCwgMTM2NTk5NjguMCwgMTM2NTk5OTIuMCwgMTM2NjA0ODguMCwgMTM2NjA1
ODguMCwgMTM2NjA4OTIuMCwgMTM2NjExMjQuMCwgMTM2NjA5ODQuMCwgMTM2NjA1ODguMCwgMTM2
NTg1ODAuMCwgMTM2NjE5OTIuMCwgMTM2NjAzMDguMCwgMTM2NjE3NTYuMCwgMTM2NjEzNDQuMCwg
MTM2NjIwMTYuMCwgMTM2NjE0NDguMCwgMTM2NjQwMTIuMCwgMTM2NjIxODguMF0sICJzdGRldiI6
IDY4MDcxMi40ODE5OTgyNzUzLCAiYXZnIjogMTM1MDkyMzkuNDAwMDAwMDAyLCAidW5pdCI6ICJi
eXRlcyJ9fSwgInBsYXRmb3JtIjogImNocm9taXVtIiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsi
LCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTYyOTgzIn0sIHsidGltZXN0YW1wIjogMTM1MDkyOTA2
NSwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzIwODkiLCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZ2Mt
bWluaS10cmVlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4w
LCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwg
InN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2Mt
bWluaS10cmVlIjogeyJtaW4iOiAxMTU2Ljc5NTk5OTk5NTY2NTYsICJtYXgiOiAxMTg5LjQ0NDAw
MDAxNzgyOTIsICJtZWRpYW4iOiAxMTY3LjI2NjUwMDAwNzgyNjgsICJ2YWx1ZXMiOiBbMTE4OS40
NDQwMDAwMTc4MjkyLCAxMTc2LjA3Njk5OTk4MTg4NzYsIDExNzcuMTU5OTk5OTkyLCAxMTcxLjMx
OTk5OTk5NDAxMTYsIDExODEuMjU1OTk5OTgxNjU4NSwgMTE3MC45MDY5OTk5OTI0Mzk1LCAxMTgw
Ljg4NDk5OTk3OTc1MywgMTE3My43MDQ5OTk5OTM3ODgsIDExNzguMTcyMDAwMDE0NDU2LCAxMTY5
LjY5NzAwMDAwNDgxNjgsIDExNjQuNzk3MDAwMDA0OTEsIDExNjQuODM2MDAwMDEwODM2OSwgMTE2
MS4yOTI5OTk5ODI4MzM5LCAxMTY0LjM3NjAwMDAwMDYyOTYsIDExNjIuNDE5MDAwMDAwMjI3Miwg
MTE2NC4xMzQ5OTk5OTkwNzgsIDExNTkuMTY4OTk5OTkxMzc5NywgMTE1OC44MzcwMDAwMjQ1MDUs
IDExNTYuNzk1OTk5OTk1NjY1NiwgMTE1OC43MjQ5OTk5ODY1ODldLCAic3RkZXYiOiA5LjExNDA4
Mzg5MDE0MjAzNywgImF2ZyI6IDExNjkuMjAwMjk5OTk3NDY0OCwgInVuaXQiOiAibXMifSwgIkJp
bmRpbmdzL2djLWZvcmVzdCI6IHsibWluIjogODA0LjkyNTk5OTk4MjUxNTMsICJtYXgiOiA4Mjku
NDc3OTk5OTk5NjUzNSwgIm1lZGlhbiI6IDgxMC44ODkwMDAwMDAzMTU3LCAidmFsdWVzIjogWzgy
Ny4yNzcwMDAwMDM5NiwgODE3LjI4NzAwMDAxMjU4NCwgODI5LjQ3Nzk5OTk5OTY1MzUsIDgxOC41
MzQ5OTk5OTg1MTkyLCA4MTQuODcyMDAwMDE3MjAzNCwgODA5Ljc3MTAwMDAwMDE4MjUsIDgwOC40
Nzc5OTk5OTE3MzczLCA4MTkuMjMyMDAwMDA4OTIzOSwgODExLjkwOTk5OTk4OTQzODgsIDgwOC41
NzM5OTk5OTUxMzI5LCA4MTIuNDI4OTk5OTgzMjM5OSwgODA3LjE3Njk5OTk4MDU4MzgsIDgxMC42
MzM5OTk5OTQwMjQ2LCA4MDQuOTQ5MDAwMDEyMTI5NSwgODExLjE0NDAwMDAwNjYwNjgsIDgwNC45
MjU5OTk5ODI1MTUzLCA4MTAuNDQwMDAwMDAxMTA4MywgODE0LjgxMTk5OTk5Njg5MTIsIDgxMC40
NDY5OTk5OTYyMDIxLCA4MDcuMTM1MDAwMDEwMDIxXSwgInN0ZGV2IjogNi42NTg1NTc5MzMzMjg4
NjYsICJhdmciOiA4MTIuOTc1MzQ5OTk5MDMzLCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2Mt
dHJlZTpKU0hlYXAiOiB7Im1pbiI6IDIwNzczNDY4LjAsICJtYXgiOiAyMDc3Nzg2NC4wLCAibWVk
aWFuIjogMjA3NzYwMTAuMCwgInZhbHVlcyI6IFsyMDc3NTAyOC4wLCAyMDc3MzkzMi4wLCAyMDc3
NTI0MC4wLCAyMDc3NDA2MC4wLCAyMDc3NTgyOC4wLCAyMDc3NDQyNC4wLCAyMDc3NjI0NC4wLCAy
MDc3NDMxMi4wLCAyMDc3NjE5Mi4wLCAyMDc3NTA4OC4wLCAyMDc3Njg1Mi4wLCAyMDc3MzQ2OC4w
LCAyMDc3NjMyOC4wLCAyMDc3NjM5Ni4wLCAyMDc3Nzg2NC4wLCAyMDc3NTQzMi4wLCAyMDc3NzQw
OC4wLCAyMDc3NzAwNC4wLCAyMDc3NzY2NC4wLCAyMDc3NzgyMC4wXSwgInN0ZGV2IjogMTM2Ny42
NzYyMzEzMDc3MzQzLCAiYXZnIjogMjA3NzU4MjkuMiwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL2djLW1pbmktdHJlZTpKU0hlYXAiOiB7Im1pbiI6IDEwNjE5NDc2LjAsICJtYXgiOiAxMzY2
NzAwNC4wLCAibWVkaWFuIjogMTM2NjM2ODYuMCwgInZhbHVlcyI6IFsxMzY2Njk0NC4wLCAxMzY2
NzAwNC4wLCAxMDYxOTQ3Ni4wLCAxMzY2MjMzMi4wLCAxMzY2MjU2OC4wLCAxMzY2MjU5Mi4wLCAx
MzY2MjgwMC4wLCAxMzY2MzMwOC4wLCAxMzY2MzMxMi4wLCAxMzY2Mzk2OC4wLCAxMzY2MzYyMC4w
LCAxMzY2MDcyNC4wLCAxMzY2NTA3Ni4wLCAxMzY2MjkwOC4wLCAxMzY2NDE2MC4wLCAxMzY2NDA0
NC4wLCAxMzY2NDIyNC4wLCAxMzY2Mzc1Mi4wLCAxMzY2NjM3Ni4wLCAxMzY2NDQ4NC4wXSwgInN0
ZGV2IjogNjgwNzU2LjgwODY0Mjc4OTcsICJhdmciOiAxMzUxMTY4My42MDAwMDAwMDEsICJ1bml0
IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy10cmVlIjogeyJtaW4iOiAxMjEyLjg0OTAwMDAwMzE4
ODgsICJtYXgiOiAxMjQ4LjgwNDk5OTk4MTA3NTUsICJtZWRpYW4iOiAxMjI0LjAwMTUwMDAxMzQw
MDgsICJ2YWx1ZXMiOiBbMTIxOC42ODE5OTk5NzY5Nzk2LCAxMjE1LjA0NTAwMDAxOTAxNzYsIDEy
NDguODA0OTk5OTgxMDc1NSwgMTIxMy4wMjUwMDAwMDQ1NjM1LCAxMjE4LjI4NTk5OTk4ODQzODYs
IDEyMTYuNDk4MDAwMDIzNDIxLCAxMjMyLjQ0OTAwMDAwMjgxNjMsIDEyMTYuMDUwOTk5OTk1Nzg2
NywgMTIxMy4yNzcwMDAwMDI1NjMsIDEyMTIuODQ5MDAwMDAzMTg4OCwgMTIzMC44NjkwMDAwMjA5
MDI2LCAxMjI3LjgxNDk5OTk5MTA5NjYsIDEyMjMuMjIzMDAwMDA4MTQ3MiwgMTIzOC41MTYwMDAw
MTIxNjg3LCAxMjM5Ljk0MzAwMDAyMjMyMiwgMTIxOS4zMDkwMDAwMDczNDI1LCAxMjI4LjU4Njk5
OTk5MDUxMTcsIDEyMzMuMDExOTk5OTgyNDA5MiwgMTIyNC43ODAwMDAwMTg2NTQ0LCAxMjM4Ljc4
OTAwMDAyNDU1MzRdLCAic3RkZXYiOiAxMC41OTY0OTcwODk5MzIzMTksICJhdmciOiAxMjI1LjQ5
MDUwMDAwMzc5OCwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLXRyZWU6TWFsbG9jIjogeyJt
aW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAw
LjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4i
OiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAs
ICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3Q6SlNIZWFwIjogeyJtaW4iOiAx
MDYxNzIxNi4wLCAibWF4IjogMTM2NjQ2OTYuMCwgIm1lZGlhbiI6IDEzNjYxMDU0LjAsICJ2YWx1
ZXMiOiBbMTM2NjQ1OTYuMCwgMTM2NjQ2OTYuMCwgMTA2MTcyMTYuMCwgMTM2NTk5NjAuMCwgMTM2
NTk5ODguMCwgMTM2NjA0ODguMCwgMTM2NjA1ODguMCwgMTM2NjA4OTIuMCwgMTM2NjExMjQuMCwg
MTM2NjA5ODQuMCwgMTM2NjA1ODguMCwgMTM2NTg1ODAuMCwgMTM2NjE5OTIuMCwgMTM2NjAzMDgu
MCwgMTM2NjE3NTYuMCwgMTM2NjEzNDQuMCwgMTM2NjIwMTYuMCwgMTM2NjE0NTIuMCwgMTM2NjQw
MTYuMCwgMTM2NjIxODguMF0sICJzdGRldiI6IDY4MDcxMy4yMzUzODQzMzU0LCAiYXZnIjogMTM1
MDkyMzguNjAwMDAwMDAxLCAidW5pdCI6ICJieXRlcyJ9fSwgInBsYXRmb3JtIjogImNocm9taXVt
IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTYyOTgz
In0sIHsidGltZXN0YW1wIjogMTM1MDkyOTE0NywgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzIwODki
LCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZ2MtbWluaS10cmVlOk1hbGxvYyI6IHsibWluIjogMC4w
LCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5p
dCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlIjogeyJtaW4iOiAxMjY3LjYxMTAw
MDAxNzQ5NTgsICJtYXgiOiAxMzI1Ljc5NDk5OTk4MjQ2MzIsICJtZWRpYW4iOiAxMjc0LjIzODUw
MDAwMTk1NjcsICJ2YWx1ZXMiOiBbMTI5MC40OTEwMDAwMjE1NzUsIDEyODEuNDM4MDAwMDA1NDM3
LCAxMjgyLjY4ODk5OTk4NTExMTksIDEyODYuMTQ4OTk5OTkyMjkyNCwgMTI4NS4wMjEwMDAwMTc4
Nzc3LCAxMjczLjk5NzAwMDAxMTE0OTgsIDEyODguMTA4MDAwMDA3OTIzNywgMTI3OS44MjM5OTk5
OTc0NjEyLCAxMjg3LjkzNjk5OTk4NjQxMzksIDEzMjUuNzk0OTk5OTgyNDYzMiwgMTI3My43NDI5
OTk5OTc5MjEzLCAxMjY4LjgxOTk5OTk5NzUwNCwgMTI2OC45MDUwMDAwMDQ0NTE3LCAxMjY4LjM0
NzAwMDAwNDcyMzcsIDEyNjkuNTc1MDAwMDEyOTkyLCAxMjc0LjQ3OTk5OTk5Mjc2MzYsIDEyNjcu
NjExMDAwMDE3NDk1OCwgMTI3MC45NTI5OTk5OTkyODEsIDEyNzAuMzYxOTk5OTgxMTA1MywgMTI3
MC42NzM5OTk5OTk0MTddLCAic3RkZXYiOiAxMy4zOTc1MjMwNjEwNTA3ODksICJhdmciOiAxMjc5
LjI0NTk1MDAwMDc2OCwgInVuaXQiOiAibXMifSwgIkJpbmRpbmdzL2djLWZvcmVzdCI6IHsibWlu
IjogODE1LjM1Mjk5OTk4MzU4ODIsICJtYXgiOiA4MjguMzY2MDAwMDAxNTUxNiwgIm1lZGlhbiI6
IDgyMC4xOTM1MDAwMTA2NDYsICJ2YWx1ZXMiOiBbODI4LjM2NjAwMDAwMTU1MTYsIDgyNC44ODcw
MDAwMjQzMTg3LCA4MjguMDQzOTk5OTk0NDA2NSwgODIyLjE4NDk5OTk5NzI2MTksIDgyMS45Njk5
OTk5ODk5NjAzLCA4MTguNzczMDAwMDA2MzMxMSwgODE2LjM4MTAwMDAxMTQ2MDksIDgxNi40NDEw
MDAwMDI2NjkyLCA4MjUuMDk1MDAwMDA3NDIyNiwgODE5LjM4OTk5OTk4OTY1MywgODIxLjQ4Mzk5
OTk4NTUwMywgODIzLjA0NzAwMDAxMjU5MzMsIDgxNS4zNTI5OTk5ODM1ODgyLCA4MjAuODkyOTk5
OTk2NDMxMiwgODE5LjQ5NDAwMDAyNDg2MDcsIDgxNS42Mjg5OTk5ODk3MTI2LCA4MTguNDYxMDAw
MDE3MTIzMywgODE5LjM5MzAwMDAxMjQ5NjUsIDgyMi43ODA5OTk5OTUzMDI0LCA4MTguNTQ3OTk5
OTgxMDkyM10sICJzdGRldiI6IDMuNzg5NTMyNzE2NzA4MDc0LCAiYXZnIjogODIwLjgzMDc1MDAw
MTE4NzEsICJ1bml0IjogIm1zIn0sICJCaW5kaW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjog
MjA3NzM0NjguMCwgIm1heCI6IDIwNzc3ODY0LjAsICJtZWRpYW4iOiAyMDc3NjAxMC4wLCAidmFs
dWVzIjogWzIwNzc1MDI4LjAsIDIwNzczOTMyLjAsIDIwNzc1MjQwLjAsIDIwNzc0MDYwLjAsIDIw
Nzc1ODI4LjAsIDIwNzc0NDI0LjAsIDIwNzc2MjQ0LjAsIDIwNzc0MzEyLjAsIDIwNzc2MTkyLjAs
IDIwNzc1MDg4LjAsIDIwNzc2ODUyLjAsIDIwNzczNDY4LjAsIDIwNzc2MzI4LjAsIDIwNzc2Mzk2
LjAsIDIwNzc3ODY0LjAsIDIwNzc1NDMyLjAsIDIwNzc3NDA4LjAsIDIwNzc3MDA0LjAsIDIwNzc3
NjY0LjAsIDIwNzc3ODIwLjBdLCAic3RkZXYiOiAxMzY3LjY3NjIzMTMwNzczNDMsICJhdmciOiAy
MDc3NTgyOS4yLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2MtbWluaS10cmVlOkpTSGVh
cCI6IHsibWluIjogMTA2MTk0ODAuMCwgIm1heCI6IDEzNjY3MDA0LjAsICJtZWRpYW4iOiAxMzY2
MzY4OC4wLCAidmFsdWVzIjogWzEzNjY2OTQ0LjAsIDEzNjY3MDA0LjAsIDEwNjE5NDgwLjAsIDEz
NjYyMzMyLjAsIDEzNjYyNTY4LjAsIDEzNjYyNTkyLjAsIDEzNjYyODAwLjAsIDEzNjYzMzA4LjAs
IDEzNjYzMzEyLjAsIDEzNjYzOTY4LjAsIDEzNjYzNjI0LjAsIDEzNjYwNzI0LjAsIDEzNjY1MDc2
LjAsIDEzNjYyOTEyLjAsIDEzNjY0MTY0LjAsIDEzNjY0MDQ4LjAsIDEzNjY0MjI4LjAsIDEzNjYz
NzUyLjAsIDEzNjY2Mzc2LjAsIDEzNjY0NDg0LjBdLCAic3RkZXYiOiA2ODA3NTYuMTQ5NDE5MTI3
OCwgImF2ZyI6IDEzNTExNjg0Ljc5OTk5OTk5OSwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdz
L2djLXRyZWUiOiB7Im1pbiI6IDExNzguNjU4MDAwMDE4OTEzMywgIm1heCI6IDEyMTQuMDQ2MDAw
MDA4MjM4NSwgIm1lZGlhbiI6IDExODkuOTYyNDk5OTkzMjcxMiwgInZhbHVlcyI6IFsxMTg5Ljkw
Mjk5OTk5MTMxODIsIDExODIuNjA4MDAwMDAyODAxNCwgMTIxNC4wNDYwMDAwMDgyMzg1LCAxMTc4
LjY1ODAwMDAxODkxMzMsIDExNzkuNTY3OTk5OTkyMjg2OCwgMTE4My4wOTU5OTk5OTMzODM5LCAx
MTkwLjc4MTk5OTk5MDU3NjksIDExODIuODYxOTk5OTg2OTI2LCAxMTg1LjE0MzAwMDAwOTcwMjUs
IDExODEuOTM3MDAwMDE1NzUwNSwgMTE4OC45MjgwMDAwMTc3Njc4LCAxMTkwLjE5Njk5OTk4ODk4
NDMsIDExOTEuODE0OTk5OTk4MzE0MywgMTE5My42NTI5OTk5OTQ4MTA3LCAxMTk0LjMzMjk5OTk5
MjE4NDMsIDExODguNTM2MDAwMDAxNDc3LCAxMTkxLjQwNzk5OTk4NDIyMTUsIDExOTAuMTEyMDAw
MDExMTQwNSwgMTE5MC4wMjE5OTk5OTUyMjQyLCAxMTkxLjg3MTk5OTk5NTc4M10sICJzdGRldiI6
IDcuNTQ0MDc0MzM3OTU3NzI5NSwgImF2ZyI6IDExODguOTczOTQ5OTk5NDkwMywgInVuaXQiOiAi
bXMifSwgIkJpbmRpbmdzL2djLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAs
ICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0s
ICJCaW5kaW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJt
ZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJC
aW5kaW5ncy9nYy1mb3Jlc3Q6SlNIZWFwIjogeyJtaW4iOiAxMDYxNzIyMC4wLCAibWF4IjogMTM2
NjQ3MDAuMCwgIm1lZGlhbiI6IDEzNjYxMDUyLjAsICJ2YWx1ZXMiOiBbMTM2NjQ2MDAuMCwgMTM2
NjQ3MDAuMCwgMTA2MTcyMjAuMCwgMTM2NTk5NjguMCwgMTM2NTk5OTIuMCwgMTM2NjA0ODguMCwg
MTM2NjA1ODguMCwgMTM2NjA4OTIuMCwgMTM2NjExMjQuMCwgMTM2NjA5ODAuMCwgMTM2NjA1ODAu
MCwgMTM2NTg1NzIuMCwgMTM2NjE5OTIuMCwgMTM2NjAzMDguMCwgMTM2NjE3NTYuMCwgMTM2NjEz
NDQuMCwgMTM2NjIwMTYuMCwgMTM2NjE0NTIuMCwgMTM2NjM4NzIuMCwgMTM2NjIwNDguMF0sICJz
dGRldiI6IDY4MDcwOC45NjY1NDQzOTM5LCAiYXZnIjogMTM1MDkyMjQuNiwgInVuaXQiOiAiYnl0
ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwg
ImNocm9taXVtLXJldmlzaW9uIjogIjE2Mjk4MyJ9LCB7InRpbWVzdGFtcCI6IDEzNTA5MjkyNTMs
ICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMyMDg5IiwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2djLW1p
bmktdHJlZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwg
InZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJz
dGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLXRy
ZWUiOiB7Im1pbiI6IDExMDguMzEzOTk5OTgyNzgzNiwgIm1heCI6IDExNDUuMjUwOTk5OTc5OTA3
NiwgIm1lZGlhbiI6IDExMTQuNjQyNDk5OTg5NzEzNSwgInZhbHVlcyI6IFsxMTEzLjAzMTAwMDAx
NTMyNTgsIDExMTIuNTExOTk5OTkyNDIxLCAxMTQ1LjI1MDk5OTk3OTkwNzYsIDExMTIuNzc5OTk5
OTk1ODM3LCAxMTEzLjQzOTAwMDAwNzkyOTMsIDExMTQuMTk0MDAwMDIzNDE3MiwgMTExMy42ODE5
OTk5OTU2MDYsIDExMTIuODQ3MDAwMDExMjQzLCAxMTA4LjMxMzk5OTk4Mjc4MzYsIDExMTAuNDI4
MDAwMDE0NTA4MSwgMTExOC44OTA5OTk5OTA5ODEsIDExMjAuNjk2OTk5OTc2NjQ0MywgMTExNC45
Njk5OTk5OTUwODI2LCAxMTE5LjE1NDAwMDAxNDUzMjQsIDExMTkuNDk3OTk5OTg1NDY5NSwgMTEx
NC4zMTQ5OTk5ODQzNDQ1LCAxMTE5LjM3OTk5OTk4OTE3OCwgMTEyMC43NTAwMDAwMDE4NjI2LCAx
MTE4LjMyNzAwMDAwMzc3MzcsIDExMTguOTg5MDAwMDA5NjA1N10sICJzdGRldiI6IDcuNTUzNTQx
MDk5MDExODQ1LCAiYXZnIjogMTExNy4wNzI0NDk5OTg1MjI0LCAidW5pdCI6ICJtcyJ9LCAiQmlu
ZGluZ3MvZ2MtbWluaS10cmVlIjogeyJtaW4iOiAxMTM3LjI1MTAwMDAwNzM4MTcsICJtYXgiOiAx
MTc1LjA5ODAwMDAwNjk4MywgIm1lZGlhbiI6IDExNDcuOTMzOTk5OTkzMjU2MywgInZhbHVlcyI6
IFsxMTQ1LjEyNjAwMDAxNzYyNjIsIDExMzcuMjUxMDAwMDA3MzgxNywgMTE0MC4xNDE5OTk5ODky
ODIzLCAxMTU4LjYwNjAwMDAxMTc4NjgsIDExNjAuMzIyMDAwMDEwNjM3NiwgMTE0OC40MjA5OTk5
OTA3NzYyLCAxMTY5Ljk5MjAwMDAxMDA5NzQsIDExNDYuNzMxOTk5OTkzNzksIDExNTguNTc1OTk5
OTg3MDc4OCwgMTE0NS4zMzUwMDAwMDgzNDQ3LCAxMTQ3LjQ0Njk5OTk5NTczNjQsIDExNDEuODY2
OTk5OTk4NDU1OSwgMTE0MC41ODk5OTk5OTU0MjcyLCAxMTQ0LjY4NTAwMDAwNjU3NTEsIDExNDEu
Nzc2MDAwMDA0MDI5LCAxMTczLjUxODAwMDAyNTA2OTMsIDExNzAuMjg1MDAwMDAwMTQ5LCAxMTc1
LjA5ODAwMDAwNjk4MywgMTE2OC43MDU5OTk5OTY3NDYsIDExNzAuNDY3MDAwMDE4MTA2OF0sICJz
dGRldiI6IDEzLjA0MjE5OTkzMTAxNDE1NywgImF2ZyI6IDExNTQuMjQ3MTAwMDAzNzA0MiwgInVu
aXQiOiAibXMifSwgIkJpbmRpbmdzL2djLXRyZWU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgi
OiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5
dGVzIn0sICJCaW5kaW5ncy9nYy1mb3Jlc3QiOiB7Im1pbiI6IDgxNC4yMjgwMDAwMDI5MTMyLCAi
bWF4IjogODI4LjU4Nzk5OTk3NDg0MzEsICJtZWRpYW4iOiA4MjEuMzIxNDk5OTk5NjEyNiwgInZh
bHVlcyI6IFs4MjguNTIzMDAwMDAzNzcsIDgyNC41NjMwMDAwMDE5NDQ2LCA4MjUuNTkxMDAwMDAw
NzEzNCwgODI3LjY2ODAwMDAxMjYzNjIsIDgyNS44MTg5OTk5OTA1ODgsIDgyMy45NzY5OTk5OTI3
Mzc1LCA4MjMuMzkxOTk5OTkxMTQ1LCA4MTYuODIxOTk5OTkzNDA4MSwgODE1LjgzMDAwMDAwNjgy
NjYsIDgyOC41ODc5OTk5NzQ4NDMxLCA4MTcuMjQ5MDAwMDE0MjcxNiwgODE2LjAyOTk5OTk4NzIy
MjMsIDgxOS41NTcwMDAwMDk4MDg3LCA4MjEuODAyOTk5OTk4OTA4NSwgODIwLjg0MDAwMDAwMDMx
NjYsIDgxNi45OTMwMDAwMTQ5MTc5LCA4MTQuOTkwOTk5OTkyMDA1NSwgODI1LjM5MzAwMDAwNjQ0
MjksIDgxNC44MDUwMDAwMDE3OTc1LCA4MTQuMjI4MDAwMDAyOTEzMl0sICJzdGRldiI6IDQuOTgw
MzI1MDc2MjMyMTQzLCAiYXZnIjogODIxLjEzMzA5OTk5OTg2MDcsICJ1bml0IjogIm1zIn0sICJC
aW5kaW5ncy9nYy1mb3Jlc3Q6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRp
YW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5k
aW5ncy9nYy10cmVlOkpTSGVhcCI6IHsibWluIjogMjA3NzM0NjguMCwgIm1heCI6IDIwNzc3ODY0
LjAsICJtZWRpYW4iOiAyMDc3NjAxMC4wLCAidmFsdWVzIjogWzIwNzc1MDI4LjAsIDIwNzczOTMy
LjAsIDIwNzc1MjQwLjAsIDIwNzc0MDYwLjAsIDIwNzc1ODI4LjAsIDIwNzc0NDI0LjAsIDIwNzc2
MjQ0LjAsIDIwNzc0MzEyLjAsIDIwNzc2MTkyLjAsIDIwNzc1MDg4LjAsIDIwNzc2ODUyLjAsIDIw
NzczNDY4LjAsIDIwNzc2MzI4LjAsIDIwNzc2Mzk2LjAsIDIwNzc3ODY0LjAsIDIwNzc1NDMyLjAs
IDIwNzc3NDA4LjAsIDIwNzc3MDA0LjAsIDIwNzc3NjY0LjAsIDIwNzc3ODIwLjBdLCAic3RkZXYi
OiAxMzY3LjY3NjIzMTMwNzczNDMsICJhdmciOiAyMDc3NTgyOS4yLCAidW5pdCI6ICJieXRlcyJ9
LCAiQmluZGluZ3MvZ2MtZm9yZXN0OkpTSGVhcCI6IHsibWluIjogMTA2MTcyMjAuMCwgIm1heCI6
IDEzNjY0NzAwLjAsICJtZWRpYW4iOiAxMzY2MTA1NC4wLCAidmFsdWVzIjogWzEzNjY0NTk2LjAs
IDEzNjY0NzAwLjAsIDEwNjE3MjIwLjAsIDEzNjU5OTYwLjAsIDEzNjU5OTg4LjAsIDEzNjYwNDg4
LjAsIDEzNjYwNTg0LjAsIDEzNjYwODkyLjAsIDEzNjYxMTI0LjAsIDEzNjYwOTg0LjAsIDEzNjYw
NTg4LjAsIDEzNjU4NTgwLjAsIDEzNjYxOTkyLjAsIDEzNjYwMzA4LjAsIDEzNjYxNzU2LjAsIDEz
NjYxMzQ0LjAsIDEzNjYyMDE2LjAsIDEzNjYxNDUyLjAsIDEzNjY0MDE2LjAsIDEzNjYyMTkyLjBd
LCAic3RkZXYiOiA2ODA3MTIuMzg5NTM0OTAyMiwgImF2ZyI6IDEzNTA5MjM4Ljk5OTk5OTk5OCwg
InVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2djLW1pbmktdHJlZTpKU0hlYXAiOiB7Im1pbiI6
IDEwNjE5NDgwLjAsICJtYXgiOiAxMzY2NzAwNC4wLCAibWVkaWFuIjogMTM2NjM2ODYuMCwgInZh
bHVlcyI6IFsxMzY2Njk0NC4wLCAxMzY2NzAwNC4wLCAxMDYxOTQ4MC4wLCAxMzY2MjMzMi4wLCAx
MzY2MjU2OC4wLCAxMzY2MjU5Mi4wLCAxMzY2MjgwMC4wLCAxMzY2MzMwNC4wLCAxMzY2MzMxMi4w
LCAxMzY2Mzk2OC4wLCAxMzY2MzYyMC4wLCAxMzY2MDcyNC4wLCAxMzY2NTA3Ni4wLCAxMzY2Mjkw
OC4wLCAxMzY2NDE2MC4wLCAxMzY2NDA0NC4wLCAxMzY2NDIyNC4wLCAxMzY2Mzc1Mi4wLCAxMzY2
NjM3Ni4wLCAxMzY2NDQ4NC4wXSwgInN0ZGV2IjogNjgwNzU1Ljg2NzMyODE2ODEsICJhdmciOiAx
MzUxMTY4My42MDAwMDAwMDEsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21p
dW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjI5
ODMifV08L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>