<?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>47405</bug_id>
          
          <creation_ts>2010-10-08 03:38:55 -0700</creation_ts>
          <short_desc>Refactor HTMLInputElement: Move typeMismatch(), valueMissing(), isRequiredFormControl(), and recalcWillValidate()</short_desc>
          <delta_ts>2010-10-09 06:30:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291542</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-08 03:38:55 -0700</bug_when>
    <thetext>Refactor HTMLInputElement: Move Move typeMismatch(), valueMissing(), isRequiredFormControl(), and recalcWillValidate()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291544</commentid>
    <comment_count>1</comment_count>
      <attachid>70221</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-08 03:46:58 -0700</bug_when>
    <thetext>Created attachment 70221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291717</commentid>
    <comment_count>2</comment_count>
      <attachid>70221</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-08 09:52:18 -0700</bug_when>
    <thetext>Comment on attachment 70221
Patch

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

This looks better and better. I am very happy with this design.

&gt; WebCore/html/HTMLInputElement.cpp:2020
&gt; +    return m_inputType-&gt;supportsValidation() &amp;&amp; HTMLFormControlElementWithState::recalcWillValidate();

OMG, This is so much easier to understand.

&gt; WebCore/html/NumberInputType.h:48
&gt; +    virtual bool typeMismatchForCandidate(const String&amp;) const;
&gt; +    virtual bool typeMismatchForCurrentValue() const;

I wonder if out of these two, there&apos;s just one virtual function, typeMismatchFor(const String&amp;), and HTMLInputType::typeMismatch() just calls it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292093</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-09 04:51:03 -0700</bug_when>
    <thetext>Thank you for reviewing a large patch.

&gt; &gt; WebCore/html/NumberInputType.h:48
&gt; &gt; +    virtual bool typeMismatchForCandidate(const String&amp;) const;
&gt; &gt; +    virtual bool typeMismatchForCurrentValue() const;
&gt; 
&gt; I wonder if out of these two, there&apos;s just one virtual function, typeMismatchFor(const String&amp;), and HTMLInputType::typeMismatch() just calls it?

Shorten the names sounds good. I change them to
 typeMismatchFor(const String&amp;) and
 typeMismatch().

Unfortunately  typeMismatchFor(HTMLInputElement::value()) and typeMismatch() have different behaviors in some types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292105</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-09 06:30:39 -0700</bug_when>
    <thetext>Landed as r69445.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70221</attachid>
            <date>2010-10-08 03:46:58 -0700</date>
            <delta_ts>2010-10-09 06:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47405-20101008194656.patch</filename>
            <type>text/plain</type>
            <size>39600</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDc4M2IxM2NkNmMzOGNiYTZmOTlmZWFjNTcyZjY5ZmIzZjA3NmI3Mi4uZGYxZTJiYWQ5NzFhOWEy
MjZjODI2MmVkOWJlM2JkZTViMzFhZWIzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MSBAQAorMjAxMC0xMC0wOCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTElucHV0RWxlbWVudDogTW92ZSB0
eXBlTWlzbWF0Y2goKSwgdmFsdWVNaXNzaW5nKCksCisgICAgICAgIGlzUmVxdWlyZWRGb3JtQ29u
dHJvbCgpLCBhbmQgcmVjYWxjV2lsbFZhbGlkYXRlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NDA1CisKKyAgICAgICAgQWxzbyBtYWtlIGNoZWNr
ZWRSYWRpb0J1dHRvbnMoKSBhbiBpbmxpbmUgbWVtYmVyIGZ1bmN0aW9uIG9mCisgICAgICAgIEhU
TUxJbnB1dEVsZW1lbnQgaW4gb3JkZXIgdGhhdCBSYWRpb0lucHV0VHlwZSBjYW4gdXNlIGl0Lgor
CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3JDYW5kaWRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp0eXBlTWlz
bWF0Y2hGb3JDdXJyZW50VmFsdWUpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmg6CisgICAgICAgICogaHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QnV0dG9uSW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24pOgorICAgICAgICAq
IGh0bWwvQnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9DaGVja2JveElucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2JveElucHV0VHlwZTo6dmFsdWVNaXNzaW5n
KToKKyAgICAgICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9D
b2xvcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ29sb3JTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvckNhbmRp
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9y
Q3VycmVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpzdXBwb3J0
c1JlcXVpcmVkKToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6CisgICAgICAgICog
aHRtbC9FbWFpbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkRW1haWxB
ZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hG
b3JDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OnR5cGVNaXNt
YXRjaEZvckN1cnJlbnRWYWx1ZSk6CisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5oOgor
ICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5o
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVDaGVja2VkUmFkaW9CdXR0b25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyZWNhbGNXaWxsVmFsaWRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y2hlY2tl
ZFJhZGlvQnV0dG9ucyk6CisgICAgICAgICogaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24pOgorICAg
ICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6c3VwcG9ydHNWYWxp
ZGF0aW9uKToKKyAgICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdXBwb3J0c1Zh
bGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3JD
YW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3JD
dXJyZW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFsdWVNaXNzaW5nKToKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSXNJbmRleElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJc0luZGV4SW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVk
KToKKyAgICAgICAgKiBodG1sL0lzSW5kZXhJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnR5
cGVNaXNtYXRjaEZvckNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5
cGU6OnR5cGVNaXNtYXRjaEZvckN1cnJlbnRWYWx1ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1JhZGlvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlvSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcpOgorICAgICAgICAqIGh0bWwv
UmFkaW9JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1Jlc2V0SW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24pOgorICAg
ICAgICAqIGh0bWwvUmVzZXRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1N1Ym1pdElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1dFR5cGU6OnN1cHBvcnRzVmFs
aWRhdGlvbik6CisgICAgICAgICogaHRtbC9TdWJtaXRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBo
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVUkxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvckNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpVUkxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvckN1cnJlbnRWYWx1ZSk6CisgICAgICAg
ICogaHRtbC9VUkxJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKToKKwogMjAx
MC0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcAppbmRleCA1YjkxYjAxZDIxNjY4YWMzMTUxMjM1MjQzMjkxYWMwZmIwNjUz
OTMyLi44YjUyNjNhOTU1NmExMmJiOGVjNTYxZmEyYWJlN2FmYTViMDY2Y2YwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtNjcsNiArNjcsMTYgQEAgdm9p
ZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1Zh
bHVlLCBFeGNlcHRpb25Db2RlJikKICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShu
ZXdWYWx1ZSkpOwogfQogCitib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dHlwZU1pc21h
dGNoRm9yQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICFwYXJzZVRvRGF0ZUNvbXBvbmVudHModmFsdWUsIDApOworfQorCitib29sIEJhc2VEYXRlQW5k
VGltZUlucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yQ3VycmVudFZhbHVlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHlwZU1pc21hdGNoRm9yQ2FuZGlkYXRlKGVsZW1lbnQoKS0+dmFsdWUoKSk7Cit9
CisKIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyhjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIGNvbnN0IGRvdWJsZSBuYW4gPSBudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaAppbmRleCAyMjE0NzM3YWM0ODY2NzgyOTRiOTQ0NDNiYzE5ZWM1NzU0MzhjY2QxLi4y
MmQ2NDYwNzg3ZDk1N2M3ZjY5YmU1NTg1OGQxODIwMmQ4MjUwZmJmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC01MSw2ICs1MSw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNOdW1iZXIoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVBc051bWJlcihkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3JDdXJyZW50VmFsdWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5jcHAgYi9XZWJDb3Jl
L2h0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcAppbmRleCA3ZjU2OTcwMzQ4Y2UzODFkMTY1NGI2MzYy
ZmFiZDI1YWRiNDJhY2QxLi5kZWFmMzBmZWM1ZjljZWM5OGNkMWZjMWIyODVhMDE5YjYwZjZhOGZk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcApAQCAtNDUsNCArNDUsOSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEJ1dHRvbklucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICBy
ZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmJ1dHRvbigpOwogfQogCitib29sIEJ1dHRvbklucHV0VHlw
ZTo6c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CdXR0b25J
bnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaAppbmRleCA5OWIzNTc0
OTIzOTJiN2EzN2ZiMTc1YjBkYWEwODBkZjE0N2RlNTk5Li43ZWZiYWQyOWQxY2MwYjI0OTk1ZTRk
YjBmNzczODc1YmY1YjkwYmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRU
eXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5oCkBAIC00Miw2ICs0Miw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQnV0dG9uSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwIGIvV2ViQ29y
ZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcAppbmRleCAxYzdlYTRiNWY1ODQ5ZWQ5ZjI5MmQ3
MTJlMTJmMTg0N2I1NTUwMjEzLi41NzJkZGUwM2E1NTA0MjYwYzBlNGM3MDMxYTlmZGEyMzdkMmI1
NDY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDaGVja2JveElucHV0VHlwZS5oIgogCisjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDQgKzQ2LDkgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBDaGVja2JveElucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICByZXR1cm4g
SW5wdXRUeXBlTmFtZXM6OmNoZWNrYm94KCk7CiB9CiAKK2Jvb2wgQ2hlY2tib3hJbnB1dFR5cGU6
OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiAhZWxlbWVu
dCgpLT5jaGVja2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0NoZWNrYm94
SW5wdXRUeXBlLmgKaW5kZXggNmExNTJlOTY2NDE0YjQ2NjlkMTZkOWFlNWRiYjE0NTMzYWMzNzFl
My4uZTA0MWEwNzFkYTJjM2NlZmU2ZWVjODdmMDZlODFhYmEwOGFjYzZhMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0NoZWNr
Ym94SW5wdXRUeXBlLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBD
aGVja2JveElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShl
bGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcm
KSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUu
Y3BwCmluZGV4IGM2OGFjZWFhZGY2YTJhNmJjMjRjMDVlMTVhODU1MmE0MzRjODYwOTYuLjBlYjU1
NTE5ZGNmNzBlYWI3NDgzZGQ4NmY2ZTg2MTljMWRkNTI4NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcApAQCAtMzEsMTAgKzMxLDI4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29sb3JJbnB1dFR5cGUuaCIKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
aXNWYWxpZENvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh2YWx1ZVswXSA9PSAn
IycpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgYWNjZXB0ICNyZ2IgYW5kICNhYXJyZ2diYiBmb3Jt
YXRzLgorICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gNykKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgLy8gVGhpcyBhY2NlcHRzIG5hbWVkIGNvbG9ycyBzdWNoIGFz
ICJ3aGl0ZSIuCisgICAgLy8gRklYTUU6IFJlamVjdCBuYW1lZCBjb2xvcnMsIGFjY2VwdCBvbmx5
ICNycmdnYmIuCisgICAgQ29sb3IgY29sb3IodmFsdWUpOworICAgIHJldHVybiBjb2xvci5pc1Zh
bGlkKCkgJiYgIWNvbG9yLmhhc0FscGhhKCk7Cit9CisKIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBD
b2xvcklucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvcklucHV0VHlwZShlbGVtZW50KSk7CkBAIC00NSw0ICs2
MywyMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIENvbG9ySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5
cGUoKSBjb25zdAogICAgIHJldHVybiBJbnB1dFR5cGVOYW1lczo6Y29sb3IoKTsKIH0KIAorYm9v
bCBDb2xvcklucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYg
dmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1ZhbGlkQ29sb3JTdHJpbmcodmFsdWUpOwor
fQorCitib29sIENvbG9ySW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3JDdXJyZW50VmFsdWUoKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBTaG91bGQgcmV0dXJuIGZhbHNlLiBXZSBkb24ndCBpbXBs
ZW1lbnQgdmFsdWUgc2FuaXRpemF0aW9uIGZvcgorICAgIC8vIHR5cGU9Y29sb3IgeWV0LgorICAg
IHJldHVybiAhaXNWYWxpZENvbG9yU3RyaW5nKGVsZW1lbnQoKS0+dmFsdWUoKSk7Cit9CisKK2Jv
b2wgQ29sb3JJbnB1dFR5cGU6OnN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApp
bmRleCA3MjU5MzQ2MTQwMzFkZTViNTgyODM3MzlmM2MyODhlMGVhY2I2NTkxLi41NDFjYmVhYWE4
N2ZhYjIzOTdkNmIwNDYyZjBmNjQyZGVkYWE4MzI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
Q29sb3JJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAt
NDIsNiArNDIsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENvbG9ySW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3JDdXJyZW50VmFsdWUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0VtYWlsSW5w
dXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggNDQ3MjMx
MDlhODZjMTIxYThhNzdlYzQ2YTlmODViZTg1MmNkZTA1OC4uOTZmM2ZhOWM1ZGVmNWNlODA3ZmQw
MGJlNmRlZDgyZDRkZGVmNGYxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRU
eXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC0xLDQwICsx
LDU0IEBACiAvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0Lgor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBNaWNoZWxhbmdlbG8gRGUgU2ltb25lIDxtaWNkZXNp
bUBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCiAgKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJFbWFpbElucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29u
c3QgY2hhciBlbWFpbFBhdHRlcm5bXSA9CisgICAgIlthLXowLTkhIyQlJicqKy89P15fYHt8fX4u
LV0rIiAvLyBsb2NhbCBwYXJ0CisgICAgIkAiCisgICAgIlthLXowLTktXSsoXFwuW2EtejAtOS1d
KykrIjsgLy8gZG9tYWluIHBhcnQKKworc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhj
b25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAgaW50IGFkZHJlc3NMZW5ndGggPSBhZGRyZXNz
Lmxlbmd0aCgpOworICAgIGlmICghYWRkcmVzc0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiwgcmVn
RXhwLCAoZW1haWxQYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKSk7CisKKyAgICBpbnQgbWF0
Y2hMZW5ndGg7CisgICAgaW50IG1hdGNoT2Zmc2V0ID0gcmVnRXhwLm1hdGNoKGFkZHJlc3MsIDAs
ICZtYXRjaExlbmd0aCk7CisKKyAgICByZXR1cm4gIW1hdGNoT2Zmc2V0ICYmIG1hdGNoTGVuZ3Ro
ID09IGFkZHJlc3NMZW5ndGg7Cit9CisKIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBFbWFpbElucHV0
VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBFbWFpbElucHV0VHlwZShlbGVtZW50KSk7CkBAIC00NSw0ICs1OSwyMiBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIEVtYWlsSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25z
dAogICAgIHJldHVybiBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKTsKIH0KIAorYm9vbCBFbWFpbElu
cHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNv
bnN0Cit7CisgICAgaWYgKCFlbGVtZW50KCktPm11bHRpcGxlKCkpCisgICAgICAgIHJldHVybiAh
aXNWYWxpZEVtYWlsQWRkcmVzcyh2YWx1ZSk7CisgICAgVmVjdG9yPFN0cmluZz4gYWRkcmVzc2Vz
OworICAgIHZhbHVlLnNwbGl0KCcsJywgYWRkcmVzc2VzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYWRkcmVzc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghaXNWYWxpZEVt
YWlsQWRkcmVzcyhhZGRyZXNzZXNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFbWFpbElucHV0VHlwZTo6dHlwZU1pc21h
dGNoRm9yQ3VycmVudFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHlwZU1pc21hdGNoRm9y
Q2FuZGlkYXRlKGVsZW1lbnQoKS0+dmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5oIGIvV2ViQ29yZS9o
dG1sL0VtYWlsSW5wdXRUeXBlLmgKaW5kZXggYmJmNmY3M2M3YzFlNjVmYTNlNmI4YjI3NzEyODIy
ODFlZTJhMzM3Yy4uMTg1MTYxOTk2MTcxMmE0MDllY2IyYzMxNTdhMTdhNDM4N2VkZjgwNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1s
L0VtYWlsSW5wdXRUeXBlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBFbWFpbElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VUZXh0SW5w
dXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yQ2Fu
ZGlkYXRlKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0
Y2hGb3JDdXJyZW50VmFsdWUoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCAwZTA4MzYyNGI1Zjc1Mzk4YWVmMWViMWIzNGEzNjRj
MGU0MmEyYTE1Li42Y2IxN2YyZjFlMjMyZDhkZWI3MjVlZDVjNTY1ZjgwNDAxMGZiOGI1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRmlsZUlucHV0
VHlwZS5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw0ICs0Niw5IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgRmlsZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29u
c3QKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmZpbGUoKTsKIH0KIAorYm9vbCBGaWxlSW5w
dXRUeXBlOjp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdmFsdWUuaXNFbXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuaAppbmRleCBjZWJmYWI3NmNhMTk0MDg2M2E5N2U2NDI0MjY1ODY5ZmM0NWZmMDY0
Li4yY2JmZTY3NjZkYTFkNTU5ZTAwMmZhNjRjNzEzMmEzNDE3ZDc5Zjg0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGaWxlSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDRkNWNkNjRjYjRkMDFmYzAxMjk1MzFmZjNiMDMzYzAyNzlkM2JlZDYuLmY5NWM5OGMwMDNjMDg3
YzY1NGRhN2RiNGRkZmViODViOWQ5YjE2YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
QEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZWd1bGFyRXhw
cmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckJ1dHRvbi5oIgogI2luY2x1ZGUgIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKQEAgLTgyLDQ0ICs4
MSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBjb25zdCBpbnQgbWF4U2F2ZWRS
ZXN1bHRzID0gMjU2OwogCi1zdGF0aWMgY29uc3QgY2hhciBlbWFpbFBhdHRlcm5bXSA9Ci0gICAg
IlthLXowLTkhIyQlJicqKy89P15fYHt8fX4uLV0rIiAvLyBsb2NhbCBwYXJ0Ci0gICAgIkAiCi0g
ICAgIlthLXowLTktXSsoXFwuW2EtejAtOS1dKykrIjsgLy8gZG9tYWluIHBhcnQKLQogc3RhdGlj
IGJvb2wgaXNOdW1iZXJDaGFyYWN0ZXIoVUNoYXIgY2gpCiB7CiAgICAgcmV0dXJuIGNoID09ICcr
JyB8fCBjaCA9PSAnLScgfHwgY2ggPT0gJy4nIHx8IGNoID09ICdlJyB8fCBjaCA9PSAnRScKICAg
ICAgICAgfHwgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpOwogfQogCi1zdGF0aWMgYm9vbCBpc1Zh
bGlkQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlWzBdID09ICcjJykg
ewotICAgICAgICAvLyBXZSBkb24ndCBhY2NlcHQgI3JnYiBhbmQgI2FhcnJnZ2JiIGZvcm1hdHMu
Ci0gICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSAhPSA3KQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICBDb2xvciBjb2xvcih2YWx1ZSk7IC8vIFRoaXMgYWNjZXB0cyBuYW1l
ZCBjb2xvcnMgc3VjaCBhcyAid2hpdGUiLgotICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgJiYg
IWNvbG9yLmhhc0FscGhhKCk7Ci19Ci0KLXN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3Mo
Y29uc3QgU3RyaW5nJiBhZGRyZXNzKQotewotICAgIGludCBhZGRyZXNzTGVuZ3RoID0gYWRkcmVz
cy5sZW5ndGgoKTsKLSAgICBpZiAoIWFkZHJlc3NMZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgUmVndWxhckV4cHJlc3Npb24sIHJl
Z0V4cCwgKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOwotCi0gICAgaW50IG1h
dGNoTGVuZ3RoOwotICAgIGludCBtYXRjaE9mZnNldCA9IHJlZ0V4cC5tYXRjaChhZGRyZXNzLCAw
LCAmbWF0Y2hMZW5ndGgpOwotCi0gICAgcmV0dXJuICFtYXRjaE9mZnNldCAmJiBtYXRjaExlbmd0
aCA9PSBhZGRyZXNzTGVuZ3RoOwotfQotCiBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGZvcm0pCiAgICAgLCBtX3hQb3MoMCkKQEAgLTE2OSwxNyArMTM2LDEw
IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6YXV0b0NvbXBsZXRlKCkgY29uc3QKICAgICByZXR1
cm4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9Db21wbGV0ZSgpOwogfQogCi1zdGF0
aWMgaW5saW5lIENoZWNrZWRSYWRpb0J1dHRvbnMmIGNoZWNrZWRSYWRpb0J1dHRvbnMoY29uc3Qg
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBm
b3JtID0gZWxlbWVudC0+Zm9ybSgpKQotICAgICAgICByZXR1cm4gZm9ybS0+Y2hlY2tlZFJhZGlv
QnV0dG9ucygpOwotICAgIHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgpLT5jaGVja2VkUmFkaW9C
dXR0b25zKCk7Ci19Ci0KIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlQ2hlY2tlZFJhZGlv
QnV0dG9ucygpCiB7CiAgICAgaWYgKGF0dGFjaGVkKCkgJiYgY2hlY2tlZCgpKQotICAgICAgICBj
aGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsKKyAgICAgICAgY2hlY2tl
ZFJhZGlvQnV0dG9ucygpLmFkZEJ1dHRvbih0aGlzKTsKIAogICAgIGlmIChmb3JtKCkpIHsKICAg
ICAgICAgY29uc3QgVmVjdG9yPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPiYgY29udHJvbHMgPSBm
b3JtKCktPmFzc29jaWF0ZWRFbGVtZW50cygpOwpAQCAtMjIwLDcgKzE4MCw3IEBAIGJvb2wgSFRN
TElucHV0RWxlbWVudDo6aXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIHJldHVybiAhdHlwZU1pc21hdGNoKHZhbHVlKQorICAgIHJldHVybiAhbV9pbnB1dFR5
cGUtPnR5cGVNaXNtYXRjaEZvckNhbmRpZGF0ZSh2YWx1ZSkKICAgICAgICAgJiYgIXN0ZXBNaXNt
YXRjaCh2YWx1ZSkKICAgICAgICAgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKQogICAgICAgICAm
JiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSkKQEAgLTIyOSw5MyArMTg5LDE4IEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6aXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAg
ICAgICYmICF2YWx1ZU1pc3NpbmcodmFsdWUpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnR5cGVNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRF
bGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25zdAogewotICAgIHN3aXRjaCAoZGVwcmVjYXRlZElu
cHV0VHlwZSgpKSB7Ci0gICAgY2FzZSBDT0xPUjoKLSAgICAgICAgcmV0dXJuICFpc1ZhbGlkQ29s
b3JTdHJpbmcodmFsdWUpOwotICAgIGNhc2UgTlVNQkVSOgotICAgICAgICBBU1NFUlQocGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUodmFsdWUsIDApKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgVVJMOgotICAgICAgICByZXR1cm4gIUtVUkwoS1VSTCgpLCB2YWx1ZSkuaXNWYWxp
ZCgpOwotICAgIGNhc2UgRU1BSUw6IHsKLSAgICAgICAgaWYgKCFtdWx0aXBsZSgpKQotICAgICAg
ICAgICAgcmV0dXJuICFpc1ZhbGlkRW1haWxBZGRyZXNzKHZhbHVlKTsKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4gYWRkcmVzc2VzOwotICAgICAgICB2YWx1ZS5zcGxpdCgnLCcsIGFkZHJlc3Nlcyk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhZGRyZXNzZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGlmICghaXNWYWxpZEVtYWlsQWRkcmVzcyhhZGRyZXNzZXNbaV0pKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKHZhbHVlKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhc2UgREFURToK
LSAgICBjYXNlIERBVEVUSU1FOgotICAgIGNhc2UgREFURVRJTUVMT0NBTDoKLSAgICBjYXNlIE1P
TlRIOgotICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFdFRUs6Ci0gICAgICAgIHJldHVybiAhbV9p
bnB1dFR5cGUtPnBhcnNlVG9EYXRlQ29tcG9uZW50cyh2YWx1ZSwgMCk7Ci0gICAgY2FzZSBCVVRU
T046Ci0gICAgY2FzZSBDSEVDS0JPWDoKLSAgICBjYXNlIEZJTEU6Ci0gICAgY2FzZSBISURERU46
Ci0gICAgY2FzZSBJTUFHRToKLSAgICBjYXNlIElTSU5ERVg6Ci0gICAgY2FzZSBQQVNTV09SRDoK
LSAgICBjYXNlIFJBRElPOgotICAgIGNhc2UgUkFOR0U6Ci0gICAgY2FzZSBSRVNFVDoKLSAgICBj
YXNlIFNFQVJDSDoKLSAgICBjYXNlIFNVQk1JVDoKLSAgICBjYXNlIFRFTEVQSE9ORToKLSAgICBj
YXNlIFRFWFQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlw
ZU1pc21hdGNoRm9yQ3VycmVudFZhbHVlKCk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
dmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1Jl
cXVpcmVkRm9ybUNvbnRyb2woKSB8fCByZWFkT25seSgpIHx8IGRpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0g
ICAgY2FzZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6Ci0gICAgY2FzZSBEQVRFVElNRUxPQ0FM
OgotICAgIGNhc2UgRU1BSUw6Ci0gICAgY2FzZSBGSUxFOgotICAgIGNhc2UgTU9OVEg6Ci0gICAg
Y2FzZSBOVU1CRVI6Ci0gICAgY2FzZSBQQVNTV09SRDoKLSAgICBjYXNlIFNFQVJDSDoKLSAgICBj
YXNlIFRFTEVQSE9ORToKLSAgICBjYXNlIFRFWFQ6Ci0gICAgY2FzZSBUSU1FOgotICAgIGNhc2Ug
VVJMOgotICAgIGNhc2UgV0VFSzoKLSAgICAgICAgcmV0dXJuIHZhbHVlLmlzRW1wdHkoKTsKLSAg
ICBjYXNlIENIRUNLQk9YOgotICAgICAgICByZXR1cm4gIWNoZWNrZWQoKTsKLSAgICBjYXNlIFJB
RElPOgotICAgICAgICByZXR1cm4gIWNoZWNrZWRSYWRpb0J1dHRvbnModGhpcykuY2hlY2tlZEJ1
dHRvbkZvckdyb3VwKG5hbWUoKSk7Ci0gICAgY2FzZSBDT0xPUjoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGNhc2UgQlVUVE9OOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6
Ci0gICAgY2FzZSBJU0lOREVYOgotICAgIGNhc2UgUkFOR0U6Ci0gICAgY2FzZSBSRVNFVDoKLSAg
ICBjYXNlIFNVQk1JVDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFs
dWVNaXNzaW5nKHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlz
bWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTQ2Niw3ICszNTEsNyBAQCBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZl
bnQpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEFsbG93IGtleWJvYXJk
IGZvY3VzIGlmIHdlJ3JlIGNoZWNrZWQgb3IgaWYgbm90aGluZyBpbiB0aGUgZ3JvdXAgaXMgY2hl
Y2tlZC4KLSAgICAgICAgcmV0dXJuIGNoZWNrZWQoKSB8fCAhY2hlY2tlZFJhZGlvQnV0dG9ucyh0
aGlzKS5jaGVja2VkQnV0dG9uRm9yR3JvdXAobmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGNoZWNr
ZWQoKSB8fCAhY2hlY2tlZFJhZGlvQnV0dG9ucygpLmNoZWNrZWRCdXR0b25Gb3JHcm91cChuYW1l
KCkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU3Nyw3ICs0NjIsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICAgICAgLy8gVXNlZnVs
IGluIGNhc2Ugd2Ugd2VyZSBjYWxsZWQgZnJvbSBpbnNpZGUgcGFyc2VNYXBwZWRBdHRyaWJ1dGUu
CiAgICAgICAgICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUoKSk7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5yZW1vdmVCdXR0b24o
dGhpcyk7CisgICAgICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRo
aXMpOwogCiAgICAgICAgICAgICBpZiAobmV3VHlwZSA9PSBGSUxFICYmICFtX2ZpbGVMaXN0KQog
ICAgICAgICAgICAgICAgIG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CkBAIC02Mjcs
NyArNTEyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsK
KyAgICAgICAgICAgIGNoZWNrZWRSYWRpb0J1dHRvbnMoKS5hZGRCdXR0b24odGhpcyk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKQEAgLTc5NSw5ICs2ODAs
OSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZQogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBuYW1lQXR0cikgewotICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLnJlbW92
ZUJ1dHRvbih0aGlzKTsKKyAgICAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRv
bih0aGlzKTsKICAgICAgICAgbV9kYXRhLnNldE5hbWUoYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAg
IGNoZWNrZWRSYWRpb0J1dHRvbnModGhpcykuYWRkQnV0dG9uKHRoaXMpOworICAgICAgICBjaGVj
a2VkUmFkaW9CdXR0b25zKCkuYWRkQnV0dG9uKHRoaXMpOwogICAgICAgICBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvY29tcGxldGVBdHRyKSB7CiAgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAib2ZmIikpIHsKQEAgLTExNDIsNyArMTAy
Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZChib29sIG5vd0NoZWNrZWQs
IGJvb2wgc2VuZENoYW5nZUV2ZW50KQogICAgIGlmIChjaGVja2VkKCkgPT0gbm93Q2hlY2tlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5yZW1vdmVC
dXR0b24odGhpcyk7CisgICAgY2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlz
KTsKIAogICAgIG1fdXNlRGVmYXVsdENoZWNrZWQgPSBmYWxzZTsKICAgICBtX2NoZWNrZWQgPSBu
b3dDaGVja2VkOwpAQCAtMTQ4MSw3ICsxMzY2LDcgQEAgdm9pZCogSFRNTElucHV0RWxlbWVudDo6
cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIC8vIFdlIHJl
YWxseSB3YW50IHJhZGlvIGdyb3VwcyB0byBlbmQgdXAgaW4gc2FuZSBzdGF0ZXMsIGkuZS4sIHRv
IGhhdmUgc29tZXRoaW5nIGNoZWNrZWQuCiAgICAgICAgICAgICAvLyBUaGVyZWZvcmUgaWYgbm90
aGluZyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQsIHdlIHdvbid0IGFsbG93IHRoaXMgYWN0aW9uIHRv
IGJlICJ1bmRvbmUiLCBzaW5jZQogICAgICAgICAgICAgLy8gd2Ugd2FudCBzb21lIG9iamVjdCBp
biB0aGUgcmFkaW8gZ3JvdXAgdG8gYWN0dWFsbHkgZ2V0IHNlbGVjdGVkLgotICAgICAgICAgICAg
SFRNTElucHV0RWxlbWVudCogY3VyclJhZGlvID0gY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5j
aGVja2VkQnV0dG9uRm9yR3JvdXAobmFtZSgpKTsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGN1cnJSYWRpbyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKS5jaGVja2VkQnV0dG9uRm9yR3Jv
dXAobmFtZSgpKTsKICAgICAgICAgICAgIGlmIChjdXJyUmFkaW8pIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSBoYXZlIGEgcmFkaW8gYnV0dG9uIHNlbGVjdGVkIHRoYXQgaXMgbm90IHVzLiAgQ2Fj
aGUgaXQgaW4gb3VyIHJlc3VsdCBmaWVsZCBhbmQgcmVmIGl0IHNvCiAgICAgICAgICAgICAgICAg
Ly8gdGhhdCBpdCBjYW4ndCBiZSBkZXN0cm95ZWQuCkBAIC0yMDcyLDQwICsxOTU3LDcgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50Ojp1bnJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVk
ZWQoKQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFyZXF1aXJlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0g
ICAgY2FzZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6Ci0gICAgY2FzZSBEQVRFVElNRUxPQ0FM
OgotICAgIGNhc2UgRU1BSUw6Ci0gICAgY2FzZSBGSUxFOgotICAgIGNhc2UgTU9OVEg6Ci0gICAg
Y2FzZSBOVU1CRVI6Ci0gICAgY2FzZSBQQVNTV09SRDoKLSAgICBjYXNlIFJBRElPOgotICAgIGNh
c2UgU0VBUkNIOgotICAgIGNhc2UgVEVMRVBIT05FOgotICAgIGNhc2UgVEVYVDoKLSAgICBjYXNl
IFRJTUU6Ci0gICAgY2FzZSBVUkw6Ci0gICAgY2FzZSBXRUVLOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBjYXNlIEJVVFRPTjoKLSAgICBjYXNlIENPTE9SOgotICAgIGNhc2UgSElEREVOOgot
ICAgIGNhc2UgSU1BR0U6Ci0gICAgY2FzZSBJU0lOREVYOgotICAgIGNhc2UgUkFOR0U6Ci0gICAg
Y2FzZSBSRVNFVDoKLSAgICBjYXNlIFNVQk1JVDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmVxdWlyZWQoKSAmJiByZXF1aXJlZCgpOwogfQog
CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVu
ZCkKQEAgLTIxNjUsMzYgKzIwMTcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29ucwogCiBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0CiB7Ci0gICAgc3dp
dGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICBjYXNlIENIRUNLQk9YOgotICAgIGNh
c2UgQ09MT1I6Ci0gICAgY2FzZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6Ci0gICAgY2FzZSBE
QVRFVElNRUxPQ0FMOgotICAgIGNhc2UgRU1BSUw6Ci0gICAgY2FzZSBGSUxFOgotICAgIGNhc2Ug
SVNJTkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNhc2UgUEFT
U1dPUkQ6Ci0gICAgY2FzZSBSQURJTzoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgU0VBUkNI
OgotICAgIGNhc2UgVEVMRVBIT05FOgotICAgIGNhc2UgVEVYVDoKLSAgICBjYXNlIFRJTUU6Ci0g
ICAgY2FzZSBVUkw6Ci0gICAgY2FzZSBXRUVLOgotICAgICAgICByZXR1cm4gSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6cmVjYWxjV2lsbFZhbGlkYXRlKCk7Ci0gICAgY2FzZSBCVVRU
T046Ci0gICAgY2FzZSBISURERU46Ci0gICAgY2FzZSBJTUFHRToKLSAgICBjYXNlIFJFU0VUOgot
ICAgIGNhc2UgU1VCTUlUOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPnN1cHBvcnRzVmFsaWRhdGlvbigpICYmIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGU6OnJlY2FsY1dpbGxWYWxpZGF0ZSgpOwogfQogCiAjaWYgRU5BQkxFKERBVEFMSVNUKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTRlMDM0MDZkNjBiNTFhOWFmYTUwNzJhZjUxOWE3ZWFi
N2Q3MTBkNy4uZTU4NGE3OGRmMzc4YzY2NzZlZjNkOTMwY2RjMjdjN2VlN2NiOWJiOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEhUTUxJbnB1dEVs
ZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIApAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhdXRv
Q29tcGxldGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAgYm9vbCB0
eXBlTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCB0eXBlTWlzbWF0Y2go
KSBjb25zdDsKICAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3Ry
aW5nIHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCiAgICAgYm9vbCB2YWx1ZU1pc3Npbmco
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3Ry
aW5nJikgY29uc3Q7CkBAIC0xOTUsNiArMTk2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdh
cElucHV0Rm9ybWF0KFN0cmluZyYgbWFzayk7CiAjZW5kaWYKIAorICAgIGlubGluZSBDaGVja2Vk
UmFkaW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50ID0gZm9ybSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZvcm1FbGVtZW50LT5jaGVja2VkUmFkaW9CdXR0b25zKCk7CisgICAgICAgIHJldHVy
biBkb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgSFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBI
VE1MRm9ybUVsZW1lbnQqID0gMCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IaWRkZW5J
bnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKaW5kZXggZDk3
ZmUzYThjMWI3ZDFiOGY0Mzk4Y2U0YWNiOTExNmE0Zjg1M2I2Mi4uNzY3NDJhZTMzODBjNWVjODBi
NTZiYjc3OWFkNjhhYmYxMDY5OTk0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hpZGRlbklu
cHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKQEAgLTQ0
LDQgKzQ0LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIaWRkZW5JbnB1dFR5cGU6OmZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IHsKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmhpZGRlbigpOwog
fQogCitib29sIEhpZGRlbklucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9IaWRkZW5J
bnB1dFR5cGUuaAppbmRleCA1NjRmOTllNWEyZGU4Y2EzMDZjNmFhNjVjYWMwMjc4OTA0YjQ0MWE3
Li5jYzQ5Zjk4ZGE3YmNiYzVjZGQ5MDk0NDA5MWM0MTE5OTczM2ExZGQ1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0hpZGRlbklu
cHV0VHlwZS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSGlkZGVu
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQp
IHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCA3OGIz
OTgxYWNjM2YwNDc5ZThmNTAzZGJhMjgwMDI5YjU2NmE1NmFhLi42MDRiMDUyZDg2MDJmYjJiMThi
ODE0NzRkNjVkMzQ1YzllZmI4MmQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKQEAgLTQ1LDQg
KzQ1LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJbWFnZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmltYWdlKCk7CiB9CiAKK2Jv
b2wgSW1hZ2VJbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5o
CmluZGV4IDAwYWM3N2I3NWM0YmM0Y2QxODUyYzg3YmNlYTczNjc3ZTdhZWM0ZGEuLmJlMzA4YjMw
NjgzYTdjODY2ZTMwMWRhODY4OThkZTg5NTgxZmVkMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9JbWFnZUlucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCkBA
IC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1hZ2VJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMDYxOWExNTRmMDk4Yjk3ODA0MTdkODI1Y2M5
YzNkOTU3ZTg5YzM0ZS4uMzJjNjk2NmY0MmYxMjZmMDA3NzBkZTI3MDNlYjU1ZGNlMWVkYmYxNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5jcHAKQEAgLTE0Miw2ICsxNDIsMzIgQEAgdm9pZCBJbnB1dFR5cGU6OnNldFZh
bHVlQXNOdW1iZXIoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwogfQogCitib29sIElucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnB1dFR5cGU6OnR5cGVN
aXNtYXRjaEZvckNhbmRpZGF0ZShjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvckN1cnJlbnRWYWx1ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElucHV0VHlwZTo6c3VwcG9y
dHNSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgLy8gQWxtb3N0IGFsbCB2YWxpZGF0YWJsZSB0eXBl
cyBzdXBwb3J0IEByZXF1aXJlZC4KKyAgICByZXR1cm4gc3VwcG9ydHNWYWxpZGF0aW9uKCk7Cit9
CisKK2Jvb2wgSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpwYXR0ZXJuTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJikgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXgg
NDliMmFkMGYwYWVhYmVkMWEzN2E2ODZiMzlmNDEyM2VmZTM4ODM5Yy4uOTcwZTk1MTQ3NjIwNDg5
MjVjY2FjMTllZDg3NDNhYWI4M2VjYmI5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtNTcsNiArNTcsMTEgQEAg
cHVibGljOgogCiAgICAgLy8gVmFsaWRhdGlvbi1yZWxhdGVkIGZ1bmN0aW9ucwogCisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0
eXBlTWlzbWF0Y2hGb3JDYW5kaWRhdGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHR5cGVNaXNtYXRjaEZvckN1cnJlbnRWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlz
c2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21h
dGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxv
dyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdyhj
b25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Jc0luZGV4SW5w
dXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9Jc0luZGV4SW5wdXRUeXBlLmNwcAppbmRleCA4MGUw
NjE3NDliYThmODJhNTIwZWFkYzg2MDllM2ZiYzBkOWU5MGZkLi5jM2NmZjQxZWY1OTY5NmVjMmNl
ZmYxNmFjMTg2ZWRkNWNkZmNhMDYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSXNJbmRleElu
cHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0lzSW5kZXhJbnB1dFR5cGUuY3BwCkBAIC00
NSw0ICs0NSw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSXNJbmRleElucHV0VHlwZTo6Zm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlBdG9tOwogfQogCitib29sIElzSW5k
ZXhJbnB1dFR5cGU6OnN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0lzSW5kZXhJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9Jc0luZGV4SW5wdXRUeXBlLmgKaW5k
ZXggOTNhMWMwODQwZWM4MTUzMjkxNWY5M2MwNmJkZmY2NGNlYjlmNzUwNy4uMmQ0ZTE5Mzc2ZjI3
MjVkMWEwZmM0NjQ5YjYzZWIzYjU4M2U1OGMxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lz
SW5kZXhJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvSXNJbmRleElucHV0VHlwZS5oCkBA
IC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSXNJbmRleElucHV0VHlwZShI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IFRleHRGaWVsZElucHV0VHlwZShlbGVtZW50KSB7
IH07CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3Q7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5w
dXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDRiZWRh
NWEwNjJjN2E5MWEzYjM2MDg5ZjI1Yjg4MWVlODQ5OWYwN2YuLmMwZjlmMDE5MmU4NTQyZGYyZjU4
ZWNhMTE2ZGYzZmQ4YzJlZGRjYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC03Miw2
ICs3MiwxNyBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUg
bmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdAogICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUo
c2VyaWFsaXplKG5ld1ZhbHVlKSk7CiB9CiAKK2Jvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBlTWlz
bWF0Y2hGb3JDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHZhbHVlLCAwKTsKK30KKworYm9vbCBOdW1i
ZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvckN1cnJlbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+dmFsdWUoKSwgMCkp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnJhbmdlVW5k
ZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgZG91YmxlIG5h
biA9IG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5oCmluZGV4IDQ5ZTVlN2MzZjk1NDUyODFhNTYwZDY5MTE4ZTA5YWRjNTNkYTE1MzYuLjBmODdk
NWViZDM4YzY0NWFlNWExMmIxOGYwMTNiNGY4ZjAzYWMwMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVB
c051bWJlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzTnVtYmVyKGRvdWJs
ZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hG
b3JDYW5kaWRhdGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHR5cGVN
aXNtYXRjaEZvckN1cnJlbnRWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByYW5nZVVu
ZGVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVy
Zmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwIGIvV2Vi
Q29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAppbmRleCBhMWM4ZDA0NTcxZTliMmMxMDE2ZDZi
NTZkM2VkZjMxZjJlZThlZDVlLi41ZGY0YmJjNDRhMDQwNTIyYmM0NDkzN2RmNmUwMDZlNGU0NjQy
Yzg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJSYWRpb0lucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ1LDQgKzQ2LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSYWRpb0lu
cHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICByZXR1cm4gSW5wdXRUeXBlTmFt
ZXM6OnJhZGlvKCk7CiB9CiAKK2Jvb2wgUmFkaW9JbnB1dFR5cGU6OnZhbHVlTWlzc2luZyhjb25z
dCBTdHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiAhZWxlbWVudCgpLT5jaGVja2VkUmFkaW9C
dXR0b25zKCkuY2hlY2tlZEJ1dHRvbkZvckdyb3VwKGVsZW1lbnQoKS0+bmFtZSgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1JhZGlvSW5w
dXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaAppbmRleCAxODBjNmRkMDNh
ZTA4OTMyOWVlY2YxOTVhZTI2NWMxOTUyNzU0MDU1Li4yZmYyYzQxMzFhY2I3NmVjYzg0MDY4N2Ez
MDQ0MDYwNDk4NTEyYmRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUu
aAorKysgYi9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaApAQCAtNDIsNiArNDIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFJhZGlvSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVN
aXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUv
aHRtbC9SZXNldElucHV0VHlwZS5jcHAKaW5kZXggOGIxOGE4ZDA5ZTc1NDIyZDkyZjNmMTE4MWI0
MzU1NmU5OWRhNTlkMS4uMWRiNzU5MjU0YjE2M2NhZGVhYmRlMDJjYjZkYjBiZDdkZTJkZDQ4OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwCkBAIC00NSw0ICs0NSw5IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgUmVzZXRJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJu
IElucHV0VHlwZU5hbWVzOjpyZXNldCgpOwogfQogCitib29sIFJlc2V0SW5wdXRUeXBlOjpzdXBw
b3J0c1ZhbGlkYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBl
LmggYi9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaAppbmRleCBlMGQ4OTk3MTZkNzdjYzE1
YWFmNmM3NWMwYjlmZmJkNzM3YTZmMjhiLi4zZjg4M2EzMzk5MmY2Nzg4NGY3YmM0YzY2MWFmZGNh
YWU0NDA0MTE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaAorKysg
Yi9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFJlc2V0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
IDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxp
ZGF0aW9uKCkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJ
bnB1dFR5cGUuY3BwCmluZGV4IGRkMTNlNmJmYmI1NDA5YmMwNDJlNWFmYTgxMzY5MzMzYjc4MmUw
YWMuLjY1OTM0ZjkzZjU0YjM2ZTdmNjM1NjhmMTdjZjI0ZWFkZWMzZmRjYTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdWJt
aXRJbnB1dFR5cGUuY3BwCkBAIC00NSw0ICs0NSw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU3Vi
bWl0SW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVybiBJbnB1dFR5
cGVOYW1lczo6c3VibWl0KCk7CiB9CiAKK2Jvb2wgU3VibWl0SW5wdXRUeXBlOjpzdXBwb3J0c1Zh
bGlkYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5oIGIv
V2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5oCmluZGV4IDdlYTQ0OGUxNDRmNTI5NzljZGU2
NTBkOGNhMDc0ODZlNWUzOGZlMDUuLjgzZmE1ZTU1YjdiYzAxYjFiMjRiZGU5YjEzOWU4NTBjYTE2
NTRlNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuaAorKysgYi9X
ZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTdWJtaXRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkg
OiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ZhbGlk
YXRpb24oKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggZTY4MWI0MGNlZWUzMWQxMjMwYzc3N2ZmZDVlMzNhNWRk
MzlhOGFlYi4uODIzODJlZmI1MzlkMzc5NzNjZjI3NGQzNTJhOTY5MDA3MTYzNTA0YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJUZXh0RmllbGRJbnB1dFR5cGUuaCIKIAorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjppc1RleHRGaWVsZCgpIGNvbnN0CkBAIC0zOCw0ICs0MCw5IEBAIGJvb2wg
VGV4dEZpZWxkSW5wdXRUeXBlOjppc1RleHRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNFbXB0eSgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggZmIzM2Ew
MTJlYzUzOWYxMGI5ZmY1NTg5ODAzZWM1YmFjMTU3MGIyNS4uOTEwOGM0MjFiNGFlZDFjOGFlMzVh
OWY4ODk2MWE2YWY4NGQzZWRlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNDEs
NiArNDEsNyBAQCBjbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsK
IHByb3RlY3RlZDoKICAgICBUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxl
bWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZp
ZWxkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcm
KSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAK
aW5kZXggMmFmZGNkZWEyYWE3MWZhMzc5NzJlMzlhNjE2NGRjYWVjOWM1NDA1MC4uNWU4M2U3ZDk5
OTRiNjllYzcwNzVjNGE3MWU2YjFhOTI2NzY1ZDg4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L1VSTElucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKQEAg
LTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVUkxJbnB1dFR5
cGUuaCIKIAorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDUsNCArNDcsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBVUkxJbnB1dFR5cGU6OmZvcm1Db250
cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp1cmwoKTsKIH0KIAor
Ym9vbCBVUkxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvckNhbmRpZGF0ZShjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAoreworICAgIHJldHVybiAhS1VSTChLVVJMKCksIHZhbHVlKS5pc1ZhbGlk
KCk7Cit9CisKK2Jvb2wgVVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3JDdXJyZW50VmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiB0eXBlTWlzbWF0Y2hGb3JDYW5kaWRhdGUoZWxlbWVudCgp
LT52YWx1ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL1VSTElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oCmlu
ZGV4IDg1ZDRmOWZkNTdlYjQ0ODdiZDk1YTc5ZDc5ODM2M2EzMmU2NTU2NmUuLjgyNjhmODRmMGI3
MWQxZWRhODg1Yjc0YjE0OGNhNmNjMGI5ZDllYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9V
UkxJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmgKQEAgLTQyLDYg
KzQyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVUkxJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIHR5cGVNaXNtYXRjaEZvckNhbmRpZGF0ZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yQ3VycmVudFZhbHVlKCkgY29uc3Q7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVmFs
aWRpdHlTdGF0ZS5jcHAgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKaW5kZXggZjE4
NDY5ZTA5MjJmOWVhZmZiYzg2MWJjYjYwMjVhMzQ5ODZlODRiYS4uNTdmYjQzODgzYjAzNjY1NjJh
ZDlmYjNiMzkxZTJjMzU5ZWFhZGZjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcApAQCAtODMsMTIg
KzgzLDcgQEAgYm9vbCBWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2goKSBjb25zdAogewogICAg
IGlmICghbV9jb250cm9sLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5w
dXRFbGVtZW50Kj4obV9jb250cm9sKTsKLSAgICBTdHJpbmcgdmFsdWUgPSBpbnB1dC0+dmFsdWUo
KTsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIGlucHV0LT50eXBlTWlzbWF0Y2godmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4obV9jb250cm9sKS0+dHlwZU1pc21hdGNoKCk7CiB9CiAKIGJv
b2wgVmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>