<?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>190303</bug_id>
          
          <creation_ts>2018-10-04 22:52:46 -0700</creation_ts>
          <short_desc>Properly determine if css custom property values are computationally independent</short_desc>
          <delta_ts>2018-10-06 06:58:30 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>189692</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1466619</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-04 22:52:46 -0700</bug_when>
    <thetext>Currently, in order to avoid computationally dependent initial values, a simple substring check is used. This should be replaced with something that can actually parse the value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466625</commentid>
    <comment_count>1</comment_count>
      <attachid>351657</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-04 23:12:11 -0700</bug_when>
    <thetext>Created attachment 351657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466626</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-04 23:13:33 -0700</bug_when>
    <thetext>I moved the serialization code because this change uncovered a bug in the way I was parsing initial values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466650</commentid>
    <comment_count>3</comment_count>
      <attachid>351657</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-05 03:12:05 -0700</bug_when>
    <thetext>Comment on attachment 351657
Patch

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

Looks generally fine, but one more round would be good.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:282
&gt; +    void getDirectComputationalDependencies(HashSet&lt;CSSPropertyID&gt;&amp; values) const final
&gt; +    {
&gt; +        auto dependencies = m_value-&gt;getDirectComputationalDependencies();
&gt; +        values.add(dependencies.begin(), dependencies.end());
&gt; +    }
&gt; +
&gt; +    void getDirectRootComputationalDependencies(HashSet&lt;CSSPropertyID&gt;&amp; values) const final
&gt; +    {
&gt; +        auto dependencies = m_value-&gt;getDirectRootComputationalDependencies();
&gt; +        values.add(dependencies.begin(), dependencies.end());
&gt; +    }

Maybe all versions of these functions should take the HashSet as an argument?  It would avoid moving values from one hash to another.

&gt; Source/WebCore/css/CSSCalculationValue.h:73
&gt; +    virtual void getDirectComputationalDependencies(HashSet&lt;CSSPropertyID&gt;&amp;) const = 0;
&gt; +    virtual void getDirectRootComputationalDependencies(HashSet&lt;CSSPropertyID&gt;&amp;) const = 0;

collect* instead of get* would be better names for these.

&gt; Source/WebCore/css/CSSCalculationValue.h:108
&gt; +    HashSet&lt;CSSPropertyID&gt; getDirectComputationalDependencies() const;
&gt; +    HashSet&lt;CSSPropertyID&gt; getDirectRootComputationalDependencies() const;

Here too. It signals they are not cheap accessors.

&gt; Source/WebCore/css/CSSCustomPropertyValue.cpp:51
&gt; +Vector&lt;CSSParserToken&gt;&amp; CSSCustomPropertyValue::tokens(const CSSRegisteredCustomPropertySet&amp; registeredProperties, const RenderStyle&amp; style) const
&gt; +{
&gt; +    m_tokensReturnValue.clear();

It appears m_tokensReturnValue is only needed so you can return a reference? It is not clear to me how that is better than just returning the vector as a value and it is certainly more bug prone. Move semantics should keep it cheap. An alternative is the pass the vector in as a reference parameter (and call this something like collectTokens).

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1231
&gt; +        return HashSet&lt;CSSPropertyID&gt;({CSSPropertyFontSize});

I think you can just say

return { CSSPropertyFontSize };

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1235
&gt; +    return HashSet&lt;CSSPropertyID&gt;();

return { };

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1246
&gt; +    return HashSet&lt;CSSPropertyID&gt;();

return { };

&gt; Source/WebCore/css/CSSValue.cpp:124
&gt; +    return HashSet&lt;CSSPropertyID&gt;();

return { };

&gt; Source/WebCore/css/CSSValue.cpp:131
&gt; +    return HashSet&lt;CSSPropertyID&gt;();

return { };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466723</commentid>
    <comment_count>4</comment_count>
      <attachid>351682</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-05 11:13:38 -0700</bug_when>
    <thetext>Created attachment 351682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466855</commentid>
    <comment_count>5</comment_count>
      <attachid>351682</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-06 06:57:23 -0700</bug_when>
    <thetext>Comment on attachment 351682
Patch

Clearing flags on attachment: 351682

Committed r236895: &lt;https://trac.webkit.org/changeset/236895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466856</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-06 06:57:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466857</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-06 06:58:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/45067859&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351657</attachid>
            <date>2018-10-04 23:12:11 -0700</date>
            <delta_ts>2018-10-05 11:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190303-20181004231209.patch</filename>
            <type>text/plain</type>
            <size>25873</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJjNzhkZGU0M2ZjOWY2
NGNjMzJjNmJiZGVkYjEyOWVlNTI1NGMyNi4uMTk4NGU4Mjk0YmVmY2Q4YTU4YTMxOGMyNGU5ZjA3
OWEyYzY1ZmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTEwLTA0ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wZXJs
eSBkZXRlcm1pbmUgaWYgY3NzIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgYXJlIGNvbXB1dGF0aW9u
YWxseSBpbmRlcGVuZGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgbWV0aG9kIHRv
IGRldGVybWluZSBpZiBhIHZhbHVlIGlzIGNvbXB1dGF0aW9uYWxseQorICAgICAgICBkZXBlbmRl
bnQuIFVzZSB0aGlzIG1ldGhvZCBpbiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSB0byByZXBsYWNlIGV4
aXN0aW5nIHN1YnN0cmluZyBjaGVja3MuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgbmVlZGVk
IGJlY2F1c2UgdGhlIGV4aXN0aW5nIHRlc3RzIGNvdmVyIHRoaXMgYmVoYXZpb3VyLgorCisgICAg
ICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0
ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6OmdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBl
bmRlbmNpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjpnZXREaXJl
Y3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgICogY3NzL0NT
U0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RGlyZWN0
Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6Z2V0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgY29u
c3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAqIGNzcy9D
U1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Z2V0RGlyZWN0Q29tcHV0
YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6
Z2V0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgY29uc3QpOgorICAgICAgICAq
IGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UgY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OnJlZ2lzdGVyUHJv
cGVydHkpOgorCiAyMDE4LTEwLTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIE11dGF0aW9uUmVjb3JkIGRvZXNuJ3Qga2VlcCBKUyB3cmFwcGVycyBvZiB0YXJn
ZXQsIGFkZGVkTm9kZXMsIGFuZCByZW1vdmVkTm9kZXMgYWxpdmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA4MTVjNDkyZmJkMzFkMjBmZDBjMWQ4NjQ5
N2UwOWNlMTQ1YTY4Nzk0Li40NjI0MzIzMmZlMDQ2MGEwZDBkYTIzMjhmMzY4NTVlYzk2NDlmYmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yNjks
NiArMjY5LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIHZv
aWQgZ2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5
SUQ+JiB2YWx1ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBhdXRvIGRlcGVuZGVuY2ll
cyA9IG1fdmFsdWUtPmdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoKTsKKyAgICAg
ICAgdmFsdWVzLmFkZChkZXBlbmRlbmNpZXMuYmVnaW4oKSwgZGVwZW5kZW5jaWVzLmVuZCgpKTsK
KyAgICB9CisKKyAgICB2b2lkIGdldERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVz
KEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIHZhbHVlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIGF1dG8gZGVwZW5kZW5jaWVzID0gbV92YWx1ZS0+Z2V0RGlyZWN0Um9vdENvbXB1dGF0aW9u
YWxEZXBlbmRlbmNpZXMoKTsKKyAgICAgICAgdmFsdWVzLmFkZChkZXBlbmRlbmNpZXMuYmVnaW4o
KSwgZGVwZW5kZW5jaWVzLmVuZCgpKTsKKyAgICB9CisKICAgICBib29sIGVxdWFscyhjb25zdCBD
U1NDYWxjRXhwcmVzc2lvbk5vZGUmIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAg
aWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCkBAIC01MzIsNiArNTQ0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShkb3VibGVWYWx1ZXMpOwogICAgIH0KIAorICAgIHZv
aWQgZ2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5
SUQ+JiB2YWx1ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIGNoaWxk
IDogbV9jaGlsZHJlbikKKyAgICAgICAgICAgIGNoaWxkLT5nZXREaXJlY3RDb21wdXRhdGlvbmFs
RGVwZW5kZW5jaWVzKHZhbHVlcyk7CisgICAgfQorCisgICAgdm9pZCBnZXREaXJlY3RSb290Q29t
cHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiB2YWx1ZXMpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikK
KyAgICAgICAgICAgIGNoaWxkLT5nZXREaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2ll
cyh2YWx1ZXMpOworICAgIH0KKwogICAgIHN0YXRpYyBTdHJpbmcgYnVpbGRDc3NUZXh0KFZlY3Rv
cjxTdHJpbmc+IGNoaWxkRXhwcmVzc2lvbnMsIENhbGNPcGVyYXRvciBvcCkKICAgICB7CiAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmgKaW5kZXggOWYzZDcwOTAzMmExMzA0MjI0MGY2NWQxZGVmNzcxNWYwNmQ5ODNkZC4u
NTEzMGZlNDc2OTQ4ZGE2ZGM3MzdiY2E5MTM0YTc2ZGE4NjJmODJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgogI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjgsNiArNjksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgcHJp
bWl0aXZlVHlwZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXREaXJlY3RDb21w
dXRhdGlvbmFsRGVwZW5kZW5jaWVzKEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVz
KEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mKSBjb25zdCA9IDA7CisKICAgICBDYWxjdWxhdGlvbkNh
dGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYXRlZ29yeTsgfQogICAgIGJvb2wg
aXNJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pc0ludGVnZXI7IH0KIApAQCAtMTAwLDYgKzEw
NCw5IEBAIHB1YmxpYzoKICAgICBSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlQ2FsY3VsYXRp
b25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAgICAgdm9p
ZCBzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKFZhbHVlUmFuZ2UpOwogCisgICAgSGFzaFNldDxDU1NQ
cm9wZXJ0eUlEPiBnZXREaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKCkgY29uc3Q7Cisg
ICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBnZXREaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVu
ZGVuY2llcygpIGNvbnN0OworCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKICAg
ICBib29sIGVxdWFscyhjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25zdDsKIApAQCAtMTMwLDYgKzEz
NywyMCBAQCBpbmxpbmUgdm9pZCBDU1NDYWxjVmFsdWU6OnNldFBlcm1pdHRlZFZhbHVlUmFuZ2Uo
VmFsdWVSYW5nZSByYW5nZSkKICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA9IHJhbmdl
ICE9IFZhbHVlUmFuZ2VBbGw7CiB9CiAKK2lubGluZSBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IENT
U0NhbGNWYWx1ZTo6Z2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygpIGNvbnN0Cit7
CisgICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiB2YWx1ZXM7CisgICAgbV9leHByZXNzaW9uLT5n
ZXREaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKHZhbHVlcyk7CisgICAgcmV0dXJuIHZh
bHVlczsKK30KKworaW5saW5lIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gQ1NTQ2FsY1ZhbHVlOjpn
ZXREaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygpIGNvbnN0Cit7CisgICAgSGFz
aFNldDxDU1NQcm9wZXJ0eUlEPiB2YWx1ZXM7CisgICAgbV9leHByZXNzaW9uLT5nZXREaXJlY3RS
b290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyh2YWx1ZXMpOworICAgIHJldHVybiB2YWx1ZXM7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
U1NfVkFMVUUoQ1NTQ2FsY1ZhbHVlLCBpc0NhbGNWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDM1NTE3NjNkOTc4ZDIyYmQyMDk0
ZGQwZDE0MjVmMDY1YTM1ODRiM2IuLmUyNmE4NTQzZjU5YTM2N2E2MmNiZDhlYzg0ZjczZDNmMmFk
NTcyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5j
cHAKQEAgLTI1LDEwICsyNSw1NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1
c3RvbUNTU1RleHQoKSBjb25zdAoreworICAgIGlmICghbV9zZXJpYWxpemVkKSB7CisgICAgICAg
IG1fc2VyaWFsaXplZCA9IHRydWU7CisgICAgICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1ZSkg
Ly8gRklYTUU6IFVuaXQgc2hvdWxkIGJlIGJhc2VkIG9uIHN5bnRheC4KKyAgICAgICAgICAgIG1f
c3RyaW5nVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fcmVzb2x2ZWRUeXBlZFZh
bHVlLT52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOworICAg
ICAgICBlbHNlIGlmIChtX3ZhbHVlKQorICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IG1fdmFs
dWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsKKyAgICAgICAgZWxzZSBpZiAobV92YWx1ZUlk
ICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRWYWx1
ZU5hbWUobV92YWx1ZUlkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdHJpbmdWYWx1
ZSA9IGVtcHR5U3RyaW5nKCk7CisgICAgfQorICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOworfQor
CitWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMo
Y29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGll
cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAgIG1fdG9rZW5zUmV0dXJu
VmFsdWUuY2xlYXIoKTsKKworICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1ZSkgeworICAgICAg
ICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGNzc1RleHQoKSk7CisgICAgICAgIGF1dG8gdG9rZW5p
emVyUmFuZ2UgPSB0b2tlbml6ZXIudG9rZW5SYW5nZSgpOworICAgICAgICB3aGlsZSAoIXRva2Vu
aXplclJhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtX3Rva2Vuc1JldHVyblZhbHVlLmFwcGVu
ZCh0b2tlbml6ZXJSYW5nZS5jb25zdW1lKCkpOworCisgICAgICAgIHJldHVybiBtX3Rva2Vuc1Jl
dHVyblZhbHVlOworICAgIH0KKworICAgIGlmICghbV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIG1f
dG9rZW5zUmV0dXJuVmFsdWU7CisKKyAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcykgeworICAg
ICAgICBtX3Rva2Vuc1JldHVyblZhbHVlLmNsZWFyKCk7CisgICAgICAgIC8vIEZJWE1FOiBBdm9p
ZCBkb2luZyB0aGlzIHdvcmsgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IHJlc29sdmVkRGF0YSA9IG1fdmFsdWUtPnJlc29sdmVWYXJpYWJsZVJlZmVyZW5j
ZXMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKTsKKyAgICAgICAgaWYgKHJlc29sdmVkRGF0
YSkKKyAgICAgICAgICAgIG1fdG9rZW5zUmV0dXJuVmFsdWUuYXBwZW5kVmVjdG9yKHJlc29sdmVk
RGF0YS0+dG9rZW5zKCkpOworCisgICAgICAgIHJldHVybiBtX3Rva2Vuc1JldHVyblZhbHVlOwor
ICAgIH0KKworICAgIG1fdG9rZW5zUmV0dXJuVmFsdWUuYXBwZW5kVmVjdG9yKG1fdmFsdWUtPnRv
a2VucygpKTsKKyAgICByZXR1cm4gbV90b2tlbnNSZXR1cm5WYWx1ZTsKK30KKwogYm9vbCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVy
dGllcykgY29uc3QKIHsKICAgICBBU1NFUlQoY29udGFpbnNWYXJpYWJsZXMoKSk7CkBAIC01MSw0
ICs5OCwxMCBAQCB2b2lkIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbQogICAgICAgICByZXNvbHZlZFZhbHVl
cy5hcHBlbmQoQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG1fbmFtZSwgQ1NT
VmFsdWVJbnZhbGlkKSk7CiB9CiAKK3ZvaWQgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6c2V0UmVz
b2x2ZWRUeXBlZFZhbHVlKExlbmd0aCBsZW5ndGgpCit7CisgICAgQVNTRVJUKGxlbmd0aC5pc1Nw
ZWNpZmllZCgpKTsKKyAgICBtX3Jlc29sdmVkVHlwZWRWYWx1ZSA9IFdURk1vdmUobGVuZ3RoKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKaW5k
ZXggZjgzNjE4NGZmMDg2YmRlYTllMjIzMmRhZWY1NjI4NTFhNWMzNzE3YS4uYTNkZGE0ZjQ0M2Zh
NGNhZDVkN2ViMTMyOWM5NGZkOTgxMDFiYjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZS5oCkBAIC0zNCw2ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ1NTUGFyc2VyVG9rZW47CitjbGFzcyBSZW5kZXJTdHlsZTsKKwogY2xh
c3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRoVmFy
aWFibGVEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU1ZhcmlhYmxlRGF0YT4m
JiB2YWx1ZSkKQEAgLTU2LDM0ICs1OSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUob3RoZXIpKTsKICAgICB9CiAgICAgCi0g
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX3Nl
cmlhbGl6ZWQpIHsKLSAgICAgICAgICAgIG1fc2VyaWFsaXplZCA9IHRydWU7Ci0gICAgICAgICAg
ICBpZiAobV92YWx1ZSkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gbV92YWx1ZS0+
dG9rZW5SYW5nZSgpLnNlcmlhbGl6ZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAobV92YWx1ZUlk
ICE9IENTU1ZhbHVlSW52YWxpZCkKLSAgICAgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gZ2V0
VmFsdWVOYW1lKG1fdmFsdWVJZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bV9zdHJpbmdWYWx1ZSA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1fc3RyaW5nVmFsdWU7Ci0gICAgfQorICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7
CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KICAgICAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFtZSAmJiBtX3ZhbHVlID09
IG90aGVyLm1fdmFsdWUgJiYgbV92YWx1ZUlkID09IG90aGVyLm1fdmFsdWVJZDsgfQogCi0gICAg
Ym9vbCBjb250YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNWYXJpYWJs
ZXM7IH0KKyAgICBib29sIGNvbnRhaW5zVmFyaWFibGVzKCkgY29uc3QgeyBBU1NFUlQoIW1fY29u
dGFpbnNWYXJpYWJsZXMgfHwgIW1fcmVzb2x2ZWRUeXBlZFZhbHVlKTsgcmV0dXJuIG1fY29udGFp
bnNWYXJpYWJsZXM7IH0KICAgICBib29sIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0
aWVzKSBjb25zdDsKIAogICAgIHZvaWQgcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhjb25zdCBD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBWZWN0b3I8UmVmPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+PiYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICBDU1NWYWx1ZUlE
IHZhbHVlSUQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSWQ7IH0KICAgICBDU1NWYXJpYWJsZURh
dGEqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQorICAgIFZlY3RvcjxD
U1NQYXJzZXJUb2tlbj4mIHRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxMZW5ndGg+JiByZXNvbHZlZFR5cGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVk
VHlwZWRWYWx1ZTsgfQotICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlZFZhbHVlKExlbmd0aCBsZW5n
dGgpIHsgbV9yZXNvbHZlZFR5cGVkVmFsdWUgPSBXVEZNb3ZlKGxlbmd0aCk7IH0KKyAgICB2b2lk
IHNldFJlc29sdmVkVHlwZWRWYWx1ZShMZW5ndGgpOwogCiBwcml2YXRlOgogICAgIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNl
cmlhbGl6ZWRWYWx1ZSkKQEAgLTEzNCw2ICsxMjYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gRklY
TUU6IEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gZXhwcmVzcyBhbiBpbnZhbGlkIHN0YXRl
LCBzdWNoIGFzIGNvbnRhaW5zVmFyaWFibGVzKCkgJiYgcmVzb2x2ZWRUeXBlZFZhbHVlKCkuCiAg
ICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fcmVzb2x2ZWRUeXBlZFZhbHVlOworICAgIG11dGFi
bGUgVmVjdG9yPENTU1BhcnNlclRva2VuPiBtX3Rva2Vuc1JldHVyblZhbHVlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKaW5kZXggNTYwNDRiZWNlMGY3YTgzYzIzMjU2MjQ0MDA1ODRjNGJkMzE3NjUzMS4uOTQyMTAx
NDFhODg5OTMxNDg1Y2M4ZDRmNTg3OGZmZmQ4MmU2YmE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0xMjIwLDQgKzEyMjAsMzAgQEAgUmVmPERlcHJlY2F0
ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlRGVwcmVjYXRl
ZENTU09NUHJpbWkKICAgICByZXR1cm4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZSgqdGhpcywgc3R5bGVEZWNsYXJhdGlvbik7CiB9CiAKKy8vIGh0dHBzOi8vZHJhZnRzLmNz
cy1ob3VkaW5pLm9yZy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpLyNkZXBlbmRlbmN5LWN5Y2xl
cy12aWEtcmVsYXRpdmUtdW5pdHMKK0hhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoKSBjb25zdAoreworICAg
IHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgeworICAgIGNhc2UgQ1NTX0VNUzoKKyAgICBj
YXNlIENTU19RVUlSS1lfRU1TOgorICAgIGNhc2UgQ1NTX0VYUzoKKyAgICBjYXNlIENTU19DSFM6
CisgICAgICAgIHJldHVybiBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+KHtDU1NQcm9wZXJ0eUZvbnRT
aXplfSk7CisgICAgY2FzZSBDU1NfQ0FMQzoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuY2FsYy0+
Z2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygpOworICAgIH0KKyAgICByZXR1cm4g
SGFzaFNldDxDU1NQcm9wZXJ0eUlEPigpOworfQorCitIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IENT
U1ByaW1pdGl2ZVZhbHVlOjpnZXREaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ByaW1pdGl2ZVVuaXRUeXBlKSB7CisgICAgY2FzZSBD
U1NfUkVNUzoKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4oe0NTU1Byb3Bl
cnR5Rm9udFNpemV9KTsKKyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICByZXR1cm4gbV92YWx1
ZS5jYWxjLT5nZXREaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygpOworICAgIH0K
KyAgICByZXR1cm4gSGFzaFNldDxDU1NQcm9wZXJ0eUlEPigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGFlN2Jl
MmViMmI3NWRmNzgyMTRhZjVjNmFkNWY1MDI2ZTkxMDMxZGMuLjAwNTM4YjkyNDA2Y2UwOWQ4ZWJh
NzcyMzk2YTgyZDFlZDQzNjFkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oCkBAIC0yODgsNiArMjg4LDkgQEAgcHVibGljOgogCiAgICAgUmVmPERlcHJlY2F0ZWRDU1NP
TVByaW1pdGl2ZVZhbHVlPiBjcmVhdGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKENT
U1N0eWxlRGVjbGFyYXRpb24mKSBjb25zdDsKIAorICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4g
Z2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygpIGNvbnN0OworICAgIEhhc2hTZXQ8
Q1NTUHJvcGVydHlJRD4gZ2V0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ1NTVmFsdWVQb29sOwogICAgIGZy
aWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q1NTUHJpbWl0aXZlVmFsdWU+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5jcHAKaW5kZXggOTEyZThhZGZlMjU2Y2Y2MDhmMGExNDMxYzI3MTNkMjljZDM1YzIyOS4u
NWZiN2NmOThjZDQ1MGY2NjQ4MzU0MWNmZDA0ZDkwNGRiYzBkZTcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCkBAIC0xMTcsNiArMTE3LDIwIEBAIGJvb2wgQ1NTVmFsdWU6OnRyYXZlcnNlU3Vi
cmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IENTU1ZhbHVlOjpn
ZXREaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdGhpcykuZ2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygp
OworICAgIHJldHVybiBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+KCk7Cit9CisKK0hhc2hTZXQ8Q1NT
UHJvcGVydHlJRD4gQ1NTVmFsdWU6OmdldERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5j
aWVzKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdGhpcykuZ2V0RGlyZWN0
Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoKTsKKyAgICByZXR1cm4gSGFzaFNldDxDU1NQ
cm9wZXJ0eUlEPigpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBDaGlsZENsYXNzVHlwZT4KIGlubGlu
ZSBzdGF0aWMgYm9vbCBjb21wYXJlQ1NTVmFsdWVzKGNvbnN0IENTU1ZhbHVlJiBmaXJzdCwgY29u
c3QgQ1NTVmFsdWUmIHNlY29uZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggNWQzODZhZmRm
YjI5NzNmNjk2MDI3MWNmMzY3OTEyYTFlMzc3NDNlNC4uYzc2ZjYzYmI2OTMyMWI5MWM2NWU2MTdm
MDNiMTU5N2MyZDUwODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTIwLDYgKzIwLDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVk
ZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC0xMjIsNiArMTIzLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdHJhdmVy
c2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNv
dXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKKyAgICAvLyBXaGF0IHByb3BlcnRpZXMgZG9lcyB0
aGlzIHZhbHVlIHJlbHkgb24gKGVnLCBmb250LXNpemUgZm9yIGVtIHVuaXRzKQorICAgIEhhc2hT
ZXQ8Q1NTUHJvcGVydHlJRD4gZ2V0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygpIGNv
bnN0OworICAgIC8vIFdoYXQgcHJvcGVydGllcyBpbiB0aGUgcm9vdCBlbGVtZW50IGRvZXMgdGhp
cyB2YWx1ZSByZWx5IG9uIChlZy4gZm9udC1zaXplIGZvciByZW0gdW5pdHMpCisgICAgSGFzaFNl
dDxDU1NQcm9wZXJ0eUlEPiBnZXREaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcygp
IGNvbnN0OworCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBlcXVh
bHMob3RoZXIpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJs
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKaW5kZXgg
ZWEwMzM2MmVmYmUzZjMyMmUwOTRjYzYxMzE5MjJiNTg4ZmQ2NGRhOC4uOTg5OTM1MzE3NTljOGM5
M2Y3NzU3ZTMxOTg5YjFkNjA5ODEyMGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhcmlhYmxlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCi0jaW5jbHVkZSAiQ1NT
VG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CkBAIC04MSw3
ICs4MCw2IEBAIHZvaWQgQ1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNv
bnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogQ1NTVmFyaWFibGVEYXRhOjpDU1NWYXJp
YWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGJvb2wgbmVlZHNWYXJp
YWJsZVJlc29sdXRpb24pCiAgICAgOiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uKG5lZWRzVmFy
aWFibGVSZXNvbHV0aW9uKQogewotICAgIEFTU0VSVCghcmFuZ2UuYXRFbmQoKSk7CiAgICAgY29u
c3VtZUFuZFVwZGF0ZVRva2VucyhyYW5nZSk7CiB9CiAKQEAgLTE0NiwxMiArMTQ0LDcgQEAgYm9v
bCBDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHkKICAgICAKICAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdl
dEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSk7CiAgICAgaWYgKHByb3BlcnR5ICYmIHByb3Bl
cnR5LT5yZXNvbHZlZFR5cGVkVmFsdWUoKSkgewotICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IG5vdCBoYXZlIHRvIHNlcmlhbGl6ZSBhIHZhbHVlIHRoYXQgd2FzIGFscmVhZHkgcmVzb2x2ZWQu
Ci0gICAgICAgIGF1dG8gdGV4dFZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZSgqcHJvcGVydHktPnJlc29sdmVkVHlwZWRWYWx1ZSgpLCBzdHlsZSktPmNzc1RleHQo
KTsKLSAgICAgICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcih0ZXh0VmFsdWUpOwotICAgICAgICBh
dXRvIHRva2VuaXplclJhbmdlID0gdG9rZW5pemVyLnRva2VuUmFuZ2UoKTsKLSAgICAgICAgd2hp
bGUgKCF0b2tlbml6ZXJSYW5nZS5hdEVuZCgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0
b2tlbml6ZXJSYW5nZS5jb25zdW1lKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHBy
b3BlcnR5LT50b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMTYzLDE1ICsxNTYsNyBAQCBib29sIENTU1ZhcmlhYmxl
RGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eQogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKHJlZ2lz
dGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzdWx0LCBzdHlsZSk7CiAgICAgfQogICAgIEFTU0VS
VChwcm9wZXJ0eSk7Ci0gICAgCi0gICAgaWYgKHByb3BlcnR5LT5jb250YWluc1ZhcmlhYmxlcygp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBdm9pZCBkb2luZyB0aGlzIHdvcmsgbW9yZSB0aGFuIG9u
Y2UuCi0gICAgICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IHJlc29sdmVkRGF0YSA9IHByb3Bl
cnR5LT52YWx1ZSgpLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVyZWRQcm9wZXJ0
aWVzLCBzdHlsZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRhKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHJlc29sdmVkRGF0YS0+dG9r
ZW5zKCkpOwotICAgIH0gZWxzZQotICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5
LT52YWx1ZSgpLT50b2tlbnMoKSk7CisgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcihwcm9wZXJ0eS0+
dG9rZW5zKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSkpOwogICAgIAogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3Vz
dG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9t
UHJvcGVydHkuY3BwCmluZGV4IGE1NGVlNjg1YWNhMTNhOTQ5N2ZkOWYwYzI1MjY0YzMwMmE1MWVi
OGQuLjI2YzRiZWMyNWI3MGI1NWEyYTI4NDI2ZTQyMTFlMTlhY2U1MjNlNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgi
CiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oIgog
I2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgpA
QCAtMzksMjkgKzQwLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0eShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKLSAgICBhdXRvIGluaXRpYWxWYWx1ZUxvd2VyID0gZGVzY3JpcHRvci5pbml0aWFs
VmFsdWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICBmb3IgKGF1dG8mIHN1YnN0cmlu
ZyA6IHsgImVtIiwgImV4IiwgImxoIiwgImNhcCIsICJjaCIsICJpYyIsICJ2YXIiLCAiZW52IiB9
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYmUgYWJsZSB0byBjaGVjayB0aGUgZGVw
ZW5kZW5jaWVzIG9mIHRoZSBwYXJzZWQgdmFsdWUKLSAgICAgICAgLy8gUmlnaHQgbm93LCB3ZSBj
YW4ndCBiZWNhdXNlIHZhbHVlcyB0aGF0IGZhaWwgdG8gcGFyc2UgaGVyZSB3aWxsIGNyYXNoCi0g
ICAgICAgIGlmIChpbml0aWFsVmFsdWVMb3dlci5jb250YWlucyhzdWJzdHJpbmcpKQotICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwg
dmFsdWUgbXVzdCBiZSBjb21wdXRhdGlvbmFsbHkgaW5kZXBlbmRlbnQuIiB9OwotICAgIH0KLQot
ICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwogICAg
IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFsVmFsdWU7Ci0gICAgaWYgKCF0
b2tlbml6ZXIudG9rZW5SYW5nZSgpLmF0RW5kKCkpIHsKLSAgICAgICAgaW5pdGlhbFZhbHVlID0g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0YShkZXNjcmlwdG9y
Lm5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuaXplci50b2tlblJhbmdlKCksIGZh
bHNlKSk7Ci0gICAgICAgIGlmIChpbml0aWFsVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlcygp
KQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVu
IGluaXRpYWwgdmFsdWUgbXVzdCBub3QgY29udGFpbiB2YXJpYWJsZSByZWZlcmVuY2VzLiIgfTsK
LQorICAgIGlmICghZGVzY3JpcHRvci5pbml0aWFsVmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IGluaXRpYWxWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhWYXJpYWJs
ZURhdGEoZGVzY3JpcHRvci5uYW1lLCBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShDU1NQYXJzZXJU
b2tlblJhbmdlKFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4oKSksIGZhbHNlKSk7CiAgICAgICAgIENT
U1BhcnNlciBwYXJzZXIoZG9jdW1lbnQpOwotICAgICAgICBSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgU3R5bGVSZXNvbHZlciBzdHlsZVJl
c29sdmVyKGRvY3VtZW50KTsKIAotICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IHBhcnNlci5w
YXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUN1c3RvbSwgKmluaXRp
YWxWYWx1ZSwgZG9jdW1lbnQuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksIHJl
bmRlclN0eWxlKTsKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBwYXJzZXIucGFyc2VTaW5n
bGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwgZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwogICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbCB8fCAhcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4iIH07
CiAKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwtPmdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBl
bmRlbmNpZXMoKS5pc0VtcHR5KCkgfHwgIXByaW1pdGl2ZVZhbC0+Z2V0RGlyZWN0Um9vdENvbXB1
dGF0aW9uYWxEZXBlbmRlbmNpZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJlIGNv
bXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4iIH07CisKICAgICAgICAgaW5pdGlhbFZhbHVlLT5z
ZXRSZXNvbHZlZFR5cGVkVmFsdWUoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3Ro
KHN0eWxlUmVzb2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IDg0MDIxNzgwMzA5MzRlZTE1NjA1NDExNzhlZGJlZDNmNDFlNGQx
ZWUuLjNlYmUxZTcwYjEwYjg3OGEzNTY2MTg5Y2M0MDM2YWFiNmRjYjY1NWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTEwLTA0ICBKdXN0aW4g
TWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wZXJseSBk
ZXRlcm1pbmUgaWYgY3NzIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgYXJlIGNvbXB1dGF0aW9uYWxs
eSBpbmRlcGVuZGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwMzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkv
cmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3Rl
cmVkLXByb3BlcnR5LWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxOC0xMC0wNCAgWVVI
QU4gV1UgIDx5dWhhbl93dUBhcHBsZS5jb20+CiAKICAgICAgICAgcnVudGltZSBmbGFnIGFuZCBJ
REwgZm9yIE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0
ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFw
aS9yZWdpc3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggMWU3
MjhmZGUyNjIxOTU1ZDIxN2IzMDUyNDc0YmM3M2E2MjhmNmJiNS4uZTllMmZlNzM4YWIzYTJkYmRh
ZmQ5MTBiNjQ2NjFkMmFkZDgzZTAzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdp
c3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS9yZWdpc3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQKQEAg
LTEyLDcgKzEyLDcgQEAgRkFJTCBzeW50YXg6Jzx0aW1lPiB8IDxyZXNvbHV0aW9uPiB8IDx0cmFu
c2Zvcm0tbGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRpYWwKIEZBSUwgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUg
ZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonKicsIGlu
aXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIFRoZSBnaXZl
biBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJ
TCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2
YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVu
IHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3Blbmlu
ZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBt
dXN0IGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4KK0ZBSUwgc3ludGF4OicqJywgaW5p
dGlhbFZhbHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxp
ZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5
bnRheC4KIEZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCBUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBB
U1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMCcgaXMgdmFsaWQgCiBQQVNTIHN5
bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwcHggLyo6KSovJyBpcyB2YWxpZCAKQEAg
LTM3LDEyICszNywxMiBAQCBGQUlMIHN5bnRheDonPHRpbWU+JywgaW5pdGlhbFZhbHVlOidjYWxj
KDJzIC0gOW1zKScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdgogRkFJTCBzeW50YXg6Jzxy
ZXNvbHV0aW9uPicsIGluaXRpYWxWYWx1ZTonMTBkcGknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0
aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50
YXg6JzxyZXNvbHV0aW9uPicsIGluaXRpYWxWYWx1ZTonM2RQcFgnIGlzIHZhbGlkIFRoZSBnaXZl
biBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJ
TCBzeW50YXg6JzxyZXNvbHV0aW9uPicsIGluaXRpYWxWYWx1ZTonLTUuM2RwY20nIGlzIHZhbGlk
IFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3lu
dGF4LgotRkFJTCBzeW50YXg6Jzx0cmFuc2Zvcm0tZnVuY3Rpb24+JywgaW5pdGlhbFZhbHVlOid0
cmFuc2xhdGVYKDJweCknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIG11c3QgYmUg
Y29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50LgorRkFJTCBzeW50YXg6Jzx0cmFuc2Zvcm0tZnVu
Y3Rpb24+JywgaW5pdGlhbFZhbHVlOid0cmFuc2xhdGVYKDJweCknIGlzIHZhbGlkIFRoZSBnaXZl
biBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJ
TCBzeW50YXg6Jzx0cmFuc2Zvcm0tZnVuY3Rpb24+fDxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTon
NScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRo
ZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonPHRyYW5zZm9ybS1mdW5jdGlvbj58PGludGVn
ZXI+JywgaW5pdGlhbFZhbHVlOidzY2FsZSgyKScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwg
dmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDon
PHRyYW5zZm9ybS1mdW5jdGlvbj4rJywgaW5pdGlhbFZhbHVlOid0cmFuc2xhdGVYKDJweCkgcm90
YXRlKDQyZGVnKScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgbXVzdCBiZSBjb21w
dXRhdGlvbmFsbHkgaW5kZXBlbmRlbnQuCitGQUlMIHN5bnRheDonPHRyYW5zZm9ybS1mdW5jdGlv
bj4rJywgaW5pdGlhbFZhbHVlOid0cmFuc2xhdGVYKDJweCkgcm90YXRlKDQyZGVnKScgaXMgdmFs
aWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBz
eW50YXguCiBGQUlMIHN5bnRheDonPHRyYW5zZm9ybS1saXN0PicsIGluaXRpYWxWYWx1ZTonc2Nh
bGUoMiknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6Jzx0cmFuc2Zvcm0tbGlzdD4nLCBpbml0
aWFsVmFsdWU6J3RyYW5zbGF0ZVgoMnB4KSByb3RhdGUoMjBkZWcpJyBpcyB2YWxpZCBUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4KK0ZB
SUwgc3ludGF4Oic8dHJhbnNmb3JtLWxpc3Q+JywgaW5pdGlhbFZhbHVlOid0cmFuc2xhdGVYKDJw
eCkgcm90YXRlKDIwZGVnKScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBu
b3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonPGNvbG9yPicsIGlu
aXRpYWxWYWx1ZToncmdiKDEyLCAzNCwgNTYpJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2
YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8
Y29sb3I+JywgaW5pdGlhbFZhbHVlOidsaWdodGdvbGRlbnJvZHllbGxvdycgaXMgdmFsaWQgVGhl
IGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXgu
CiBGQUlMIHN5bnRheDonPGltYWdlPicsIGluaXRpYWxWYWx1ZTondXJsKGEpJyBpcyB2YWxpZCBU
aGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRh
eC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jb21w
dXRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVy
dHktY29tcHV0YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGI3NGExOGU4OTQ2ZDFiOTFhZjFkM2E4
ZWVkMzNmYTI4Y2ViYjhiOGMuLjQyNmU5NmU0ZjBhMmMyYzZmODY3YmYzMGRmZWQ4OTVmYWI3Mjg3
ODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jb21w
dXRhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXBy
b3BlcnR5LWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJlIGNvbXB1
dGF0aW9uYWxseSBpbmRlcGVuZGVudC4KK0ZBSUwgQ1NTLnJlZ2lzdGVyUHJvcGVydHkgVGhlIGdp
dmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQ
QVNTIDxsZW5ndGg+IHZhbHVlcyBhcmUgY29tcHV0ZWQgY29ycmVjdGx5IGZvciBkaXZXaXRoRm9u
dFNpemVTZXQgCiBGQUlMIDxsZW5ndGgtcGVyY2VudGFnZT4gdmFsdWVzIGFyZSBjb21wdXRlZCBj
b3JyZWN0bHkgZm9yIGRpdldpdGhGb250U2l6ZVNldCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
Y2FsYygxOTBweCArIC0yJSkiIGJ1dCBnb3QgImNhbGMoMTkwcHggLSAyJSkiCiBGQUlMIDxsZW5n
dGg+IyB2YWx1ZXMgYXJlIGNvbXB1dGVkIGNvcnJlY3RseSBmb3IgZGl2V2l0aEZvbnRTaXplU2V0
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMHB4LCAzMHB4IiBidXQgZ290ICIwcHgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351682</attachid>
            <date>2018-10-05 11:13:38 -0700</date>
            <delta_ts>2018-10-06 06:57:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190303-20181005111336.patch</filename>
            <type>text/plain</type>
            <size>25374</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJjNzhkZGU0M2ZjOWY2
NGNjMzJjNmJiZGVkYjEyOWVlNTI1NGMyNi4uMTk4NGU4Mjk0YmVmY2Q4YTU4YTMxOGMyNGU5ZjA3
OWEyYzY1ZmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTEwLTA0ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wZXJs
eSBkZXRlcm1pbmUgaWYgY3NzIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgYXJlIGNvbXB1dGF0aW9u
YWxseSBpbmRlcGVuZGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgbWV0aG9kIHRv
IGRldGVybWluZSBpZiBhIHZhbHVlIGlzIGNvbXB1dGF0aW9uYWxseQorICAgICAgICBkZXBlbmRl
bnQuIFVzZSB0aGlzIG1ldGhvZCBpbiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSB0byByZXBsYWNlIGV4
aXN0aW5nIHN1YnN0cmluZyBjaGVja3MuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgbmVlZGVk
IGJlY2F1c2UgdGhlIGV4aXN0aW5nIHRlc3RzIGNvdmVyIHRoaXMgYmVoYXZpb3VyLgorCisgICAg
ICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0
ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6OmdldERpcmVjdENvbXB1dGF0aW9uYWxEZXBl
bmRlbmNpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjpnZXREaXJl
Y3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgICogY3NzL0NT
U0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RGlyZWN0
Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6Z2V0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgY29u
c3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAqIGNzcy9D
U1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Z2V0RGlyZWN0Q29tcHV0
YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6
Z2V0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgY29uc3QpOgorICAgICAgICAq
IGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UgY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OnJlZ2lzdGVyUHJv
cGVydHkpOgorCiAyMDE4LTEwLTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIE11dGF0aW9uUmVjb3JkIGRvZXNuJ3Qga2VlcCBKUyB3cmFwcGVycyBvZiB0YXJn
ZXQsIGFkZGVkTm9kZXMsIGFuZCByZW1vdmVkTm9kZXMgYWxpdmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA4MTVjNDkyZmJkMzFkMjBmZDBjMWQ4NjQ5
N2UwOWNlMTQ1YTY4Nzk0Li45YTk0YTJmZWU1NzRjZTdiYjdmNzhhNDlhMTA5ZmMwM2M1NDY1ODg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yNjks
NiArMjY5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIHZv
aWQgY29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9w
ZXJ0eUlEPiYgdmFsdWVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgbV92YWx1ZS0+Y29s
bGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFsdWVzKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0
PENTU1Byb3BlcnR5SUQ+JiB2YWx1ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBtX3Zh
bHVlLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFsdWVzKTsK
KyAgICB9CisKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUmIG90
aGVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBl
KCkpCkBAIC01MzIsNiArNTQyLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBldmFsdWF0
ZShkb3VibGVWYWx1ZXMpOwogICAgIH0KIAorICAgIHZvaWQgY29sbGVjdERpcmVjdENvbXB1dGF0
aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdmFsdWVzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAg
ICAgICAgICBjaGlsZC0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFs
dWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERl
cGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiB2YWx1ZXMpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgICAg
IGNoaWxkLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFsdWVz
KTsKKyAgICB9CisKICAgICBzdGF0aWMgU3RyaW5nIGJ1aWxkQ3NzVGV4dChWZWN0b3I8U3RyaW5n
PiBjaGlsZEV4cHJlc3Npb25zLCBDYWxjT3BlcmF0b3Igb3ApCiAgICAgewogICAgICAgICBTdHJp
bmdCdWlsZGVyIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
CmluZGV4IDlmM2Q3MDkwMzJhMTMwNDIyNDBmNjVkMWRlZjc3MTVmMDZkOTgzZGQuLmVkMmVhNTUw
NTVjOTU4M2FkZTBiM2VlMDFlMjM3ZTEzMzc0MGQzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTY4LDYgKzY5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHByaW1pdGl2ZVR5
cGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdERpcmVjdENvbXB1dGF0
aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVz
KEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mKSBjb25zdCA9IDA7CisKICAgICBDYWxjdWxhdGlvbkNh
dGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYXRlZ29yeTsgfQogICAgIGJvb2wg
aXNJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pc0ludGVnZXI7IH0KIApAQCAtMTAwLDYgKzEw
NCw5IEBAIHB1YmxpYzoKICAgICBSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlQ2FsY3VsYXRp
b25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAgICAgdm9p
ZCBzZXRQZXJtaXR0ZWRWYWx1ZVJhbmdlKFZhbHVlUmFuZ2UpOwogCisgICAgdm9pZCBjb2xsZWN0
RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+Jikg
Y29uc3Q7CisgICAgdm9pZCBjb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNp
ZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYpIGNvbnN0OworCiAgICAgU3RyaW5nIGN1c3RvbUNT
U1RleHQoKSBjb25zdDsKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25z
dDsKIApAQCAtMTMwLDYgKzEzNywxNiBAQCBpbmxpbmUgdm9pZCBDU1NDYWxjVmFsdWU6OnNldFBl
cm1pdHRlZFZhbHVlUmFuZ2UoVmFsdWVSYW5nZSByYW5nZSkKICAgICBtX3Nob3VsZENsYW1wVG9O
b25OZWdhdGl2ZSA9IHJhbmdlICE9IFZhbHVlUmFuZ2VBbGw7CiB9CiAKK2lubGluZSB2b2lkIENT
U0NhbGNWYWx1ZTo6Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNl
dDxDU1NQcm9wZXJ0eUlEPiYgdmFsdWVzKSBjb25zdAoreworICAgIG1fZXhwcmVzc2lvbi0+Y29s
bGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFsdWVzKTsKK30KKworaW5saW5l
IHZvaWQgQ1NTQ2FsY1ZhbHVlOjpjb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdmFsdWVzKSBjb25zdAoreworICAgIG1fZXhw
cmVzc2lvbi0+Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKHZhbHVl
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19DU1NfVkFMVUUoQ1NTQ2FsY1ZhbHVlLCBpc0NhbGNWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDM1NTE3NjNkOTc4ZDIyYmQy
MDk0ZGQwZDE0MjVmMDY1YTM1ODRiM2IuLjdjMTZlODQxZGVhZmVlMmUyMTkyNThlYzQ5NWI3ODBm
NDE2NTI2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZS5jcHAKQEAgLTI1LDEwICsyNSw1NiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdAoreworICAgIGlmICghbV9zZXJpYWxpemVkKSB7CisgICAg
ICAgIG1fc2VyaWFsaXplZCA9IHRydWU7CisgICAgICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1
ZSkgLy8gRklYTUU6IFVuaXQgc2hvdWxkIGJlIGJhc2VkIG9uIHN5bnRheC4KKyAgICAgICAgICAg
IG1fc3RyaW5nVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fcmVzb2x2ZWRUeXBl
ZFZhbHVlLT52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOwor
ICAgICAgICBlbHNlIGlmIChtX3ZhbHVlKQorICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IG1f
dmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsKKyAgICAgICAgZWxzZSBpZiAobV92YWx1
ZUlkICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRW
YWx1ZU5hbWUobV92YWx1ZUlkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdHJpbmdW
YWx1ZSA9IGVtcHR5U3RyaW5nKCk7CisgICAgfQorICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOwor
fQorCitWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2Vu
cyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0
aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVzb2x2
ZWRUeXBlZFZhbHVlKSB7CisgICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0Owor
ICAgICAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGNzc1RleHQoKSk7CisKKyAgICAgICAgYXV0
byB0b2tlbml6ZXJSYW5nZSA9IHRva2VuaXplci50b2tlblJhbmdlKCk7CisgICAgICAgIHdoaWxl
ICghdG9rZW5pemVyUmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9r
ZW5pemVyUmFuZ2UuY29uc3VtZSgpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIGlmICghbV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChtX2Nv
bnRhaW5zVmFyaWFibGVzKSB7CisgICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0
OworICAgICAgICAvLyBGSVhNRTogQXZvaWQgZG9pbmcgdGhpcyB3b3JrIG1vcmUgdGhhbiBvbmNl
LgorICAgICAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlZERhdGEgPSBtX3ZhbHVl
LT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSk7
CisgICAgICAgIGlmIChyZXNvbHZlZERhdGEpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kVmVj
dG9yKHJlc29sdmVkRGF0YS0+dG9rZW5zKCkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fdmFsdWUtPnRva2VucygpOworfQorCiBib29sIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4m
IHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVz
KSBjb25zdAogewogICAgIEFTU0VSVChjb250YWluc1ZhcmlhYmxlcygpKTsKQEAgLTUxLDQgKzk3
LDEwIEBAIHZvaWQgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tCiAgICAgICAgIHJlc29sdmVkVmFsdWVzLmFw
cGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBDU1NWYWx1
ZUludmFsaWQpKTsKIH0KIAordm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZl
ZFR5cGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoLmlzU3BlY2lm
aWVkKCkpOworICAgIG1fcmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgpOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAppbmRleCBm
ODM2MTg0ZmYwODZiZGVhOWUyMjMyZGFlZjU2Mjg1MWE1YzM3MTdhLi5iYjA5MjE0NWRlNTFmYjZl
NmIzOWQ5OTU0ZDM2NDkyZGJjY2Q2ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlLmgKQEAgLTM0LDYgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDU1NQYXJzZXJUb2tlbjsKK2NsYXNzIFJlbmRlclN0eWxlOworCiBjbGFzcyBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhWYXJpYWJs
ZURhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIHZh
bHVlKQpAQCAtNTYsMzQgKzU5LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShvdGhlcikpOwogICAgIH0KICAgICAKLSAgICBT
dHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1fc2VyaWFs
aXplZCkgewotICAgICAgICAgICAgbV9zZXJpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGlm
IChtX3ZhbHVlKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBtX3ZhbHVlLT50b2tl
blJhbmdlKCkuc2VyaWFsaXplKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX3ZhbHVlSWQgIT0g
Q1NTVmFsdWVJbnZhbGlkKQotICAgICAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRWYWx1
ZU5hbWUobV92YWx1ZUlkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0
cmluZ1ZhbHVlID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9z
dHJpbmdWYWx1ZTsKLSAgICB9CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQog
ICAgIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIG1fdmFsdWUgPT0gb3Ro
ZXIubV92YWx1ZSAmJiBtX3ZhbHVlSWQgPT0gb3RoZXIubV92YWx1ZUlkOyB9CiAKLSAgICBib29s
IGNvbnRhaW5zVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsg
fQorICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMoKSBjb25zdCB7IEFTU0VSVCghbV9jb250YWlu
c1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5cGVkVmFsdWUpOyByZXR1cm4gbV9jb250YWluc1Zh
cmlhYmxlczsgfQogICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
c2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMp
IGNvbnN0OwogCiAgICAgdm9pZCByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIENTU1ZhbHVlSUQgdmFs
dWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVJZDsgfQogICAgIENTU1ZhcmlhYmxlRGF0YSog
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CisgICAgVmVjdG9yPENTU1Bh
cnNlclRva2VuPiB0b2tlbnMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TGVu
Z3RoPiYgcmVzb2x2ZWRUeXBlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGVk
VmFsdWU7IH0KLSAgICB2b2lkIHNldFJlc29sdmVkVHlwZWRWYWx1ZShMZW5ndGggbGVuZ3RoKSB7
IG1fcmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgpOyB9CisgICAgdm9pZCBzZXRS
ZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3RoKTsKIAogcHJpdmF0ZToKICAgICBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzZXJpYWxp
emVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA1
NjA0NGJlY2UwZjdhODNjMjMyNTYyNDQwMDU4NGM0YmQzMTc2NTMxLi42MzZkNjAxOTI0YjljN2I3
NTQ1OTcwZjFkZDU1Y2RjMmNkN2M4ZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKQEAgLTEyMjAsNCArMTIyMCwzMiBAQCBSZWY8RGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVEZXByZWNhdGVkQ1NTT01Qcmlt
aQogICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKCp0aGlz
LCBzdHlsZURlY2xhcmF0aW9uKTsKIH0KIAorLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvI2RlcGVuZGVuY3ktY3ljbGVzLXZpYS1yZWxh
dGl2ZS11bml0cwordm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29sbGVjdERpcmVjdENvbXB1dGF0
aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdmFsdWVzKSBjb25zdAor
eworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgeworICAgIGNhc2UgQ1NTX0VNUzoK
KyAgICBjYXNlIENTU19RVUlSS1lfRU1TOgorICAgIGNhc2UgQ1NTX0VYUzoKKyAgICBjYXNlIENT
U19DSFM6CisgICAgICAgIHZhbHVlcy5hZGQoQ1NTUHJvcGVydHlGb250U2l6ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgIG1fdmFsdWUuY2FsYy0+Y29sbGVj
dERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFsdWVzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjb2xsZWN0RGlyZWN0Um9vdENv
bXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdmFsdWVzKSBj
b25zdAoreworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgeworICAgIGNhc2UgQ1NT
X1JFTVM6CisgICAgICAgIHZhbHVlcy5hZGQoQ1NTUHJvcGVydHlGb250U2l6ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgIG1fdmFsdWUuY2FsYy0+Y29sbGVj
dERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKHZhbHVlcyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBhZTdiZTJlYjJiNzVkZjc4MjE0YWY1YzZhZDVmNTAy
NmU5MTAzMWRjLi41MzA4OGNjYTdmMmE4NjA4NGUxNWRhNWEwYmM4ZjM3M2E4MTVkNmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMjg4LDYgKzI4OCw5IEBAIHB1
YmxpYzoKIAogICAgIFJlZjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gY3JlYXRlRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0aW9uJikgY29uc3Q7
CiAKKyAgICB2b2lkIGNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKEhhc2hT
ZXQ8Q1NTUHJvcGVydHlJRD4mKSBjb25zdDsKKyAgICB2b2lkIGNvbGxlY3REaXJlY3RSb290Q29t
cHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JikgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTU1ZhbHVlUG9vbDsKICAgICBmcmllbmQgTGF6
eU5ldmVyRGVzdHJveWVkPENTU1ByaW1pdGl2ZVZhbHVlPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
CmluZGV4IDkxMmU4YWRmZTI1NmNmNjA4ZjBhMTQzMWMyNzEzZDI5Y2QzNWMyMjkuLjhhMmE0YmM3
YjljNzBhMzlkNTEwYmNlOGNlZDk2MWMzOTNkNTVmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cApAQCAtMTE3LDYgKzExNywxOCBAQCBib29sIENTU1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNl
cyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAordm9pZCBDU1NWYWx1ZTo6Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxE
ZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdmFsdWVzKSBjb25zdAoreworICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnRoaXMpKQorICAgICAgICBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnRoaXMpLmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5j
aWVzKHZhbHVlcyk7Cit9CisKK3ZvaWQgQ1NTVmFsdWU6OmNvbGxlY3REaXJlY3RSb290Q29tcHV0
YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiB2YWx1ZXMpIGNvbnN0
Cit7CisgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdGhpcykpCisgICAgICAgIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdGhpcykuY29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlv
bmFsRGVwZW5kZW5jaWVzKHZhbHVlcyk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIENoaWxkQ2xhc3NU
eXBlPgogaW5saW5lIHN0YXRpYyBib29sIGNvbXBhcmVDU1NWYWx1ZXMoY29uc3QgQ1NTVmFsdWUm
IGZpcnN0LCBjb25zdCBDU1NWYWx1ZSYgc2Vjb25kKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRl
eCA1ZDM4NmFmZGZiMjk3M2Y2OTYwMjcxY2YzNjc5MTJhMWUzNzc0M2U0Li5hZDFkMDA3OTliNmIx
ODBkNjA2M2M5YjAyMGFjNzdiYjM2MjIxNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAs
NiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKICNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTEyMiw2ICsxMjMsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0
IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAorICAgIC8vIFdoYXQgcHJvcGVy
dGllcyBkb2VzIHRoaXMgdmFsdWUgcmVseSBvbiAoZWcsIGZvbnQtc2l6ZSBmb3IgZW0gdW5pdHMp
CisgICAgdm9pZCBjb2xsZWN0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0
PENTU1Byb3BlcnR5SUQ+JikgY29uc3Q7CisgICAgLy8gV2hhdCBwcm9wZXJ0aWVzIGluIHRoZSBy
b290IGVsZW1lbnQgZG9lcyB0aGlzIHZhbHVlIHJlbHkgb24gKGVnLiBmb250LXNpemUgZm9yIHJl
bSB1bml0cykKKyAgICB2b2lkIGNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVu
Y2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JikgY29uc3Q7CisKICAgICBib29sIGVxdWFscyhj
b25zdCBDU1NWYWx1ZSYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYWx1
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGVxdWFscyhvdGhlcik7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFyaWFibGVEYXRhLmNwcAppbmRleCBlYTAzMzYyZWZiZTNmMzIyZTA5NGNjNjEzMTky
MmI1ODhmZDY0ZGE4Li45ODk5MzUzMTc1OWM4YzkzZjc3NTdlMzE5ODliMWQ2MDk4MTIwYzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmNwcApAQCAtMzIsNyArMzIsNiBAQAog
CiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
clRva2VuUmFuZ2UuaCIKLSNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZVBvb2wuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KQEAgLTgxLDcgKzgwLDYgQEAgdm9pZCBDU1NWYXJpYWJsZURh
dGE6OmNvbnN1bWVBbmRVcGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCiBDU1NWYXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKICAgICA6IG1fbmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24obmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCiB7Ci0gICAgQVNT
RVJUKCFyYW5nZS5hdEVuZCgpKTsKICAgICBjb25zdW1lQW5kVXBkYXRlVG9rZW5zKHJhbmdlKTsK
IH0KIApAQCAtMTQ2LDEyICsxNDQsNyBAQCBib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eQogICAgIAog
ICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHkodmFyaWFibGVOYW1l
KTsKICAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHktPnJlc29sdmVkVHlwZWRWYWx1ZSgpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbm90IGhhdmUgdG8gc2VyaWFsaXplIGEgdmFs
dWUgdGhhdCB3YXMgYWxyZWFkeSByZXNvbHZlZC4KLSAgICAgICAgYXV0byB0ZXh0VmFsdWUgPSBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKCpwcm9wZXJ0eS0+cmVzb2x2ZWRU
eXBlZFZhbHVlKCksIHN0eWxlKS0+Y3NzVGV4dCgpOwotICAgICAgICBDU1NUb2tlbml6ZXIgdG9r
ZW5pemVyKHRleHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gdG9rZW5pemVyUmFuZ2UgPSB0b2tlbml6
ZXIudG9rZW5SYW5nZSgpOwotICAgICAgICB3aGlsZSAoIXRva2VuaXplclJhbmdlLmF0RW5kKCkp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuaXplclJhbmdlLmNvbnN1bWUoKSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRva2VucyhyZWdpc3RlcmVkUHJv
cGVydGllcywgc3R5bGUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNjMs
MTUgKzE1Niw3IEBAIGJvb2wgQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVu
Y2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5CiAgICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2socmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJhbmdlLCByZXN1
bHQsIHN0eWxlKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3BlcnR5KTsKLSAgICAKLSAgICBpZiAo
cHJvcGVydHktPmNvbnRhaW5zVmFyaWFibGVzKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEF2b2lk
IGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4gb25jZS4KLSAgICAgICAgUmVmUHRyPENTU1Zhcmlh
YmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gcHJvcGVydHktPnZhbHVlKCktPnJlc29sdmVWYXJpYWJs
ZVJlZmVyZW5jZXMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKTsKLSAgICAgICAgaWYgKCFy
ZXNvbHZlZERhdGEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmRWZWN0b3IocmVzb2x2ZWREYXRhLT50b2tlbnMoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnZhbHVlKCktPnRva2VucygpKTsKKyAgICBy
ZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5LT50b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMs
IHN0eWxlKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggYTU0ZWU2ODVh
Y2ExM2E5NDk3ZmQ5ZjBjMjUyNjRjMzAyYTUxZWI4ZC4uMzczMThkYTY1OThmZDExNTkzMDY5Y2Ey
MjE1NWZkYjY0YjU0ZDdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuaCIKIAogI2luY2x1ZGUgIkNTU0N1c3RvbVByb3Bl
cnR5VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAj
aW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgiCkBAIC0zOSwyOSArNDAsMjMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5OjpyZWdpc3RlclByb3BlcnR5KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRE9NQ1NTQ3Vz
dG9tUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gaW5pdGlhbFZh
bHVlTG93ZXIgPSBkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwotICAgIGZvciAoYXV0byYgc3Vic3RyaW5nIDogeyAiZW0iLCAiZXgiLCAibGgiLCAiY2Fw
IiwgImNoIiwgImljIiwgInZhciIsICJlbnYiIH0pIHsKLSAgICAgICAgLy8gRklYTUU6IHdlIHNo
b3VsZCBiZSBhYmxlIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHBhcnNlZCB2YWx1
ZQotICAgICAgICAvLyBSaWdodCBub3csIHdlIGNhbid0IGJlY2F1c2UgdmFsdWVzIHRoYXQgZmFp
bCB0byBwYXJzZSBoZXJlIHdpbGwgY3Jhc2gKLSAgICAgICAgaWYgKGluaXRpYWxWYWx1ZUxvd2Vy
LmNvbnRhaW5zKHN1YnN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJlIGNvbXB1dGF0aW9uYWxs
eSBpbmRlcGVuZGVudC4iIH07Ci0gICAgfQotCi0gICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcihk
ZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CiAgICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGluaXRpYWxWYWx1ZTsKLSAgICBpZiAoIXRva2VuaXplci50b2tlblJhbmdlKCkuYXRFbmQo
KSkgewotICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVh
dGVXaXRoVmFyaWFibGVEYXRhKGRlc2NyaXB0b3IubmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpjcmVh
dGUodG9rZW5pemVyLnRva2VuUmFuZ2UoKSwgZmFsc2UpKTsKLSAgICAgICAgaWYgKGluaXRpYWxW
YWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2VzKCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IG5vdCBjb250
YWluIHZhcmlhYmxlIHJlZmVyZW5jZXMuIiB9OwotCisgICAgaWYgKCFkZXNjcmlwdG9yLmluaXRp
YWxWYWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0YShkZXNjcmlwdG9yLm5hbWUsIENTU1Zh
cmlhYmxlRGF0YTo6Y3JlYXRlKENTU1BhcnNlclRva2VuUmFuZ2UoVmVjdG9yPENTU1BhcnNlclRv
a2VuPigpKSwgZmFsc2UpKTsKICAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCk7Ci0g
ICAgICAgIFJlbmRlclN0eWxlIHJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwog
ICAgICAgICBTdHlsZVJlc29sdmVyIHN0eWxlUmVzb2x2ZXIoZG9jdW1lbnQpOwogCi0gICAgICAg
IGF1dG8gcHJpbWl0aXZlVmFsID0gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVu
Y2VzKENTU1Byb3BlcnR5Q3VzdG9tLCAqaW5pdGlhbFZhbHVlLCBkb2N1bWVudC5nZXRDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKSwgcmVuZGVyU3R5bGUpOworICAgICAgICBhdXRvIHBy
aW1pdGl2ZVZhbCA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCBk
ZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CiAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsIHx8ICFw
cmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBh
cnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LiIgfTsKIAorICAgICAgICBIYXNoU2V0PENTU1Byb3Bl
cnR5SUQ+IGRlcGVuZGVuY2llczsKKyAgICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0
Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICBwcmltaXRp
dmVWYWwtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRl
bmNpZXMpOworCisgICAgICAgIGlmICghZGVwZW5kZW5jaWVzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZh
bHVlIG11c3QgYmUgY29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50LiIgfTsKKwogICAgICAgICBp
bml0aWFsVmFsdWUtPnNldFJlc29sdmVkVHlwZWRWYWx1ZShTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggODQwMjE3ODAzMDkzNGVlMTU2MDU0MTE3
OGVkYmVkM2Y0MWU0ZDFlZS4uM2ViZTFlNzBiMTBiODc4YTM1NjYxODljYzQwMzZhYWI2ZGNiNjU1
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgt
MTAtMDQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFByb3Blcmx5IGRldGVybWluZSBpZiBjc3MgY3VzdG9tIHByb3BlcnR5IHZhbHVlcyBhcmUg
Y29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRp
ZXMtdmFsdWVzLWFwaS9yZWdpc3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY29tcHV0YXRpb24tZXhwZWN0ZWQudHh0OgorCiAy
MDE4LTEwLTA0ICBZVUhBTiBXVSAgPHl1aGFuX3d1QGFwcGxlLmNvbT4KIAogICAgICAgICBydW50
aW1lIGZsYWcgYW5kIElETCBmb3IgTWVkaWFSZWNvcmRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS9yZWdpc3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVy
dGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVk
LnR4dAppbmRleCAxZTcyOGZkZTI2MjE5NTVkMjE3YjMwNTI0NzRiYzczYTYyOGY2YmI1Li5lOWUy
ZmU3MzhhYjNhMmRiZGFmZDkxMGI2NDY2MWQyYWRkODNlMDNkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12
YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4
cGVjdGVkLnR4dApAQCAtMTIsNyArMTIsNyBAQCBGQUlMIHN5bnRheDonPHRpbWU+IHwgPHJlc29s
dXRpb24+IHwgPHRyYW5zZm9ybS1saXN0PiB8IDxjdXN0b20taWRlbnQ+JywgaW5pdGlhbAogRkFJ
TCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6Jzo+IGhlbGxvJyBpcyB2YWxpZCBUaGUgZ2l2ZW4g
aW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwg
c3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicoWyBicmFja2V0cyBdKSB7IHlheSAoPz8pfScgaXMg
dmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZl
biBzeW50YXguCiBGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZToneWVwICd0aGlzIGlzIHZh
bGlkIHRvbycnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNl
IGZvciB0aGUgZ2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vu
bWF0Y2hlZCBvcGVuaW5nIGJyYWNrZXQgaXMgdmFsaWQgOignIGlzIHZhbGlkIFRoZSBnaXZlbiBp
bml0aWFsIHZhbHVlIG11c3QgYmUgY29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50LgorRkFJTCBz
eW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VubWF0Y2hlZCBvcGVuaW5nIGJyYWNrZXQgaXMgdmFs
aWQgOignIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyInIGlz
IHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2
ZW4gc3ludGF4LgogUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOicwJyBpcyB2
YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMTBweCAvKjopKi8n
IGlzIHZhbGlkIApAQCAtMzcsMTIgKzM3LDEyIEBAIEZBSUwgc3ludGF4Oic8dGltZT4nLCBpbml0
aWFsVmFsdWU6J2NhbGMoMnMgLSA5bXMpJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2CiBG
QUlMIHN5bnRheDonPHJlc29sdXRpb24+JywgaW5pdGlhbFZhbHVlOicxMGRwaScgaXMgdmFsaWQg
VGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50
YXguCiBGQUlMIHN5bnRheDonPHJlc29sdXRpb24+JywgaW5pdGlhbFZhbHVlOiczZFBwWCcgaXMg
dmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZl
biBzeW50YXguCiBGQUlMIHN5bnRheDonPHJlc29sdXRpb24+JywgaW5pdGlhbFZhbHVlOictNS4z
ZHBjbScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9y
IHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDonPHRyYW5zZm9ybS1mdW5jdGlvbj4nLCBp
bml0aWFsVmFsdWU6J3RyYW5zbGF0ZVgoMnB4KScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwg
dmFsdWUgbXVzdCBiZSBjb21wdXRhdGlvbmFsbHkgaW5kZXBlbmRlbnQuCitGQUlMIHN5bnRheDon
PHRyYW5zZm9ybS1mdW5jdGlvbj4nLCBpbml0aWFsVmFsdWU6J3RyYW5zbGF0ZVgoMnB4KScgaXMg
dmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZl
biBzeW50YXguCiBGQUlMIHN5bnRheDonPHRyYW5zZm9ybS1mdW5jdGlvbj58PGludGVnZXI+Jywg
aW5pdGlhbFZhbHVlOic1JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8dHJhbnNmb3JtLWZ1
bmN0aW9uPnw8aW50ZWdlcj4nLCBpbml0aWFsVmFsdWU6J3NjYWxlKDIpJyBpcyB2YWxpZCBUaGUg
Z2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4K
LUZBSUwgc3ludGF4Oic8dHJhbnNmb3JtLWZ1bmN0aW9uPisnLCBpbml0aWFsVmFsdWU6J3RyYW5z
bGF0ZVgoMnB4KSByb3RhdGUoNDJkZWcpJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBtdXN0IGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4KK0ZBSUwgc3ludGF4Oic8dHJh
bnNmb3JtLWZ1bmN0aW9uPisnLCBpbml0aWFsVmFsdWU6J3RyYW5zbGF0ZVgoMnB4KSByb3RhdGUo
NDJkZWcpJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBm
b3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8dHJhbnNmb3JtLWxpc3Q+JywgaW5p
dGlhbFZhbHVlOidzY2FsZSgyKScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9l
cyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDonPHRyYW5zZm9y
bS1saXN0PicsIGluaXRpYWxWYWx1ZTondHJhbnNsYXRlWCgycHgpIHJvdGF0ZSgyMGRlZyknIGlz
IHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIG11c3QgYmUgY29tcHV0YXRpb25hbGx5IGlu
ZGVwZW5kZW50LgorRkFJTCBzeW50YXg6Jzx0cmFuc2Zvcm0tbGlzdD4nLCBpbml0aWFsVmFsdWU6
J3RyYW5zbGF0ZVgoMnB4KSByb3RhdGUoMjBkZWcpJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlh
bCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4
Oic8Y29sb3I+JywgaW5pdGlhbFZhbHVlOidyZ2IoMTIsIDM0LCA1NiknIGlzIHZhbGlkIFRoZSBn
aXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4Lgog
RkFJTCBzeW50YXg6Jzxjb2xvcj4nLCBpbml0aWFsVmFsdWU6J2xpZ2h0Z29sZGVucm9keWVsbG93
JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8aW1hZ2U+JywgaW5pdGlhbFZhbHVlOid1cmwo
YSknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0
aGUgZ2l2ZW4gc3ludGF4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVk
LXByb3BlcnR5LWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVn
aXN0ZXJlZC1wcm9wZXJ0eS1jb21wdXRhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggYjc0YTE4ZTg5
NDZkMWI5MWFmMWQzYThlZWQzM2ZhMjhjZWJiOGI4Yy4uNDI2ZTk2ZTRmMGEyYzJjNmY4NjdiZjMw
ZGZlZDg5NWZhYjcyODc4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVk
LXByb3BlcnR5LWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBp
L3JlZ2lzdGVyZWQtcHJvcGVydHktY29tcHV0YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NSBAQAogCi1GQUlMIENTUy5yZWdpc3RlclByb3BlcnR5IFRoZSBnaXZlbiBpbml0aWFsIHZhbHVl
IG11c3QgYmUgY29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50LgorRkFJTCBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KIFBBU1MgPGxlbmd0aD4gdmFsdWVzIGFyZSBjb21wdXRlZCBjb3JyZWN0bHkg
Zm9yIGRpdldpdGhGb250U2l6ZVNldCAKIEZBSUwgPGxlbmd0aC1wZXJjZW50YWdlPiB2YWx1ZXMg
YXJlIGNvbXB1dGVkIGNvcnJlY3RseSBmb3IgZGl2V2l0aEZvbnRTaXplU2V0IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJjYWxjKDE5MHB4ICsgLTIlKSIgYnV0IGdvdCAiY2FsYygxOTBweCAtIDIl
KSIKIEZBSUwgPGxlbmd0aD4jIHZhbHVlcyBhcmUgY29tcHV0ZWQgY29ycmVjdGx5IGZvciBkaXZX
aXRoRm9udFNpemVTZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEwcHgsIDMwcHgiIGJ1dCBn
b3QgIjBweCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>