<?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>28649</bug_id>
          
          <creation_ts>2009-08-21 17:53:44 -0700</creation_ts>
          <short_desc>Support for interactive validation of form elements</short_desc>
          <delta_ts>2016-12-08 13:53:58 -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>Forms</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>164382</dup_id>
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/#interactively-validate-the-constraints</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95527</dependson>
    
    <dependson>139552</dependson>
    
    <dependson>27452</dependson>
    
    <dependson>27959</dependson>
    
    <dependson>28145</dependson>
    
    <dependson>28868</dependson>
    
    <dependson>31716</dependson>
    
    <dependson>31718</dependson>
    
    <dependson>34930</dependson>
    
    <dependson>37345</dependson>
    
    <dependson>40218</dependson>
    
    <dependson>40429</dependson>
    
    <dependson>40520</dependson>
    
    <dependson>40747</dependson>
    
    <dependson>44436</dependson>
    
    <dependson>48980</dependson>
    
    <dependson>52430</dependson>
    
    <dependson>52565</dependson>
    
    <dependson>59019</dependson>
    
    <dependson>60341</dependson>
          <blocked>19264</blocked>
    
    <blocked>163479</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michelangelo De Simone">michelangelo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>amandaannegeorge</cc>
    
    <cc>andrew.roazen</cc>
    
    <cc>ap</cc>
    
    <cc>ayg</cc>
    
    <cc>cdumez</cc>
    
    <cc>chrisjshull</cc>
    
    <cc>claude.pache</cc>
    
    <cc>dak</cc>
    
    <cc>darin</cc>
    
    <cc>hkdobrev</cc>
    
    <cc>hyatt</cc>
    
    <cc>ian</cc>
    
    <cc>info</cc>
    
    <cc>jabronson</cc>
    
    <cc>jhurshman</cc>
    
    <cc>joel.parks</cc>
    
    <cc>manian</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>mkhatib727</cc>
    
    <cc>m.kurz+webkitbugs</cc>
    
    <cc>mounir</cc>
    
    <cc>pkasting</cc>
    
    <cc>ray</cc>
    
    <cc>robertjunk</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>tkent</cc>
    
    <cc>turadg</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142082</commentid>
    <comment_count>0</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-21 17:53:44 -0700</bug_when>
    <thetext>Support for interactive validation of form elements, HTML5 specs section 4.10.15.2, is necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142086</commentid>
    <comment_count>1</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-21 18:05:50 -0700</bug_when>
    <thetext>Some tip from other bugs this depends on:

1.
Form control elements can be in a &quot;no-validate state&quot; that is controlled by &quot;novalidate&quot; and &quot;formNoValidate&quot; attributes, plus some more condition. This snippet could be of help:

bool HTMLFormControlElement::isInNoValidateState() const
{
    return (isSuccessfulSubmitButton() &amp;&amp; formNoValidate()) || m_form-&gt;novalidate();
}

2.
HTMLFormElement::checkValidity() needs to be adapted to deal with &quot;unhandled invalid controls&quot; (as per TODO comment). Actually it just iterates over form elements calling checkValidity() (that fires the invalid event, as per specs), but it must also return a list of invalid form controls that haven&apos;t been handled through the invalid event.
The following snippet might be of some help (was part of the proposed patch for bug 27452):

bool checkValidity(Vector&lt;HTMLFormControlElement*&gt;* unhandledInvalidControls = 0);

bool HTMLFormElement::checkValidity(Vector&lt;HTMLFormControlElement*&gt;* unhandledInvalidControls)
{
    Vector&lt;HTMLFormControlElement*&gt; invalidControls;

    for (unsigned i = 0; i &lt; formElements.size(); ++i) {
        HTMLFormControlElement* control = formElements[i];
        if (control-&gt;willValidate() &amp;&amp; !control-&gt;validity()-&gt;valid())
            invalidControls.append(control);
    }

    if (invalidControls.isEmpty())
        return true;

    for (unsigned n = 0; n &lt; invalidControls.size(); ++n) {
        HTMLFormControlElement* invalidControl = invalidControls[n];
        bool eventCanceled = invalidControl-&gt;dispatchEvent(eventNames().invalidEvent, false, true);
        if (eventCanceled &amp;&amp; unhandledInvalidControls)
            unhandledInvalidControls-&gt;append(invalidControl);
    }

    return false;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143326</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-28 01:38:14 -0700</bug_when>
    <thetext>I have started implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143337</commentid>
    <comment_count>3</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-28 04:02:37 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; I have started implementation.

Good! I think you&apos;ll be needing support for the validationMessage for interactive validation step 3 (4.10.15.2) [bug 27959], I&apos;m gonna speed it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143359</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-28 06:59:15 -0700</bug_when>
    <thetext>&gt; Good! I think you&apos;ll be needing support for the validationMessage for
&gt; interactive validation step 3 (4.10.15.2) [bug 27959], I&apos;m gonna speed it up.

That&apos;s right!  The implementation requires validationMessage().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144163</commentid>
    <comment_count>5</comment_count>
      <attachid>38918</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-02 02:43:15 -0700</bug_when>
    <thetext>Created attachment 38918
Demo patch

A workable demo patch.  This is not ready to be reviewed.  It has no tests and it depends on bug#27959 and bug#28868.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145275</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-08 00:05:42 -0700</bug_when>
    <thetext>I&apos;ll use Balloon Tooltip for Windows to show validation messages.
  http://msdn.microsoft.com/en-us/library/bb760250(VS.85).aspx

I don&apos;t know if Mac OS has a corresponding control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152611</commentid>
    <comment_count>7</comment_count>
      <attachid>40698</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-10-06 00:06:46 -0700</bug_when>
    <thetext>Created attachment 40698
Incomplete patch (rev.0)

I&apos;d like to ask comments on the patch though it is incomplete.
The patch will add the following behavior:
 - Show/hide a validation message when an invalid form control gets/losts the focus
  The way to show messages depends on each of platforms.
 - Prevent a form submission if the form has invalid controls

TODO:
 - Add tests
 - Build file changes for other platforms
 - Provide ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155568</commentid>
    <comment_count>8</comment_count>
      <attachid>40698</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-18 22:43:40 -0700</bug_when>
    <thetext>Comment on attachment 40698
Incomplete patch (rev.0)

As you say, the patch is incomplete.  No ChangeLog.  No tests.  If you&apos;d like feedback on this patch, I recommend asking the relevant people on IRC or email.  Having this patch in the review queue just makes it harder to review complete patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165273</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-20 04:17:29 -0800</bug_when>
    <thetext>I split this to 3 patches.  Bug#31716, Bug#31718 and this will have patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243182</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-25 13:50:40 -0700</bug_when>
    <thetext>I think that form validation should be disabled until:
- a solution is found for the compatibility problem with &quot;required&quot; attribute name;
- UI for correcting problems is implemented (as tracked by bug 31718/bug 40747). Currently the user experience is just horrible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243802</commentid>
    <comment_count>11</comment_count>
    <who name="Brenton">webkit</who>
    <bug_when>2010-06-28 11:58:43 -0700</bug_when>
    <thetext>I agree with Alexey.  In 2008, I wrote an app to the HTML5 spec, then backported the validation API to JavaScript to support then-existing browsers.  I&apos;ve seen the app break a couple of times due to changes in WebKit (which Tamura is always eager to fix).

If you go to http://beta.insightdining.com/surveys/limon/ without the WebKit validator, the page scrolls smoothly to take you to an invalid element on form submission.  Since the validation constraints have been added, the page abruptly jumps to the first invalid &lt;input/&gt;.  I&apos;m sure there are users who don&apos;t understand what&apos;s going on when this happens.  For that matter, I wasn&apos;t even sure what was going on when I was debugging #40591.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034072</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-08 23:29:17 -0700</bug_when>
    <thetext>*** Bug 80419 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034074</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-08 23:29:25 -0700</bug_when>
    <thetext>*** Bug 136595 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078460</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-18 22:25:42 -0700</bug_when>
    <thetext>*** Bug 142817 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087063</commentid>
    <comment_count>15</comment_count>
    <who name="Haralan Dobrev">hkdobrev</who>
    <bug_when>2015-04-21 09:12:33 -0700</bug_when>
    <thetext>This ticket was created as an enhancement, but the last few tickets which were marked as duplicate to this are more critical. It seems this problem now affects normal validation and not only the JavaScript API.

IMHO the priority/importance of this ticket should be increased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087186</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 15:13:30 -0700</bug_when>
    <thetext>This always affected “normal validation”, not just JavaScript API, and that validation is a new feature, and one that is not implemented yet in WebKit.

I understand that you would like to see the feature!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199265</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-04 12:57:06 -0700</bug_when>
    <thetext>*** Bug 158331 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235441</commentid>
    <comment_count>18</comment_count>
    <who name="Amanda">amandaannegeorge</who>
    <bug_when>2016-09-30 14:56:12 -0700</bug_when>
    <thetext>Is anyone currently working on this?  It was submitted 7 years ago, and Safari is now the only browser whose current version will submit a form with invalid constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236742</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-05 11:57:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/28636170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257865</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-12-08 13:50:22 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 164382 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257869</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-12-08 13:53:58 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Is anyone currently working on this?  It was submitted 7 years ago, and
&gt; Safari is now the only browser whose current version will submit a form with
&gt; invalid constraints.

Safari Technology Preview 19 has this enabled:
https://webkit.org/blog/7093/release-notes-for-safari-technology-preview-19/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38918</attachid>
            <date>2009-09-02 02:43:15 -0700</date>
            <delta_ts>2009-10-06 00:06:46 -0700</delta_ts>
            <desc>Demo patch</desc>
            <filename>interactive-validation-0.diff</filename>
            <type>text/plain</type>
            <size>21963</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDBmOGIyYmQuLmRjZjE3OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTQyOSw2ICsxNDI5LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9UaW1lci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBc
CisJV2ViQ29yZS9wbGF0Zm9ybS9WYWxpZGF0aW9uTWVzc2FnZUhhbmRsZS5oIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNDFiNjhiLi4yYTU3ZmQ3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDYxNiw2ICs0NjE2LDcg
QEAKIAkJRjVDMDQxRTUwRkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjVDMDQxRTAwRkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnRJbnRlcm5h
bC5oICovOyB9OwogCQlGNUMwNDFFNjBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxpc3RF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1QzA0MUUxMEZGQ0E5NkQwMDgzOUQ0QSAvKiBKU0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwICov
OyB9OwogCQlGNUMwNDFFNzBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxpc3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFF
MjBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxpc3RFbGVtZW50LmggKi87IH07CisJCUY1
RDg5QkJBMTA0RTU2REQwMEY1ODAwMyAvKiBWYWxpZGF0aW9uTWVzc2FnZUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVEODlCQjkxMDRFNTZE
RDAwRjU4MDAzIC8qIFZhbGlkYXRpb25NZXNzYWdlSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjkxNkM0OEQwREI1MTBGODAwNzZDRDgz
IC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBK
U1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07CiAJCUY5MTZDNDhFMERCNTEw
RjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZD
RDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUY5RjBFRDdB
MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIw
MEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKQEAgLTk2ODMs
NiArOTY4NCw3IEBACiAJCUY1QzI4NjkzMDI4NDZEQ0QwMTg2MzVDQSAvKiBBcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJRjVDMjg2
OTQwMjg0NkRDRDAxODYzNUNBIC8qIENhcmJvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IENhcmJvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlGNUMyODY5NTAy
ODQ2RENEMDE4NjM1Q0EgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2Nv
YS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCUY1RDg5QkI5MTA0RTU2REQw
MEY1ODAwMyAvKiBWYWxpZGF0aW9uTWVzc2FnZUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWYWxpZGF0aW9uTWVzc2FnZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUY5MTZDNDhCMERCNTEwRjgwMDc2
Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMg
LyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ4MCw2ICsxNDQ4Miw3IEBACiAJCQkJOTMzMDlFQTEwOTlF
Qjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4
NTUgLyogVGltZXIuaCAqLywKIAkJCQkxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNo
YXJlZC5oICovLAorCQkJCUY1RDg5QkI5MTA0RTU2REQwMEY1ODAwMyAvKiBWYWxpZGF0aW9uTWVz
c2FnZUhhbmRsZS5oICovLAogCQkJCTkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQu
Y3BwICovLAogCQkJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLywKIAkJ
CSk7CkBAIC0xNzQxNCw2ICsxNzQxNyw3IEBACiAJCQkJRDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzRE
IC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MUIyMDlEMTRFRTYw
MDBFNjFENyAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI4
NEFEREUwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNUQ4OUJCQTEwNEU1NkREMDBGNTgwMDMgLyogVmFsaWRhdGlvbk1lc3NhZ2VI
YW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBW
YWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1
ODEgLyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5
MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmNwcAppbmRleCAzOTg3ODU5Li5jNGMyOTk3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEhUTUxCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAgaWYgKGV2dC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50ICYmICFkaXNhYmxlZCgpKSB7CiAgICAgICAg
IGlmIChmb3JtKCkgJiYgbV90eXBlID09IFNVQk1JVCkgewogICAgICAgICAgICAgbV9hY3RpdmVT
dWJtaXQgPSB0cnVlOwotICAgICAgICAgICAgZm9ybSgpLT5wcmVwYXJlU3VibWl0KGV2dCk7Cisg
ICAgICAgICAgICBmb3JtKCktPnByZXBhcmVTdWJtaXQoZXZ0LCB0aGlzKTsKICAgICAgICAgICAg
IG1fYWN0aXZlU3VibWl0ID0gZmFsc2U7IC8vIGluIGNhc2Ugd2Ugd2VyZSBjYW5jZWxlZAogICAg
ICAgICB9CiAgICAgICAgIGlmIChmb3JtKCkgJiYgbV90eXBlID09IFJFU0VUKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDUxMGFlNmEuLjRlMzY3MzAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiIC8vIFhYWDogZm9yIGRlYnVnCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCkBAIC00OCw5ICs0OSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jLCBIVE1MRm9ybUVsZW1lbnQqIGYpCiAgICAg
OiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBtX2Zvcm0oZikKKyAgICAsIG1fdmFs
aWRhdGlvbk1lc3NhZ2VIYW5kbGUoMCkKICAgICAsIG1fZGlzYWJsZWQoZmFsc2UpCiAgICAgLCBt
X3JlYWRPbmx5KGZhbHNlKQogICAgICwgbV9yZXF1aXJlZChmYWxzZSkKKyAgICAsIG1fdmFsaWQo
dHJ1ZSkKICAgICAsIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpCiB7CiAgICAgaWYgKCFt
X2Zvcm0pCkBAIC02MSw2ICs2NCw3IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAKIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50KCkKIHsKKyAgICBtYXlI
aWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICBpZiAobV9mb3JtKQogICAgICAgICBtX2Zvcm0t
PnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOwogfQpAQCAtOTEsNyArOTUsNyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAq
YXR0cikKICAgICAgICAgYm9vbCBvbGREaXNhYmxlZCA9IG1fZGlzYWJsZWQ7CiAgICAgICAgIG1f
ZGlzYWJsZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBt
X2Rpc2FibGVkKSB7Ci0gICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAg
ICAgICB3aWxsVmFsaWRhdGVDaGFuZ2VkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAm
JiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICAgICAg
cmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0
ZSk7CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMyw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAg
ICBib29sIG9sZFJlYWRPbmx5ID0gbV9yZWFkT25seTsKICAgICAgICAgbV9yZWFkT25seSA9ICFh
dHRyLT5pc051bGwoKTsKICAgICAgICAgaWYgKG9sZFJlYWRPbmx5ICE9IG1fcmVhZE9ubHkpIHsK
LSAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgIHdpbGxWYWxp
ZGF0ZUNoYW5nZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAg
IH0KQEAgLTEwNyw3ICsxMTEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgYm9vbCBvbGRS
ZXF1aXJlZCA9IG1fcmVxdWlyZWQ7CiAgICAgICAgIG1fcmVxdWlyZWQgPSAhYXR0ci0+aXNOdWxs
KCk7CiAgICAgICAgIGlmIChvbGRSZXF1aXJlZCAhPSBtX3JlcXVpcmVkKQotICAgICAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsKICAg
ICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwogfQpAQCAtMjc5LDEwICsyODMsMTkgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3
aWxsVmFsaWRhdGUoKSBjb25zdAogICAgIHJldHVybiBmb3JtKCkgJiYgIW5hbWUoKS5pc0VtcHR5
KCkgJiYgIWRpc2FibGVkKCkgJiYgIWlzUmVhZE9ubHlGb3JtQ29udHJvbCgpOwogfQogCi1ib29s
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKQordm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Ojp3aWxsVmFsaWRhdGVDaGFuZ2VkKCkKIHsKLSAgICBpZiAod2lsbFZhbGlk
YXRlKCkgJiYgIWlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkgewotICAgICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50TmFtZXMoKS5pbnZhbGlkRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBtYXlI
aWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
bV92YWxpZCA9IHdpbGxWYWxpZGF0ZSgpID8gdmFsaWRpdHkoKS0+dmFsaWQoKSA6IHRydWU7Cit9
CisKK2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0b3I8SFRN
TEZvcm1Db250cm9sRWxlbWVudCo+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpCit7CisgICAg
aWYgKCFtX3ZhbGlkKSB7CisgICAgICAgIGJvb2wgbmVlZHNEZWZhdWx0QWN0aW9uID0gZGlzcGF0
Y2hFdmVudChFdmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
IGlmIChuZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQorICAg
ICAgICAgICAgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzLT5hcHBlbmQodGhpcyk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI5MSw5ICszMDQsNDMgQEAgYm9vbCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp1cGRhdGVWYWxpZGl0eSgpCiB7Ci0gICAgaWYgKHdpbGxWYWxpZGF0ZSgpKQotICAg
ICAgICAvLyBVcGRhdGUgc3R5bGUgZm9yIHBzZXVkbyBjbGFzc2VzIHN1Y2ggYXMgOnZhbGlkIDpp
bnZhbGlkLgotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgaWYgKCF3aWxsVmFs
aWRhdGUoKSkgeworICAgICAgICAvLyBJZiAhd2lsbFZhbGlkYXRlKCksIG1fdmFsaWQgaXMgYWx3
YXlzIHRydWUuCisgICAgICAgIEFTU0VSVChtX3ZhbGlkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAvLyBVcGRhdGUgdGhlIHZhbGlkaXR5LgorICAgIG1fdmFsaWQgPSB2YWxpZGl0eSgp
LT52YWxpZCgpOworICAgIC8vIEhpZGUgdGhlIHByZXZpb3VzIGVycm9yIG1lc3NhZ2UuCisgICAg
bWF5SGlkZVZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgLy8gVXBkYXRlIHN0eWxlIGZvciBwc2V1
ZG8gY2xhc3NlcyBzdWNoIGFzIDp2YWxpZCA6aW52YWxpZC4KKyAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKCk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF5U2hvd1ZhbGlkYXRp
b25NZXNzYWdlKCkKK3sKKyAgICBtYXlIaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICBpZiAo
IXdpbGxWYWxpZGF0ZSgpIHx8IHZhbGlkaXR5KCktPnZhbGlkKCkgfHwgIXJlbmRlckJveCgpKQor
ICAgICAgICByZXR1cm47CisgICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGl0eSgpLT52YWxpZGF0
aW9uTWVzc2FnZSgpOworICAgIGlmIChtZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFJlbmRlckJveCogcmVuZGVyZXIgPSByZW5kZXJCb3goKTsKKyAgICBJbnRSZWN0IGFi
c0JvdW5kcyA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIGFic0Jv
dW5kcy5zZXRMb2NhdGlvbihyb3VuZGVkSW50UG9pbnQocmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0
ZShGbG9hdFBvaW50KCksIGZhbHNlLCB0cnVlKSkpOworICAgIGlmICghZG9jdW1lbnQoKS0+ZnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUgPSBk
b2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c2hvd0Zvcm1W
YWxpZGF0aW9uTWVzc2FnZShhYnNCb3VuZHMsIGRvY3VtZW50KCktPnZpZXcoKSwgbWVzc2FnZSk7
CisgICAgLy8gRklYTUU6IFNldCB0aW1lciB0byBoaWRlIHRoZSBtZXNzYWdlPworfQorCit2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Om1heUhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpCit7Cisg
ICAgaWYgKG1fdmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50
KCktPmZyYW1lKCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+aGlkZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25N
ZXNzYWdlSGFuZGxlKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZUhhbmRsZSA9IDA7Cisg
ICAgfQogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5
KGNvbnN0IFN0cmluZyYgZXJyb3IpCkBAIC0zMDYsNiArMzUzLDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQogICAgIGlmIChkb2N1bWVudCgpLT5m
cmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKSkKICAgICAgICAgZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRGb2N1cyh0aGlz
KTsKIAorICAgIG1heVNob3dWYWxpZGF0aW9uTWVzc2FnZSgpOwogICAgIEhUTUxFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0KIApAQCAtMzE0LDYgKzM2Miw3IEBAIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogICAgIGlmIChkb2N1bWVudCgp
LT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKSkKICAgICAgICAgZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRCbHVyKHRo
aXMpOwogCisgICAgbWF5SGlkZVZhbGlkYXRpb25NZXNzYWdlKCk7CiAgICAgSFRNTEVsZW1lbnQ6
OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9CiAKQEAgLTMzNCw3ICszODMsNyBAQCBib29sIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdAogCiBib29s
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKQogewot
ICAgIHJldHVybiB2YWxpZGl0eSgpLT52YWxpZCgpOworICAgIHJldHVybiBtX3ZhbGlkOwogfQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbW92ZUZyb21Gb3JtKCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGU0YzA1ZDYuLjcxYWU2YTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50X2gKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSAiVmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMDUsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgo
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKLSAgICBi
b29sIGNoZWNrVmFsaWRpdHkoKTsKKyAgICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqPiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzID0gMCk7CiAgICAg
dm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCB2YWx1ZU1pc3NpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTE4LDE4ICsxMTks
MjUgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVGcm9tRm9ybSgpOwor
ICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlvbiBjb25zdHJhaW50
IG9yIGEgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgdXBkYXRlVmFsaWRpdHko
KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0o
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgLy8g
VGhpcyBzaG91bGQgYmUgY2FsbGVkIGlmIHdpbGxWYWxpZGF0ZSgpIHJlc3VsdCBjYW4gYmUgY2hh
bmdlZC4KKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIG1heVNob3dW
YWxpZGF0aW9uTWVzc2FnZSgpOworICAgIHZvaWQgbWF5SGlkZVZhbGlkYXRpb25NZXNzYWdlKCk7
CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBSZWZQdHI8VmFsaWRpdHlTdGF0
ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFZhbGlkYXRpb25NZXNzYWdlSGFuZGxlIG1fdmFsaWRh
dGlvbk1lc3NhZ2VIYW5kbGU7CiAgICAgYm9vbCBtX2Rpc2FibGVkIDogMTsKICAgICBib29sIG1f
cmVhZE9ubHkgOiAxOwogICAgIGJvb2wgbV9yZXF1aXJlZCA6IDE7CisgICAgYm9vbCBtX3ZhbGlk
IDogMTsKICAgICBib29sIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIgOiAxOwogfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAppbmRleCBjNDQyZDJjLi5mMGEyODAwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJt
aXRDbGljayhFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFzdWJtaXRG
b3VuZCkgLy8gc3VibWl0IHRoZSBmb3JtIHdpdGhvdXQgYSBzdWJtaXQgb3IgaW1hZ2UgaW5wdXQK
LSAgICAgICAgcHJlcGFyZVN1Ym1pdChldmVudCk7CisgICAgICAgIHByZXBhcmVTdWJtaXQoZXZl
bnQsIDApOwogfQogCiBUZXh0RW5jb2RpbmcgSFRNTEZvcm1FbGVtZW50OjpkYXRhRW5jb2Rpbmco
KSBjb25zdApAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojppc01haWx0
b0Zvcm0oKSBjb25zdAogICAgIHJldHVybiBwcm90b2NvbElzKG1fdXJsLCAibWFpbHRvIik7CiB9
CiAKLWJvb2wgSFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlU3VibWl0KEV2ZW50KiBldmVudCkKK2Jv
b2wgSFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlU3VibWl0KEV2ZW50KiBldmVudCwgSFRNTEZvcm1D
b250cm9sRWxlbWVudCogc3VibWl0RWxlbWVudCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpOwogICAgIGlmIChtX2luc3VibWl0IHx8ICFmcmFtZSkKQEAgLTI5Niw2
ICsyOTYsMzIgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVTdWJtaXQoRXZlbnQqIGV2
ZW50KQogICAgIG1faW5zdWJtaXQgPSB0cnVlOwogICAgIG1fZG9pbmdzdWJtaXQgPSBmYWxzZTsK
IAorICAgIC8vIEludGVyYWN0aXZlIHZhbGlkYXRpb24gbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUg
c3VibWl0IGV2ZW50LgorICAgIGlmICghbm92YWxpZGF0ZSgpICYmICghc3VibWl0RWxlbWVudCB8
fCAhc3VibWl0RWxlbWVudC0+Zm9ybU5vVmFsaWRhdGUoKSkpIHsKKyAgICAgICAgVmVjdG9yPEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqPiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHM7CisgICAgICAg
IGlmICghY2hlY2tWYWxpZGl0eSgmdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKSkgeworICAgICAg
ICAgICAgcHJpbnRmKCIlczogSGFzIGludmFsaWQgY29udHJvbHMuICBBYm9ydCBzdWJtaXNzaW9u
LlxuIiwgX19mdW5jX18pOworICAgICAgICAgICAgYm9vbCBmb3VuZEZvY3VzYWJsZSA9IGZhbHNl
OworICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiB1
bmhhbmRsZWQgPSB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHNbaV07CisgICAgICAgICAgICAgICAg
aWYgKHVuaGFuZGxlZC0+aXNGb2N1c2FibGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IWZvdW5kRm9jdXNhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEZvY3VzYWJs
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB1bmhhbmRsZWQtPnNjcm9sbEludG9W
aWV3SWZOZWVkZWQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5oYW5kbGVkLT5m
b2N1cygpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChmcmFtZSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSgiQW4gaW52YWxp
ZCBmb3JtIGNvbnRyb2wgJyV0eXBlJyBpcyBub3QgdXNlci1lZGl0YWJsZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIldHlwZSIsIHVuaGFuZGxlZC0+dHlwZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgMCwgZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faW5zdWJtaXQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChkaXNw
YXRjaEV2ZW50KGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgdHJ1ZSwgdHJ1ZSkgJiYgIW1fZG9p
bmdzdWJtaXQpCiAgICAgICAgIG1fZG9pbmdzdWJtaXQgPSB0cnVlOwogCkBAIC01OTksMTQgKzYy
NSwxMiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1MRm9ybUVsZW1lbnQ6OmRlZmF1bHRC
dXR0b24oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi1ib29sIEhUTUxGb3JtRWxlbWVudDo6
Y2hlY2tWYWxpZGl0eSgpCitib29sIEhUTUxGb3JtRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0
b3I8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpCiB7
Ci0gICAgLy8gVE9ETzogQ2hlY2sgZm9yIHVuaGFuZGxlZCBpbnZhbGlkIGNvbnRyb2xzLCBzZWUg
IzI3NDUyIGZvciB0aXBzLgotCiAgICAgYm9vbCBoYXNPbmx5VmFsaWRDb250cm9scyA9IHRydWU7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkg
ewogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sID0gZm9ybUVsZW1lbnRz
W2ldOwotICAgICAgICBpZiAoIWNvbnRyb2wtPmNoZWNrVmFsaWRpdHkoKSkKKyAgICAgICAgaWYg
KCFjb250cm9sLT5jaGVja1ZhbGlkaXR5KHVuaGFuZGxlZEludmFsaWRDb250cm9scykpCiAgICAg
ICAgICAgICBoYXNPbmx5VmFsaWRDb250cm9scyA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oCmluZGV4IDVjYWJhOWIuLjI2ODdjOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgK
QEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJJbWdFbGVtZW50KEhU
TUxJbWFnZUVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUltZ0VsZW1lbnQoSFRNTEltYWdlRWxl
bWVudCopOwogCi0gICAgYm9vbCBwcmVwYXJlU3VibWl0KEV2ZW50Kik7CisgICAgYm9vbCBwcmVw
YXJlU3VibWl0KEV2ZW50KiwgSFRNTEZvcm1Db250cm9sRWxlbWVudCopOwogICAgIHZvaWQgc3Vi
bWl0KEV2ZW50KiA9IDAsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24gPSBmYWxzZSwgYm9vbCBs
b2NrSGlzdG9yeSA9IGZhbHNlKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKQEAgLTExMyw3ICsxMTMs
NyBAQCBwdWJsaWM6CiAKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBkZWZhdWx0QnV0dG9u
KCkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNrVmFsaWRpdHkoKTsKKyAgICBib29sIGNoZWNrVmFs
aWRpdHkoVmVjdG9yPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPiogdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzID0gMCk7CiAKICAgICBQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IGVs
ZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFkZEVsZW1lbnRB
bGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlhcyk7
CkBAIC0xNDksNyArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIFN0
cmluZyBtX3RhcmdldDsKICAgICBib29sIG1fYXV0b2NvbXBsZXRlIDogMTsKKyAgICAvLyBQcmVw
YXJpbmcgc3VibWlzc2lvbiAoaW50ZXJhY3RpdmUgdmFsaWRhdGlvbiwgb3IgInN1Ym1pdCIgZXZl
bnQpLCBvcgorICAgIC8vIHN1Ym1pdHRpbmcgdGhlIGZvcm0uCiAgICAgYm9vbCBtX2luc3VibWl0
IDogMTsKKyAgICAvLyBTdWJtaXNzaW9uIHByZXBhcmF0aW9uIHdhcyBkb25lLCBzdWJtaXR0aW5n
LgogICAgIGJvb2wgbV9kb2luZ3N1Ym1pdCA6IDE7CiAgICAgYm9vbCBtX2lucmVzZXQgOiAxOwog
ICAgIGJvb2wgbV9tYWxmb3JtZWQgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDE0MTA1NTcuLjk3N2U3NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTczNiwx
MiArNzM2LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYXV0b3NhdmVBdHRyIHx8
CiAgICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IGluY3JlbWVudGFsQXR0ciB8fAotICAgICAg
ICAgICAgIGF0dHItPm5hbWUoKSA9PSBtaW5BdHRyIHx8Ci0gICAgICAgICAgICAgYXR0ci0+bmFt
ZSgpID09IG1heEF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gbXVsdGlwbGVB
dHRyIHx8CiAgICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IHByZWNpc2lvbkF0dHIpCiAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
cGF0dGVybkF0dHIpCisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1pbkF0dHIKKyAgICAg
ICAgICAgICB8fCBhdHRyLT5uYW1lKCkgPT0gbWF4QXR0cgorICAgICAgICAgICAgIHx8IGF0dHIt
Pm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIpIHsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OworICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IHBhdHRlcm5BdHRyKQogICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogI2lmIEVOQUJMRShE
QVRBTElTVCkKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGlzdEF0dHIpCkBAIC0xMzIz
LDcgKzEzMjUsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2dCkKICAgICAgICAgICAgICAgICAvLyBldmVudCAoaWYgYW55KSBoZXJlIGluc3Rl
YWQgb2YgcmVseWluZyBvbiB0aGUgdmFyaWFibGVzIHNldCBhYm92ZSB3aGVuCiAgICAgICAgICAg
ICAgICAgLy8gcHJvY2Vzc2luZyB0aGUgY2xpY2sgZXZlbnQuIEV2ZW4gYmV0dGVyLCBhcHBlbmRG
b3JtRGF0YSBjb3VsZCBwYXNzIHRoZQogICAgICAgICAgICAgICAgIC8vIGV2ZW50IGluLCBhbmQg
dGhlbiB3ZSBjb3VsZCBnZXQgcmlkIG9mIG1feFBvcyBhbmQgbV95UG9zIGFsdG9nZXRoZXIhCi0g
ICAgICAgICAgICAgICAgaWYgKCFmb3JtKCktPnByZXBhcmVTdWJtaXQoZXZ0KSkgeworICAgICAg
ICAgICAgICAgIGlmICghZm9ybSgpLT5wcmVwYXJlU3VibWl0KGV2dCwgdGhpcykpIHsKICAgICAg
ICAgICAgICAgICAgICAgbV94UG9zID0gMDsKICAgICAgICAgICAgICAgICAgICAgbV95UG9zID0g
MDsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlT
dGF0ZS5oIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCA3OTQ4MjJhLi4yOTMx
NDNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCisrKyBiL1dlYkNv
cmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIHN0ZXBNaXNtYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIGJvb2wgY3VzdG9tRXJyb3IoKSB7IHJldHVybiAhbV9jdXN0b21FcnJvck1lc3NhZ2UuaXNF
bXB0eSgpOyB9CiAgICAgICAgIGJvb2wgdmFsaWQoKTsKKyAgICAgICAgU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCJJbnZhbGlkISEhIik7IH0gIC8vIEZJ
WE1FCiAKICAgICBwcml2YXRlOgogICAgICAgICBWYWxpZGl0eVN0YXRlKEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBhZTliN2Y3Li43NTdhMmExIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlclF1aXJrcy5o
IgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2lu
Y2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTQ2LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZpbGVDaG9v
c2VyOwogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBG
cmFtZVZpZXc7CiAgICAgY2xhc3MgR2VvbG9jYXRpb247CiAgICAgY2xhc3MgSFRNTFBhcnNlclF1
aXJrczsKICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwpAQCAtMTg5LDYgKzE5MSwxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZv
Y3VzKGNvbnN0IE5vZGUqKSB7IH07CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1cihj
b25zdCBOb2RlKikgeyB9OworICAgICAgICAvLyBTaG93IHRoZSBzcGVjaWZpZWQgdmFsaWRhdGlv
biBtZXNzYWdlLiAgVGhlIG1lc3NhZ2Ugc2hvdWxkIG5vdCBoYXZlIG1vdXNlL2tleWJvYXJkIGZv
Y3VzLgorICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIDAgbWVhbnMgdGhhdCB0aGUgY2FsbGVy
IGRvZXNuJ3QgbmVlZCB0byBjYWxsIGhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAv
LyBXZSBtYXkgaGlkZSB0aGUgbWVzc2FnZSBldmVuIGlmIGhpZGVWYWxpZGF0aW9uTWVzc2FnZSgp
IGlzIG5vdCBjYWxsZWQuCisgICAgICAgIC8vIFNlZSBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwLgorICAgICAgICB2aXJ0dWFsIFZhbGlkYXRpb25NZXNzYWdlSGFuZGxlIHNob3dGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlbWVkeSBp
bXBsZW1lbnRhdGlvbiB0byBhdm9pZCBidWlsZCBmYWlsdXJlcy4KKyAgICAgICAgICAgIHNldFN0
YXR1c2JhclRleHQobWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGlkZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShWYWxpZGF0aW9u
TWVzc2FnZUhhbmRsZSkgeyBzZXRTdGF0dXNiYXJUZXh0KFN0cmluZygpKTsgfQogCiAgICAgICAg
IHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVp
cmtzKCkgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1ZhbGlkYXRpb25NZXNz
YWdlSGFuZGxlLmggYi9XZWJDb3JlL3BsYXRmb3JtL1ZhbGlkYXRpb25NZXNzYWdlSGFuZGxlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2YWExOQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUuaApAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGVfaAorI2RlZmluZSBWYWxp
ZGF0aW9uTWVzc2FnZUhhbmRsZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICB0eXBlZGVm
IGludCBWYWxpZGF0aW9uTWVzc2FnZUhhbmRsZTsKK30KKworI2VuZGlmICAvLyBWYWxpZGF0aW9u
TWVzc2FnZUhhbmRsZV9oCisK
</data>
<flag name="review"
          id="19913"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40698</attachid>
            <date>2009-10-06 00:06:46 -0700</date>
            <delta_ts>2010-06-11 15:00:32 -0700</delta_ts>
            <desc>Incomplete patch (rev.0)</desc>
            <filename>0001-interactive-validation-0.patch</filename>
            <type>text/plain</type>
            <size>21371</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSAxNWU4Y2EzMThmMGU2YzcxOTAzNzJjOTZjNWJkNzk2OGE4ZTJmMzc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDYgT2N0IDIwMDkgMTU6NTk6MTYgKzA5MDAKU3ViamVjdDogW1BBVENIXSBpbnRlcmFj
dGl2ZSB2YWxpZGF0aW9uIDAKCi0tLQogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAg
ICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIHwgICAgNCArKwogV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgICB8ICAg
NjcgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaCAgICAgfCAgIDExICsrKystCiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCAgICAgICAgICB8ICAgMzcgKysrKysrKysrKysrKy0tLQogV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oICAgICAgICAgICAgfCAgICA3ICsrLQogV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwICAgICAgICAgfCAgIDEyICsrKy0tCiBXZWJDb3JlL2h0bWwvVmFsaWRp
dHlTdGF0ZS5jcHAgICAgICAgICAgICB8ICAgIDcgKysrCiBXZWJDb3JlL2h0bWwvVmFsaWRpdHlT
dGF0ZS5oICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
ICAgICAgICAgICAgICAgfCAgIDE3ICsrKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDE0MSBpbnNl
cnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlMzM4NGYxLi40YjJiMmU2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTE0NjAsNiArMTQ2MCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9UaW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vVmFsaWRhdGlv
bk1lc3NhZ2VIYW5kbGUuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9Bbmlt
YXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjNjNThkNC4uMzIzYzM4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTQ2OTIsNiArNDY5Miw3IEBACiAJCUY1QzA0MUU1MEZGQ0E5NkQwMDgzOUQ0
QSAvKiBET01IVE1MRGF0YUxpc3RFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QzA0MUUwMEZGQ0E5NkQwMDgzOUQ0QSAvKiBE
T01IVE1MRGF0YUxpc3RFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJRjVDMDQxRTYwRkZDQTk2
RDAwODM5RDRBIC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFFMTBGRkNBOTZEMDA4MzlENEEgLyog
SlNIVE1MRGF0YUxpc3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJRjVDMDQxRTcwRkZDQTk2RDAwODM5
RDRBIC8qIEpTSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxRTIwRkZDQTk2RDAwODM5RDRBIC8qIEpTSFRNTERh
dGFMaXN0RWxlbWVudC5oICovOyB9OworCQlGNUQ4OUJCQTEwNEU1NkREMDBGNTgwMDMgLyogVmFs
aWRhdGlvbk1lc3NhZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1RDg5QkI5MTA0RTU2REQwMEY1ODAwMyAvKiBWYWxpZGF0aW9uTWVzc2Fn
ZUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
OTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
Y3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmggKi87IH07CkBAIC05ODUxLDYgKzk4NTIsNyBAQAogCQlGNUMyODY5MzAyODQ2
RENEMDE4NjM1Q0EgLyogQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IEFwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CiAJCUY1QzI4Njk0MDI4NDZEQ0QwMTg2MzVDQSAvKiBDYXJib24u
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKIAkJRjVDMjg2OTUwMjg0NkRDRDAxODYzNUNBIC8qIENvY29hLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OworCQlGNUQ4OUJCOTEwNEU1NkREMDBGNTgwMDMgLyogVmFsaWRhdGlvbk1lc3NhZ2VI
YW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3Nh
Z2VIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjgyMTYyOTkwMjlGNEZC
NTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0g
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQlGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3OTIsNiAr
MTQ3OTQsNyBAQAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8s
CiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCiAJCQkJMTQxOUQy
QzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKKwkJCQlGNUQ4OUJCOTEwNEU1
NkREMDBGNTgwMDMgLyogVmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUuaCAqLywKIAkJCQk5MzgwRjQ3
MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0
MDAxRkRCMzQgLyogV2lkZ2V0LmggKi8sCiAJCQkpOwpAQCAtMTc3MzYsNiArMTc3MzksNyBAQAog
CQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEMDg2RkU5ODA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU2NTgxQjIwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxl
U2hlZXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNUQ4OUJCQTEwNEU1NkREMDBGNTgwMDMgLyog
VmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1Qzc3MDhEMTAw
RDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAppbmRleCAzOTg3ODU5Li5jNGMyOTk3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lk
IEhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAg
aWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50ICYmICFkaXNh
YmxlZCgpKSB7CiAgICAgICAgIGlmIChmb3JtKCkgJiYgbV90eXBlID09IFNVQk1JVCkgewogICAg
ICAgICAgICAgbV9hY3RpdmVTdWJtaXQgPSB0cnVlOwotICAgICAgICAgICAgZm9ybSgpLT5wcmVw
YXJlU3VibWl0KGV2dCk7CisgICAgICAgICAgICBmb3JtKCktPnByZXBhcmVTdWJtaXQoZXZ0LCB0
aGlzKTsKICAgICAgICAgICAgIG1fYWN0aXZlU3VibWl0ID0gZmFsc2U7IC8vIGluIGNhc2Ugd2Ug
d2VyZSBjYW5jZWxlZAogICAgICAgICB9CiAgICAgICAgIGlmIChmb3JtKCkgJiYgbV90eXBlID09
IFJFU0VUKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGVhNDY5
ODAuLjk2YTM1YzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTUxLDkgKzUxLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCogZikKICAgICA6IEhUTUxFbGVt
ZW50KHRhZ05hbWUsIGRvYykKICAgICAsIG1fZm9ybShmKQorICAgICwgbV92YWxpZGF0aW9uTWVz
c2FnZUhhbmRsZSgwKQogICAgICwgbV9kaXNhYmxlZChmYWxzZSkKICAgICAsIG1fcmVhZE9ubHko
ZmFsc2UpCiAgICAgLCBtX3JlcXVpcmVkKGZhbHNlKQorICAgICwgbV92YWxpZCh0cnVlKQogICAg
ICwgbV92YWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSkKIHsKICAgICBpZiAoIW1fZm9ybSkKQEAg
LTY0LDYgKzY2LDcgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250cm9sRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIAogSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKQogeworICAgIG1heUhpZGVWYWxpZGF0
aW9uTWVzc2FnZSgpOwogICAgIGlmIChtX2Zvcm0pCiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9y
bUVsZW1lbnQodGhpcyk7CiB9CkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAg
ICAgICBib29sIG9sZERpc2FibGVkID0gbV9kaXNhYmxlZDsKICAgICAgICAgbV9kaXNhYmxlZCA9
ICFhdHRyLT5pc051bGwoKTsKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQp
IHsKLSAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgIHdpbGxW
YWxpZGF0ZUNoYW5nZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVy
KCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKICAgICAg
ICAgfQpAQCAtMTAyLDcgKzEwNSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBib29sIG9s
ZFJlYWRPbmx5ID0gbV9yZWFkT25seTsKICAgICAgICAgbV9yZWFkT25seSA9ICFhdHRyLT5pc051
bGwoKTsKICAgICAgICAgaWYgKG9sZFJlYWRPbmx5ICE9IG1fcmVhZE9ubHkpIHsKLSAgICAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgIHdpbGxWYWxpZGF0ZUNoYW5n
ZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkt
Pmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5z
dGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0KQEAgLTEx
MCw3ICsxMTMsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgYm9vbCBvbGRSZXF1aXJlZCA9
IG1fcmVxdWlyZWQ7CiAgICAgICAgIG1fcmVxdWlyZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAg
ICAgIGlmIChvbGRSZXF1aXJlZCAhPSBtX3JlcXVpcmVkKQotICAgICAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOworICAgICAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAt
Mjg4LDEwICsyOTEsMTkgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsVmFsaWRh
dGUoKSBjb25zdAogICAgIHJldHVybiBmb3JtKCkgJiYgIW5hbWUoKS5pc0VtcHR5KCkgJiYgIWRp
c2FibGVkKCkgJiYgIWlzUmVhZE9ubHlGb3JtQ29udHJvbCgpOwogfQogCi1ib29sIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojp3aWxsVmFsaWRhdGVDaGFuZ2VkKCkKIHsKLSAgICBpZiAod2lsbFZhbGlkYXRlKCkgJiYg
IWlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkgewotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoRXZlbnROYW1lcygpLmludmFsaWRFdmVudCwgZmFsc2UsIHRydWUpKTsKKyAg
ICBtYXlIaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CisgICAgbV92YWxpZCA9IHdpbGxWYWxpZGF0ZSgpID8gdmFsaWRpdHkoKS0+dmFsaWQoKSA6IHRy
dWU7Cit9CisKK2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0
b3I8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpCit7
CisgICAgaWYgKCFtX3ZhbGlkKSB7CisgICAgICAgIGJvb2wgbmVlZHNEZWZhdWx0QWN0aW9uID0g
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKEV2ZW50TmFtZXMoKS5pbnZhbGlkRXZlbnQsIGZh
bHNlLCB0cnVlKSk7CisgICAgICAgIGlmIChuZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVk
SW52YWxpZENvbnRyb2xzKQorICAgICAgICAgICAgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzLT5h
cHBlbmQodGhpcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMwMCw5ICsz
MTIsNDIgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkKIAog
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWYWxpZGl0eSgpCiB7Ci0gICAgaWYg
KHdpbGxWYWxpZGF0ZSgpKSB7Ci0gICAgICAgIC8vIFVwZGF0ZSBzdHlsZSBmb3IgcHNldWRvIGNs
YXNzZXMgc3VjaCBhcyA6dmFsaWQgOmludmFsaWQuCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKSB7CisgICAgICAgIC8vIElmICF3aWxsVmFs
aWRhdGUoKSwgbV92YWxpZCBpcyBhbHdheXMgdHJ1ZS4KKyAgICAgICAgQVNTRVJUKG1fdmFsaWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFVwZGF0ZSB0aGUgdmFsaWRpdHkuCisg
ICAgbV92YWxpZCA9IHZhbGlkaXR5KCktPnZhbGlkKCk7CisgICAgLy8gSGlkZSB0aGUgcHJldmlv
dXMgZXJyb3IgbWVzc2FnZS4KKyAgICBtYXlIaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICAv
LyBVcGRhdGUgc3R5bGUgZm9yIHBzZXVkbyBjbGFzc2VzIHN1Y2ggYXMgOnZhbGlkIDppbnZhbGlk
LgorICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKK30KKwordm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjptYXlTaG93VmFsaWRhdGlvbk1lc3NhZ2UoKQoreworICAgIG1heUhpZGVWYWxpZGF0
aW9uTWVzc2FnZSgpOworICAgIGlmICghd2lsbFZhbGlkYXRlKCkgfHwgdmFsaWRpdHkoKS0+dmFs
aWQoKSB8fCAhcmVuZGVyQm94KCkpCisgICAgICAgIHJldHVybjsKKyAgICBTdHJpbmcgbWVzc2Fn
ZSA9IHZhbGlkaXR5KCktPnZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgaWYgKG1lc3NhZ2UuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFkb2N1bWVudCgpLT5mcmFtZSgpKQor
ICAgICAgICByZXR1cm47CisgICAgUmVuZGVyQm94KiByZW5kZXJlciA9IHJlbmRlckJveCgpOwor
ICAgIEludFJlY3QgYWJzQm91bmRzID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCk7CisgICAgYWJzQm91bmRzLnNldExvY2F0aW9uKHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+
bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpKSk7CisgICAgbV92YWxp
ZGF0aW9uTWVzc2FnZUhhbmRsZSA9IGRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpLT5zaG93Rm9ybVZhbGlkYXRpb25NZXNzYWdlKGFic0JvdW5kcywgZG9jdW1l
bnQoKS0+dmlldygpLCBtZXNzYWdlKTsKKyAgICAvLyBGSVhNRTogU2V0IHRpbWVyIHRvIGhpZGUg
dGhlIG1lc3NhZ2U/Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF5SGlkZVZh
bGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBpZiAobV92YWxpZGF0aW9uTWVzc2FnZUhhbmRsZSkg
eworICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGRvY3VtZW50
KCktPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5oaWRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUpOworICAgICAgICBtX3ZhbGlkYXRp
b25NZXNzYWdlSGFuZGxlID0gMDsKICAgICB9CiB9CiAKQEAgLTMxNiw2ICszNjEsNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiAgICAgaWYgKGRv
Y3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKQogICAgICAg
ICBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURp
ZEZvY3VzKHRoaXMpOwogCisgICAgbWF5U2hvd1ZhbGlkYXRpb25NZXNzYWdlKCk7CiAgICAgSFRN
TEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpOwogfQogCkBAIC0zMjQsNiArMzcwLDcgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCiAgICAgaWYg
KGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKQogICAg
ICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9y
bURpZEJsdXIodGhpcyk7CiAKKyAgICBtYXlIaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICBI
VE1MRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIH0KIApAQCAtMzM5LDcgKzM4Niw3IEBA
IGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNv
bnN0CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNWYWxpZEZvcm1Db250cm9sRWxl
bWVudCgpCiB7Ci0gICAgcmV0dXJuIHZhbGlkaXR5KCktPnZhbGlkKCk7CisgICAgcmV0dXJuIG1f
dmFsaWQ7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlRnJvbUZvcm0o
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYjVkYzdjZS4uMDQ2M2Iy
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAjZGVmaW5lIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJWYWxpZGF0aW9uTWVzc2FnZUhhbmRsZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEwNyw3ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaG9y
dCB0YWJJbmRleCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNv
bnN0OwotICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOworICAgIGJvb2wgY2hlY2tWYWxpZGl0eShW
ZWN0b3I8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMg
PSAwKTsKKyAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIHZhbGlkYXRpb24gY29u
c3RyYWludCBvciBhIGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHVwZGF0ZVZh
bGlkaXR5KCk7CiAgICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTEyNiwxMiArMTI4LDE5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQq
IHZpcnR1YWxGb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdEJ1dHRvbkZv
ckZvcm0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVu
dCgpOworICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBpZiB3aWxsVmFsaWRhdGUoKSByZXN1
bHQgY2FuIGJlIGNoYW5nZWQuCisgICAgdm9pZCB3aWxsVmFsaWRhdGVDaGFuZ2VkKCk7CisgICAg
dm9pZCBtYXlTaG93VmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICB2b2lkIG1heUhpZGVWYWxpZGF0
aW9uTWVzc2FnZSgpOwogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgUmVmUHRy
PFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKKyAgICBWYWxpZGF0aW9uTWVzc2FnZUhh
bmRsZSBtX3ZhbGlkYXRpb25NZXNzYWdlSGFuZGxlOwogICAgIGJvb2wgbV9kaXNhYmxlZCA6IDE7
CiAgICAgYm9vbCBtX3JlYWRPbmx5IDogMTsKICAgICBib29sIG1fcmVxdWlyZWQgOiAxOworICAg
IC8vIENhY2hlIG9mIHZhbGlkaXR5KCktPnZhbGlkKCkuICBJdCBpcyBhbHdheXMgdHJ1ZSBpZiB3
aWxsVmFsaWRhdGUoKSBpcyBmYWxzZS4KKyAgICBib29sIG1fdmFsaWQgOiAxOwogICAgIGJvb2wg
bV92YWx1ZU1hdGNoZXNSZW5kZXJlciA6IDE7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CmluZGV4IGFjZTBmMmYuLjcwYmE0NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdENsaWNrKEV2ZW50KiBl
dmVudCkKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIXN1Ym1pdEZvdW5kKSAvLyBzdWJtaXQg
dGhlIGZvcm0gd2l0aG91dCBhIHN1Ym1pdCBvciBpbWFnZSBpbnB1dAotICAgICAgICBwcmVwYXJl
U3VibWl0KGV2ZW50KTsKKyAgICAgICAgcHJlcGFyZVN1Ym1pdChldmVudCwgMCk7CiB9CiAKIFRl
eHRFbmNvZGluZyBIVE1MRm9ybUVsZW1lbnQ6OmRhdGFFbmNvZGluZygpIGNvbnN0CkBAIC0yODcs
NyArMjg3LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmlzTWFpbHRvRm9ybSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHByb3RvY29sSXMobV91cmwsICJtYWlsdG8iKTsKIH0KIAotYm9vbCBIVE1MRm9y
bUVsZW1lbnQ6OnByZXBhcmVTdWJtaXQoRXZlbnQqIGV2ZW50KQorYm9vbCBIVE1MRm9ybUVsZW1l
bnQ6OnByZXBhcmVTdWJtaXQoRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBz
dWJtaXRFbGVtZW50KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CiAgICAgaWYgKG1faW5zdWJtaXQgfHwgIWZyYW1lKQpAQCAtMjk2LDYgKzI5NiwzMyBAQCBib29s
IEhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZVN1Ym1pdChFdmVudCogZXZlbnQpCiAgICAgbV9pbnN1
Ym1pdCA9IHRydWU7CiAgICAgbV9kb2luZ3N1Ym1pdCA9IGZhbHNlOwogCisgICAgLy8gSW50ZXJh
Y3RpdmUgdmFsaWRhdGlvbiBtdXN0IGJlIGRvbmUgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSBzdWJt
aXQgZXZlbnQuCisgICAgaWYgKCFub1ZhbGlkYXRlKCkgJiYgKCFzdWJtaXRFbGVtZW50IHx8ICFz
dWJtaXRFbGVtZW50LT5mb3JtTm9WYWxpZGF0ZSgpKSkgeworICAgICAgICBWZWN0b3I8SFRNTEZv
cm1Db250cm9sRWxlbWVudCo+IHVuaGFuZGxlZEludmFsaWRDb250cm9sczsKKyAgICAgICAgaWYg
KCFjaGVja1ZhbGlkaXR5KCZ1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpKSB7CisgICAgICAgICAg
ICBwcmludGYoIiVzOiBIYXMgaW52YWxpZCBjb250cm9scy4gIEFib3J0IHN1Ym1pc3Npb24uXG4i
LCBfX2Z1bmNfXyk7CisgICAgICAgICAgICAvLyBGb2N1cyBvbiB0aGUgZmlyc3QgdW5oYW5kbGVk
IGNvbnRyb2wuCisgICAgICAgICAgICBib29sIGZvdW5kRm9jdXNhYmxlID0gZmFsc2U7CisgICAg
ICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVuaGFuZGxlZEludmFsaWRDb250cm9scy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIHVuaGFuZGxl
ZCA9IHVuaGFuZGxlZEludmFsaWRDb250cm9sc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAodW5o
YW5kbGVkLT5pc0ZvY3VzYWJsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRG
b2N1c2FibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRm9jdXNhYmxlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaGFuZGxlZC0+c2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bmhhbmRsZWQtPmZvY3VzKCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyYW1l
KSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlKCJBbiBpbnZhbGlkIGZvcm0g
Y29udHJvbCAnJXR5cGUnIGlzIG5vdCB1c2VyLWVkaXRhYmxlLiIpOworICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlLnJlcGxhY2UoIiV0eXBlIiwgdW5oYW5kbGVkLT50eXBlKCkpOworICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShI
VE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNz
YWdlLCAwLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9pbnN1Ym1pdCA9IGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VibWl0RXZlbnQsIHRydWUsIHRydWUpKSAm
JiAhbV9kb2luZ3N1Ym1pdCkKICAgICAgICAgbV9kb2luZ3N1Ym1pdCA9IHRydWU7CiAKQEAgLTU5
OSwxNCArNjI2LDEyIEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEhUTUxGb3JtRWxlbWVudDo6
ZGVmYXVsdEJ1dHRvbigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgSFRNTEZvcm1F
bGVtZW50OjpjaGVja1ZhbGlkaXR5KCkKK2Jvb2wgSFRNTEZvcm1FbGVtZW50OjpjaGVja1ZhbGlk
aXR5KFZlY3RvcjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4qIHVuaGFuZGxlZEludmFsaWRDb250
cm9scykKIHsKLSAgICAvLyBUT0RPOiBDaGVjayBmb3IgdW5oYW5kbGVkIGludmFsaWQgY29udHJv
bHMsIHNlZSAjMjc0NTIgZm9yIHRpcHMuCi0KICAgICBib29sIGhhc09ubHlWYWxpZENvbnRyb2xz
ID0gdHJ1ZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wgPSBmb3Jt
RWxlbWVudHNbaV07Ci0gICAgICAgIGlmICghY29udHJvbC0+Y2hlY2tWYWxpZGl0eSgpKQorICAg
ICAgICBpZiAoIWNvbnRyb2wtPmNoZWNrVmFsaWRpdHkodW5oYW5kbGVkSW52YWxpZENvbnRyb2xz
KSkKICAgICAgICAgICAgIGhhc09ubHlWYWxpZENvbnRyb2xzID0gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmgKaW5kZXggYTJlOTU4NS4uMDY5M2M5ZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckltZ0Vs
ZW1lbnQoSFRNTEltYWdlRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlSW1nRWxlbWVudChIVE1M
SW1hZ2VFbGVtZW50Kik7CiAKLSAgICBib29sIHByZXBhcmVTdWJtaXQoRXZlbnQqKTsKKyAgICBi
b29sIHByZXBhcmVTdWJtaXQoRXZlbnQqLCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kik7CiAgICAg
dm9pZCBzdWJtaXQoRXZlbnQqID0gMCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiA9IGZhbHNl
LCBib29sIGxvY2tIaXN0b3J5ID0gZmFsc2UpOwogICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMTEz
LDcgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGRlZmF1
bHRCdXR0b24oKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOworICAgIGJvb2wg
Y2hlY2tWYWxpZGl0eShWZWN0b3I8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KiB1bmhhbmRsZWRJ
bnZhbGlkQ29udHJvbHMgPSAwKTsKIAogICAgIFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxl
bWVudD4gZWxlbWVudEZvckFsaWFzKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZvaWQgYWRk
RWxlbWVudEFsaWFzKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcm
IGFsaWFzKTsKQEAgLTE0OSw3ICsxNDksMTAgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV91cmw7
CiAgICAgU3RyaW5nIG1fdGFyZ2V0OwogICAgIGJvb2wgbV9hdXRvY29tcGxldGUgOiAxOworICAg
IC8vIFByZXBhcmluZyBzdWJtaXNzaW9uIChpbnRlcmFjdGl2ZSB2YWxpZGF0aW9uLCBvciAic3Vi
bWl0IiBldmVudCksIG9yCisgICAgLy8gc3VibWl0dGluZyB0aGUgZm9ybS4KICAgICBib29sIG1f
aW5zdWJtaXQgOiAxOworICAgIC8vIFN1Ym1pc3Npb24gcHJlcGFyYXRpb24gd2FzIGRvbmUsIHN1
Ym1pdHRpbmcuCiAgICAgYm9vbCBtX2RvaW5nc3VibWl0IDogMTsKICAgICBib29sIG1faW5yZXNl
dCA6IDE7CiAgICAgYm9vbCBtX21hbGZvcm1lZCA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggYjlmYzJjOS4uMzkwOTQ2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtNzE1LDEyICs3MTUsMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvc2F2ZUF0dHIgfHwKICAg
ICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gaW5jcmVtZW50YWxBdHRyIHx8Ci0gICAgICAgICAg
ICAgYXR0ci0+bmFtZSgpID09IG1pbkF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5uYW1lKCkg
PT0gbWF4QXR0ciB8fAotICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIg
fHwKICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gcHJlY2lzaW9uQXR0cikKICAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwYXR0
ZXJuQXR0cikKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbWluQXR0cgorICAgICAgICAg
ICAgIHx8IGF0dHItPm5hbWUoKSA9PSBtYXhBdHRyCisgICAgICAgICAgICAgfHwgYXR0ci0+bmFt
ZSgpID09IG11bHRpcGxlQXR0cikgeworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cisg
ICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
cGF0dGVybkF0dHIpCiAgICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiAjaWYgRU5BQkxFKERBVEFM
SVNUKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsaXN0QXR0cikKQEAgLTEzMDgsNyAr
MTMxMCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZ0KQogICAgICAgICAgICAgICAgIC8vIGV2ZW50IChpZiBhbnkpIGhlcmUgaW5zdGVhZCBv
ZiByZWx5aW5nIG9uIHRoZSB2YXJpYWJsZXMgc2V0IGFib3ZlIHdoZW4KICAgICAgICAgICAgICAg
ICAvLyBwcm9jZXNzaW5nIHRoZSBjbGljayBldmVudC4gRXZlbiBiZXR0ZXIsIGFwcGVuZEZvcm1E
YXRhIGNvdWxkIHBhc3MgdGhlCiAgICAgICAgICAgICAgICAgLy8gZXZlbnQgaW4sIGFuZCB0aGVu
IHdlIGNvdWxkIGdldCByaWQgb2YgbV94UG9zIGFuZCBtX3lQb3MgYWx0b2dldGhlciEKLSAgICAg
ICAgICAgICAgICBpZiAoIWZvcm0oKS0+cHJlcGFyZVN1Ym1pdChldnQpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFmb3JtKCktPnByZXBhcmVTdWJtaXQoZXZ0LCB0aGlzKSkgewogICAgICAgICAg
ICAgICAgICAgICBtX3hQb3MgPSAwOwogICAgICAgICAgICAgICAgICAgICBtX3lQb3MgPSAwOwog
ICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRl
LmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBkZjg5MzNkLi4wNGIz
OTZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC02MCw2ICs2MCwxMyBAQCBib29sIFZhbGlk
aXR5U3RhdGU6OnR5cGVNaXNtYXRjaCgpCiAgICAgfQogfQogCitTdHJpbmcgVmFsaWRpdHlTdGF0
ZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgcGxhY2Vo
b2xkZXIgaW1wbGVtZW50YWlvbi4KKyAgICAvLyBCdWcjMjc5NTkgd2lsbCBpbXBsZW1lbnQgdGhp
cy4KKyAgICByZXR1cm4gU3RyaW5nKCJJbnZhbGlkIGZvcm0gdmFsdWUhIik7Cit9CisKIGJvb2wg
VmFsaWRpdHlTdGF0ZTo6dmFsaWQoKQogewogICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21h
dGNoKCkgfHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJm
bG93KCkgfHwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9XZWJD
b3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCmluZGV4IDlhZGM4ZmQuLmIxYWNkZWYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlk
aXR5U3RhdGUuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgc3RlcE1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgYm9vbCBjdXN0
b21FcnJvcigpIHsgcmV0dXJuICFtX2N1c3RvbUVycm9yTWVzc2FnZS5pc0VtcHR5KCk7IH0KICAg
ICAgICAgYm9vbCB2YWxpZCgpOworICAgICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFZhbGlkaXR5U3RhdGUoSFRNTEZvcm1Db250cm9sRWxl
bWVudCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDUyMzE2MDMuLjI0NDM0OTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VyUXVpcmtzLmgiCiAj
aW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVk
ZSAiVmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NDYsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmlsZUNob29zZXI7
CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEZyYW1l
VmlldzsKICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKICAgICBjbGFzcyBIVE1MUGFyc2VyUXVpcmtz
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CkBAIC0xOTAsNiArMTkyLDIxIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBOb2Rl
KikgeyB9OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29uc3QgTm9kZSopIHsg
fTsKIAorICAgICAgICAvLyBTaG93IHRoZSBzcGVjaWZpZWQgdmFsaWRhdGlvbiBtZXNzYWdlLiAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIG5vdCBoYXZlIG1vdXNlL2tleWJvYXJkIGZvY3VzLgorICAgICAg
ICAvLyBUaGUgcmV0dXJuIHZhbHVlIDAgbWVhbnMgdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3QgbmVl
ZCB0byBjYWxsIGhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAvLworICAgICAgICAv
LyBZb3UgbWF5IGhpZGUgdGhlIG1lc3NhZ2UgaW4gYSBwb3J0IGltcGxlbWVudGF0aW9uIGV2ZW4g
aWYgaGlkZVZhbGlkYXRpb25NZXNzYWdlKCkgaXMgbm90IGNhbGxlZC4KKyAgICAgICAgLy8gZS5n
LiBIaWRlIHRoZSBtZXNzYWdlIHdoZW4gdGhlIHBhZ2UgaXMgc2Nyb2xsZWQuCisgICAgICAgIC8v
CisgICAgICAgIC8vIFNlZSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAu
CisgICAgICAgIHZpcnR1YWwgVmFsaWRhdGlvbk1lc3NhZ2VIYW5kbGUgc2hvd0Zvcm1WYWxpZGF0
aW9uTWVzc2FnZShjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVtZWR5IGltcGxlbWVu
dGF0aW9uIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzLgorICAgICAgICAgICAgc2V0U3RhdHVzYmFy
VGV4dChtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBoaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFZhbGlkYXRpb25NZXNzYWdl
SGFuZGxlKSB7IHNldFN0YXR1c2JhclRleHQoU3RyaW5nKCkpOyB9CisKICAgICAgICAgdmlydHVh
bCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSA9
IDA7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="21951"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="21952"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>