<?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>50184</bug_id>
          
          <creation_ts>2010-11-29 14:14:17 -0800</creation_ts>
          <short_desc>Provide a generic way to store shadowParent on a Node.</short_desc>
          <delta_ts>2011-01-21 10:54:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>49686</dependson>
    
    <dependson>52905</dependson>
          <blocked>48698</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>314638</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-29 14:14:17 -0800</bug_when>
    <thetext>Currently, exploring two approaches:

1) Adding a ptr to NodeRareData (impacts memory)
2) Overloading Node::parent to store either parent or shadowParent (impacts performance).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314689</commentid>
    <comment_count>1</comment_count>
      <attachid>75072</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-29 15:35:40 -0800</bug_when>
    <thetext>Created attachment 75072
WIP: Measuring perf impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314825</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-29 19:20:23 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=75072) [details]
&gt; WIP: Measuring perf impact.

It&apos;s kind of weird, but I don&apos;t see any measurable difference showing up on Dromaeo DOM traversal tests. I think I&apos;ll go cook up a crazy microbenchmark for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315090</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-30 09:18:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=75072) [details] [details]
&gt; &gt; WIP: Measuring perf impact.
&gt; 
&gt; It&apos;s kind of weird, but I don&apos;t see any measurable difference showing up on Dromaeo DOM traversal tests. I think I&apos;ll go cook up a crazy microbenchmark for this.

For reference, here are the results for before (first two) and after (next two) applying the patch.

http://dromaeo.com/?id=124189,124205,124183,124209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315275</commentid>
    <comment_count>4</comment_count>
      <attachid>75190</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-30 13:32:10 -0800</bug_when>
    <thetext>Created attachment 75190
Dumb parentNode microbenchmark

So I wrote a benchy. Running it before/after reveals a nearly unnoticeable (0.8%) performance degradation for this specific parentNode() operation. However, I am pretty sure it will be offset by  net gain, given that style recalc and event propagation use parentOrHostNode, which is now faster. Let me see if I can capture this in a separate microbenchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315344</commentid>
    <comment_count>5</comment_count>
      <attachid>75214</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-30 15:16:04 -0800</bug_when>
    <thetext>Created attachment 75214
Dumb event propagation microbenchmark

Meh. Turns out the performance on event firing gain is also fractional (less than 1%). Oh well. I&apos;ll run this on the Chromium page cyclers next and if everything looks good, I think we should go with this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315502</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-30 20:08:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=75214) [details]
&gt; Dumb event propagation microbenchmark
&gt; 
&gt; Meh. Turns out the performance on event firing gain is also fractional (less than 1%). Oh well. I&apos;ll run this on the Chromium page cyclers next and if everything looks good, I think we should go with this approach.

Ok, it&apos;s looking pretty good here. I am going to polish the patch and watch the perf bots when it lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315861</commentid>
    <comment_count>7</comment_count>
      <attachid>75317</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-01 13:38:29 -0800</bug_when>
    <thetext>Created attachment 75317
Numbers from Chromium page cycler

Just for reference, here are the numbers from the Chromium page cycler (pretty-printer attached):

moz before: 14839, after: 15914, delta: 1075, perc:7%
intl1 before: 136332, after: 114888, delta: -21444, perc:-18%
intl2 before: 88355, after: 74797, delta: -13558, perc:-18%
morejs before: 35605, after: 37228, delta: 1623, perc:5%
alexa before: 14745, after: 10316, delta: -4429, perc:-42%
moz2 before: 14835, after: 14384, delta: -451, perc:-3%
bloat before: 34306, after: 35311, delta: 1005, perc:3%

All regressions are within tolerance range. Alexa shows 42% improvement, but that&apos;s probably a fluke :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319085</commentid>
    <comment_count>8</comment_count>
      <attachid>75980</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-08 15:38:20 -0800</bug_when>
    <thetext>Created attachment 75980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319116</commentid>
    <comment_count>9</comment_count>
      <attachid>75980</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-08 16:33:02 -0800</bug_when>
    <thetext>Comment on attachment 75980
Patch

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

&gt; WebCore/dom/Node.cpp:492
&gt; +        clearFlag(IsShadowRootFlag);

Why clear the flag here? I guess just for clarity or something.

&gt; WebCore/rendering/ShadowElement.h:53
&gt; +    virtual void detach()
&gt; +    {
&gt; +        BaseElement::detach();
&gt; +        // FIXME: Remove once shadow DOM uses Element::setShadowRoot().
&gt; +        BaseElement::setShadowHost(0);
&gt; +    }

Is there a reason to have this in the class definition so it is treated as an inline request? I know the old code was doing that, but it’s best not to.

&gt; WebCore/rendering/TextControlInnerElements.cpp:106
&gt; +    // For elements not in shadow DOM (why?!), add the node to the DOM normally.

This comment is now confusing to me.

&gt; WebCore/rendering/TextControlInnerElements.h:42
&gt; +    virtual void detach();

Can we make it protected or private?

&gt; WebCore/svg/SVGElement.cpp:121
&gt; +    ContainerNode* n = parentOrHostNode();

This could be a for loop. Later, I guess.

&gt; WebCore/svg/SVGElement.cpp:136
&gt; +    ContainerNode* n = parentOrHostNode();

This could be a for loop. Later, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319486</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-09 08:49:20 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 75980 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75980&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Node.cpp:492
&gt; &gt; +        clearFlag(IsShadowRootFlag);
&gt; 
&gt; Why clear the flag here? I guess just for clarity or something.

Yup, I didn&apos;t want to have two zero-states for parent. If it&apos;s zero, it&apos;s assumed to not be shadow DOM. In other words, an isolated subtree can&apos;t be a shadow DOM subtree.

&gt; 
&gt; &gt; WebCore/rendering/ShadowElement.h:53
&gt; &gt; +    virtual void detach()
&gt; &gt; +    {
&gt; &gt; +        BaseElement::detach();
&gt; &gt; +        // FIXME: Remove once shadow DOM uses Element::setShadowRoot().
&gt; &gt; +        BaseElement::setShadowHost(0);
&gt; &gt; +    }
&gt; 
&gt; Is there a reason to have this in the class definition so it is treated as an inline request? I know the old code was doing that, but it’s best not to.

The reason is I was lazy! :) I&apos;ll move it out on landing.

&gt; 
&gt; &gt; WebCore/rendering/TextControlInnerElements.cpp:106
&gt; &gt; +    // For elements not in shadow DOM (why?!), add the node to the DOM normally.
&gt;
&gt; This comment is now confusing to me.

I&apos;ll remove my verbal flippiness.
 
&gt; &gt; WebCore/rendering/TextControlInnerElements.h:42
&gt; &gt; +    virtual void detach();
&gt; 
&gt; Can we make it protected or private?

No, I tried -- we call these directly.

&gt; 
&gt; &gt; WebCore/svg/SVGElement.cpp:121
&gt; &gt; +    ContainerNode* n = parentOrHostNode();
&gt; 
&gt; This could be a for loop. Later, I guess.
&gt; 
&gt; &gt; WebCore/svg/SVGElement.cpp:136
&gt; &gt; +    ContainerNode* n = parentOrHostNode();
&gt; 
&gt; This could be a for loop. Later, I guess.

Sounds good, I&apos;ll clean up in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319507</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-09 09:23:13 -0800</bug_when>
    <thetext>Committed r73618: &lt;http://trac.webkit.org/changeset/73618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319590</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-09 10:53:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73618 might have broken Leopard Intel Release (Tests)
The following tests are not passing:
inspector/styles-source-offsets.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75072</attachid>
            <date>2010-11-29 15:35:40 -0800</date>
            <delta_ts>2010-12-08 15:38:16 -0800</delta_ts>
            <desc>WIP: Measuring perf impact.</desc>
            <filename>bug-50184-20101129153538.patch</filename>
            <type>text/plain</type>
            <size>13529</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NThiMDFlMjUwOGMzNGUwZGJmZTVmYzFjN2I3OTFjY2E0MTQwYmMxOC4uZDBkMjA4OWUxZjFiOGY1
Y2I4NzFhMDc4MzJlNDQzZmQwNWI2YzliYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0yOSAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGUgYSBnZW5lcmljIHdheSB0byBz
dG9yZSBzaGFkb3dQYXJlbnQgb24gYSBOb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAxODQKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BT
ISkKKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNo
YWRvd0hvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0U2hhZG93SG9zdCk6CisgICAg
ICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU2hhZG93Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnBhcmVudE9ySG9zdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hhZG93
UGFyZW50Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpNZWRp
YUNvbnRyb2xTaGFkb3dSb290RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xTaGFkb3dSb290RWxlbWVudDo6dXBkYXRlU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6U1ZHU2hhZG93VHJl
ZVJvb3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVu
dDo6YXR0YWNoRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1NoYWRvd1RyZWVFbGVt
ZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9TaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dFbGVtZW50OjpTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b250cm9sSW5uZXJFbGVtZW50OjpUZXh0Q29udHJvbElubmVyRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSk6CisKIDIw
MTAtMTEtMjkgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxNWE1YWIxNGQxMjM4ZTBmNzcx
M2FmMWYwMTc3MzNkODhlYmYxOTJhLi40ZWVmMDc1MWZhOTdiM2Y3ZGYxZDNmY2MyZTIzMmQ0Zjdi
OGE5YTAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtNDc3LDcgKzQ3NywyMiBAQCBOb2RlUmFyZURhdGEqIE5vZGU6OmNyZWF0
ZVJhcmVEYXRhKCkKIHsKICAgICByZXR1cm4gbmV3IE5vZGVSYXJlRGF0YTsKIH0KLSAgICAKKwor
RWxlbWVudCogTm9kZTo6c2hhZG93SG9zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvRWxlbWVu
dChzaGFkb3dQYXJlbnROb2RlKCkpOworfQorCit2b2lkIE5vZGU6OnNldFNoYWRvd0hvc3QoRWxl
bWVudCogaG9zdCkKK3sKKyAgICBpZiAoaG9zdCkKKyAgICAgICAgc2V0RmxhZyhJc1NoYWRvd1Jv
b3RGbGFnKTsKKyAgICBlbHNlCisgICAgICAgIGNsZWFyRmxhZyhJc1NoYWRvd1Jvb3RGbGFnKTsK
KworICAgIHNldFBhcmVudChob3N0KTsKK30KKwogc2hvcnQgTm9kZTo6dGFiSW5kZXgoKSBjb25z
dAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+dGFiSW5kZXgoKSA6
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggOWZjZWExZTI5M2VlZDkyMDc2ZmRhZjkzNDYwNGI3MDhiZWFjODQ1MS4uZGEyOTIwZmQ5
YmI0MTRmZDBmYTcyMjhiNzQyNmU1M2RkYjkxZGE1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNzQsNyArNzQsNyBAQCBjbGFzcyBU
YWdOb2RlTGlzdDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY29uc3QgaW50IG5v
ZGVTdHlsZUNoYW5nZVNoaWZ0ID0gMjQ7Citjb25zdCBpbnQgbm9kZVN0eWxlQ2hhbmdlU2hpZnQg
PSAyNTsKIAogLy8gU3ludGhldGljU3R5bGVDaGFuZ2UgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGdv
IHRocm91Z2ggdGhlIGVudGlyZSBzdHlsZSBjaGFuZ2UgbG9naWMgZXZlbiB0aG91Z2gKIC8vIG5v
IHN0eWxlIHByb3BlcnR5IGhhcyBhY3R1YWxseSBjaGFuZ2VkLiBJdCBpcyB1c2VkIHRvIHJlc3Ry
dWN0dXJlIHRoZSB0cmVlIHdoZW4sIGZvciBpbnN0YW5jZSwKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0ID0gMDsKLSAgICBDb250YWluZXJOb2Rl
KiBwYXJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0KKyAgICBDb250YWluZXJO
b2RlKiBwYXJlbnROb2RlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNv
bnN0OwogICAgIE5vZGUqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlv
dXM7IH0KICAgICBOb2RlKiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQpA
QCAtMjA1LDggKzIwNSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29tbWVudE5vZGUoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKElzQ29tbWVudEZsYWcpOyB9CiAgICAgdmlydHVhbCBib29sIGlz
Q2hhcmFjdGVyRGF0YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNE
b2N1bWVudE5vZGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dOb2RlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIHNoYWRvd1Bh
cmVudE5vZGUoKSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBpc1NoYWRvd05vZGUoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpOyB9CisgICAgLy8gRklYTUU6IEVsaW1p
bmF0ZSBhbGwgdXNlcywgZm9sZCBpbnRvIHNoYWRvd0hvc3QuCisgICAgQ29udGFpbmVyTm9kZSog
c2hhZG93UGFyZW50Tm9kZSgpIGNvbnN0OwogICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSgp
OwogICAgIE5vZGUqIHNoYWRvd1RyZWVSb290Tm9kZSgpOwogICAgIGJvb2wgaXNJblNoYWRvd1Ry
ZWUoKTsKQEAgLTU4MCwxNyArNTgxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIEluQWN0aXZlQ2hh
aW5GbGFnID0gMSA8PCAxNSwKICAgICAgICAgSW5EZXRhY2hGbGFnID0gMSA8PCAxNiwKICAgICAg
ICAgSGFzUmFyZURhdGFGbGFnID0gMSA8PCAxNywKKyAgICAgICAgSXNTaGFkb3dSb290RmxhZyA9
IDEgPDwgMTgsCiAKICAgICAgICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNs
YXNzZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBp
biB0aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgotICAgICAgICBJ
c1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyA9IDEgPDwgMTgsIC8vIEVsZW1lbnQKLSAgICAg
ICAgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyA9IDEgPDwgMTksIC8vIFN0eWxlZEVsZW1lbnQK
LSAgICAgICAgSXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGVGbGFnID0gMSA8PCAyMCwgLy8g
U3R5bGVkRWxlbWVudAorICAgICAgICBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyA9IDEg
PDwgMTksIC8vIEVsZW1lbnQKKyAgICAgICAgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyA9IDEg
PDwgMjAsIC8vIFN0eWxlZEVsZW1lbnQKKyAgICAgICAgSXNTeW5jaHJvbml6aW5nU3R5bGVBdHRy
aWJ1dGVGbGFnID0gMSA8PCAyMSwgLy8gU3R5bGVkRWxlbWVudAogI2lmIEVOQUJMRShTVkcpCi0g
ICAgICAgIEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcgPSAxIDw8IDIxLCAvLyBFbGVtZW50Ci0g
ICAgICAgIElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnID0gMSA8PCAyMiwgLy8gU1ZH
RWxlbWVudAotICAgICAgICBIYXNTVkdSYXJlRGF0YUZsYWcgPSAxIDw8IDIzLCAvLyBTVkdFbGVt
ZW50CisgICAgICAgIEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcgPSAxIDw8IDIyLCAvLyBFbGVt
ZW50CisgICAgICAgIElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnID0gMSA8PCAyMywg
Ly8gU1ZHRWxlbWVudAorICAgICAgICBIYXNTVkdSYXJlRGF0YUZsYWcgPSAxIDw8IDI0LCAvLyBT
VkdFbGVtZW50CiAjZW5kaWYKKwogICAgICAgICBTdHlsZUNoYW5nZU1hc2sgPSAxIDw8IG5vZGVT
dHlsZUNoYW5nZVNoaWZ0IHwgMSA8PCAobm9kZVN0eWxlQ2hhbmdlU2hpZnQgKyAxKSwKIAogI2lm
IEVOQUJMRShTVkcpCkBAIC02MDAsNyArNjAzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIH07
CiAKLSAgICAvLyA1IGJpdHMgcmVtYWluaW5nCisgICAgLy8gNCBiaXRzIHJlbWFpbmluZwogCiAg
ICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFn
cyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAm
IG1hc2spOyB9IApAQCAtNjMxLDYgKzYzNCw5IEBAIHByb3RlY3RlZDoKICAgICBOb2RlUmFyZURh
dGEqIHJhcmVEYXRhKCkgY29uc3Q7CiAgICAgTm9kZVJhcmVEYXRhKiBlbnN1cmVSYXJlRGF0YSgp
OwogCisgICAgRWxlbWVudCogc2hhZG93SG9zdCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2hhZG93
SG9zdChFbGVtZW50Kik7CisKIHByaXZhdGU6CiAjaWYgVVNFKEpTQykKICAgICB2b2lkIG1hcmtD
YWNoZWROb2RlTGlzdHNTbG93KEpTQzo6TWFya1N0YWNrJiwgSlNDOjpKU0dsb2JhbERhdGEmKTsK
QEAgLTcwMiwxMSArNzA4LDE5IEBAIGlubGluZSB2b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RI
YXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHVybHMuYWRkKHVy
bCk7CiB9CiAKK2lubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSA/IDAgOiBwYXJlbnQoKTsK
K30KKwogaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE5vZGUoKQogewot
ICAgIGlmIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpCi0gICAgICAgIHJl
dHVybiBwYXJlbnQ7Ci0gICAgcmV0dXJuIHNoYWRvd1BhcmVudE5vZGUoKTsKKyAgICByZXR1cm4g
cGFyZW50KCk7Cit9CisKK2lubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpzaGFkb3dQYXJlbnRO
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSA/IHBh
cmVudCgpIDogMDsKIH0KIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDFhZjFiODBhZmU1ZmNiYzBlOTY5YzFkNzFjMTAxMjMy
YmY4OTBjMzIuLjcyMTNmMDBjYjA3ZTJmOTRjYWEzZGQ2MjQ1YTRhNGYxMWVhNDg1N2MgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTY1LDggKzY1LDgg
QEAgc3RhdGljIGNvbnN0IGZsb2F0IGNTZWVrVGltZSA9IDAuMmY7CiAKIGlubGluZSBNZWRpYUNv
bnRyb2xTaGFkb3dSb290RWxlbWVudDo6TWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFn
LCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkpCi0gICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVs
ZW1lbnQpIAogeworICAgIHNldFNoYWRvd0hvc3QobWVkaWFFbGVtZW50KTsKIH0KIAogUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudD4gTWVkaWFDb250cm9sU2hhZG93Um9v
dEVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCkBAIC05MSw3
ICs5MSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ+IE1lZGlh
Q29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpjcmVhdGUoCiB2b2lkIE1lZGlhQ29udHJvbFNoYWRv
d1Jvb3RFbGVtZW50Ojp1cGRhdGVTdHlsZSgpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgUmVuZGVyU3R5bGUqIHRpbWVsaW5lQ29udGFpbmVyU3R5bGUgPSBtX21lZGlhRWxlbWVu
dC0+cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoTUVESUFfQ09OVFJPTFNfVElNRUxJ
TkVfQ09OVEFJTkVSKTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHRpbWVsaW5lQ29udGFpbmVyU3R5
bGUgPSBzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKE1FRElB
X0NPTlRST0xTX1RJTUVMSU5FX0NPTlRBSU5FUik7CiAgICAgICAgIHJlbmRlcmVyKCktPnNldFN0
eWxlKHRpbWVsaW5lQ29udGFpbmVyU3R5bGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IGE5ZmZiMGIxNzEwN2E3NzAxOTU4NmZmMTU4Yzlk
MmYzNTc4N2RkMWIuLjQ4MDUwM2QzNjAwMzc0MjAzNTc3YzFkMmJiNzJiYTQ0MGQzYjY3YWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtNzksMTEgKzc5LDYg
QEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxl
bWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzU2hhZG93
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUq
IHNoYWRvd1BhcmVudE5vZGUoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQotCi0gICAgSFRN
TE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7ICAgIAogfTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xp
ZGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggM2E2OThh
NDJiNzIwZjU3NmQzOGE2MjIyMmU1NzU3MmRhNWRhN2YzYy4uMGI5MmZkN2QxNmFhNWIxMDBmZWJl
ODMyYzY2ZDVkZGI1MjI0ZDYxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1f
aW5EcmFnTW9kZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZShzaGFkb3dQYXJlbnQo
KSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZShzaGFkb3dIb3N0KCkpOwogICAgICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1NoYWRvd1Ry
ZWVFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdTaGFkb3dUcmVlRWxlbWVudHMu
Y3BwCmluZGV4IDhhNjY5OTE2YTYwZmU3NjE4MGM3NzQzZjVjMTBkM2RlNWJjMTUyNGQuLjY2NzBk
OWI1NjZjMzRkZGMyZjY4ZGI4MzA2MzQ4MTZhYjliYTBiMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcApAQCAtNTEsOCArNTEsOCBAQCBGbG9hdFNpemUg
U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ6OmNvbnRhaW5lclRyYW5zbGF0aW9uKCkgY29u
c3QKIAogaW5saW5lIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6U1ZHU2hhZG93VHJlZVJvb3RF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgU1ZHVXNlRWxlbWVudCogc2hhZG93UGFyZW50KQog
ICAgIDogU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3No
YWRvd1BhcmVudChzaGFkb3dQYXJlbnQpCiB7CisgICAgc2V0U2hhZG93SG9zdChzaGFkb3dQYXJl
bnQpOwogICAgIHNldEluRG9jdW1lbnQoKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBQYXNzUmVm
UHRyPFNWR1NoYWRvd1RyZWVSb290RWxlbWVudD4gU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQqCiAKIHZvaWQgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OjphdHRhY2hF
bGVtZW50KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJBcmVuYSogYXJlbmEp
CiB7Ci0gICAgQVNTRVJUKG1fc2hhZG93UGFyZW50KTsKKyAgICBBU1NFUlQoc2hhZG93SG9zdCgp
KTsKIAogICAgIC8vIENyZWF0ZSB0aGUgcmVuZGVyZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHN0eWxl
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKGFyZW5hLCBzdHls
ZS5nZXQoKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50
OjphdHRhY2hFbGVtZW50KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kCiAKICAg
ICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJlZQogICAgIGlmIChyZW5kZXJl
cikKLSAgICAgICAgbV9zaGFkb3dQYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVy
KTsKKyAgICAgICAgc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpLT5hZGRDaGlsZChyZW5kZXJlcik7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1NoYWRvd1RyZWVFbGVt
ZW50cy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKaW5kZXgg
ZDQ5ZmJhYWExZjQ0ODEzOTYyOGU1OGQ2Zjc3NDZmZGZhYTIzNGZmNS4uMzYwOTJiZGMxYzZjNDMz
MmQzMDI2OWMzOTY0N2NmZjdlMTdjOGE1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93
VHJlZUVsZW1lbnRzLmgKQEAgLTU2LDE0ICs1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXR0
YWNoRWxlbWVudChQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiwgUmVuZGVyQXJlbmEqKTsKIAotICAg
IHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fc2hh
ZG93UGFyZW50OyB9Ci0KIHByaXZhdGU6CiAgICAgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KERv
Y3VtZW50KiwgU1ZHVXNlRWxlbWVudCogc2hhZG93UGFyZW50KTsKLQotICAgIHZpcnR1YWwgYm9v
bCBpc1NoYWRvd05vZGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQotCi0gICAg
Q29udGFpbmVyTm9kZSogbV9zaGFkb3dQYXJlbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmggYi9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dF
bGVtZW50LmgKaW5kZXggZjU2NjhlZjIzOTNiYzNhMDMwZDIwYTZlYWY5ZmE4MWNlMThiYzk1NS4u
ODBhYWYwOWI4ZGVjZGRhZTYxYTAxMTdkMjAzZDBlZGJlYmFiNDQ5MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1No
YWRvd0VsZW1lbnQuaApAQCAtNDEsMTQgKzQxLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgOiBC
YXNlRWxlbWVudChuYW1lLCBzaGFkb3dQYXJlbnQtPmRvY3VtZW50KCkpCiAgICAgICAgICwgbV9z
aGFkb3dQYXJlbnQoc2hhZG93UGFyZW50KQogICAgIHsKKyAgICAgICAgQmFzZUVsZW1lbnQ6OnNl
dFNoYWRvd0hvc3Qoc2hhZG93UGFyZW50KTsKICAgICB9CiAKLSAgICBIVE1MRWxlbWVudCogc2hh
ZG93UGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQuZ2V0KCk7IH0KLQogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0
dXJuIG1fc2hhZG93UGFyZW50LmdldCgpOyB9Ci0KICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1f
c2hhZG93UGFyZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKaW5kZXggOTJjNTFlZTM5NjVlYTI1Y2RmOGVmNTAwOTY1M2UwMGY3NTBl
OGIxOS4uZDQ0ODRmZjZiYWM4M2JhMzM2ZDAwM2MzNzg4ZmU4ZWUxMWNmNDJjYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC03OSw2ICs3
OSw3IEBAIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpUZXh0Q29udHJvbElubmVyRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQsIEhUTUxFbGVtZW50CiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZU
YWcsIGRvY3VtZW50KQogICAgICwgbV9zaGFkb3dQYXJlbnQoc2hhZG93UGFyZW50KQogeworICAg
IHNldFNoYWRvd0hvc3Qoc2hhZG93UGFyZW50KTsKIH0KIAogUGFzc1JlZlB0cjxUZXh0Q29udHJv
bElubmVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0ZShIVE1MRWxlbWVu
dCogc2hhZG93UGFyZW50KQpAQCAtMTAyLDggKzEwMyw4IEBAIHZvaWQgVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8UmVu
ZGVyCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7CiAKLSAgICAvLyBG
b3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUgbm9kZSB0byB0aGUg
RE9NIG5vcm1hbGx5LgotICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKKyAgICAvLyBGb3IgZWxl
bWVudHMgbm90IGluIHNoYWRvdyBET00gKHdoeT8hKSwgYWRkIHRoZSBub2RlIHRvIHRoZSBET00g
bm9ybWFsbHkuCisgICAgaWYgKCFpc1NoYWRvd05vZGUoKSkgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBjb2RlIHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1hZ2ljYWxseSBhZGRpbmcg
fHRoaXN8IHRvIHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAgIFdlIHNob3VsZG4ndCBi
ZSBjYWxsaW5nIHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRoZSBwYXJzZXIhCiAgICAg
ICAgIHBhcmVudC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCA1YWY5OGVkNDcxYWJhNDFi
NzYzNDIzODJlOTE0NTBlNWNjYzhjNjk2Li4xMjNmOGY0MzM4MTMxZTk5MTg3MDc5MTU2OWZjNTdj
NDc2ZGZiZmViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaApAQCAtNDYsMTAgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJF
bGVtZW50KERvY3VtZW50KiwgSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCA9IDApOwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0gCi0gICAgdmlydHVhbCBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhZG93UGFyZW50LmdldCgpOyB9Ci0gICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBzaGFk
b3dQYXJlbnROb2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQuZ2V0KCk7IH0KLSAgICB2b2lk
IHNldFNoYWRvd1BhcmVudE5vZGUoSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCkgeyBtX3NoYWRv
d1BhcmVudCA9IHNoYWRvd1BhcmVudDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNh
YmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4g
bV9zaGFkb3dQYXJlbnQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75190</attachid>
            <date>2010-11-30 13:32:10 -0800</date>
            <delta_ts>2010-11-30 13:32:10 -0800</delta_ts>
            <desc>Dumb parentNode microbenchmark</desc>
            <filename>devirtualize-shadow-parent-test.html</filename>
            <type>text/html</type>
            <size>1381</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgoKdmFyIFRSRUVfREVQVEggPSAxMDAwMDsKdmFyIFRSQVZF
UlNBTF9JVEVSQVRJT05TID0gMTAwMDsKdmFyIFJFU1VMVF9JVEVSQVRJT05TID0gMzA7CgpmdW5j
dGlvbiBzZXRVcCh0b3ApCnsKICAgIHZhciBub2RlID0gdG9wOwogICAgZm9yKHZhciBpID0gMDsg
aSA8IFRSRUVfREVQVEg7ICsraSkKICAgICAgICBub2RlID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICByZXR1cm4gbm9kZTsKfQoKZnVuY3Rpb24g
dGVzdFBhcmVudE5vZGVQZXJmb3JtYW5jZShib3R0b20pCnsKICAgIHZhciBzdGFydCA9IG5ldyBE
YXRlKCk7CiAgICB2YXIgdGljayA9IDA7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgVFJBVkVSU0FM
X0lURVJBVElPTlM7ICsraSkgewogICAgICAgIHZhciBub2RlID0gYm90dG9tOwogICAgICAgIHdo
aWxlKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCiAgICAgICAgICAgIHRpY2srKzsKICAgIH0KICAg
IHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgcmV0dXJuIGVuZCAtIHN0YXJ0Owp9CgoKZnVuY3Rp
b24gcnVuVGVzdCgpCnsKICAgIHZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9n
Jyk7CiAgICB2YXIgdG9wID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSk7CiAgICBsb2cudGV4dENvbnRlbnQgPSAnc2V0dGluZyB1cC4uLic7
CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgYm90dG9tID0gc2V0
VXAodG9wKTsKICAgICAgICBsb2cudGV4dENvbnRlbnQgPSAncnVubmluZy4uLic7CiAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpCiAgICAgICAgewogICAgICAgICAgICB2YXIgbWVhbiA9IDE7
CiAgICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBSRVNVTFRfSVRFUkFUSU9OUzsgKytpKSB7
CiAgICAgICAgICAgICAgICBtZWFuICo9IHRlc3RQYXJlbnROb2RlUGVyZm9ybWFuY2UoYm90dG9t
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbWVhbiA9IE1hdGgucG93KG1lYW4sIDEv
UkVTVUxUX0lURVJBVElPTlMpOwogICAgICAgICAgICBsb2cudGV4dENvbnRlbnQgPSAndGltZSB0
byB0cmF2ZXJzZSB1cCAnICsgKFRSRUVfREVQVEggKiBUUkFWRVJTQUxfSVRFUkFUSU9OUykgKyAn
IG5vZGVzOiAnICsgbWVhbjsKICAgICAgICB9LCAwKTsKICAgIH0sIDApCiAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKHRvcCk7Cn0KCjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5Pgo8YnV0dG9u
IG9uY2xpY2s9InJ1blRlc3QoKSI+UnVuPC9idXR0b24+CjxkaXYgaWQ9ImxvZyI+PC9kaXY+Cjwv
Ym9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75214</attachid>
            <date>2010-11-30 15:16:04 -0800</date>
            <delta_ts>2010-11-30 15:16:04 -0800</delta_ts>
            <desc>Dumb event propagation microbenchmark</desc>
            <filename>devirtualize-shadow-parent-test.html</filename>
            <type>text/html</type>
            <size>1825</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgoKdmFyIFRSRUVfREVQVEggPSA3NTA7CnZhciBUUkFWRVJT
QUxfSVRFUkFUSU9OUyA9IDEwMDA7CnZhciBSRVNVTFRfSVRFUkFUSU9OUyA9IDMwOwoKZnVuY3Rp
b24gc2V0VXAodG9wKQp7CiAgICB2YXIgbm9kZSA9IHRvcDsKICAgIGZvcih2YXIgaSA9IDA7IGkg
PCBUUkVFX0RFUFRIOyArK2kpCiAgICAgICAgbm9kZSA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgcmV0dXJuIG5vZGU7Cn0KCmZ1bmN0aW9uIHRl
c3RFdmVudFByb3BhZ2F0aW9uUGVmb3JtYW5jZSh0b3AsIGJvdHRvbSwgY29tcGxldGlvbkNhbGxi
YWNrKQp7CiAgICB0b3AuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjb21wbGV0aW9uQ2FsbGJh
Y2ssIGZhbHNlKTsKICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVu
dHMnKTsKICAgIGV2dC5pbml0TW91c2VFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlLCB3aW5kb3cs
IDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKICAg
IGJvdHRvbS5kaXNwYXRjaEV2ZW50KGV2dCk7CiAgICB0b3AucmVtb3ZlRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBjb21wbGV0aW9uQ2FsbGJhY2spOwp9CgpmdW5jdGlvbiBydW5UZXN0KCkKewogICAg
dmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKICAgIHZhciB0b3AgPSBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsK
ICAgIGxvZy50ZXh0Q29udGVudCA9ICdzZXR0aW5nIHVwLi4uJzsKICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKQogICAgewogICAgICAgIHZhciBib3R0b20gPSBzZXRVcCh0b3ApOwogICAgICAgIGxv
Zy50ZXh0Q29udGVudCA9ICdydW5uaW5nLi4uJzsKICAgICAgICB2YXIgcmVtYWluaW5nID0gUkVT
VUxUX0lURVJBVElPTlM7CiAgICAgICAgdmFyIG1lYW4gPSAxOwogICAgICAgIHZhciBpdGVyYXRl
ID0gZnVuY3Rpb24oKQogICAgICAgIHsKICAgICAgICAgICAgbG9nLnRleHRDb250ZW50ID0gJ3Jl
bWFpbmluZyBpdGVyYXRpb25zICcgKyByZW1haW5pbmc7CiAgICAgICAgICAgIHZhciBzdGFydCA9
IG5ldyBEYXRlKCk7CiAgICAgICAgICAgIHRlc3RFdmVudFByb3BhZ2F0aW9uUGVmb3JtYW5jZSh0
b3AsIGJvdHRvbSwgZnVuY3Rpb24oKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIg
ZW5kID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgIG1lYW4gKj0gKGVuZCAtIHN0YXJ0KTsK
ICAgICAgICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA+IDApIHsKICAgICAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGl0ZXJhdGUsIDApOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG1lYW4gPSBNYXRoLnBvdyhtZWFuLCAxL1JF
U1VMVF9JVEVSQVRJT05TKTsKICAgICAgICAgICAgICAgIGxvZy50ZXh0Q29udGVudCA9ICd0aW1l
IHRvIGZpcmUgZXZlbnRzIHVwICcgKyAoVFJFRV9ERVBUSCAqIFRSQVZFUlNBTF9JVEVSQVRJT05T
KSArICcgbm9kZXM6ICcgKyBtZWFuICsgJ21zJzsKICAgICAgICAgICAgfSk7CiAgICAgICAgfTsK
ICAgICAgICBpdGVyYXRlKCk7CiAgICB9LCAwKQovLyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKHRvcCk7Cn0KCjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5Pgo8YnV0dG9uIG9uY2xpY2s9InJ1
blRlc3QoKSI+UnVuPC9idXR0b24+CjxkaXYgaWQ9ImxvZyI+PC9kaXY+CjwvYm9keT4KPC9odG1s
Pg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75317</attachid>
            <date>2010-12-01 13:38:29 -0800</date>
            <delta_ts>2010-12-01 13:38:29 -0800</delta_ts>
            <desc>Numbers from Chromium page cycler</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>14559</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgoKdmFyIHJlc3VsdHMgPSB7CiAgICBtb3o6IHsKICAgICAg
ICBiZWZvcmU6IFs0NCwxMDIsNDgsMzAsNjQsNTksNDEsMzMsOSw3NCwzMSw0NSw1NywyNSw4NSw0
Miw0MywzNSwzOSw0MCw4LDIwLDE4LDI5LDQxLDQxLDI1LDU2LDc1LDQ2LDM5LDE3LDY4LDY2LDM1
LDI1NiwyNjgsNTMsMTYsNjQsOTgsMjAsMzEsMzEsMjEsNDcsMzEsMjYsMjYsOSwzOSwxOSwyMiwz
NywxMyw0OSwyNiwzNSwyMiwzMywyOSwxNywxNSwxNCwxOCwyNiwzNiwxNywzMyw1OCwyMiwyNywx
Myw0NSw0MSwyNywxNDUsMTEzLDUwLDE2LDQyLDQ3LDIwLDMxLDMyLDIxLDQ3LDMwLDI3LDI2LDEw
LDQwLDIwLDIzLDI4LDEzLDUwLDI3LDI0LDIxLDMyLDMwLDcsMTUsMTQsMTgsMjUsMzQsMTcsMzMs
NTUsMjEsMzgsMTMsNDEsNDEsMjgsMjA4LDEwOCwzNiwxNSw0MSw0NSwyMCwzMCwzMiwyMSw0Niwy
OSwyNywyNiwxMCwzOSwyMSw3OCwzOCwxMywyNzYsMjcsMjUsMjIsMzUsMzEsNywxNiwxNCwxOCwz
MSw0MCwxOSwzNCw1OCwyMiwyOCwxMywzNyw0MSwyNywxMjgsMTExLDM4LDE1LDQyLDQ4LDIyLDMx
LDMyLDIxLDQ3LDMwLDI2LDI3LDksMzksMTksMjIsMjksMTMsNTAsMjUsMjUsMjEsMzMsMjksNywx
NSwxMywxNywyNiwzNSwxOCwzMyw1NiwyMiwzNCwxMiwyOSw0MSwyNywyNjIsMTA4LDM4LDE2LDQy
LDQ4LDIxLDQyLDMyLDIxLDQ3LDMwLDI3LDI2LDEwLDQwLDIwLDMwLDM3LDEzLDUyLDI3LDI1LDIx
LDM0LDMwLDE3LDE1LDE0LDE4LDI1LDM3LDE4LDQwLDU2LDIyLDI3LDE0LDMwLDQxLDI4LDEwNiwx
MTAsMzcsMTUsNDIsNDYsMjAsMzAsMzIsMjIsNDYsMzAsMjYsMjUsMTAsMzgsMTksMjEsMjgsMTMs
NTAsMjYsMjMsMjEsMzMsMjksNywxNSwxMywxOCwyNCwzNCwxNywzMiw1NCwyMSwyNywxMywyOSw1
MiwyNywxNjUsMTA3LDM3LDE1LDQ4LDQ2LDIxLDMwLDMyLDIxLDQ2LDI5LDI3LDI2LDEwLDM4LDE5
LDIzLDI4LDE0LDQ5LDI2LDI1LDIxLDMyLDI5LDgsMTUsMTQsMTgsMjUsMzQsMTgsMzIsNTUsMjEs
MjYsMTQsMzgsNTMsMjcsMTI0LDEwNywzNywxNSw0MCw0NSwyMCwzMSw0MCwyMCw0NSwyOSwyNywy
NSwxMCwzOCwxOSwyMiwyNywxMyw1MCwyNSwyNCwyMSwzMywyOSw3LDE1LDEzLDE3LDI1LDM0LDE4
LDMyLDU2LDIyLDI4LDE0LDQxLDY0LDI4LDEwMCwxMTEsNDUsMTUsNDIsNDYsMjEsNDEsMzIsMjYs
NDgsMzAsMjgsMzcsMTAsNDEsMTksMjMsMjgsMTQsNTIsMjcsMjUsMjIsMzQsMzAsNywxNSwxNCwx
OSwyNywzNiwxOCwzNSw3MCwyMywyOCwxNCwzMCw0MSwyNywxMjAsMTA5LDM3LDE1LDQxLDQ2XSwK
ICAgICAgICBhZnRlcjogWzYzLDE5MSw2Niw1NSw5Myw3OSw5Niw1NywxNyw3NCwyNCwzNiw1MCwy
OSw2NSwzMiwzNSw0OSwzOSw0MCw4LDMxLDE4LDI5LDUwLDUzLDQxLDEyMiw4NiwxMTAsNDgsMTcs
ODYsOTEsMzQsMTYxLDI0OCw0MCwxNiw1NywxMTAsMjAsMzAsMzIsMjEsNDcsMjksMjcsMjYsOSw0
MSwxOSwyMiwyOCwxMyw0OSwyNSwzMywyMSwzMiwyOSw3LDE1LDE0LDE5LDI1LDM1LDE3LDM0LDU3
LDIyLDM5LDEzLDMxLDQyLDI3LDEyMiwxMTIsNTIsMjEsNDIsNDcsMjEsMzAsMzEsMzIsNTUsMzAs
MjcsMzYsMTAsMzksMjAsMjQsMjksMTMsNTIsMjYsMzMsMjksMzQsMzAsOCwxNiwxNSwxOCwyNiw0
MSwxOCw0MCw1NywyMywyNywxMywzMSw0MiwyOCw0NjgsMTA5LDM4LDE1LDQzLDQ3LDIxLDMxLDMy
LDIzLDQ4LDMwLDI3LDM3LDEwLDM5LDE5LDIzLDI5LDE0LDY5LDI2LDMyLDIxLDMyLDQwLDcsMTQs
MTQsMTcsMjYsNDAsMTcsNDAsNTYsMjEsMjcsMTQsMzgsNDEsMjgsMTUyLDEwOSwzNywxNCw0MCw0
NSwyMCwzMCwzMSwyMSw1NSwyOSwyNiwyNSw4LDM4LDE5LDIyLDI3LDE0LDQ5LDI2LDMyLDIxLDMz
LDI4LDcsMTUsMTUsMTcsMjQsMzUsMTcsMzIsNTYsMjEsMjYsMTIsMzAsNDEsMjYsMjExLDEwNywz
NywxNCw0MSw0NiwyMSwyOSwzMiwyMCw0NiwyOSwzNiwyNiw5LDM4LDE5LDIyLDI3LDEzLDUwLDI2
LDMyLDIwLDMyLDQwLDYsMTUsMTQsMTksMjUsMzUsMTcsMzMsNjgsMjEsMjcsMTMsMjksNDEsMjYs
MTMyLDMyNSwzNywxNiw1MSw0NSwyMCwyOSwzMSwzMSw0NSwzMCwyNiwyNiwxMCwzNywxOSwyMiwy
OCwyMiw0OSwyNSwyMywyMCwzMiwyOSw2LDE1LDEzLDE3LDI1LDM1LDE3LDMzLDU0LDIxLDI3LDEy
LDI5LDQyLDI2LDM3MiwxMDgsMzUsMTUsNDAsNDYsMjAsMzAsMzAsMjQsNDUsMjksMjcsMzYsOSwz
OCwyMCwyMywyOSwyMSw0OSwyNiwyNCwyMSwzMywzMCw4LDE5LDE0LDE5LDI1LDM1LDE4LDMzLDU1
LDIyLDM3LDEzLDMwLDUzLDI3LDE0NiwxMDcsMzYsMTUsNDEsNDUsMjAsMzksMzEsMjIsNDUsMjks
MjcsMjYsMTAsMzksMTksMjIsMjgsMTUsNTAsMjUsMjUsMjEsMzMsMjksNywxNSwxMywxNywyNSwz
NCwxNiwzMiw1MywyMSwyNiwxMywyOSw1MywyNywxMzIsMTE2LDM2LDE1LDQwLDQ0LDIxLDMwLDMx
LDIxLDQ2LDMwLDI2LDM2LDEwLDQ0LDIwLDIyLDI5LDEzLDUwLDQ3LDExNSwyMiwzMyw0MSwxMDEs
NTksMTYsMjAsMjcsMzgsMTgsMzUsNTgsMjIsMjcsMTMsMzgsNTYsMjgsMTMyLDExMCwzNiwxNSw0
OCw0NV0KICAgIH0sCiAgICBpbnRsMTogewogICAgICAgIGJlZm9yZTogWzM0MSwzMSwzNzEsNDQs
MTAzLDk2LDYyLDQxNSwxMzUsMjg1LDI4MiwxMDMsNDU4LDg3LDExMCw3MTEsMjg3LDI1OCw0NDIs
MTI2LDExNCw4OSw0MTMsMzE3LDI0Myw2NywyNDIsMjIxLDE0MywzMSw1MjIsNTUsNzUyLDQzLDU3
Nyw0MzYsMTc0LDE0MCw0NiwxMDMsMzE3LDE2NywxNjcsNDc5LDQwMCwxMTksNDIzMiwxMDMsNjk3
LDU5NCw1NzAsODAzLDI3Miw1ODAsMTcyLDQxMiw0OSw5LDE3OCw1MCw1OCw3NCwxMCwyNjAsMTE3
LDEwMSwxODQsNjksMzA0LDkxLDg4LDQwOSw2MSwyMTAsMzY3LDIxOSw3NywxMTksNDQzLDEzNywx
NTYsNDcsOTEsMjEwLDE1NSwzNSwxNTgsNDMsNjI5LDM4LDExNSwzNTAsMjI3LDExNywzNiwxMTEs
ODgsMTgxLDE0NCwzOTYsMjQ5LDEyMCw1NTIsNTgsNDQ4LDM5OSwyNjAsNTM5LDIwOCwzODMsMTAz
LDI3Miw1MCw5LDM0MywzNSwxMDEsODksMTMsMjcwLDEzNCwxMDEsMTc3LDYyLDMxNSw4Nyw5MCw0
MTEsMjE0LDIwMyw0NTEsMTM2LDEzNyw3MCwzNjYsMTUzLDE2MSw1NCw5NSwyMzksMTkxLDIyLDE5
NywzOSw3OTYsNzAsNTE2LDM5MSw1ODAsOTksMTIwLDEwOCwxMTUsMTExLDE3MiwxNzksMjc2LDE0
NCwxMDExLDEyNSw2MzIsNTU4LDMzNiw2NzAsMzAzLDU5MCwxNDMsMzIyLDU3LDExLDQ1NSw0NSw3
NSw2NCwxNCwzNDUsODUsMTQ2LDIyNiw5Niw0MjUsNzIsMTEzLDUwMyw3NiwyMzgsMzUwLDIxMCwy
MjEsODAsNTAzLDIyMCwyMTQsNzYsMTQ4LDMyOCwyMTEsNzEsMjUzLDYwLDc5OSw2Myw0OTQsMzk1
LDE3MCw4Nyw1MiwxMDgsMTAyLDEwNyw0NDIsMzYxLDI2OCwxNTcsMTUzOCw2Miw0ODgsMjQ1LDI3
Myw1ODIsMjUxLDQ1NSwxMjQsMzExLDU0LDEyLDIzOCw1OSwxOTAsOTgsMTUsMjkwLDEyNywxMzEs
MTg5LDcwLDMzOSw5MSw5MSw0ODEsMjEzLDIxMywyNDUsNzgsMjQwLDg5LDQ1MCwxMTMsNjIsNTUs
MTM1LDI0NSwxODQsMzUsMTY2LDQzLDY3MSw2NSw0NzYsMzUxLDE0Miw4Miw0Miw4Nyw5NCwxOTEs
MjE3LDE3MiwyNzUsMTQ3LDg4Myw4Miw0ODAsNDIyLDI2OSw1NzAsMjMzLDI0NiwyMTEsMjk5LDUy
LDEwLDM3MCw1NCwxMjMsNTgsMTIsMjgwLDEyMSwxMDYsMTc3LDY2LDMxMSw4Niw4MywxNDAsMjEw
LDIyNCwyNDksNzcsNzEsNjgsMzcyLDE3MCw4NSw1NywzNzIsMjQ2LDE3MywzNywyMTIsMzAsNzAy
LDU4LDQ4Miw5NiwxNDUsMTE4LDQ0LDEyMSw5OSwxMDEsMTc2LDQyMiwyODIsMTM4LDQwOCw2MCw0
OTUsNDc5LDgxMyw1ODYsMjQyLDQ1NCwxMzIsMjkzLDU1LDExLDM3NCwzOSw4Miw4MywxOSwyODgs
MTExLDEwNiw3OSw3MSwzMzYsNjgsOTgsNDQ2LDc4LDIzOCwzMDcsNjYsOTQsNjAsNDAyLDE1NCw3
NSw1NSwxMDMsMjUzLDE3NiwyNSw2MjgsNDUsNjk1LDY1LDU4NSwzNTMsMTkyLDExOCw1Myw4Nywx
MjgsOTcsMTc1LDQyNiwyNjcsMTI4LDEyMTQsOTYsNTUyLDQ5MiwyODYsNTg3LDI2NCw0NjcsMzY0
LDI3Niw1MCwxMSwzNzksNDQsOTAsOTMsMTMsMjg2LDEyNSwxMTUsMTk0LDcwLDM0NSwxMDEsMTEx
LDU2Niw4MywyMjEsMjY0LDkzLDIyNCw2Myw0MDUsMTYwLDE0OSw1Miw5NiwyNDAsOTcsNTAsMjA1
LDYwLDgyMCw3MSwxMjAsMTA5LDUxNCwxMzMsNDEsMTE1LDE0Myw5MSwxNzYsNDE0LDI3OCwxNjUs
MjAxOSw5Miw1NzQsNDYwLDQ5MSw1NzEsMjQ0LDQwNCwzNjIsMjgzLDUxLDExLDExMiw0MywyMDcs
NzQsMTUsMzAzLDEzMCwxMTUsMTg0LDY4LDMzMyw5OSwxMDEsNDM3LDE5OSwyMjEsMjk4LDEyNCwx
NzIsMTQ5LDM2MiwxNDYsNzQsNTQsMTQyLDIyOSwxNzYsNDgsMTkzLDQ0LDY5MSw2NSw1OTIsMzg0
LDE3NiwxNDMsNTgsMTMyLDExMSwxMTUsMTQ4LDI0MywzMzgsMTUzLDEzNDYsMTEyLDU5Miw0NTAs
NjI2LDU4NywyODMsNTI0LDE2Nyw0MTYsNjksMTQsNDQzLDYxLDEyNCwyMDUsMTMsMzc5LDg1LDE0
NywxNzcsODQsMzgyLDEzOSwxMjgsNTE4LDg0LDI5MSw0NTMsMTEzLDEwNCw1OSw0NDYsMTYzLDEx
MCw4MCwxMTYsMjU1LDE3MSw3MCwyMDUsNDUsNjIxLDQzLDEwNyw0NDIsMjE3LDE3Nyw1NCwxMjMs
MTMzLDIzNCwxNjUsNTMyLDMzMiwxODAsMTk3Nyw5Miw3MTgsNzA1LDYzNiw4MjQsMzIwLDQ5MSwx
NDYsMzYzXSwKICAgICAgICBhZnRlcjogWzExODUsMzIsMTE0Myw0OCwxMjQsMTQ3LDI1OCw2NDMs
MTA3LDM0NCw0MDksMTExLDQ1NywyMzQsMTAzLDc0NiwzOTEsMjU2LDUzOSwxMjYsMTAyLDc3LDU3
NCwyNjcsOTUsNDUsMjIxLDM0NywyMTgsNTEsMTkzLDUzLDg3NCw0Miw1MTYsNTgwLDE5MSwyNTIs
NjAsMTkxLDE2MSwzODEsMTY5LDU2OCw0NDksMTQyLDQwNiw5OSw3MDgsNTc5LDU4MCw3NjEsMzYw
LDgwOCwxODAsNDA5LDQ3LDI1LDM0Miw0NCwxMTYsMTYwLDEwLDMyNCwxODEsOTgsNzMsNjYsMzAx
LDkxLDg4LDQ0MCwxNjksMjI1LDI2OCw4OSw2Niw0MywzNjIsMTMyLDE1NCw0OCw4OSwxMDYsODcs
MzgsNDY2LDI4LDYxNiw1NCwxMDgsMzQzLDE3OSw3NiwzOSw4Miw2OSwxMTIsMTc4LDEzNSwyNDgs
MTIyLDIxNyw1OCw0MTEsMzk4LDQyNiw1MzgsMjE4LDM3NiwxMjUsMzE5LDUxLDksMzQxLDM0LDg1
LDMxNSwxMSw0MTMsMjEwLDk5LDE3Niw2MywyOTksODUsODgsMzk2LDYwLDIwNywyNjQsNjUsOTAs
MzksMzY3LDEzOSwxMzEsNDcsOTAsMjE2LDkwLDIxLDU3OSw0NCw2MTEsNTcsMTAxLDM0NiwxNjcs
MTAxLDUyLDgxLDEwMSw4NSwxNDUsMzE0LDI0NiwxMjEsNDE0LDU5LDQyNiwyMjEsNTI0LDUzNiwy
MDYsMzY2LDEyNiwzMTUsNDksMTAsNDQ0LDM0LDE3MiwxNDcsMTAsMjk3LDg3LDEwMCw3Miw2Mywy
ODYsODYsODgsMzk5LDIwMSwyMDQsMjU2LDg4LDY2LDQyLDM2MSwxNDEsNzIsNDYsOTUsNzgsODks
MjIsNTg2LDQ2LDYwNyw1NiwxMDIsMzQyLDE3MywxMDAsMzUsODIsNjksODMsMTQ2LDM0MCwyNDMs
MTA3LDM2Niw2MCwyNjIsMjYyLDIzMiw1NDcsMjM2LDM3NCwzNTYsMzIzLDUyLDEwLDMzOSwzNSw4
MSwxMTcsMTEsMjQ4LDM0NCwxMDIsNzQsNjMsMjc5LDg2LDg5LDQ0Myw2MiwyMDcsMzMwLDk1LDk1
LDg2LDMzMSwxNDEsNzEsNDcsOTEsMjE2LDE1MCwzNyw0NTMsNDMsNjg5LDU4LDUzNSw4NywxNjMs
NzQsMzksOTgsNzMsODUsMTQyLDMzOSwyNDksMTMxLDI5Myw2Miw0MTUsMjQxLDI0MCw1MzUsMjA1
LDM5OCwxMDQsMzE4LDU1LDEwLDM0NSwzNywxMTIsMTQxLDExLDU4NSw4MCwxMDIsMTc4LDY2LDI4
Niw5Miw4OCw0MTAsNjMsMjE0LDI3MCw4Nyw2Nyw4MCw0MzksMTM4LDEyNyw0Nyw5MywyMDYsOTAs
MjIsMzEzLDI5LDY2NCw0MiwxMTgsMzMyLDE2NCwxMDcsNTAsODIsMTAxLDg1LDE2MCwxMzMsMjQ2
LDEyMywyMTYsNjAsNDIwLDIyOSwyMzgsNTQzLDIyNywzNzcsMTE4LDMyMSw0OSwxMCwzNDQsNDks
MjMwLDE1NCwxMSwzMDksOTYsMTAxLDE3Miw2NSwyODQsODgsOTMsNDUwLDYyLDIxMCwyNDUsNjQs
OTEsODMsMzMyLDE1MSwxMzUsNTAsOTMsMjA3LDE1NSwyNyw0OTEsMzAsNjE2LDU5LDU1MCwzMzAs
MTg5LDExMCw1MSw4MiwxMDcsOTQsMTY2LDM4MSwyNTUsMTIzLDIyNCw2MSw0MzMsNDI2LDMxOSw1
MzgsMjE5LDM3NiwxMzcsMzIyLDUyLDEwLDM0OCw0NSw0OTUsODYsMTAsMjM1LDExMSwxMDQsMTcz
LDY0LDI4NSw5MCw4OSw0MDMsMTc4LDIxMCwzNTUsMTAzLDc5LDgyLDMzMCwxNDIsMTMyLDQ5LDEz
MSw4MCw5MCw1NywzNTYsMjksNjU1LDU4LDQ1NywzNTEsMjQ2LDc3LDQ1LDg1LDEwNSw5NCwxNjgs
Mzg3LDI0NCwxMjYsMjUwLDYyLDQzOSw0MTAsMjQ5LDU0NSwyMDcsNDAwLDEzMSwzMjEsNDgsMTEs
MzQzLDM2LDQ5Miw4NCwxMSwyMTksODUsMTA0LDE2MSw2NCwyODksODgsOTIsNDA5LDYzLDIxNCwy
MzgsOTcsOTUsODQsMzI4LDE1Miw3Myw0OCw5Niw4NiwxNjYsMzcsMTQyLDQzLDYzNCw0NCw0NTYs
MzQ1LDE1NSw3Niw1Myw4NSwxMDYsODgsMTcxLDM5MSwyNDgsMTM4LDUzNCwyMTUsNDQ0LDIzNywy
NjgsNTMzLDIxOCwzNzcsMzUxLDMxOSw1MywxMSwzODUsMzEsMTYyLDEyNCwxMSwyODcsMTA2LDEw
MywxNzQsNjQsMjg2LDg5LDkyLDQ1Niw2NiwyMDksMjM1LDk3LDE3NCwyMDQsNDQ0LDEzNiw1OSw1
MCwxMzMsMjIzLDkxLDUyLDI0MywzMCw2MzksNTgsMTA1LDM1NywxNjQsNzcsMzksODAsNzAsODcs
MTUyLDM4NywxNTcsMTA1LDI3Nyw2Miw1MjcsNTQyLDI2MCw1MzMsMjEwLDM3NywzNjUsMzIwXQog
ICAgfSwKICAgIGludGwyOiB7CiAgICAgICAgYmVmb3JlOiBbNDkyLDM3MiwzMTAsMjgwLDQ1Niw5
OSw5NjcsMTAxNyw2NTksMTUwNywzMjYsMjYyLDMyOCwzMjgsNjkyLDYyMSwzMzEsMjE3LDI1OSwy
NDAsMjI0LDEyMSw0MzUsMjExLDIxLDY0MCw4NzMsODk5LDczOSwyNzAsNTgwLDE5OCw0NTQsMjEy
LDMxMCw1MiwzMDIsMzI3LDMzMyw5NjcsNDI4LDE5MSwxNTMsNzk3LDQ3OSw0MzMsMjMyLDg4LDE3
NSwxNDksODcsNjgsMjY4LDg5LDIxLDMyNCw1NzMsNTEyLDMxOCwxNjksNDE2LDE0NCwxMTUsMjEy
LDMwMyw1MSwzMDAsMzM5LDM1MSw3NDksMjQ4LDE2OSwzOTUsMTc2LDQyOCw0MjgsMjIzLDgzLDEy
MCwxMzEsOTcsNzQsMjMyLDYyLDI0LDM4OSw3MDMsNzU2LDMzMywxNjEsNDE4LDE0OCwxMTIsMjE4
LDI5Myw1MSwzMDYsMzc5LDM4MCw5ODgsMzAwLDIyMywxOTEsMTI0LDU2Miw0NTQsMjQzLDkyLDEx
OCwxNTAsMTA2LDg5LDM0Niw4OSwxOCw1NDgsNjIxLDcxOSwzMzAsMTYxLDQ0NSwxNDYsMTIzLDIw
NSwyNzYsNDgsMzA4LDM0MiwzNzAsNzg5LDI1NSwxODYsMTQ4LDEwNSw0MzQsNDI3LDI0Nyw4Niwx
MjksMTYyLDk0LDczLDI2NCwxNDQsMTYsNzAyLDU0MSw1MzYsMjkzLDE4OSw0ODIsMTQ4LDMzMCwy
MjgsMzYyLDYzLDMyNiw0NzgsNDU0LDk4OCwyODYsMjQxLDE2MywxMjUsNDQ1LDQxNCwyNTYsMTg1
LDIyMiwxNTIsMTI0LDgwLDM2MSw5NywyMiw0MjAsNzU1LDgwNywzMjQsMTg1LDQ0NCwyMjQsMTYx
LDI2Miw0MTksNjQsMzY0LDQwNiw0NDQsMTA1OCwzODYsMjY4LDIyNiwxNjAsNDQ5LDQ1NywyNjEs
OTQsMTI4LDEzNiw5MCw2MywyNTAsNTQsMTUsMzI2LDQ3Myw1MDgsMjc1LDE0MCwzODksMTI5LDEw
NywxOTksMjc5LDQ4LDI4NywzMTAsMzE0LDY3NywyMDAsMTcxLDE0Miw0ODMsNDE3LDQxNCwyMzYs
ODgsMTE2LDEyNSw4Miw2MiwyNTIsNTgsMTQsMjg5LDQ5NCw1MDksMjc2LDM1OSwzOTAsMTMxLDE0
MywyMDAsMjgyLDQ4LDI5NCw0NjEsMzIwLDY4NiwyMDIsMTc5LDEzNiwxODIsNDIyLDM5MCwxNjQs
ODMsMTAxLDEyNCw4Myw2MSwyNDIsNTgsMTQsMjk3LDQ4Niw1MDcsMjczLDEzOCwzNzcsMTQ2LDEz
MywxOTksMjc4LDY0LDI4OSwzMzYsMzIwLDY4OSwyMDQsMTc2LDEzNiw5NCw0MTYsNDQ2LDIyMyw4
MywxMDQsMTIzLDgyLDYyLDI0Miw2OCwxNCwzMDgsNTA5LDUwNywyNzgsMTQxXSwKICAgICAgICBh
ZnRlcjogWzQ4OCwzMzUsNDcxLDI4NSwzODQsNzMsNTc3LDY3Nyw0MTIsOTMzLDI3MSwyMDgsMjU3
LDQwMiw1NDIsNDg1LDI2MCwxODMsMjE4LDE4MywxNDYsODAsMzUyLDk1LDE1LDQ2Miw2MTIsNTg4
LDM3MSwxNzMsMzc3LDEzOSwxMzgsMTk5LDI4NSw0NywyODcsNTM5LDMxNiw3MTQsMjMyLDEzNCwx
NDAsMTAxLDQwNywzNzIsMjE4LDgxLDExNSwxMTksODMsNTgsMjQ2LDU0LDE0LDI4Miw0OTEsNTE0
LDI3OSwxNDEsMzgwLDEzMCwxMTMsMTk5LDI4MCw0OCwyODQsMzE4LDMxOCw5MzcsMTkyLDE2OCw0
MzMsOTQsNDEyLDM4OSwxNDcsNzksMTEwLDEyOCw3OCw1OSwyNDAsNzEsMTUsMjc0LDQ5MSw1MDUs
MjcyLDIzNSwzNzksMTI2LDEyNywxOTksMjc4LDQ4LDI4NSwzMTEsMzE3LDY4MiwyMDQsMTY4LDEz
MiwxMDAsNDE0LDQ1NCwyMzMsODUsMTU5LDEyOCw4MCw2MiwyNDIsNjcsMTQsMzIwLDQ4NSw0NTMs
Mjc1LDE0MCwzNzksMTMxLDM1NSwxOTgsMjc2LDQ3LDI4NCwzMjksMzE3LDY4MCwzNTgsMTY4LDEy
OCwxMDMsNDEyLDQ3NywyMTcsODAsMTIxLDk0LDc4LDU4LDIzNSw1NCwxNCwzMzIsNDg1LDUwNiwy
NzQsMTM4LDM3NywxMjYsOTQsMTk4LDI2Niw0NywzMTYsMzU0LDMxNiw2NzYsMjA1LDE2NywxMzAs
OTYsNDEzLDM2NSwyMzMsNzksOTksMTIxLDU5LDY0LDE4NywzOTQsMTQsMjc3LDQ4OSw1NTQsMjgw
LDEzOCwzNzksMTI5LDEzOSwyMDAsMjgwLDQ4LDI4NSwzNjksMzE1LDk0NCwyMDEsMTcwLDEzOCw5
NCw0MTEsMzY3LDIzMyw4MCw5OSwxMjcsNzksNjAsMjQwLDUzLDE0LDM0Niw0NzksNTA5LDI3Niwx
MzksMzgxLDEyNCwxNDAsMTk3LDI3NSw0NywyODMsMzM4LDMxNiw2OTgsMjk2LDE1NywxMjUsMTAz
LDQxMSwzNzEsMjM0LDEwMCwxMjIsMTI0LDc4LDU4LDI0MCw1NCwxNCwyODIsNDY5LDUxMSwzMDMs
MTQwLDM3OCwxMjgsMTMxLDE5OCwyODIsNDgsMjg0LDMxMCwzMTUsNjc0LDIxMSwxNjksMTg4LDI2
OCw0MTQsNDQ1LDIzMyw3OSwxMTMsMTIyLDgwLDczLDIzMiw2MCwxNCwzMzIsNDk1LDUwNywyNzIs
MTM5LDM3OCwxNDYsMTIwLDE5OCwyNzUsNDgsMjg1LDMyOCwzMTYsNjc5LDE5NywxNjcsMTMyLDk1
LDQxMiwzNzQsMjIwLDgwLDEwNywxMTksNzgsNTgsMjM0LDUxLDE0LDI4NSw0OTYsNjE1LDI3NSwx
MzldCiAgICB9LAogICAgbW9yZWpzOiB7CiAgICAgICAgYmVmb3JlOiBbNDUwLDE0OCwxMjcsMTU5
NCwxNjksNDQ1LDYxMyw1MCw0NTksMzI2LDEyMiw5MywxNTU4LDEyMywyNjMsNTY1LDMyLDM5Miwz
MjksMTE5LDkyLDE1NTQsMTIxLDIxMiw1MDIsMzIsNzE2LDMyOCwxMTgsOTIsMTU0MywxMjMsMjE2
LDUwNSwzMSwzOTAsMzY1LDExOSw5NCwxNTQ2LDEyNCwyMTcsNTAyLDMxLDM3MSwzMjYsMTE4LDkw
LDE1OTQsMTIyLDIxNyw1MDMsMzEsMzY5LDMyOSwxMjAsOTMsMTU1MSwxMjEsMjEwLDQ5OSwxNjEs
MzY2LDMyNSwxMTgsOTEsMTk0NCwxMzUsMjEzLDUwMiwzMSwzNjIsMzI2LDExOSw5NCwxNTQ2LDEx
OCw2NjksNTAyLDMyLDM2NywzMjUsMTE5LDkyLDE1NjMsMTIyLDIxNCw1MDMsMzIsNDAwXSwKICAg
ICAgICBhZnRlcjogWzQ1OSwzMzQsMTIyLDM3NDMsMTg4LDI3OCw1OTAsNDksNDA2LDMyNywxMTks
OTMsMTU1OSwxMjIsMjE4LDUxMSwzMiwzNzEsMzI3LDEyMCw5MiwxNTU4LDEyMywyMTMsNTAyLDMy
LDM2OSwzMjYsMTIyLDkzLDE1MTgsMTIzLDIxNCw1MDQsMzIsMzcxLDMyNiwxMjAsOTEsMTg1MCwx
MjIsMjE3LDUwMiwzMSwzNzAsMzI2LDEyMCw5MywxNjA3LDE2MCwyMTgsNTA4LDMxLDM3MSwzMjYs
MTIxLDk0LDE4ODUsMTIxLDIxNCw1MDksMzIsMzcxLDMyOCwxMjAsOTEsMTg5NSwxMjEsMjE1LDUw
MywzMSwzNzAsMzI1LDEyMCw5MiwxNTUzLDEyMCwyMTMsNTE1LDMyLDM2NCwzMjYsMTIwLDkxLDE1
NTIsMTE5LDIxMiw0OTgsMzIsMzc0XQogICAgfSwKICAgIGFsZXhhOiB7CiAgICAgICAgYmVmb3Jl
OiBbNjUsMzEsOTYsMTk5LDE1MiwyNywyNzcsODAsMTQsNTEsMTIwLDksNjEsMTg3LDE1MiwzOSwy
NiwxODIsNzcsNDcsMjMsMjAsNjEsMzE1LDk2LDE3LDE3Miw1MSwxMiwzNSwxOTEsOCwyOSwxMzks
MTIxLDM1LDE3LDI4LDE1NSwzMywzMCwyMCw2MSwxNDYsMTAwLDE4LDE2Miw1MiwxMSwzNiwxMjUs
OSwzMCwxMTgsMTQ1LDM3LDE2LDE3LDk2LDM0LDI1LDIxLDY4LDEzOSwxMDYsMTgsMTU3LDQzLDEw
LDM0LDI5Niw4LDQwLDIwMCwxNTMsMzAsMTUsMTcsMTgwLDM0LDI0LDE5LDYwLDE2MywxMDUsMTgs
MTYwLDU3LDEyLDQyLDEyMyw5LDI5LDk0LDE0MSwzNiwxNSwxOCwxMjIsMzIsMjQsMjAsNjYsMTky
LDk5LDE4LDE2Miw1NiwxMiwzNSwxMjcsOCwyOSwxMjUsMTUzLDM2LDE2LDE2LDQ5MiwzMywyNCwy
MCw2MCwxMDQsMTEzLDE4LDE3MSw1MSwxMiwzNiwxMTAsOCwzMCw5OCwxMTMsMzYsMTYsMjMsMTI1
LDMzLDI0LDIwLDY4LDE1NCwxMDAsMTksMTYzLDU4LDE4LDM2LDE1NCw4LDMwLDE0OCwxNjQsMzUs
MTYsMTcsMTY2LDM0LDI3MywyMCw1OSwxOTgsMzUsMTcsMTUxLDUwLDExLDM0LDExMCw4LDI5LDIx
OSwxMDIsMzYsMTcsMTcsMTM4LDMzLDI0LDI0LDY0LDEyNCwxMDMsMTcsMTYwLDU0LDExLDQxLDEy
NSw4LDI4LDEyMiwxMjksMzUsMTYsMTcsMTE2LDMyXSwKICAgICAgICBhZnRlcjogWzYzLDMwLDk0
LDE0OSwxNDEsMzksMjc2LDExNCwzOCw0OCw2NCw5LDY2LDEwNSw5Myw0OCwyNSwyMDMsMzYsNDcs
MzMsMjAsNjAsMTAxLDQ4LDIyLDE2NCw1NSwxOCwzNSw0NSw4LDI5LDYyLDU5LDM2LDE2LDE4LDMw
LDMyLDM0LDE5LDU5LDEwMSwyNTYsMjIsMTYxLDU2LDE4LDQyLDQ1LDgsMjgsNjMsNjAsMzYsMTUs
MTgsMzAsMzIsMzQsMTksNTgsMTAwLDQ3LDIyLDE2MSw1NiwxOCwzNCw0NCw5LDI4LDYyLDU5LDM2
LDE2LDE4LDI5LDM0LDM2LDIwLDYwLDEwNCw1OCwyMiwxNjMsNTgsMTksMzUsNDUsOCwyOSw2NSw2
MSwzNywxNiwxOCwzMiwzNCwzNiwyMCw1OSwxMDIsNTIsMjIsMTYzLDU4LDE5LDM1LDQ0LDgsMjks
NjQsNjAsMzcsMTUsMTcsMzIsMzMsMzYsMjAsNjAsMTAzLDc4LDIzLDE2Niw1NywxOCwzNCw0Niw4
LDI5LDY0LDYxLDM3LDE2LDE4LDMxLDM0LDM2LDIwLDU5LDEwMiw0OCwyMywxNjQsNTgsMTksMzUs
NDQsOCwzMCw2NCw2MSwzNywxNiwxOCwzMSwzMiwxNzcsMjEsMTE3LDE2Myw0OSwyMiwxNjUsNTks
MTgsMzUsNDUsOCwyOSw2NCw2MCwzOCwxNiwxNywzMiwzMywzNiwyMCw1OSwxMDMsNTUsMjIsMTY0
LDYwLDE4LDM1LDQ0LDgsMjksNjUsNjAsMzcsMTYsMTgsMzEsMzNdCiAgICB9LAogICAgbW96Mjog
ewogICAgICAgIGJlZm9yZTogWzQ1LDc3LDQ2LDI5LDY1LDQxLDQxLDMyLDksNzgsMjMsMzMsMzgs
MjQsOTMsMzAsMzMsMzUsMzgsMzksOCwyMCwxOCwyOSw0Niw0MCwyNSw3Myw5MSw1OCw1MywyMiw3
Niw5NCwzNCwxMTMsMjQxLDQxLDMxLDEzNiwxMTUsMjAsMTQ2LDMwLDIxLDQ3LDI5LDI3LDI1LDI2
LDM4LDE5LDIxLDI4LDEzLDUwLDI2LDI0LDIxLDMzLDQxLDcsMTQsMTQsMTcsMjQsMzMsMTcsMzMs
NTUsMjEsMjYsMTMsMzAsNDEsMjgsMTU4LDExMSw0NSwxNSw0MSw0NSwyMCwzOSwzMSwyMiw1Niwy
OSwyNywzNiwxMCwzOCwxOSwyMiwyOSwxMyw1MSwyNiwyNSwyOCwzMiwyOSw3LDE1LDE0LDE3LDI1
LDM1LDE3LDMzLDU2LDIxLDI3LDE0LDM4LDQwLDI4LDExNSwxMDksMzcsMTYsNDEsNDYsMTksMzAs
MzEsMjEsNDYsMjksMjYsMzQsOSwzOCwxOSwyMiwyOCwxMyw1MCwyNSwyNCwyMSwzMywyOSw3LDE1
LDE0LDE4LDI1LDM0LDE4LDMzLDU1LDIyLDI3LDEzLDI5LDQwLDI2LDI1MiwxMTAsMzUsMTQsNDAs
NDUsMjAsMzksMzEsMjIsNDUsMjksMjYsMjYsMTAsMzksMTgsMjMsMjgsMTQsNTAsMjcsMjQsMjEs
MzMsMzAsOCwxNSwxNCwxOCwyNiwzNSwxOSw0MCw1NiwyMSwyNywxMywzMSw1MywyNywxMzUsMTA5
LDM2LDE1LDQwLDQ2LDIwLDMwLDMxLDIxLDQ1LDI5LDI2LDI2LDksNTAsMzEsMjIsMjgsMTMsNTAs
MjUsMjUsMjEsMzIsMjksOCwxNCwxNCwxOCwyNSwzNiwxNywzMyw1NSwyMCwyNiwxMiwyOSw0MCwy
NiwxOTUsMTA4LDM2LDE1LDQwLDQ1LDE5LDQwLDMxLDIwLDQ2LDM2LDI3LDI2LDEwLDM5LDE5LDIy
LDI4LDEzLDUxLDI2LDI0LDIxLDMzLDQxLDE3LDE1LDE0LDE4LDI1LDM1LDI2LDMzLDU2LDIxLDM2
LDEzLDQwLDQyLDI4LDE2MCwxMDgsMzgsMTcsNDIsNDQsMjEsNDAsMzAsMjEsNDUsMjgsMjYsMjYs
MTAsMzgsMTksMjIsMjksMTMsNTAsMjYsMzMsMjEsMzMsMzAsNywxNSwxMywxNywyNCwzNSwxNywz
Myw1NSwyMSwyNiwxMywyOSw0MCwxNDEsMjkyLDEwOCwzOCwxNSw0MCw0NiwxOSw0MCwzMiwyNCw0
NSwyOSwyNywzNiwxMCwzOSwyMCwyMywyOSwyMSw1NywyNiwyNSwyMiwzOSwzMCw3LDE1LDE0LDE3
LDI1LDM1LDE3LDQwLDY4LDIxLDMzLDIzLDI5LDQwLDI2LDE0MywxMTAsMzUsMTUsNDEsNDUsMjAs
MzAsMzEsMjEsNDQsMzAsMjcsMjYsMTAsNDAsMjAsMjIsMjksMTMsNDksMjUsMjMsMjEsMzIsMzEs
NywxNSwxMywxOCwyNCwzNCwxOCwzMyw1NSwyMSwyNiwxMywzOSw0MSwyNiwxMjksMTA4LDM3LDE2
LDQyLDQ2XSwKICAgICAgICBhZnRlcjogWzQ2LDEwMiw1OCwzNCw2NCw2Niw1NSw0OSwxMCw4Miwz
MywzMyw1NiwyNCw4MywzNSwzNSwzNSwzOSw0MCwxMiwyMCwxOSwyOSw0Miw0MSwyNSw3NCw3NSw2
MCw2NSwxOCw5NCw5MCw0NSwxMDAsMjM4LDQyLDE2LDUyLDEwNywyMCw0MCwzMSwyNSw0NiwyOSwy
NywzOCw5LDUwLDE5LDIyLDM3LDEyLDUwLDI2LDI0LDIxLDMyLDI5LDcsMTYsMTUsMTgsMjQsMzUs
MTgsMzMsNTYsMjEsMjcsMTQsMzgsNTIsMjgsODAsMTExLDM3LDE1LDQxLDQ2LDIwLDM5LDMyLDI0
LDQ2LDMwLDI2LDM2LDksNDksMjAsMjIsMzYsMTMsNTAsMjUsMjQsMjEsMzIsMjksNywxNSwxNCwx
OCwyMywzNCwxOCwzMyw1NCwyMiwyNywxMywzOSw1MywyOCw4MCwxMDcsMzYsMTUsNDEsNDUsMjAs
MzgsMzIsMjQsNDYsMzAsMjYsMzcsMTAsNTEsMjAsMjMsMzcsMTMsNTEsMjcsMjQsMjIsMzQsMzAs
OCwxNSwxNSwxOCwyNSwzNSwxOCwzNCw1NywyMywyNywxMywzOSw1NSwyOCw4MCwxMDksMzYsMTYs
NDEsNDcsMjEsNDEsMzEsMjYsNDcsMjksMjcsMzcsMTAsNTAsMTksMjMsMzYsMTMsNTAsMjYsMjQs
MjIsMzMsMzAsOCwxNiwxNSwxOSwyNSwzNSwxOCwzNCw1NSwyMywyNiwxNCwzOSw1MywyNyw3OSwx
MDcsMzYsMTUsNDAsNDUsMjAsMzksMzEsMjUsNDUsMzAsMjcsMzcsMTAsNTAsMTksMjIsMzcsMTQs
NTEsMjYsMjQsMjIsMzMsMjksNywxNiwxNCwxOCwyNiwzNCwxOCwzMyw1NiwyMiwyNywxNCwzOSw1
MywyOCw3OSwxMDksMzYsMTUsNDEsNDUsMjEsMzksMjcyLDI1LDQ3LDMwLDI2LDM2LDksNTAsMjAs
MjMsMzcsMTQsNTAsMjcsMjQsMjEsMzIsMzAsNywxNiwxNSwxOCwyNSwzNCwxNywzNCw1NiwyMiwy
NiwxNCwzOSw1MywyOCw4MCwxMDgsMzYsMTUsNDEsNDYsMjIsMzksMzIsMjUsNDYsMzAsMjYsMzYs
OSw0OSwxOSwyMywzNiwxMyw1MSwyNiwyNCwyMSwzMywyOSw4LDE1LDE1LDE5LDI1LDM1LDE4LDMz
LDU2LDIyLDI2LDE0LDM4LDUyLDI4LDgwLDEwOSwzNiwxNSw0MSw0NSwyMCwzOCwzMSwyNSw0NSwz
MCwyNywzNiwxMCw1MCwxOSwyMywzNiwxMyw1MCwyNiwyNCwyMiwzMiwyOSw4LDE1LDE1LDE4LDI0
LDM1LDE4LDMzLDU2LDIxLDI2LDE0LDM5LDUzLDI3LDc5LDEwOCwzNywxNSw0MSw0NywyMSw0MSwz
MiwyNiw0NiwzMCwyNywzOCwxMCw1MSwyMCwyMywzOCwxNCw1MSwyNiwyNSwyMiwzNCwzMCw4LDE2
LDE2LDE5LDI2LDM0LDE4LDM0LDU1LDIyLDI3LDE0LDM4LDU0LDI4LDc5LDEwNywzNywxNSw0Miw0
N10KICAgIH0sCiAgICBibG9hdDogewogICAgICAgIGJlZm9yZTogWzM0NTgsMzQyNSwzNDQ2LDM0
MjYsMzQyOSwzNDQ3LDM0MjMsMzQxMCwzNDIwLDM0MjJdLAogICAgICAgIGFmdGVyOiBbMzU4OCwz
NDc1LDM0MzcsMzQ1MiwzNTUyLDM2ODksMzY0MCwzNTQ1LDM1MzQsMzM5OV0KICAgIH0KfQoKZnVu
Y3Rpb24gbG9nKG1zZykKewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkudGV4dENvbnRlbnQgPSBt
c2c7Cn0KCmZ1bmN0aW9uIHNob3coa2V5KQp7CiAgICB2YXIgYmVmb3JlID0gc3VtKHJlc3VsdHNb
a2V5XS5iZWZvcmUpOwogICAgdmFyIGFmdGVyID0gc3VtKHJlc3VsdHNba2V5XS5hZnRlcik7CiAg
ICBsb2coa2V5ICsgJyBiZWZvcmU6ICcgKyAoYmVmb3JlKSArICcsIGFmdGVyOiAnICsgYWZ0ZXIg
KyAnLCBkZWx0YTogJyArIChhZnRlciAtIGJlZm9yZSkgKyAnLCBwZXJjOicgKyBNYXRoLmNlaWwo
KChhZnRlciAtIGJlZm9yZSkgLyBhZnRlcikgKiAxMDApICsgJyUnKTsKCiAgICBmdW5jdGlvbiBz
dW0oYXJyYXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5LnJlZHVjZShmdW5jdGlvbihwcmV2
aW91cywgY3VycmVudCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBwcmV2aW91cyArIGN1
cnJlbnQ7CiAgICAgICAgfSwgMCk7CiAgICB9Cn0KCmZ1bmN0aW9uIHJ1blRlc3QoKQp7CiAgICBm
b3IodmFyIGtleSBpbiByZXN1bHRzKSB7CiAgICAgICAgc2hvdyhrZXkpOwogICAgfQp9Cgo8L3Nj
cmlwdD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CjxkaXYgaWQ9ImNvbnNvbGUi
Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75980</attachid>
            <date>2010-12-08 15:38:20 -0800</date>
            <delta_ts>2010-12-08 16:33:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50184-20101208153818.patch</filename>
            <type>text/plain</type>
            <size>35294</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTFiNTlmMjY1MmRiNGQxOTYzYzY4M2UzMmU1MGRhZTk3NTlhYzA4ZS4uOWY1YzhhNTIzOWVkYTJk
NmVmZWU5MjYzOWZkY2YxNTFiY2Y3ZDhjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAxMC0xMi0wOCAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGUgYSBnZW5lcmljIHdheSB0byBz
dG9yZSBzaGFkb3dQYXJlbnQgb24gYSBOb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAxODQKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIFRy
ZWVTaGFyZWQ6Om1fcGFyZW50IGFjdCBhcyBlaXRoZXIgcGFyZW50Tm9kZSgpIG9yCisgICAgICAg
IHNoYWRvd0hvc3QoKSBmb3IgTm9kZS4gVGhlIGRpc3RpbmN0aW9uIGlzIGNvbnRyb2xsZWQgYnkg
SXNTaGFkb3dSb290RmxhZy4KKworICAgICAgICBSZWZhY3RvcmluZywgc28gbm8gbmV3IHRlc3Rz
LiBTZWUgcGVyZm9ybWFuY2UgcmVzdWx0IHRlc3RpbmcgaW4gYnVnLgorCisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVjYWxjU3R5bGUpOiBD
aGFuZ2VkIHRvIHVzZSBwYXJlbnRPckhvc3ROb2RlKCkuCisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hhZG93SG9zdCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c2V0U2hhZG93SG9zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aXNDb250ZW50RWRpdGFibGUpOiBDaGFuZ2VkIHRvIHVzZSBwYXJlbnRPckhvc3ROb2Rl
KCkuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bmV4dFJlbmRlcmVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp2aXJ0dWFsQ29tcHV0ZWRTdHlsZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnNoYWRvd1RyZWVSb290Tm9kZSk6IENoYW5nZWQgdG8gdXNlIHBhcmVudE5v
ZGVHdWFyYW50ZWVkSG9zdEZyZWUoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEV2ZW50
QW5jZXN0b3JzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKTogQ2hhbmdlZCB0byB1c2UgcGFyZW50T3JIb3N0Tm9kZSgpLiAKKyAgICAgICAgKiBk
b20vTm9kZS5oOiBBZGRlZCBhbiBleHRyYSBmbGFnIGFuZCBhZGp1c3RlZCBiaXQgY291bnRzLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNTaGFkb3dOb2RlKTogTWFkZSBub24tdmlydHVhbCwg
c3dpdGNoZWQgdG8gdXNlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2Rl
KTogTWFkZSB0byByZWNvZ25pemUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVu
dE9ySG9zdE5vZGUpOiBDaGFuZ2VkIHRvIHVzZSBzdHJhaWdodCBwYXJlbnQoKSBhbmQgbWFkZSBj
b25zdC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZy
ZWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNoYWRvd1BhcmVudE5vZGUpOiBN
YWRlIG5vbi12aXJ0dWFsIGFuZCBjb25zdC4KKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXB0aENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyk6
IENoYW5nZWQgdG8gdXNlIHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpwcmV2aW91c0luUG9zdE9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKTogIERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBGdWxseUNsaXBwZWRTdGFjayk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKTogRGl0
dG8uCisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjphbmNob3JOb2RlKTogQ2hhbmdlZCB0byB1c2UgcGFyZW50Tm9kZUd1YXJh
bnRlZWRIb3N0RnJlZSgpLgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpmb2N1c05v
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6YmFzZU5vZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZXh0ZW50Tm9kZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpnZXRSYW5nZUF0KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xTaGFkb3dS
b290RWxlbWVudCk6CisgICAgICAgICAgICBDaGFuZ2VkIHRvIHNldFNoYWRvd0hvc3QoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50Ojp1cGRhdGVTdHls
ZSk6IENoYW5nZWQgdG8gdXNlIHNoYWRvd0hvc3QoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpkZXRhY2gpOiBBZGRlZCBhbiBvdmVycmlkZSB0bwor
ICAgICAgICAgICAgZXhwbGljaXRseSBzZXQgc2hhZG93SG9zdCB0byAwLiBPdGhlcndpc2UsIHRo
ZSBlbGVtZW50IHdpbGwgbGVhay4KKyAgICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxl
bWVudHMuaDogQWRkZWQgZGV0YWNoIGRlZiwgcmVtb3ZlZCBtZW1iZXJzIHRoYXQgYXJlCisgICAg
ICAgICAgICBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdT
aGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdT
aGFkb3dUcmVlUm9vdENvbnRhaW5lcjo6flJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVy
KToKKyAgICAgICAgICAgIEFkZGVkIGV4cGxpY2l0IGNsZWFyaW5nIG9mIHNoYWRvd0hvc3QgdG8g
YXZvaWQgbGVha2luZyBhbmQgY3Jhc2hlcywKKyAgICAgICAgICAgIGJlY2F1c2UgU1ZHIHNoYWRv
dyBET00gY2FuIGJlIGR5bmFtaWNhbGx5IGF0dGFjaGVkL2RldGFjaGVkLCBwcm9kdWNpbmcKKyAg
ICAgICAgICAgIHN0YWxlIG5vZGVzIGluIG92ZXIvb3V0IGV2ZW50IGhhbmRsaW5nLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
VGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQ2hhbmdlZCB0byB1c2Ugc2hhZG93
SG9zdCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAgICAgICAgIEFkZGVkIGV4cGxpY2l0IGNs
ZWFyaW5nIG9mIHNoYWRvd0hvc3QgYW5kIGV4cGxpY2l0IGRlc3RydWN0aW9uIHRvCisgICAgICAg
ICAgICBhdm9pZCBvdXQtb2Ytb3JkZXIgcmVtb3ZhbCBvZiBjaGlsZHJlbi4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlUG9z
aXRpb24pOiBTaW1wbGlmaWVkIGNvZGUuCisgICAgICAgICogcmVuZGVyaW5nL1NWR1NoYWRvd1Ry
ZWVFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1l
bnQ6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudCk6IEFkZGVkCisgICAgICAgICAgICBzZXR0aW5n
IG9mIHNoYWRvd0hvc3QuCisgICAgICAgIChXZWJDb3JlOjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1l
bnQ6OmF0dGFjaEVsZW1lbnQpOiBDaGFuZ2VkIHRvIHVzZSBzaGFkb3dIb3N0KCkuCisgICAgICAg
IChXZWJDb3JlOjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNsZWFyU2hhZG93SG9zdCk6IEFk
ZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaDogQWRkZWQg
ZGVmLCByZW1vdmVkIG1lbWJlcnMgdGhhdCBhcmUKKyAgICAgICAgICAgICBubyBsb25nZXIgbmVl
ZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0Jsb2NrRWxlbWVudDo6aW5pdEFzUGFydCk6IENoYW5nZWQgdG8gdXNlIHNo
YWRvd0hvc3QoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oOiBSZW1vdmVk
IG1lbWJlcnMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0VsZW1lbnQ6OlNoYWRvd0VsZW1lbnQpOiBBZGRlZCBzZXR0aW5nIG9mIHNoYWRvd0hvc3Qu
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dFbGVtZW50OjpkZXRhY2gpOiBBZGRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50OjpUZXh0Q29udHJvbElubmVyRWxlbWVudCk6
IEFkZGVkIHNldHRpbmcKKyAgICAgICAgICAgIG9mIHNoYWRvd0hvc3QuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KTogQ2hhbmdl
ZCB0byB1c2UKKyAgICAgICAgICAgIGlzU2hhZG93Tm9kZSgpLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCk6IEFkZGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDogUmVtb3ZlZCBtZW1iZXJzIHRoYXQgYXJl
IG5vCisgICAgICAgICAgICBsb25nZXIgbmVlZGVkLgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Om93bmVyU1ZHRWxlbWVudCk6IFNp
bXBsaWZpZWQgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnZpZXdwb3J0RWxl
bWVudCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdMb2NhdGFibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKTogRGl0dG8uCisgICAgICAgICogc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVu
dDo6dGl0bGUpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlVXBkYXRlQmxvY2tlcjo6d2hpbGUpOiBEaXR0by4KKwog
MjAxMC0xMi0wOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYmU0MDBiOGFiOGY3
NjdjZjVkYjRlYjFlNzE0M2EwMWU1ZGIwMDJmMS4uMzBkMjM5YjllNDQ0MTRkZGVmZTdmNWViNmE3
YzMxZGNmZDVlMjgyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTk4MiwxMyArOTgyLDEwIEBAIHZvaWQgRWxlbWVu
dDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogewogICAgIC8vIFJlZiBjdXJyZW50
U3R5bGUgaW4gY2FzZSBpdCB3b3VsZCBvdGhlcndpc2UgYmUgZGVsZXRlZCB3aGVuIHNldFJlbmRl
clN0eWxlKCkgaXMgY2FsbGVkLgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VycmVudFN0eWxl
KHJlbmRlclN0eWxlKCkpOwotICAgIGJvb2wgaGFzUGFyZW50U3R5bGUgPSBwYXJlbnROb2RlKCkg
PyBwYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCkgOiBmYWxzZTsKKyAgICBib29sIGhhc1BhcmVu
dFN0eWxlID0gcGFyZW50T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpIDogZmFsc2U7CiAgICAgYm9vbCBoYXNQb3NpdGlvbmFsUnVsZXMgPSBuZWVkc1N0eWxl
UmVjYWxjKCkgJiYgY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3Rl
ZEJ5UG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgYm9vbCBoYXNEaXJlY3RBZGphY2VudFJ1bGVzID0g
Y3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRq
YWNlbnRSdWxlcygpOwogCi0gICAgaWYgKCFoYXNQYXJlbnRTdHlsZSAmJiBpc1NoYWRvd05vZGUo
KSkKLSAgICAgICAgaGFzUGFyZW50U3R5bGUgPSB0cnVlOwotCiAgICAgaWYgKChjaGFuZ2UgPiBO
b0NoYW5nZSB8fCBuZWVkc1N0eWxlUmVjYWxjKCkpKSB7CiAgICAgICAgIGlmIChoYXNSYXJlRGF0
YSgpKQogICAgICAgICAgICAgcmFyZURhdGEoKS0+cmVzZXRDb21wdXRlZFN0eWxlKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4
IGQ2ZmZjNjg1ZjgzOTg5NTQwYjQ1ZDZiYzUyOTM1YTUxOTYwM2YwYzEuLjllMzQzNTM3NmY0OWI0
YzIyMDU4ODI5NTI3NzU1MWJjYjljN2JmMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NzgsNyArNDc4LDIyIEBAIE5vZGVS
YXJlRGF0YSogTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogewogICAgIHJldHVybiBuZXcgTm9kZVJh
cmVEYXRhOwogfQotICAgIAorCitFbGVtZW50KiBOb2RlOjpzaGFkb3dIb3N0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gdG9FbGVtZW50KHNoYWRvd1BhcmVudE5vZGUoKSk7Cit9CisKK3ZvaWQgTm9k
ZTo6c2V0U2hhZG93SG9zdChFbGVtZW50KiBob3N0KQoreworICAgIGlmIChob3N0KQorICAgICAg
ICBzZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpOworICAgIGVsc2UKKyAgICAgICAgY2xlYXJGbGFn
KElzU2hhZG93Um9vdEZsYWcpOworCisgICAgc2V0UGFyZW50KGhvc3QpOworfQorCiBzaG9ydCBO
b2RlOjp0YWJJbmRleCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJl
RGF0YSgpLT50YWJJbmRleCgpIDogMDsKQEAgLTY2NCwxMiArNjc5LDEyIEBAIHZvaWQgTm9kZTo6
ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pCiAKIGJvb2wgTm9kZTo6
aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAogewotICAgIHJldHVybiBwYXJlbnQoKSAmJiBwYXJl
bnQoKS0+aXNDb250ZW50RWRpdGFibGUoKTsKKyAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgp
ICYmIHBhcmVudE9ySG9zdE5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogYm9vbCBO
b2RlOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcmVu
dCgpICYmIHBhcmVudCgpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOworICAgIHJldHVybiBw
YXJlbnRPckhvc3ROb2RlKCkgJiYgcGFyZW50T3JIb3N0Tm9kZSgpLT5pc0NvbnRlbnRSaWNobHlF
ZGl0YWJsZSgpOwogfQogCiBib29sIE5vZGU6OnNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QK
QEAgLTEyNjUsNyArMTI4MCw3IEBAIFJlbmRlck9iamVjdCAqIE5vZGU6Om5leHRSZW5kZXJlcigp
CiB7CiAgICAgLy8gQXZvaWQgYW4gTyhuXjIpIHByb2JsZW0gd2l0aCB0aGlzIGZ1bmN0aW9uIGJ5
IG5vdCBjaGVja2luZyBmb3IgbmV4dFJlbmRlcmVyKCkgd2hlbiB0aGUgcGFyZW50IGVsZW1lbnQg
aGFzbid0IGV2ZW4gCiAgICAgLy8gYmVlbiBhdHRhY2hlZCB5ZXQuCi0gICAgaWYgKHBhcmVudCgp
ICYmICFwYXJlbnQoKS0+YXR0YWNoZWQoKSkKKyAgICBpZiAocGFyZW50T3JIb3N0Tm9kZSgpICYm
ICFwYXJlbnRPckhvc3ROb2RlKCktPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgZm9yIChOb2RlICpuID0gbmV4dFNpYmxpbmcoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkp
IHsKQEAgLTEzOTIsNyArMTQwNyw3IEBAIHZvaWQgTm9kZTo6c2V0UmVuZGVyU3R5bGUoUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gcykKIAogUmVuZGVyU3R5bGUqIE5vZGU6OnZpcnR1YWxDb21wdXRl
ZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiB7Ci0gICAgcmV0dXJuIHBh
cmVudCgpID8gcGFyZW50KCktPmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikg
OiAwOworICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCkgPyBwYXJlbnRPckhvc3ROb2RlKCkt
PmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikgOiAwOwogfQogCiBpbnQgTm9k
ZTo6bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKQEAgLTE0MTUsNyArMTQzMCw3IEBAIGJvb2wg
Tm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogICAgICAgICBpZiAoc3R5bGUtPnVzZXJE
cmFnKCkgPT0gRFJBR19FTEVNRU5UICYmIHN0eWxlLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05P
TkUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBwYXJlbnQo
KSA/IHBhcmVudCgpLT5jYW5TdGFydFNlbGVjdGlvbigpIDogdHJ1ZTsKKyAgICByZXR1cm4gcGFy
ZW50T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0Tm9kZSgpLT5jYW5TdGFydFNlbGVjdGlvbigp
IDogdHJ1ZTsKIH0KIAogTm9kZSogTm9kZTo6c2hhZG93QW5jZXN0b3JOb2RlKCkKQEAgLTE0NDEs
NyArMTQ1Niw3IEBAIE5vZGUqIE5vZGU6OnNoYWRvd1RyZWVSb290Tm9kZSgpCiAgICAgd2hpbGUg
KHJvb3QpIHsKICAgICAgICAgaWYgKHJvb3QtPmlzU2hhZG93Tm9kZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHJvb3Q7Ci0gICAgICAgIHJvb3QgPSByb290LT5wYXJlbnROb2RlKCk7CisgICAgICAg
IHJvb3QgPSByb290LT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7CiAgICAgfQogICAg
IHJldHVybiAwOwogfQpAQCAtMjUzNCw3ICsyNTQ5LDcgQEAgdm9pZCBOb2RlOjpnZXRFdmVudEFu
Y2VzdG9ycyhWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzLCBFdmVudFRhcmdldCogb3Jp
Z2kKICAgICAgICAgICAgIGlmICghc2hvdWxkU2tpcE5leHRBbmNlc3RvcikKICAgICAgICAgICAg
ICAgICB0YXJnZXQgPSBhbmNlc3RvcjsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhbmNl
c3RvciA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBhbmNlc3RvciA9IGFu
Y2VzdG9yLT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7CiAKICAgICAgICAgaWYgKCFh
bmNlc3RvcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5NDYsNyArMjk2MSw3IEBAIHZvaWQg
Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxz
ZWxlY3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCiAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRo
aXM7CiAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50KCk7CisgICAgICAgICAg
ICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggOTkyMTc5NWQ3YmE2
YTJlNzNmZWFhODE3NDg1ZTQ4MGMzMGQ1MjA1MS4uMWM1YzVjNDAzOGFmZjVmMDZhZjkxOWI0OGJl
MGI4ZWI1NDBkNTQ0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtNzQsNyArNzQsNyBAQCBjbGFzcyBUYWdOb2RlTGlzdDsKIAogdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY29uc3QgaW50IG5vZGVTdHlsZUNoYW5nZVNoaWZ0
ID0gMjQ7Citjb25zdCBpbnQgbm9kZVN0eWxlQ2hhbmdlU2hpZnQgPSAyNTsKIAogLy8gU3ludGhl
dGljU3R5bGVDaGFuZ2UgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGVudGly
ZSBzdHlsZSBjaGFuZ2UgbG9naWMgZXZlbiB0aG91Z2gKIC8vIG5vIHN0eWxlIHByb3BlcnR5IGhh
cyBhY3R1YWxseSBjaGFuZ2VkLiBJdCBpcyB1c2VkIHRvIHJlc3RydWN0dXJlIHRoZSB0cmVlIHdo
ZW4sIGZvciBpbnN0YW5jZSwKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1
ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBu
b2RlVHlwZSgpIGNvbnN0ID0gMDsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlKCkgY29u
c3QgeyByZXR1cm4gcGFyZW50KCk7IH0KKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlKCkg
Y29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNvbnN0OwogICAgIE5vZGUqIHBy
ZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXM7IH0KICAgICBOb2RlKiBu
ZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQpAQCAtMjA1LDEzICsyMDUsMTYg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDb21tZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSXNDb21tZW50RmxhZyk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDaGFyYWN0ZXJEYXRhTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0
dXJuIDA7IH0KKyAgICBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWco
SXNTaGFkb3dSb290RmxhZyk7IH0KKyAgICAvLyBGSVhNRTogRWxpbWluYXRlIGFsbCB1c2VzLCBm
b2xkIGludG8gc2hhZG93SG9zdC4KKyAgICBDb250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnROb2Rl
KCkgY29uc3Q7CiAgICAgTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgTm9kZSogc2hh
ZG93VHJlZVJvb3ROb2RlKCk7CiAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpOwogICAgIC8vIE5v
ZGUncyBwYXJlbnQgb3Igc2hhZG93IHRyZWUgaG9zdC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJl
bnRPckhvc3ROb2RlKCk7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNv
bnN0OworICAgIC8vIFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRvd1BhcmVu
dE5vZGUgaXMgMC4KKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RG
cmVlKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBlbmNsb3NpbmcgZXZlbnQgcGFyZW50
IG5vZGUgKG9yIHNlbGYpIHRoYXQsIHdoZW4gY2xpY2tlZCwgd291bGQgdHJpZ2dlciBhIG5hdmln
YXRpb24uCiAgICAgTm9kZSogZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CkBAIC01
ODEsMTcgKzU4NCwxOSBAQCBwcml2YXRlOgogICAgICAgICBJbkFjdGl2ZUNoYWluRmxhZyA9IDEg
PDwgMTUsCiAgICAgICAgIEluRGV0YWNoRmxhZyA9IDEgPDwgMTYsCiAgICAgICAgIEhhc1JhcmVE
YXRhRmxhZyA9IDEgPDwgMTcsCisgICAgICAgIElzU2hhZG93Um9vdEZsYWcgPSAxIDw8IDE4LAog
CiAgICAgICAgIC8vIFRoZXNlIGJpdHMgYXJlIHVzZWQgYnkgZGVyaXZlZCBjbGFzc2VzLCBwdWxs
ZWQgdXAgaGVyZSBzbyB0aGV5IGNhbgogICAgICAgICAvLyBiZSBzdG9yZWQgaW4gdGhlIHNhbWUg
bWVtb3J5IHdvcmQgYXMgdGhlIE5vZGUgYml0cyBhYm92ZS4KLSAgICAgICAgSXNQYXJzaW5nQ2hp
bGRyZW5GaW5pc2hlZEZsYWcgPSAxIDw8IDE4LCAvLyBFbGVtZW50Ci0gICAgICAgIElzU3R5bGVB
dHRyaWJ1dGVWYWxpZEZsYWcgPSAxIDw8IDE5LCAvLyBTdHlsZWRFbGVtZW50Ci0gICAgICAgIElz
U3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlRmxhZyA9IDEgPDwgMjAsIC8vIFN0eWxlZEVsZW1l
bnQKKyAgICAgICAgSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcgPSAxIDw8IDE5LCAvLyBF
bGVtZW50CisgICAgICAgIElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcgPSAxIDw8IDIwLCAvLyBT
dHlsZWRFbGVtZW50CisgICAgICAgIElzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlRmxhZyA9
IDEgPDwgMjEsIC8vIFN0eWxlZEVsZW1lbnQKICNpZiBFTkFCTEUoU1ZHKQotICAgICAgICBBcmVT
VkdBdHRyaWJ1dGVzVmFsaWRGbGFnID0gMSA8PCAyMSwgLy8gRWxlbWVudAotICAgICAgICBJc1N5
bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMjIsIC8vIFNWR0VsZW1lbnQKLSAg
ICAgICAgSGFzU1ZHUmFyZURhdGFGbGFnID0gMSA8PCAyMywgLy8gU1ZHRWxlbWVudAorICAgICAg
ICBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnID0gMSA8PCAyMiwgLy8gRWxlbWVudAorICAgICAg
ICBJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMjMsIC8vIFNWR0VsZW1l
bnQKKyAgICAgICAgSGFzU1ZHUmFyZURhdGFGbGFnID0gMSA8PCAyNCwgLy8gU1ZHRWxlbWVudAog
I2VuZGlmCisKICAgICAgICAgU3R5bGVDaGFuZ2VNYXNrID0gMSA8PCBub2RlU3R5bGVDaGFuZ2VT
aGlmdCB8IDEgPDwgKG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsgMSksCiAKICNpZiBFTkFCTEUoU1ZH
KQpAQCAtNjAxLDcgKzYwNiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9OwogCi0gICAgLy8g
NSBiaXRzIHJlbWFpbmluZworICAgIC8vIDQgYml0cyByZW1haW5pbmcKIAogICAgIGJvb2wgZ2V0
RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9ub2RlRmxhZ3MgJiBtYXNrOyB9
CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9ub2Rl
RmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQzMl90KWYgJiBtYXNrKTsgfSAK
QEAgLTYzMiw2ICs2MzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0
YSgpIGNvbnN0OwogICAgIE5vZGVSYXJlRGF0YSogZW5zdXJlUmFyZURhdGEoKTsKIAorICAgIEVs
ZW1lbnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldFNoYWRvd0hvc3QoRWxlbWVu
dCopOworCiBwcml2YXRlOgogI2lmIFVTRShKU0MpCiAgICAgdm9pZCBtYXJrQ2FjaGVkTm9kZUxp
c3RzU2xvdyhKU0M6Ok1hcmtTdGFjayYsIEpTQzo6SlNHbG9iYWxEYXRhJik7CkBAIC03MDMsMTEg
KzcxMSwyNSBAQCBpbmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJM
PiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwogfQogCi1p
bmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpCitpbmxpbmUgQ29u
dGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEZs
YWcoSXNTaGFkb3dSb290RmxhZykgPyAwIDogcGFyZW50KCk7Cit9CisKK2lubGluZSBDb250YWlu
ZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFy
ZW50KCk7Cit9CisKK2lubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFu
dGVlZEhvc3RGcmVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWdldEZsYWcoSXNTaGFkb3dSb290
RmxhZykpOworICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCk7Cit9CisKK2lubGluZSBDb250
YWluZXJOb2RlKiBOb2RlOjpzaGFkb3dQYXJlbnROb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoQ29u
dGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gcGFyZW50
OwotICAgIHJldHVybiBzaGFkb3dQYXJlbnROb2RlKCk7CisgICAgcmV0dXJuIGdldEZsYWcoSXNT
aGFkb3dSb290RmxhZykgPyBwYXJlbnQoKSA6IDA7CiB9CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKaW5kZXggYTNlZGQzODE5MWQ5YmVkODFjZTc1ZjQwZDY0YTQ5MjFj
ODhmNTAzZC4uN2U0MTQyMGRkZjRjNjVmYjU4ZTJiYTQ4ZGI1MGI2NDdlZjdhOGM5ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTE2NSwxOSArMTY1LDEyIEBAIHVuc2lnbmVkIEJpdFN0
YWNrOjpzaXplKCkgY29uc3QKIAogLy8gLS0tLS0tLS0KIAotc3RhdGljIGlubGluZSBDb250YWlu
ZXJOb2RlKiBwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMoTm9kZSogbm9kZSkKLXsKLSAg
ICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAg
ICByZXR1cm4gcGFyZW50OwotICAgIHJldHVybiBub2RlLT5zaGFkb3dQYXJlbnROb2RlKCk7Ci19
Ci0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAKIHN0YXRpYyB1bnNpZ25lZCBkZXB0aENyb3NzaW5n
U2hhZG93Qm91bmRhcmllcyhOb2RlKiBub2RlKQogewogICAgIHVuc2lnbmVkIGRlcHRoID0gMDsK
LSAgICBmb3IgKE5vZGUqIHBhcmVudCA9IHBhcmVudENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhu
b2RlKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMocGFy
ZW50KSkKKyAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsg
cGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSkKICAgICAgICAgKytk
ZXB0aDsKICAgICByZXR1cm4gZGVwdGg7CiB9CkBAIC0xOTMsNyArMTg2LDcgQEAgc3RhdGljIE5v
ZGUqIG5leHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUqIHJhbmdlRW5k
Q29udGFpbmVyLCBpbnQKICAgICAgICAgaWYgKE5vZGUqIG5leHQgPSByYW5nZUVuZENvbnRhaW5l
ci0+Y2hpbGROb2RlKHJhbmdlRW5kT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBuZXh0Owog
ICAgIH0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZUVuZENvbnRhaW5lcjsgbm9kZTsgbm9k
ZSA9IHBhcmVudENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhub2RlKSkgeworICAgIGZvciAoTm9k
ZSogbm9kZSA9IHJhbmdlRW5kQ29udGFpbmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpKSB7CiAgICAgICAgIGlmIChOb2RlKiBuZXh0ID0gbm9kZS0+bmV4dFNpYmxpbmco
KSkKICAgICAgICAgICAgIHJldHVybiBuZXh0OwogICAgIH0KQEAgLTIwOCw3ICsyMDEsNyBAQCBz
dGF0aWMgTm9kZSogcHJldmlvdXNJblBvc3RPcmRlckNyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhO
b2RlKiByYW5nZVN0YXJ0Q29udGFpbgogICAgICAgICBpZiAoTm9kZSogcHJldmlvdXMgPSByYW5n
ZVN0YXJ0Q29udGFpbmVyLT5jaGlsZE5vZGUocmFuZ2VTdGFydE9mZnNldCAtIDEpKQogICAgICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgIH0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5n
ZVN0YXJ0Q29udGFpbmVyOyBub2RlOyBub2RlID0gcGFyZW50Q3Jvc3NpbmdTaGFkb3dCb3VuZGFy
aWVzKG5vZGUpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gcmFuZ2VTdGFydENvbnRhaW5lcjsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewogICAgICAgICBpZiAoTm9k
ZSogcHJldmlvdXMgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkKICAgICAgICAgICAgIHJldHVy
biBwcmV2aW91czsKICAgICB9CkBAIC0yNDcsNyArMjQwLDcgQEAgc3RhdGljIHZvaWQgc2V0VXBG
dWxseUNsaXBwZWRTdGFjayhCaXRTdGFjayYgc3RhY2ssIE5vZGUqIG5vZGUpCiB7CiAgICAgLy8g
UHV0IHRoZSBub2RlcyBpbiBhIHZlY3RvciBzbyB3ZSBjYW4gaXRlcmF0ZSBpbiByZXZlcnNlIG9y
ZGVyLgogICAgIFZlY3RvcjxOb2RlKiwgMTAwPiBhbmNlc3RyeTsKLSAgICBmb3IgKE5vZGUqIHBh
cmVudCA9IHBhcmVudENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhub2RlKTsgcGFyZW50OyBwYXJl
bnQgPSBwYXJlbnRDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMocGFyZW50KSkKKyAgICBmb3IgKE5v
ZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgcGFyZW50OyBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSkKICAgICAgICAgYW5jZXN0cnkuYXBwZW5kKHBhcmVu
dCk7CiAKICAgICAvLyBDYWxsIHB1c2hGdWxseUNsaXBwZWRTdGF0ZSBvbiBlYWNoIG5vZGUgc3Rh
cnRpbmcgd2l0aCB0aGUgZWFybGllc3QgYW5jZXN0b3IuCkBAIC00MjcsMTQgKzQyMCwxNCBAQCB2
b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5u
ZXh0U2libGluZygpOwogICAgICAgICAgICAgaWYgKCFuZXh0KSB7CiAgICAgICAgICAgICAgICAg
Ym9vbCBwYXN0RW5kID0gbV9ub2RlLT50cmF2ZXJzZU5leHROb2RlKCkgPT0gbV9wYXN0RW5kTm9k
ZTsKLSAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Q3Jvc3NpbmdTaGFk
b3dCb3VuZGFyaWVzKG1fbm9kZSk7CisgICAgICAgICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSA9
IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgICAgICAgICAgICAgIHdoaWxlICghbmV4
dCAmJiBwYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgocGFzdEVuZCAmJiBw
YXJlbnROb2RlID09IG1fZW5kQ29udGFpbmVyKSB8fCBtX2VuZENvbnRhaW5lci0+aXNEZXNjZW5k
YW50T2YocGFyZW50Tm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaGF2ZVJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwog
ICAgICAgICAgICAgICAgICAgICBtX25vZGUgPSBwYXJlbnROb2RlOwogICAgICAgICAgICAgICAg
ICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwotICAgICAgICAgICAgICAgICAgICBwYXJl
bnROb2RlID0gcGFyZW50Q3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKG1fbm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGhhdmVSZW5kZXJlcikKICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4aXROb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkg
ewpAQCAtMTE0OCw3ICsxMTQxLDcgQEAgdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yOjphZHZhbmNlKCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEV4aXQgYWxsIG90
aGVyIGNvbnRhaW5lcnMuCiAgICAgICAgICAgICB3aGlsZSAoIW1fbm9kZS0+cHJldmlvdXNTaWJs
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXNldEN1cnJlbnROb2RlKHBhcmVudENyb3Nz
aW5nU2hhZG93Qm91bmRhcmllcyhtX25vZGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoIXNldEN1
cnJlbnROb2RlKG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKICAg
ICAgICAgICAgICAgICBleGl0Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAwMzE3MmI1
ODA1ZWY2NDVhNTE0Yjk3MDA0ZDQwZmVjYmE2MjBlZDQ3Li45NDRmMTNkNTVmOGRjOWI2NmM0MDhj
M2VhMmI1YWY5M2I1YTI3ZGJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIE5vZGUqIERPTVNlbGVjdGlvbjo6YW5jaG9yTm9kZSgpIGNvbnN0CiAgICAgaWYgKCFtX2Zy
YW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoTm9kZSogc2hhZG93QW5jZXN0b3IgPSBz
ZWxlY3Rpb25TaGFkb3dBbmNlc3RvcihtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHNoYWRvd0Fu
Y2VzdG9yLT5wYXJlbnROb2RlKCk7CisgICAgICAgIHJldHVybiBzaGFkb3dBbmNlc3Rvci0+cGFy
ZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOwogICAgIHJldHVybiBhbmNob3JQb3NpdGlvbih2
aXNpYmxlU2VsZWN0aW9uKCkpLm5vZGUoKTsKIH0KIApAQCAtMTE4LDcgKzExOCw3IEBAIE5vZGUq
IERPTVNlbGVjdGlvbjo6Zm9jdXNOb2RlKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIGlmIChOb2RlKiBzaGFkb3dBbmNlc3RvciA9IHNlbGVjdGlvblNo
YWRvd0FuY2VzdG9yKG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gc2hhZG93QW5jZXN0b3ItPnBh
cmVudE5vZGUoKTsKKyAgICAgICAgcmV0dXJuIHNoYWRvd0FuY2VzdG9yLT5wYXJlbnROb2RlR3Vh
cmFudGVlZEhvc3RGcmVlKCk7CiAgICAgcmV0dXJuIGZvY3VzUG9zaXRpb24odmlzaWJsZVNlbGVj
dGlvbigpKS5ub2RlKCk7CiB9CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBOb2RlKiBET01TZWxlY3Rp
b246OmJhc2VOb2RlKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmIChOb2RlKiBzaGFkb3dBbmNlc3RvciA9IHNlbGVjdGlvblNoYWRvd0FuY2VzdG9y
KG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gc2hhZG93QW5jZXN0b3ItPnBhcmVudE5vZGUoKTsK
KyAgICAgICAgcmV0dXJuIHNoYWRvd0FuY2VzdG9yLT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RG
cmVlKCk7CiAgICAgcmV0dXJuIGJhc2VQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpLm5vZGUo
KTsKIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIE5vZGUqIERPTVNlbGVjdGlvbjo6ZXh0ZW50Tm9k
ZSgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAo
Tm9kZSogc2hhZG93QW5jZXN0b3IgPSBzZWxlY3Rpb25TaGFkb3dBbmNlc3RvcihtX2ZyYW1lKSkK
LSAgICAgICAgcmV0dXJuIHNoYWRvd0FuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisgICAgICAgIHJl
dHVybiBzaGFkb3dBbmNlc3Rvci0+cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOwogICAg
IHJldHVybiBleHRlbnRQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpLm5vZGUoKTsKIH0KIApA
QCAtMzcwLDcgKzM3MCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERPTVNlbGVjdGlvbjo6Z2V0UmFu
Z2VBdChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIEFTU0VSVChyYW5nZUNvdW50
KCkgPT0gMSk7CiAKICAgICBpZiAoTm9kZSogc2hhZG93QW5jZXN0b3IgPSBzZWxlY3Rpb25TaGFk
b3dBbmNlc3RvcihtX2ZyYW1lKSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIg
PSBzaGFkb3dBbmNlc3Rvci0+cGFyZW50Tm9kZSgpOworICAgICAgICBDb250YWluZXJOb2RlKiBj
b250YWluZXIgPSBzaGFkb3dBbmNlc3Rvci0+cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgp
OwogICAgICAgICBpbnQgb2Zmc2V0ID0gc2hhZG93QW5jZXN0b3ItPm5vZGVJbmRleCgpOwogICAg
ICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShzaGFkb3dBbmNlc3Rvci0+ZG9jdW1lbnQoKSwgY29u
dGFpbmVyLCBvZmZzZXQsIGNvbnRhaW5lciwgb2Zmc2V0KTsKICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMWFmMWI4MGFmZTVmY2JjMGU5Njlj
MWQ3MWMxMDEyMzJiZjg5MGMzMi4uOGRmZGM4MTYzODY0YjAzYzFlZTgxMWMxNzE2NDgyYTRjZTli
NGY1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAt
NjUsOCArNjUsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgY1NlZWtUaW1lID0gMC4yZjsKIAogaW5s
aW5lIE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xTaGFkb3dSb290
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiAgICAgOiBIVE1MRGl2RWxl
bWVudChkaXZUYWcsIG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAsIG1fbWVkaWFFbGVt
ZW50KG1lZGlhRWxlbWVudCkgCiB7CisgICAgc2V0U2hhZG93SG9zdChtZWRpYUVsZW1lbnQpOwog
fQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50PiBNZWRpYUNvbnRy
b2xTaGFkb3dSb290RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCkKQEAgLTkxLDExICs5MSwxOCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RF
bGVtZW50PiBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6Y3JlYXRlKAogdm9pZCBNZWRp
YUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6dXBkYXRlU3R5bGUoKQogewogICAgIGlmIChyZW5k
ZXJlcigpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiB0aW1lbGluZUNvbnRhaW5lclN0eWxlID0g
bV9tZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKE1FRElBX0NP
TlRST0xTX1RJTUVMSU5FX0NPTlRBSU5FUik7CisgICAgICAgIFJlbmRlclN0eWxlKiB0aW1lbGlu
ZUNvbnRhaW5lclN0eWxlID0gc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1
ZG9TdHlsZShNRURJQV9DT05UUk9MU19USU1FTElORV9DT05UQUlORVIpOwogICAgICAgICByZW5k
ZXJlcigpLT5zZXRTdHlsZSh0aW1lbGluZUNvbnRhaW5lclN0eWxlKTsKICAgICB9CiB9CiAKK3Zv
aWQgTWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ6OmRldGFjaCgpCit7CisgICAgSFRNTERp
dkVsZW1lbnQ6OmRldGFjaCgpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSBzaGFkb3cgRE9N
IHVzZXMgRWxlbWVudDo6c2V0U2hhZG93Um9vdCgpLgorICAgIHNldFNoYWRvd0hvc3QoMCk7Cit9
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTWVkaWFDb250cm9sRWxlbWVu
dDo6TWVkaWFDb250cm9sRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIFBz
ZXVkb0lkIHBzZXVkbykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJv
bEVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmlu
ZGV4IGE5ZmZiMGIxNzEwN2E3NzAxOTU4NmZmMTU4YzlkMmYzNTc4N2RkMWIuLmIyZDA2M2Q0ZmVi
YTNhOTU4NWJlMjU2NmYyOGM1NjJlOGZmMDU5ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFD
b250cm9sRWxlbWVudHMuaApAQCAtNzYsMTQgKzc2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudD4gY3JlYXRlKEhUTUxNZWRp
YUVsZW1lbnQqKTsKIAogICAgIHZvaWQgdXBkYXRlU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CiAgICAgCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dO
b2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSog
c2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0KLSAgICBIVE1M
TWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsgICAgCiB9OwogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdT
aGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdT
aGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHAKaW5kZXggZDMwNjRjNjM1ODRkOTg5OTFjMDQzZTkw
NGE1MWI2YWFjYzU3OGNlNS4uYzU0MzBlZDBjZjMwZmJlYTgwNzZjNDdjYjk5MWU1ZTI5ODc1MzFh
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RD
b250YWluZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1NoYWRvd1RyZWVS
b290Q29udGFpbmVyLmNwcApAQCAtMzYsOCArMzYsMTAgQEAgUmVuZGVyU1ZHU2hhZG93VHJlZVJv
b3RDb250YWluZXI6OlJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKFNWR1VzZUVsZW1l
bnQKIAogUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXI6On5SZW5kZXJTVkdTaGFkb3dU
cmVlUm9vdENvbnRhaW5lcigpCiB7Ci0gICAgaWYgKG1fc2hhZG93Um9vdCAmJiBtX3NoYWRvd1Jv
b3QtPmF0dGFjaGVkKCkpCisgICAgaWYgKG1fc2hhZG93Um9vdCAmJiBtX3NoYWRvd1Jvb3QtPmF0
dGFjaGVkKCkpIHsKICAgICAgICAgbV9zaGFkb3dSb290LT5kZXRhY2goKTsKKyAgICAgICAgbV9z
aGFkb3dSb290LT5jbGVhclNoYWRvd0hvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyU1ZH
U2hhZG93VHJlZVJvb3RDb250YWluZXI6OnVwZGF0ZVN0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNo
YW5nZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDMwNDIxOWUyZWNiYTkyMmYy
MjJiMzhhNzFmZDQwODI1NDRlZDc1NTUuLjE2MTlkOTRhNzI0NGQ4OGNhNTc3ZDU5MjhiNTdiMjhm
Zjg5M2I1ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBtX2luRHJhZ01vZGUg
PSB0cnVlOwotICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoc2hhZG93UGFyZW50KCkpOworICAgICAg
ICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUoc2hhZG93SG9zdCgpKTsKICAgICAgICAgICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcAppbmRleCAyZGY5NmEyZDNhODc2OGU3NDg4ZjQ5YTdjOWQ5MWNlOWI2ZjY2YjdlLi5kYmFm
YTk2Njk5ZDQzNzEwNTM5ZDE0N2U2NjU0ZjYwZjA1YjE2OWVjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTY3LDggKzY3LDEw
IEBAIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAgPSAwOwogICAgIH0KICAKLSAgICBpZiAobV9p
bm5lckJsb2NrKQorICAgIGlmIChtX2lubmVyQmxvY2spIHsKICAgICAgICAgbV9pbm5lckJsb2Nr
LT5kZXRhY2goKTsKKyAgICAgICAgbV9pbm5lckJsb2NrID0gMDsKKyAgICB9CiAKICAgICBpZiAo
bV9pbm5lclNwaW5CdXR0b24pCiAgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5kZXRhY2goKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMjJlZTYyMDNhZjNmYjNi
OTM1NmI1YTQ3ZTJjNmVjOWVmMzllYmU2OC4uMmU2NDk5OTUyZjFjYzQzZTY5OWFiMTUzYzhjYjQ4
NTM0YmNjYTBmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY4
NSw5ICs2ODUsNyBAQCBzdGF0aWMgU3RyaW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQogICAg
IEVsZW1lbnQqIGJvZHkgPSBub2RlLT5kb2N1bWVudCgpLT5ib2R5KCk7CiAgICAgTm9kZSogcGFy
ZW50OwogICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG47IG4gPSBwYXJlbnQpIHsKLSAgICAgICAg
cGFyZW50ID0gbi0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAg
ICAgIHBhcmVudCA9IG4tPnNoYWRvd1BhcmVudE5vZGUoKTsKKyAgICAgICAgcGFyZW50ID0gbi0+
cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgICAgICBpZiAobiAhPSBub2RlKQogICAgICAgICAgICAg
cmVzdWx0ICs9ICIgb2YgIjsKICAgICAgICAgaWYgKHBhcmVudCkgewpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAKaW5kZXggOGE2Njk5MTZhNjBmZTc2MTgwYzc3
NDNmNWMxMGQzZGU1YmMxNTI0ZC4uN2M1ZTFhOTFmMjlmMmQyMzRkMGY1Yjc5M2E1Zjk2OTZiNmVj
ZGI5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRz
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwCkBA
IC01MSw4ICs1MSw4IEBAIEZsb2F0U2l6ZSBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6
Y29udGFpbmVyVHJhbnNsYXRpb24oKSBjb25zdAogCiBpbmxpbmUgU1ZHU2hhZG93VHJlZVJvb3RF
bGVtZW50OjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBTVkdV
c2VFbGVtZW50KiBzaGFkb3dQYXJlbnQpCiAgICAgOiBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxl
bWVudChkb2N1bWVudCkKLSAgICAsIG1fc2hhZG93UGFyZW50KHNoYWRvd1BhcmVudCkKIHsKKyAg
ICBzZXRTaGFkb3dIb3N0KHNoYWRvd1BhcmVudCk7CiAgICAgc2V0SW5Eb2N1bWVudCgpOwogfQog
CkBAIC02Myw3ICs2Myw3IEBAIFBhc3NSZWZQdHI8U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50PiBT
VkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCoKIAogdm9pZCBTVkdTaGFk
b3dUcmVlUm9vdEVsZW1lbnQ6OmF0dGFjaEVsZW1lbnQoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIFJlbmRlckFyZW5hKiBhcmVuYSkKIHsKLSAgICBBU1NFUlQobV9zaGFkb3dQYXJlbnQp
OworICAgIEFTU0VSVChzaGFkb3dIb3N0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSByZW5kZXJl
ciB3aXRoIHRoZSBzcGVjaWZpZWQgc3R5bGUKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
Y3JlYXRlUmVuZGVyZXIoYXJlbmEsIHN0eWxlLmdldCgpKTsKQEAgLTc3LDcgKzc3LDEyIEBAIHZv
aWQgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OjphdHRhY2hFbGVtZW50KFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlLCBSZW5kCiAKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSBy
ZW5kZXIgdHJlZQogICAgIGlmIChyZW5kZXJlcikKLSAgICAgICAgbV9zaGFkb3dQYXJlbnQtPnJl
bmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyKTsKKyAgICAgICAgc2hhZG93SG9zdCgpLT5yZW5k
ZXJlcigpLT5hZGRDaGlsZChyZW5kZXJlcik7Cit9CisKK3ZvaWQgU1ZHU2hhZG93VHJlZVJvb3RF
bGVtZW50OjpjbGVhclNoYWRvd0hvc3QoKQoreworICAgIHNldFNoYWRvd0hvc3QoMCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKaW5kZXggZDQ5ZmJh
YWExZjQ0ODEzOTYyOGU1OGQ2Zjc3NDZmZGZhYTIzNGZmNS4uZmUyNTY3OGRmODgyYTNmMDFmODNk
MTA0ZmIzN2YwY2Y3N2UyMDgxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hh
ZG93VHJlZUVsZW1lbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVs
ZW1lbnRzLmgKQEAgLTU1LDE1ICs1NSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBTVkdVc2VFbGVt
ZW50KiBzaGFkb3dQYXJlbnQpOwogCiAgICAgdm9pZCBhdHRhY2hFbGVtZW50KFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+LCBSZW5kZXJBcmVuYSopOwotCi0gICAgdmlydHVhbCBDb250YWluZXJOb2Rl
KiBzaGFkb3dQYXJlbnROb2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KKyAgICB2b2lk
IGNsZWFyU2hhZG93SG9zdCgpOwogCiBwcml2YXRlOgogICAgIFNWR1NoYWRvd1RyZWVSb290RWxl
bWVudChEb2N1bWVudCosIFNWR1VzZUVsZW1lbnQqIHNoYWRvd1BhcmVudCk7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0K
LQotICAgIENvbnRhaW5lck5vZGUqIG1fc2hhZG93UGFyZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9TaGFkb3dFbGVtZW50LmNwcAppbmRleCA3MmY0OGUyMzIxMWExMjJkNTljMTk2NDZjMjNjNjZl
NWU0Yjg1NmVmLi5lMWIyNDdjZGQ5YWM0NmU4ZGIwNTE1ZDA3NmMwM2E1MTE2NjZjYTdkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRy
PFNoYWRvd0Jsb2NrRWxlbWVudD4gU2hhZG93QmxvY2tFbGVtZW50OjpjcmVhdGVGb3JQYXJ0KEhU
TUxFbGVtZW50KiBzaAogCiB2b2lkIFNoYWRvd0Jsb2NrRWxlbWVudDo6aW5pdEFzUGFydChQc2V1
ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gc2hh
ZG93UGFyZW50KCktPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJl
ciA9IHNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlRm9yUGFydCA9IGNyZWF0ZVN0eWxlRm9yUGFydChwYXJlbnRSZW5kZXJlciwgcHNldWRvSWQp
OwogICAgIHNldFJlbmRlcmVyKGNyZWF0ZVJlbmRlcmVyKHBhcmVudFJlbmRlcmVyLT5yZW5kZXJB
cmVuYSgpLCBzdHlsZUZvclBhcnQuZ2V0KCkpKTsKICAgICByZW5kZXJlcigpLT5zZXRTdHlsZShz
dHlsZUZvclBhcnQucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1No
YWRvd0VsZW1lbnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaAppbmRleCA3
MmJjMjA3MDViNTlhMTQ1YmJmMGI2MTgyZDUyNDRkNDAyZDViMWMzLi5mZGJjOTY0ZGZhNmIzN2Q1
YTRkNzg4ZjljMTBlODY0ZDQ0Y2RlY2MwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9T
aGFkb3dFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCkBA
IC00MSwxNCArNDEsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICA6IEJhc2VFbGVtZW50KG5hbWUs
IHNoYWRvd1BhcmVudC0+ZG9jdW1lbnQoKSkKICAgICAgICAgLCBtX3NoYWRvd1BhcmVudChzaGFk
b3dQYXJlbnQpCiAgICAgeworICAgICAgICBCYXNlRWxlbWVudDo6c2V0U2hhZG93SG9zdChzaGFk
b3dQYXJlbnQpOwogICAgIH0KIAotICAgIEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQoKSBjb25z
dCB7IHJldHVybiBtX3NoYWRvd1BhcmVudC5nZXQoKTsgfQorcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2goKQorICAgIHsKKyAgICAgICAgQmFzZUVsZW1lbnQ6OmRldGFjaCgpOworICAg
ICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugc2hhZG93IERPTSB1c2VzIEVsZW1lbnQ6OnNldFNo
YWRvd1Jvb3QoKS4KKyAgICAgICAgQmFzZUVsZW1lbnQ6OnNldFNoYWRvd0hvc3QoMCk7CisgICAg
fQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd05vZGUoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnROb2Rl
KCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQuZ2V0KCk7IH0KLQogICAgIFJlZlB0cjxIVE1MRWxl
bWVudD4gbV9zaGFkb3dQYXJlbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA5MmM1MWVlMzk2NWVhMjVjZGY4ZWY1MDA5NjUz
ZTAwZjc1MGU4YjE5Li4zN2YzZjM3OTc2NWFlODc2MDE3OWU0MTIwYzNjNzVhZWJjMGE3NTI1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAg
LTc5LDYgKzc5LDcgQEAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OlRleHRDb250cm9sSW5uZXJF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEVsZW1lbnQKICAgICA6IEhUTUxEaXZFbGVt
ZW50KGRpdlRhZywgZG9jdW1lbnQpCiAgICAgLCBtX3NoYWRvd1BhcmVudChzaGFkb3dQYXJlbnQp
CiB7CisgICAgc2V0U2hhZG93SG9zdChzaGFkb3dQYXJlbnQpOwogfQogCiBQYXNzUmVmUHRyPFRl
eHRDb250cm9sSW5uZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKEhU
TUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpCkBAIC0xMDIsOCArMTAzLDggQEAgdm9pZCBUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1Jl
ZlB0cjxSZW5kZXIKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKIAot
ICAgIC8vIEZvciBlbGVtZW50cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBub2Rl
IHRvIHRoZSBET00gbm9ybWFsbHkuCi0gICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgeworICAgIC8v
IEZvciBlbGVtZW50cyBub3QgaW4gc2hhZG93IERPTSAod2h5PyEpLCBhZGQgdGhlIG5vZGUgdG8g
dGhlIERPTSBub3JtYWxseS4KKyAgICBpZiAoIWlzU2hhZG93Tm9kZSgpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMgdmVyeSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNhbGx5
IGFkZGluZyB8dGhpc3wgdG8gdGhlIERPTSBoZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ugc2hv
dWxkbid0IGJlIGNhbGxpbmcgcGFyc2VyIEFQSSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBhcnNl
ciEKICAgICAgICAgcGFyZW50LT5kZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CkBAIC0x
MTQsNiArMTE1LDEzIEBAIHZvaWQgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVy
RWxlbWVudChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8UmVuZGVyCiAgICAgICAgIHBhcmVudC0+
cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIpOwogfQogCit2b2lkIFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpkZXRhY2goKQoreworICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goKTsKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugc2hhZG93IERPTSB1c2VzIEVsZW1lbnQ6OnNldFNoYWRv
d1Jvb3QoKS4KKyAgICBzZXRTaGFkb3dIb3N0KDApOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGlubGluZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OlRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxFbGVtZW50KiBz
aGFkb3dQYXJlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oCmluZGV4IDVhZjk4ZWQ0NzFhYmE0MWI3NjM0MjM4MmU5MTQ1MGU1Y2NjOGM2OTYuLmJiNzdk
Y2Q1NGZmM2VlNTA5YWQ0MTc0MDgxYTEwMGU5ZmZkOTI5ZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNw
ZWVjaElucHV0OwogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgOiBwdWJsaWMgSFRNTERp
dkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRDb250cm9sSW5u
ZXJFbGVtZW50PiBjcmVhdGUoSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCk7CisgICAgdmlydHVh
bCB2b2lkIGRldGFjaCgpOwogCiAgICAgdm9pZCBhdHRhY2hJbm5lckVsZW1lbnQoTm9kZSosIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+LCBSZW5kZXJBcmVuYSopOwogCkBAIC00NiwxMCArNDcsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoRG9jdW1lbnQqLCBIVE1M
RWxlbWVudCogc2hhZG93UGFyZW50ID0gMCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29s
IGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQuZ2V0KCk7
IH0KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudE5vZGUoKSB7IHJldHVy
biBtX3NoYWRvd1BhcmVudC5nZXQoKTsgfQotICAgIHZvaWQgc2V0U2hhZG93UGFyZW50Tm9kZShI
VE1MRWxlbWVudCogc2hhZG93UGFyZW50KSB7IG1fc2hhZG93UGFyZW50ID0gc2hhZG93UGFyZW50
OyB9CisgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3NoYWRvd1BhcmVudDsKIH07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCmluZGV4IDYxNWFhYWI5ZTBlNzQzYTkwMjk4ZTRlNjAyNGI4ZjI0MDkwYWQ1MGEu
LjM4ODlkZmQxNzg3ZDI0ZTM1MTllZmY4MmUwNGUxMzQ1M2JjYTFmOTYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CkBAIC0xMTgsMTIgKzExOCwxMiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnNldFhtbGJhc2UoY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCiAKIFNWR1NWR0VsZW1lbnQqIFNWR0VsZW1l
bnQ6Om93bmVyU1ZHRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQ29udGFpbmVyTm9kZSogbiA9IGlz
U2hhZG93Tm9kZSgpID8gY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyktPnNoYWRvd1BhcmVu
dE5vZGUoKSA6IHBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50T3JI
b3N0Tm9kZSgpOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1NWR0Vs
ZW1lbnQqPihuKTsKIAotICAgICAgICBuID0gbi0+aXNTaGFkb3dOb2RlKCkgPyBuLT5zaGFkb3dQ
YXJlbnROb2RlKCkgOiBuLT5wYXJlbnROb2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPckhv
c3ROb2RlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMzMsMTIgKzEzMywxMiBAQCBT
VkdFbGVtZW50KiBTVkdFbGVtZW50Ojp2aWV3cG9ydEVsZW1lbnQoKSBjb25zdAogewogICAgIC8v
IFRoaXMgZnVuY3Rpb24gbmVlZHMgc2hhZG93IHRyZWUgc3VwcG9ydCAtIGFzIFJlbmRlclNWR0Nv
bnRhaW5lciB1c2VzIHRoaXMgZnVuY3Rpb24KICAgICAvLyB0byBkZXRlcm1pbmUgdGhlICJvdmVy
ZmxvdyIgcHJvcGVydHkuIDx1c2U+IG9uIDxzeW1ib2w+IHdvdWxkbid0IHdvcmsgb3RoZXJ3aGlz
ZS4KLSAgICBDb250YWluZXJOb2RlKiBuID0gaXNTaGFkb3dOb2RlKCkgPyBjb25zdF9jYXN0PFNW
R0VsZW1lbnQqPih0aGlzKS0+c2hhZG93UGFyZW50Tm9kZSgpIDogcGFyZW50Tm9kZSgpOworICAg
IENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgd2hpbGUgKG4pIHsK
ICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykgfHwgbi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpIHx8IG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJv
bFRhZykpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG4pOwog
Ci0gICAgICAgIG4gPSBuLT5pc1NoYWRvd05vZGUoKSA/IG4tPnNoYWRvd1BhcmVudE5vZGUoKSA6
IG4tPnBhcmVudE5vZGUoKTsKKyAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKICAg
ICB9CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJs
ZS5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCmluZGV4IGIzZGNlMDFmNDE4NDE3
ODZiNDc4YzcwZmM1ZmQwNTYwMDYzZGU4ZTUuLjQzOTYxZDk1NDE5YmFhMzk2NDkyNmRkMTUwYTJm
NDUyMTIzYjVkMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKKysr
IGIvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApAQCAtOTcsNyArOTcsNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1l
bnQsIENUTVNjb3BlIG1vZAogICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQgPT0gc3RvcEF0RWxl
bWVudCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5p
c1NoYWRvd05vZGUoKSA/IGN1cnJlbnQtPnNoYWRvd1BhcmVudE5vZGUoKSA6IGN1cnJlbnQtPnBh
cmVudE5vZGUoKTsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9ySG9zdE5vZGUo
KTsKICAgICB9CiAKICAgICByZXR1cm4gY3RtOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRl
eCA4OTVjMWUwNmYwZWM5ZDFiYTg3MWM2YTA3YjMyNmRhNDI2NTg5MDkxLi5iZWQyYjY1ZmFmZDUz
MDIxOTlhODcxZmE5NDU3OTNiZWFhOTBkMzhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApA
QCAtODEsNyArODEsNyBAQCBTdHJpbmcgU1ZHU3R5bGVkRWxlbWVudDo6dGl0bGUoKSBjb25zdAog
ICAgIE5vZGUqIHBhcmVudCA9IGNvbnN0X2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHRoaXMpOwog
ICAgIHdoaWxlIChwYXJlbnQpIHsKICAgICAgICAgaWYgKCFwYXJlbnQtPmlzU2hhZG93Tm9kZSgp
KSB7Ci0gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUoKTsKKyAgICAgICAg
ICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CmluZGV4IGM4MjI4Y2E3YTFmNmYwNjI1OTk1NGRkMTdhYjRiNmVhZWI4YmViNTEuLmVjM2Q1NDIz
YjFjOGVlNjkxODY5ZDUxZmYyMGJjNjAwMWMwMmZmNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBA
IC00OTYsNyArNDk2LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFNoYWRvd0FuZEluc3Rh
bmNlVHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQqIHNoYWRvd1IKICAgICAgICAgaWYgKHBh
cmVudC0+aXNTaGFkb3dOb2RlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcGFy
ZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7CisgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFy
ZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOwogICAgIH0KICAKICAgICBTVkdFbGVtZW50KiB0
YXJnZXQgPSAwOwo=
</data>
<flag name="review"
          id="66839"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>