<?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>69828</bug_id>
          
          <creation_ts>2011-10-11 03:30:56 -0700</creation_ts>
          <short_desc>Move the content of SelectElementData into HTMLSelectElement, and remove SelectElement.{cpp,h}</short_desc>
          <delta_ts>2011-10-12 00:19:59 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69812</dependson>
          <blocked>69908</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>darin</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>481550</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-11 03:30:56 -0700</bug_when>
    <thetext>Move the content of SelectElementData into HTMLSelectElement, and remove SelectElement.{cpp,h}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481554</commentid>
    <comment_count>1</comment_count>
      <attachid>110493</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-11 03:38:35 -0700</bug_when>
    <thetext>Created attachment 110493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481571</commentid>
    <comment_count>2</comment_count>
      <attachid>110493</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-11 04:44:49 -0700</bug_when>
    <thetext>Comment on attachment 110493
Patch

Attachment 110493 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10027494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481574</commentid>
    <comment_count>3</comment_count>
      <attachid>110493</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-11 05:26:38 -0700</bug_when>
    <thetext>Comment on attachment 110493
Patch

Attachment 110493 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10031417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481585</commentid>
    <comment_count>4</comment_count>
      <attachid>110503</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-11 05:51:46 -0700</bug_when>
    <thetext>Created attachment 110503
Patch 2

Probably fixed GTK and Windows bulid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481642</commentid>
    <comment_count>5</comment_count>
      <attachid>110503</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-11 08:40:19 -0700</bug_when>
    <thetext>Comment on attachment 110503
Patch 2

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

&gt; Source/WebCore/html/HTMLSelectElement.h:164
&gt; +    bool usesMenuList() const
&gt; +    {
&gt; +#if ENABLE(NO_LISTBOX_RENDERING)
&gt; +        return true;
&gt; +#else
&gt; +        return !m_multiple &amp;&amp; m_size &lt;= 1;
&gt; +#endif
&gt; +    }

It’s good to have this inline, but it’s a little long and ugly to have here in the class definition. I’d put it separately after the class definition.

&gt; Source/WebCore/html/HTMLSelectElement.h:178
&gt;      Vector&lt;Element*&gt; m_listItems;

These should be HTMLFormControlElement*. The only reason they are Element* was WML support.

&gt; Source/WebCore/html/HTMLSelectElement.h:191
&gt;      bool m_recalcListItems;

I think this should be renamed (later) m_shouldRecalcListItems or something even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482268</commentid>
    <comment_count>6</comment_count>
      <attachid>110503</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-12 00:10:19 -0700</bug_when>
    <thetext>Comment on attachment 110503
Patch 2

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

&gt;&gt; Source/WebCore/html/HTMLSelectElement.h:164
&gt;&gt; +    }
&gt; 
&gt; It’s good to have this inline, but it’s a little long and ugly to have here in the class definition. I’d put it separately after the class definition.

ok, I move it.

&gt;&gt; Source/WebCore/html/HTMLSelectElement.h:178
&gt;&gt;      Vector&lt;Element*&gt; m_listItems;
&gt; 
&gt; These should be HTMLFormControlElement*. The only reason they are Element* was WML support.

Unfortunately, m_listItems contains &lt;hr&gt; elements.
We can change Element* to HTMLElement*.

&gt;&gt; Source/WebCore/html/HTMLSelectElement.h:191
&gt;&gt;      bool m_recalcListItems;
&gt; 
&gt; I think this should be renamed (later) m_shouldRecalcListItems or something even better.

I&apos;ll address this later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482270</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-12 00:13:19 -0700</bug_when>
    <thetext>Committed r97238: &lt;http://trac.webkit.org/changeset/97238&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110493</attachid>
            <date>2011-10-11 03:38:35 -0700</date>
            <delta_ts>2011-10-11 05:51:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69828-20111011193833.patch</filename>
            <type>text/plain</type>
            <size>46588</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxMzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDkwMThm
Yzc0MmJlMGNiNTU1ZjU3NTE3MjkzNmI4NDAyNzlkNTYzZC4uZjU1ZTExZjNhMWUyNGI0ZDE5MGFk
NDBlOWQzYTY5OTU5ZmI4NDQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU3OCw3ICs1Nzgs
NiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCiAgICAg
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCiAgICAgZG9tL1NjcmlwdFJ1bm5lci5jcHAK
LSAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAg
ICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEwYWJlZTVkNTdjYTUwMTAzODZlMjJjZWIyNWFjYTU5
N2E1NTRkMTAuLmM3MTE2MmVkMDdlZTczYjA1Y2EyOGEwZTkxMjk5YjIxNjFlYTQ3MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMS0xMC0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSB0aGUgY29udGVudCBvZiBTZWxlY3RFbGVtZW50
RGF0YSBpbnRvIEhUTUxTZWxlY3RFbGVtZW50LCBhbmQgcmVtb3ZlIFNlbGVjdEVsZW1lbnQue2Nw
cCxofQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIE1v
dmUgYWxsIG9mIHRoZSBkYXRhIG1lbWJlcnMgb2YgU2VsZWN0RWxlbWVudERhdGEgdG8KKyAgICAg
ICAgSFRNTFNlbGVjdEVsZW1lbnQsIGFuZCB0aGVpciBhY2Nlc3NvciBmdW5jdGlvbnMgYXJlIG5v
dCBuZWVkZWQKKyAgICAgICAgYW55bW9yZS4KKyAgICAgICAgLSBNb3ZlIFNlbGVjdEVsZW1lbnRE
YXRhOjp1c2VNZW51TGlzdCgpIHRvIEhUTUxTZWxlY3RFbGVtZW50LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IFJlbW92ZSBTZWxlY3RFbGVtZW50LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFJlbW92
ZSBTZWxlY3RFbGVtZW50LntjcHAsaH0uCisgICAgICAgICogV2ViQ29yZS5wcm86IGRpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBkaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGRpdHRvLgorICAgICAgICAqIGRv
bS9PcHRpb25FbGVtZW50LmNwcDogUmVtb3ZlIGEgcmVmZXJlbmNlIHRvIFNlbGVjdEVsZW1lbnQu
aC4KKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
ZG9tL1NlbGVjdEVsZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2Vs
ZWN0RWxlbWVudCk6CisgICAgICAgIEluaXRpYWxpemVzIHRoZSBtb3ZlZCBkYXRhIG1lbWJlcnMu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4QnlV
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphY3RpdmVTZWxlY3Rp
b25TdGFydExpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6Y2FuU2VsZWN0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVM
YXN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRB
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RPbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJ
bmRleEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNw
YXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpw
YXJzZU11bHRpcGxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxp
c3REZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om11bHRp
cGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3Qp
OgorCiAyMDExLTEwLTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBNb3ZlIG1fbGlzdEl0ZW1zIGFuZCBtX3JlY2FsY0xpc3RJdGVtcyBmcm9tIFNlbGVjdEVs
ZW1lbnREYXRhIHRvIEhUTUxTZWxlY3RFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWY4MWMy
MzBlZDliYTlhNmNkZWM0Y2VjY2I5NDA0MDAwNmNhM2RmOS4uNGU4YzgwNzg0Nzg2MmQ2OWJmZmI1
YjNlMDI5MTBlYjVjYzcyYTRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTI3OSw4ICs1Mjc5LDYg
QEAKICAgICAgICAgICAgICdkb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgnLAogICAgICAg
ICAgICAgJ2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAg
ICdkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgnLAotICAgICAgICAgICAgJ2RvbS9T
ZWxlY3RFbGVtZW50LmNwcCcsCi0gICAgICAgICAgICAnZG9tL1NlbGVjdEVsZW1lbnQuaCcsCiAg
ICAgICAgICAgICAnZG9tL1NlbGVjdG9yUXVlcnkuY3BwJywKICAgICAgICAgICAgICdkb20vU2Vs
ZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggMDY0ZGM5ODE1MGYyMTBjNDYzZDNmODExMGM0MzY5MDdhYzNj
MGI2MS4uMzBjZjYwYjM2NjVkZDNkNjZhNDVmNTI1NDYwZjg2ZTU4YWZjMTk3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTU0NCw3ICs1NDQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vU2NyaXB0RWxl
bWVudC5jcHAgXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBcCiAgICAgZG9t
L1NjcmlwdFJ1bm5lci5jcHAgXAotICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcCBcCiAgICAgZG9t
L1NlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwIFwK
ICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKQEAgLTE1NTcsNyArMTU1Niw2
IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmggXAogICAg
IGRvbS9TY3JpcHRFbGVtZW50LmggXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgg
XAotICAgIGRvbS9TZWxlY3RFbGVtZW50LmggXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAog
ICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKICAgICBkb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDMxYWM4ZTIwZTViN2QxNzZmMjQ2Y2NmNThiNDJjOWVmMmEwNmMyMjEuLjdhMzI4
Y2U0YWUyMGI0NzZkN2JlOTdhMGViYzA1NjQ1NGU3YTUzM2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00ODY1OCw2MiArNDg2NTgsNiBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2Vs
ZWN0RWxlbWVudC5jcHAiCi0JCQkJPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJ
CQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJ
PFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJ
PgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0J
CQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
LQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
CQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgot
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
CQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTZWxlY3RFbGVtZW50LmgiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTZWxlY3RvclF1ZXJ5LmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTk4MWM5OWUwZTY1MGU4YjVjM2Vm
NjExMDUzNTllOGY2YzMzYjMzOC4uMTYyMDMxM2I0YjQ3NjYxNmFiZDY2OGNkZTcwZTdiOWQ0ZjFj
YWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTA5LDggKzEwOSw2IEBACiAJCTA4M0RBRUE5MEYwMUE3RkIwMDM0Mjc1NCAv
KiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaCAqLzsgfTsKIAkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlG
IC8qIEZvbnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODQ1NjgwNzEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODRBMDgyOTEyOEQ3
ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NEEwODI4MTI4RDc4NjcwMDJE
QjFGMSAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwotCQkwODRBRUJF
NDBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODRBRUJFMjBGQjUwNUZBMDAzODQ4M0UgLyog
U2VsZWN0RWxlbWVudC5jcHAgKi87IH07Ci0JCTA4NEFFQkU1MEZCNTA1RkEwMDM4NDgzRSAvKiBT
ZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODRBRUJFMzBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5oICovOyB9Owog
CQkwODREQjU5QjEyODAwOENDMDAyQTZENjQgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NERCNTlBMTI4MDA4Q0Mw
MDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4NTI1RTYzMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdB
bmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1MjVFNjIxMjc4QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1h
dGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg1NEIwMTUxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNW
R0lubGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg1NEIwMDMxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGluZS5oICovOyB9OwpAQCAt
NzExMSw4ICs3MTA5LDYgQEAKIAkJMDgzREFFQTUwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg0NTY4MDcxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRNZXRyaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4NEEwODI4MTI4RDc4NjcwMDJEQjFGMSAvKiBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODRB
RUJFMjBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDg0QUVCRTMwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0RWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODREQjU5QTEyODAwOENDMDAyQTZENjQgLyogU1ZH
QW5pbWF0ZWRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5p
bWF0ZWRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1MjVFNjIxMjc4
QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFy
T2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NTRCMDAyMTI1NUU0RTYwMEI5
Q0REMCAvKiBSZW5kZXJTVkdJbmxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyU1ZHSW5saW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxMTY5LDggKzIxMTY1LDYgQEAKIAkJCQlFMTFDOUQ5QTBFQjM2ODEyMDBFNDA5REIgLyog
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oICovLAogCQkJCThBNDEzQURGMTIwN0JCQTUwMDgyMDE2
RSAvKiBTY3JpcHRSdW5uZXIuY3BwICovLAogCQkJCThBNDEzQURFMTIwN0JCQTUwMDgyMDE2RSAv
KiBTY3JpcHRSdW5uZXIuaCAqLywKLQkJCQkwODRBRUJFMjBGQjUwNUZBMDAzODQ4M0UgLyogU2Vs
ZWN0RWxlbWVudC5jcHAgKi8sCi0JCQkJMDg0QUVCRTMwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVj
dEVsZW1lbnQuaCAqLywKIAkJCQlFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JR
dWVyeS5jcHAgKi8sCiAJCQkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVl
cnkuaCAqLywKIAkJCQlBNzY2Q0Y4QjEzODEwRTBDMDAxMUEwQjMgLyogU2hhZG93Q29udGVudEVs
ZW1lbnQuY3BwICovLApAQCAtMjM5NTEsNyArMjM5NDUsNiBAQAogCQkJCUJDRDBFMEZDMEU5NzJD
MzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbkhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjJDM0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMDg0QUVCRTUwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTEwMDk5RTY0OTIw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjhEQkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjY5MzIsNyArMjY5MjUsNiBAQAogCQkJCUJDRDBFMEZBMEU5NzJDMzUwMDI2
NURFQSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFGNEZGRDBE
MjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkwODRBRUJFNDBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzVFNDk3NzEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTBGMDk5RTY0OTIw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcAppbmRleCA4MDVkZjFj
NGI1ZjQzNTY5ODc3MzQ4ZDc2MWM2ZGFhNmZjZTAwMTkyLi4wNjI0NTE4ZWFmZDhjMzg1MjM2MTVi
OTRkMzJmNmJlYTBhYjVjMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vT3B0aW9u
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuY3BwCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJPcHRpb25Hcm91cEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVkMzgzMTRhYzZmZWY3ZDJlMDFmYjFjOGMwYzczNzFm
YTEyMTQ1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlbGVjdEVsZW1lbnQuaCIKLQotI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2
ZW50SGFuZGxlci5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNp
bmNsdWRlICJPcHRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiT3B0aW9uR3JvdXBFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRl
ICJSZW5kZXJNZW51TGlzdC5oIgotI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgotCi11c2luZyBzdGQ6Om1pbjsKLXVzaW5nIHN0ZDo6bWF4OwotdXNpbmcgbmFtZXNw
YWNlIFdURjsKLXVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIFNlbGVjdEVsZW1lbnREYXRhCi1TZWxlY3RFbGVtZW50RGF0YTo6U2VsZWN0RWxlbWVu
dERhdGEoKQotICAgIDogbV9sYXN0Q2hhclRpbWUoMCkKLSAgICAsIG1fcmVwZWF0aW5nQ2hhcigw
KQotICAgICwgbV9zaXplKDApCi0gICAgLCBtX2xhc3RPbkNoYW5nZUluZGV4KC0xKQotICAgICwg
bV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCgtMSkKLSAgICAsIG1fYWN0aXZlU2VsZWN0aW9u
RW5kSW5kZXgoLTEpCi0gICAgLCBtX3VzZXJEcml2ZW5DaGFuZ2UoZmFsc2UpCi0gICAgLCBtX211
bHRpcGxlKGZhbHNlKQotICAgICwgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZShmYWxzZSkKLXsKLX0K
LQotU2VsZWN0RWxlbWVudERhdGE6On5TZWxlY3RFbGVtZW50RGF0YSgpCi17Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0RWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
NzIyMGU1NjYyMDY0MjBhYTU2ZTcxMThlMDJhNGI0YzM2ZTQ5ODQ4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RF
bGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHAvL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBTZWxlY3RFbGVt
ZW50X2gKLSNkZWZpbmUgU2VsZWN0RWxlbWVudF9oCi0KLSNpbmNsdWRlICJET01UaW1lU3RhbXAu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbGVtZW50OwotCi0vLyBIVE1MU2Vs
ZWN0RWxlbWVudCBob2xkIHRoaXMgc3RydWN0IGFzIG1lbWJlciB2YXJpYWJsZQotLy8gYW5kIHBh
c3MgaXQgdG8gdGhlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLgotY2xhc3MgU2VsZWN0RWxlbWVu
dERhdGEgewotcHVibGljOgotICAgIFNlbGVjdEVsZW1lbnREYXRhKCk7Ci0gICAgflNlbGVjdEVs
ZW1lbnREYXRhKCk7Ci0KLSAgICBib29sIG11bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gbV9tdWx0
aXBsZTsgfQotICAgIHZvaWQgc2V0TXVsdGlwbGUoYm9vbCB2YWx1ZSkgeyBtX211bHRpcGxlID0g
dmFsdWU7IH0KLQotICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAg
dm9pZCBzZXRTaXplKGludCB2YWx1ZSkgeyBtX3NpemUgPSB2YWx1ZTsgfQotCi0gICAgYm9vbCB1
c2VzTWVudUxpc3QoKSBjb25zdAotICAgIHsKLSNpZiBFTkFCTEUoTk9fTElTVEJPWF9SRU5ERVJJ
TkcpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuICFtX211bHRp
cGxlICYmIG1fc2l6ZSA8PSAxOwotI2VuZGlmCi0gICAgfQotCi0gICAgaW50IGxhc3RPbkNoYW5n
ZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0T25DaGFuZ2VJbmRleDsgfQotICAgIHZvaWQg
c2V0TGFzdE9uQ2hhbmdlSW5kZXgoaW50IHZhbHVlKSB7IG1fbGFzdE9uQ2hhbmdlSW5kZXggPSB2
YWx1ZTsgfQotCi0gICAgYm9vbCB1c2VyRHJpdmVuQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyRHJpdmVuQ2hhbmdlOyB9Ci0gICAgdm9pZCBzZXRVc2VyRHJpdmVuQ2hhbmdlKGJvb2wgdmFs
dWUpIHsgbV91c2VyRHJpdmVuQ2hhbmdlID0gdmFsdWU7IH0KLQotICAgIFZlY3Rvcjxib29sPiYg
bGFzdE9uQ2hhbmdlU2VsZWN0aW9uKCkgeyByZXR1cm4gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb247
IH0KLQotICAgIGJvb2wgYWN0aXZlU2VsZWN0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2ZVNlbGVjdGlvblN0YXRlOyB9Ci0gICAgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZShi
b29sIHZhbHVlKSB7IG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSB2YWx1ZTsgfQotCi0gICAgaW50
IGFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleDsgfQotICAgIHZvaWQgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5k
ZXgoaW50IHZhbHVlKSB7IG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPSB2YWx1ZTsgfQot
Ci0gICAgaW50IGFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVTZWxlY3Rpb25FbmRJbmRleDsgfQotICAgIHZvaWQgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgoaW50IHZhbHVlKSB7IG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXggPSB2YWx1ZTsgfQotCi0g
ICAgVmVjdG9yPGJvb2w+JiBjYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbigpIHsgcmV0dXJu
IG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb247IH0KLQotICAgIFVDaGFyIHJlcGVhdGlu
Z0NoYXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdGluZ0NoYXI7IH0KLSAgICB2b2lkIHNldFJl
cGVhdGluZ0NoYXIoY29uc3QgVUNoYXImIHZhbHVlKSB7IG1fcmVwZWF0aW5nQ2hhciA9IHZhbHVl
OyB9Ci0KLSAgICBET01UaW1lU3RhbXAgbGFzdENoYXJUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0Q2hhclRpbWU7IH0KLSAgICB2b2lkIHNldExhc3RDaGFyVGltZShjb25zdCBET01UaW1lU3Rh
bXAmIHZhbHVlKSB7IG1fbGFzdENoYXJUaW1lID0gdmFsdWU7IH0KLQotICAgIFN0cmluZyYgdHlw
ZWRTdHJpbmcoKSB7IHJldHVybiBtX3R5cGVkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRUeXBlZFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdHlwZWRTdHJpbmcgPSB2YWx1ZTsgfQotCi1w
cml2YXRlOgotICAgIHZvaWQgY2hlY2tMaXN0SXRlbXMoY29uc3QgRWxlbWVudCopIGNvbnN0Owot
Ci0gICAgVmVjdG9yPGJvb2w+IG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uOwotICAgIFZlY3Rvcjxi
b29sPiBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uOwotCi0gICAgLy8gSW5zdGFuY2Ug
dmFyaWFibGVzIGZvciB0eXBlLWFoZWFkIGZpbmQKLSAgICBET01UaW1lU3RhbXAgbV9sYXN0Q2hh
clRpbWU7Ci0gICAgU3RyaW5nIG1fdHlwZWRTdHJpbmc7Ci0gICAgVUNoYXIgbV9yZXBlYXRpbmdD
aGFyOwotCi0gICAgaW50IG1fc2l6ZTsKLSAgICBpbnQgbV9sYXN0T25DaGFuZ2VJbmRleDsKLSAg
ICBpbnQgbV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleDsKLSAgICBpbnQgbV9hY3RpdmVTZWxl
Y3Rpb25FbmRJbmRleDsKLQotICAgIGJvb2wgbV91c2VyRHJpdmVuQ2hhbmdlOwotICAgIGJvb2wg
bV9tdWx0aXBsZTsKLSAgICBib29sIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGU7Ci19OwotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA2
MTliMzVkZTRiMjI5M2UwMTU1NGJlNjcyMmVlZmE1OTliZTBiMmVkLi5kNjExMTRhNjliMTY0MzMw
OGY2ZmYyZWQ1NjVhM2JlZjQ4YTFjMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcApAQCAtNzYsNiArNzYsMTUgQEAgc3RhdGljIGNvbnN0IERPTVRpbWVTdGFt
cCB0eXBlQWhlYWRUaW1lb3V0ID0gMTAwMDsKIAogSFRNTFNlbGVjdEVsZW1lbnQ6OkhUTUxTZWxl
Y3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZSh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKKyAgICAsIG1fbGFzdENoYXJUaW1lKDAp
CisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fbGFzdE9uQ2hhbmdlSW5kZXgoLTEpCisgICAgLCBt
X2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKQorICAgICwgbV9hY3RpdmVTZWxlY3Rpb25F
bmRJbmRleCgtMSkKKyAgICAsIG1fcmVwZWF0aW5nQ2hhcigwKQorICAgICwgbV91c2VyRHJpdmVu
Q2hhbmdlKGZhbHNlKQorICAgICwgbV9tdWx0aXBsZShmYWxzZSkKKyAgICAsIG1fYWN0aXZlU2Vs
ZWN0aW9uU3RhdGUoZmFsc2UpCiAgICAgLCBtX3JlY2FsY0xpc3RJdGVtcyhmYWxzZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsKQEAgLTkxLDcgKzEwMCw3IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0
CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE11
bHRpcGxlLCAoInNlbGVjdC1tdWx0aXBsZSIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgc2VsZWN0T25lLCAoInNlbGVjdC1vbmUiKSk7Ci0gICAgcmV0dXJu
IG1fZGF0YS5tdWx0aXBsZSgpID8gc2VsZWN0TXVsdGlwbGUgOiBzZWxlY3RPbmU7CisgICAgcmV0
dXJuIG1fbXVsdGlwbGUgPyBzZWxlY3RNdWx0aXBsZSA6IHNlbGVjdE9uZTsKIH0KIAogdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6ZGVzZWxlY3RJdGVtcyhIVE1MT3B0aW9uRWxlbWVudCogZXhjbHVk
ZUVsZW1lbnQpCkBAIC0xMDksNyArMTE4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0
U2VsZWN0ZWRJbmRleEJ5VXNlcihpbnQgb3B0aW9uSW5kZXgsIGJvb2wgZGVzZWxlY3QsIGIKIHsK
ICAgICAvLyBMaXN0IGJveCBzZWxlY3RzIGNhbiBmaXJlIG9uY2hhbmdlIGV2ZW50cyB0aHJvdWdo
IHVzZXIgaW50ZXJhY3Rpb24sIHN1Y2ggYXMKICAgICAvLyBtb3VzZWRvd24gZXZlbnRzLiBUaGlz
IGFsbG93cyB0aGF0IHNhbWUgYmVoYXZpb3IgcHJvZ3JhbW1hdGljYWxseS4KLSAgICBpZiAoIW1f
ZGF0YS51c2VzTWVudUxpc3QoKSkgeworICAgIGlmICghdXNlc01lbnVMaXN0KCkpIHsKICAgICAg
ICAgdXBkYXRlU2VsZWN0ZWRTdGF0ZShvcHRpb25JbmRleCwgYWxsb3dNdWx0aXBsZVNlbGVjdGlv
biwgZmFsc2UpOwogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICAgICAgaWYg
KGZpcmVPbkNoYW5nZU5vdykKQEAgLTE3NiwxNSArMTg1LDE1IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Omxpc3RCb3hTZWxlY3RJdGVtKGludCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBs
eVNlbGVjCiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZlU2VsZWN0aW9uU3RhcnRMaXN0
SW5kZXgoKSBjb25zdAogewotICAgIGlmIChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5k
ZXgoKSA+PSAwKQotICAgICAgICByZXR1cm4gbV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hvcklu
ZGV4KCk7CisgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPj0gMCkKKyAgICAg
ICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXg7CiAgICAgcmV0dXJuIG9wdGlv
blRvTGlzdEluZGV4KHNlbGVjdGVkSW5kZXgoKSk7CiB9CiAKIGludCBIVE1MU2VsZWN0RWxlbWVu
dDo6YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KCkgY29uc3QKIHsKLSAgICBpZiAobV9kYXRh
LmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkgPj0gMCkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpOworICAgIGlmIChtX2FjdGl2ZVNlbGVjdGlvbkVuZElu
ZGV4ID49IDApCisgICAgICAgIHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4OwogICAg
IHJldHVybiBsYXN0U2VsZWN0ZWRMaXN0SW5kZXgoKTsKIH0KIApAQCAtMjUwLDcgKzI1OSw3IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyAmdmFsdWUpCiB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0
dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzaXplQXR0cikgewotICAgICAgICBpbnQg
b2xkU2l6ZSA9IG1fZGF0YS5zaXplKCk7CisgICAgICAgIGludCBvbGRTaXplID0gbV9zaXplOwog
ICAgICAgICAvLyBTZXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSB0byBhIG51bWJlci4KICAgICAgICAg
Ly8gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgdGhlIHN0eWxlIHJ1bGVzIGZvciB0aGlzIGF0dHJp
YnV0ZSBjYW4gZGV0ZXJtaW5lIHRoZSBhcHBlYXJhbmNlIHByb3BlcnR5LgogICAgICAgICBpbnQg
c2l6ZSA9IGF0dHItPnZhbHVlKCkudG9JbnQoKTsKQEAgLTI2Myw5ICsyNzIsOSBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAg
ICAgICAgIGlmIChvbGRTaXplICE9IHNpemUpCiAgICAgICAgICAgICByZWNhbGNMaXN0SXRlbXNJ
Zk5lZWRlZCgpOwogCi0gICAgICAgIG1fZGF0YS5zZXRTaXplKHNpemUpOworICAgICAgICBtX3Np
emUgPSBzaXplOwogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKLSAgICAgICAgaWYg
KG1fZGF0YS5zaXplKCkgIT0gb2xkU2l6ZSAmJiBhdHRhY2hlZCgpKSB7CisgICAgICAgIGlmICht
X3NpemUgIT0gb2xkU2l6ZSAmJiBhdHRhY2hlZCgpKSB7CiAgICAgICAgICAgICByZWF0dGFjaCgp
OwogICAgICAgICAgICAgc2V0UmVjYWxjTGlzdEl0ZW1zKCk7CiAgICAgICAgIH0KQEAgLTI5OCwx
MiArMzA3LDEyIEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBj
b25zdAogCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RBbGwoKSBjb25zdAogewot
ICAgIHJldHVybiAhbV9kYXRhLnVzZXNNZW51TGlzdCgpOyAKKyAgICByZXR1cm4gIXVzZXNNZW51
TGlzdCgpOyAKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgaWYgKG1fZGF0
YS51c2VzTWVudUxpc3QoKSkKKyAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJNZW51TGlzdCh0aGlzKTsKICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyTGlzdEJveCh0aGlzKTsKIH0KQEAgLTM4Niw3ICszOTUsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50
KiBvcHRpb24sIEV4YwogICAgIGlmICghZWMpIHsKICAgICAgICAgYWRkKG9wdGlvbiwgYmVmb3Jl
LCBlYyk7CiAgICAgICAgIGlmIChkaWZmID49IDAgJiYgb3B0aW9uLT5zZWxlY3RlZCgpKQotICAg
ICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChpbmRleCwgIW1fZGF0YS5tdWx0aXBsZSgpKTsKKyAg
ICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgsICFtX211bHRpcGxlKTsKICAgICB9CiB9
CiAKQEAgLTUwMCwxNSArNTA5LDE1IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVj
dGFibGVMaXN0SW5kZXhQYWdlQXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVjCiAKIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdEFsbCgpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGEudXNl
c01lbnVMaXN0KCkpOwotICAgIGlmICghcmVuZGVyZXIoKSB8fCAhbV9kYXRhLm11bHRpcGxlKCkp
CisgICAgQVNTRVJUKCF1c2VzTWVudUxpc3QoKSk7CisgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFt
X211bHRpcGxlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTYXZlIHRoZSBzZWxlY3Rpb24g
c28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0QWxsIHNlbGVjdGlvbgogICAg
IC8vIHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cwogICAgIHNhdmVMYXN0U2VsZWN0aW9u
KCk7CiAKLSAgICBtX2RhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUodHJ1ZSk7CisgICAgbV9h
Y3RpdmVTZWxlY3Rpb25TdGF0ZSA9IHRydWU7CiAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9y
SW5kZXgobmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoLTEpKTsKICAgICBzZXRBY3RpdmVTZWxlY3Rp
b25FbmRJbmRleChwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoLTEpKTsKIApAQCAtNTE5LDUw
ICs1MjgsNDYgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKCkKIAogdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24oKQogewotICAgIGlmIChtX2RhdGEu
dXNlc01lbnVMaXN0KCkpIHsKLSAgICAgICAgbV9kYXRhLnNldExhc3RPbkNoYW5nZUluZGV4KHNl
bGVjdGVkSW5kZXgoKSk7CisgICAgaWYgKHVzZXNNZW51TGlzdCgpKSB7CisgICAgICAgIG1fbGFz
dE9uQ2hhbmdlSW5kZXggPSBzZWxlY3RlZEluZGV4KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBWZWN0b3I8Ym9vbD4mIGxhc3RPbkNoYW5nZVNlbGVjdGlvbiA9IG1fZGF0YS5sYXN0
T25DaGFuZ2VTZWxlY3Rpb24oKTsgCi0gICAgbGFzdE9uQ2hhbmdlU2VsZWN0aW9uLmNsZWFyKCk7
Ci0KKyAgICBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbi5jbGVhcigpOwogICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwotICAgICAgICBsYXN0T25DaGFu
Z2VTZWxlY3Rpb24uYXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0
ZWQoKSk7CisgICAgICAgIG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uLmFwcGVuZChvcHRpb25FbGVt
ZW50ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpOwogICAgIH0KIH0KIAogdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoaW50IGluZGV4KQog
ewotICAgIG1fZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChpbmRleCk7CisgICAg
bV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCA9IGluZGV4OwogCiAgICAgLy8gQ2FjaGUgdGhl
IHNlbGVjdGlvbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdG9yZSB0aGUgb2xkIHNlbGVjdGlvbiBhcyB0
aGUgbmV3CiAgICAgLy8gc2VsZWN0aW9uIHBpdm90cyBhcm91bmQgdGhpcyBhbmNob3IgaW5kZXgK
LSAgICBWZWN0b3I8Ym9vbD4mIGNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uID0gbV9kYXRh
LmNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uKCk7IAotICAgIGNhY2hlZFN0YXRlRm9yQWN0
aXZlU2VsZWN0aW9uLmNsZWFyKCk7CisgICAgbV9jYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlv
bi5jbGVhcigpOwogCiAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRl
bXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChp
dGVtc1tpXSk7Ci0gICAgICAgIGNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uLmFwcGVuZChv
cHRpb25FbGVtZW50ICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpOworICAgICAgICBtX2Nh
Y2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uLmFwcGVuZChvcHRpb25FbGVtZW50ICYmIG9wdGlv
bkVsZW1lbnQtPnNlbGVjdGVkKCkpOwogICAgIH0KIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6c2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoaW50IGluZGV4KQogewotICAgIG1fZGF0YS5z
ZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpbmRleCk7CisgICAgbV9hY3RpdmVTZWxlY3Rpb25F
bmRJbmRleCA9IGluZGV4OwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0
Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiB7Ci0gICAgQVNTRVJUKHJl
bmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpIHx8IG1fZGF0YS5tdWx0aXBsZSgp
KSk7Ci0gICAgQVNTRVJUKCFsaXN0SXRlbXMoKS5zaXplKCkgfHwgbV9kYXRhLmFjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4KCkgPj0gMCk7CisgICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRl
cmVyKCktPmlzTGlzdEJveCgpIHx8IG1fbXVsdGlwbGUpKTsKKyAgICBBU1NFUlQoIWxpc3RJdGVt
cygpLnNpemUoKSB8fCBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4ID49IDApOwogCi0gICAg
dW5zaWduZWQgc3RhcnQgPSBtaW4obV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCks
IG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKLSAgICB1bnNpZ25lZCBlbmQgPSBt
YXgobV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCksIG1fZGF0YS5hY3RpdmVTZWxl
Y3Rpb25FbmRJbmRleCgpKTsKLSAgICBWZWN0b3I8Ym9vbD4mIGNhY2hlZFN0YXRlRm9yQWN0aXZl
U2VsZWN0aW9uID0gbV9kYXRhLmNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uKCk7CisgICAg
dW5zaWduZWQgc3RhcnQgPSBtaW4obV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3Rp
dmVTZWxlY3Rpb25FbmRJbmRleCk7CisgICAgdW5zaWduZWQgZW5kID0gbWF4KG1fYWN0aXZlU2Vs
ZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpOwogCiAgICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKQEAgLTU3MSwxMSArNTc2LDExIEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNl
bGVjdE90aGVyT3B0aW9ucykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChp
ID49IHN0YXJ0ICYmIGkgPD0gZW5kKQotICAgICAgICAgICAgb3B0aW9uRWxlbWVudC0+c2V0U2Vs
ZWN0ZWRTdGF0ZShtX2RhdGEuYWN0aXZlU2VsZWN0aW9uU3RhdGUoKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGRlc2VsZWN0T3RoZXJPcHRpb25zIHx8IGkgPj0gY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24uc2l6ZSgpKQorICAgICAgICAgICAgb3B0aW9uRWxlbWVudC0+c2V0U2VsZWN0ZWRTdGF0
ZShtX2FjdGl2ZVNlbGVjdGlvblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoZGVzZWxlY3RPdGhl
ck9wdGlvbnMgfHwgaSA+PSBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uLnNpemUoKSkK
ICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQtPnNldFNlbGVjdGVkU3RhdGUoZmFsc2UpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBvcHRpb25FbGVtZW50LT5zZXRTZWxlY3RlZFN0YXRlKGNh
Y2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uW2ldKTsKKyAgICAgICAgICAgIG9wdGlvbkVsZW1l
bnQtPnNldFNlbGVjdGVkU3RhdGUobV9jYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbltpXSk7
CiAgICAgfQogCiAgICAgc2Nyb2xsVG9TZWxlY3Rpb24oKTsKQEAgLTU4NCwxNCArNTg5LDEzIEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNl
bGVjdE90aGVyT3B0aW9ucykKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hh
bmdlKCkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YS51c2VzTWVudUxpc3QoKSB8fCBtX2RhdGEubXVs
dGlwbGUoKSk7CisgICAgQVNTRVJUKCF1c2VzTWVudUxpc3QoKSB8fCBtX211bHRpcGxlKTsKIAot
ICAgIFZlY3Rvcjxib29sPiYgbGFzdE9uQ2hhbmdlU2VsZWN0aW9uID0gbV9kYXRhLmxhc3RPbkNo
YW5nZVNlbGVjdGlvbigpOyAKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOwogCiAgICAgLy8gSWYgdGhlIGNhY2hlZCBzZWxlY3Rpb24gbGlzdCBpcyBlbXB0
eSwgb3IgdGhlIHNpemUgaGFzIGNoYW5nZWQsIHRoZW4gZmlyZQogICAgIC8vIGRpc3BhdGNoRm9y
bUNvbnRyb2xDaGFuZ2VFdmVudCwgYW5kIHJldHVybiBlYXJseS4KLSAgICBpZiAobGFzdE9uQ2hh
bmdlU2VsZWN0aW9uLmlzRW1wdHkoKSB8fCBsYXN0T25DaGFuZ2VTZWxlY3Rpb24uc2l6ZSgpICE9
IGl0ZW1zLnNpemUoKSkgeworICAgIGlmIChtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbi5pc0VtcHR5
KCkgfHwgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uc2l6ZSgpICE9IGl0ZW1zLnNpemUoKSkgewog
ICAgICAgICBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTYwMSw5ICs2MDUsOSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0
Qm94T25DaGFuZ2UoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7
ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25F
bGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgYm9vbCBzZWxlY3RlZCA9IG9wdGlvbkVsZW1lbnQg
JiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkICE9IGxh
c3RPbkNoYW5nZVNlbGVjdGlvbltpXSkKKyAgICAgICAgaWYgKHNlbGVjdGVkICE9IG1fbGFzdE9u
Q2hhbmdlU2VsZWN0aW9uW2ldKQogICAgICAgICAgICAgZmlyZU9uQ2hhbmdlID0gdHJ1ZTsKLSAg
ICAgICAgbGFzdE9uQ2hhbmdlU2VsZWN0aW9uW2ldID0gc2VsZWN0ZWQ7CisgICAgICAgIG1fbGFz
dE9uQ2hhbmdlU2VsZWN0aW9uW2ldID0gc2VsZWN0ZWQ7CiAgICAgfQogCiAgICAgaWYgKGZpcmVP
bkNoYW5nZSkKQEAgLTYxMiwxOSArNjE2LDE5IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxp
c3RCb3hPbkNoYW5nZSgpCiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0T25DaGFu
Z2UoKQogewotICAgIEFTU0VSVChtX2RhdGEudXNlc01lbnVMaXN0KCkpOworICAgIEFTU0VSVCh1
c2VzTWVudUxpc3QoKSk7CiAKICAgICBpbnQgc2VsZWN0ZWQgPSBzZWxlY3RlZEluZGV4KCk7Ci0g
ICAgaWYgKG1fZGF0YS5sYXN0T25DaGFuZ2VJbmRleCgpICE9IHNlbGVjdGVkICYmIG1fZGF0YS51
c2VyRHJpdmVuQ2hhbmdlKCkpIHsKLSAgICAgICAgbV9kYXRhLnNldExhc3RPbkNoYW5nZUluZGV4
KHNlbGVjdGVkKTsKLSAgICAgICAgbV9kYXRhLnNldFVzZXJEcml2ZW5DaGFuZ2UoZmFsc2UpOwor
ICAgIGlmIChtX2xhc3RPbkNoYW5nZUluZGV4ICE9IHNlbGVjdGVkICYmIG1fdXNlckRyaXZlbkNo
YW5nZSkgeworICAgICAgICBtX2xhc3RPbkNoYW5nZUluZGV4ID0gc2VsZWN0ZWQ7CisgICAgICAg
IG1fdXNlckRyaXZlbkNoYW5nZSA9IGZhbHNlOwogICAgICAgICBkaXNwYXRjaEZvcm1Db250cm9s
Q2hhbmdlRXZlbnQoKTsKICAgICB9CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNjcm9s
bFRvU2VsZWN0aW9uKCkKIHsKLSAgICBpZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgIGlm
ICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpAQCAtNjM0LDcgKzYzOCw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKCkKIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpCiB7CiAgICAgaWYgKFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChtX2RhdGEu
dXNlc01lbnVMaXN0KCkpCisgICAgICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgICAg
IHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0
aW9uc0NoYW5nZWQodHJ1ZSk7CkBAIC02NjQsNyArNjY4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKCkKIHsKICAgICBtX3JlY2FsY0xpc3RJdGVtcyA9IHRy
dWU7CiAgICAgLy8gTWFudWFsIHNlbGVjdGlvbiBhbmNob3IgaXMgcmVzZXQgd2hlbiBtYW5pcHVs
YXRpbmcgdGhlIHNlbGVjdCBwcm9ncmFtbWF0aWNhbGx5LgotICAgIG1fZGF0YS5zZXRBY3RpdmVT
ZWxlY3Rpb25BbmNob3JJbmRleCgtMSk7CisgICAgbV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eCA9IC0xOwogICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpOwogICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKQEAgLTcwMCw4ICs3MDQsOCBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChib29sIHVw
ZGF0ZVNlbGVjdGVkU3RhdGVzKQogICAgICAgICBpZiAoT3B0aW9uRWxlbWVudCogb3B0aW9uRWxl
bWVudCA9IHRvT3B0aW9uRWxlbWVudChjdXJyZW50KSkgewogICAgICAgICAgICAgbV9saXN0SXRl
bXMuYXBwZW5kKGN1cnJlbnQpOwogCi0gICAgICAgICAgICBpZiAodXBkYXRlU2VsZWN0ZWRTdGF0
ZXMgJiYgIW1fZGF0YS5tdWx0aXBsZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNl
bGVjdGVkICYmIChtX2RhdGEuc2l6ZSgpIDw9IDEgfHwgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQo
KSkpIHsKKyAgICAgICAgICAgIGlmICh1cGRhdGVTZWxlY3RlZFN0YXRlcyAmJiAhbV9tdWx0aXBs
ZSkgeworICAgICAgICAgICAgICAgIGlmICghZm91bmRTZWxlY3RlZCAmJiAobV9zaXplIDw9IDEg
fHwgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgZm91
bmRTZWxlY3RlZCA9IG9wdGlvbkVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2Vs
ZWN0ZWQtPnNldFNlbGVjdGVkU3RhdGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChmb3VuZFNlbGVjdGVkICYmIG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpIHsKQEAgLTc0Myw5
ICs3NDcsOSBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgoKSBjb25zdAog
CiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4SW50ZXJuYWwoaW50IG9w
dGlvbkluZGV4LCBib29sIGRlc2VsZWN0LCBib29sIGZpcmVPbkNoYW5nZU5vdywgYm9vbCB1c2Vy
RHJpdmVuQ2hhbmdlKQogewotICAgIGlmIChvcHRpb25JbmRleCA9PSAtMSAmJiAhZGVzZWxlY3Qg
JiYgIW1fZGF0YS5tdWx0aXBsZSgpKQorICAgIGlmIChvcHRpb25JbmRleCA9PSAtMSAmJiAhZGVz
ZWxlY3QgJiYgIW1fbXVsdGlwbGUpCiAgICAgICAgIG9wdGlvbkluZGV4ID0gbmV4dFNlbGVjdGFi
bGVMaXN0SW5kZXgoLTEpOwotICAgIGlmICghbV9kYXRhLm11bHRpcGxlKCkpCisgICAgaWYgKCFt
X211bHRpcGxlKQogICAgICAgICBkZXNlbGVjdCA9IHRydWU7CiAKICAgICBjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwpAQCAtNzU0LDkgKzc1OCw5IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5k
ZXgsIGJvb2wgZGVzZWxlY3QsCiAgICAgRWxlbWVudCogZXhjbHVkZUVsZW1lbnQgPSAwOwogICAg
IGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gKGxpc3RJbmRleCA+PSAwID8gdG9P
cHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJbmRleF0pIDogMCkpIHsKICAgICAgICAgZXhjbHVkZUVs
ZW1lbnQgPSBpdGVtc1tsaXN0SW5kZXhdOwotICAgICAgICBpZiAobV9kYXRhLmFjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4KCkgPCAwIHx8IGRlc2VsZWN0KQorICAgICAgICBpZiAobV9hY3RpdmVT
ZWxlY3Rpb25BbmNob3JJbmRleCA8IDAgfHwgZGVzZWxlY3QpCiAgICAgICAgICAgICBzZXRBY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleChsaXN0SW5kZXgpOwotICAgICAgICBpZiAobV9kYXRhLmFj
dGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkgPCAwIHx8IGRlc2VsZWN0KQorICAgICAgICBpZiAobV9h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCA8IDAgfHwgZGVzZWxlY3QpCiAgICAgICAgICAgICBzZXRB
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleChsaXN0SW5kZXgpOwogICAgICAgICBvcHRpb25FbGVtZW50
LT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogICAgIH0KQEAgLTc3MSwxMyArNzc1LDEzIEBAIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9u
SW5kZXgsIGJvb2wgZGVzZWxlY3QsCiAgICAgc2Nyb2xsVG9TZWxlY3Rpb24oKTsKIAogICAgIC8v
IFRoaXMgb25seSBnZXRzIGNhbGxlZCB3aXRoIGZpcmVPbkNoYW5nZU5vdyBmb3IgbWVudSBsaXN0
cy4gCi0gICAgaWYgKG1fZGF0YS51c2VzTWVudUxpc3QoKSkgewotICAgICAgICBtX2RhdGEuc2V0
VXNlckRyaXZlbkNoYW5nZSh1c2VyRHJpdmVuQ2hhbmdlKTsKKyAgICBpZiAodXNlc01lbnVMaXN0
KCkpIHsKKyAgICAgICAgbV91c2VyRHJpdmVuQ2hhbmdlID0gdXNlckRyaXZlbkNoYW5nZTsKICAg
ICAgICAgaWYgKGZpcmVPbkNoYW5nZU5vdykKICAgICAgICAgICAgIG1lbnVMaXN0T25DaGFuZ2Uo
KTsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICAgICAgaWYgKG1fZGF0YS51c2VzTWVudUxp
c3QoKSkKKyAgICAgICAgICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgICAgICAgICB0
b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+ZGlkU2V0U2VsZWN0ZWRJbmRleChsaXN0SW5kZXgp
OwogICAgICAgICAgICAgZWxzZSBpZiAocmVuZGVyZXItPmlzTGlzdEJveCgpKQogICAgICAgICAg
ICAgICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlciktPnNlbGVjdGlvbkNoYW5nZWQoKTsKQEAg
LTgyOCw3ICs4MzIsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQoUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSkKIHsKICAgICAvLyBTYXZlIHRoZSBz
ZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uIHdoZW4K
ICAgICAvLyBkaXNwYXRjaGluZyBjaGFuZ2UgZXZlbnRzIGR1cmluZyBibHVyIGV2ZW50IGRpc3Bh
dGNoYWwKLSAgICBpZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgIGlmICh1c2VzTWVudUxp
c3QoKSkKICAgICAgICAgc2F2ZUxhc3RTZWxlY3Rpb24oKTsKICAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQob2xkRm9jdXNlZE5vZGUpOwogfQpA
QCAtODM4LDcgKzg0Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2
ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCiAgICAgLy8gV2Ugb25seSBuZWVk
IHRvIGZpcmUgY2hhbmdlIGV2ZW50cyBoZXJlIGZvciBtZW51IGxpc3RzLCBiZWNhdXNlIHdlIGZp
cmUKICAgICAvLyBjaGFuZ2UgZXZlbnRzIGZvciBsaXN0IGJveGVzIHdoZW5ldmVyIHRoZSBzZWxl
Y3Rpb24gY2hhbmdlIGlzIGFjdHVhbGx5IG1hZGUuCiAgICAgLy8gVGhpcyBtYXRjaGVzIG90aGVy
IGJyb3dzZXJzJyBiZWhhdmlvci4KLSAgICBpZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAg
IGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgbWVudUxpc3RPbkNoYW5nZSgpOwogICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KG5ld0ZvY3Vz
ZWROb2RlKTsKIH0KQEAgLTg5MCwxMCArODk0LDEwIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYgc3RhdGUpCiAKIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlKiBh
dHRyaWJ1dGUpCiB7Ci0gICAgYm9vbCBvbGRVc2VzTWVudUxpc3QgPSBtX2RhdGEudXNlc01lbnVM
aXN0KCk7Ci0gICAgbV9kYXRhLnNldE11bHRpcGxlKCFhdHRyaWJ1dGUtPmlzTnVsbCgpKTsKKyAg
ICBib29sIG9sZFVzZXNNZW51TGlzdCA9IHVzZXNNZW51TGlzdCgpOworICAgIG1fbXVsdGlwbGUg
PSAhYXR0cmlidXRlLT5pc051bGwoKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwotICAgIGlmIChv
bGRVc2VzTWVudUxpc3QgIT0gbV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgIGlmIChvbGRVc2Vz
TWVudUxpc3QgIT0gdXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHJlYXR0YWNoSWZBdHRhY2hlZCgp
OwogfQogCkBAIC05MzIsNyArOTM2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVzZXQo
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGl0ZW1zW2ldLT5mYXN0SGFz
QXR0cmlidXRlKHNlbGVjdGVkQXR0cikpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlv
biAmJiAhbV9kYXRhLm11bHRpcGxlKCkpCisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24g
JiYgIW1fbXVsdGlwbGUpCiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24tPnNldFNlbGVj
dGVkU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgb3B0aW9uRWxlbWVudC0+c2V0U2VsZWN0ZWRT
dGF0ZSh0cnVlKTsKICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uID0gb3B0aW9uRWxlbWVudDsK
QEAgLTk0Myw3ICs5NDcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCgpCiAgICAg
ICAgICAgICBmaXJzdE9wdGlvbiA9IG9wdGlvbkVsZW1lbnQ7CiAgICAgfQogCi0gICAgaWYgKCFz
ZWxlY3RlZE9wdGlvbiAmJiBmaXJzdE9wdGlvbiAmJiAhbV9kYXRhLm11bHRpcGxlKCkgJiYgbV9k
YXRhLnNpemUoKSA8PSAxKQorICAgIGlmICghc2VsZWN0ZWRPcHRpb24gJiYgZmlyc3RPcHRpb24g
JiYgIW1fbXVsdGlwbGUgJiYgbV9zaXplIDw9IDEpCiAgICAgICAgIGZpcnN0T3B0aW9uLT5zZXRT
ZWxlY3RlZFN0YXRlKHRydWUpOwogCiAgICAgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCk7
CkBAIC05OTMsNyArOTk3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgLy8gZnJvbSB0aGUgc2VsZWN0
IGVsZW1lbnQgd2hlbiB0aGUgdXNlciBoaXRzIGFueSBvZiB0aGUgYXJyb3cga2V5cywKICAgICAg
ICAgLy8gaW5zdGVhZCBvZiBjaGFuZ2luZyB0aGUgc2VsZWN0aW9uLgogICAgICAgICBpZiAoaXNT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKLSAgICAgICAg
ICAgIGlmICghbV9kYXRhLmFjdGl2ZVNlbGVjdGlvblN0YXRlKCkpCisgICAgICAgICAgICBpZiAo
IW1fYWN0aXZlU2VsZWN0aW9uU3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTEwMzUsNyArMTAzOSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVM
aXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICAgICAgaWYgKGtleUNv
ZGUgPT0gJyAnICYmIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50KCktPmZyYW1l
KCkpKSB7CiAgICAgICAgICAgICAvLyBVc2Ugc3BhY2UgdG8gdG9nZ2xlIGFycm93IGtleSBoYW5k
bGluZyBmb3Igc2VsZWN0aW9uIGNoYW5nZSBvciBzcGF0aWFsIG5hdmlnYXRpb24uCi0gICAgICAg
ICAgICBtX2RhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUoIW1fZGF0YS5hY3RpdmVTZWxlY3Rp
b25TdGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSAhbV9hY3Rp
dmVTZWxlY3Rpb25TdGF0ZTsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTIyLDEwICsxMTI2LDEwIEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRl
eCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlmCiAgICAgLy8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50
cyBkdXJpbmcgbW91c2V1cCwgb3IgYWZ0ZXIgYXV0b3Njcm9sbCBmaW5pc2hlcy4KICAgICBzYXZl
TGFzdFNlbGVjdGlvbigpOwogCi0gICAgbV9kYXRhLnNldEFjdGl2ZVNlbGVjdGlvblN0YXRlKHRy
dWUpOworICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSB0cnVlOwogCi0gICAgYm9vbCBzaGlm
dFNlbGVjdCA9IG1fZGF0YS5tdWx0aXBsZSgpICYmIHNoaWZ0OwotICAgIGJvb2wgbXVsdGlTZWxl
Y3QgPSBtX2RhdGEubXVsdGlwbGUoKSAmJiBtdWx0aSAmJiAhc2hpZnQ7CisgICAgYm9vbCBzaGlm
dFNlbGVjdCA9IG1fbXVsdGlwbGUgJiYgc2hpZnQ7CisgICAgYm9vbCBtdWx0aVNlbGVjdCA9IG1f
bXVsdGlwbGUgJiYgbXVsdGkgJiYgIXNoaWZ0OwogCiAgICAgRWxlbWVudCogY2xpY2tlZEVsZW1l
bnQgPSBsaXN0SXRlbXMoKVtsaXN0SW5kZXhdOwogICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9
IHRvT3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCk7CkBAIC0xMTMzLDkgKzExMzcsOSBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgs
IGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIHdoZXRoZXIg
YW4gYWN0aXZlIHNlbGVjdGlvbiAobGlrZSBkdXJpbmcgZHJhZwogICAgICAgICAvLyBzZWxlY3Rp
b24pLCBzaG91bGQgc2VsZWN0IG9yIGRlc2VsZWN0CiAgICAgICAgIGlmIChvcHRpb24tPnNlbGVj
dGVkKCkgJiYgbXVsdGkpCi0gICAgICAgICAgICBtX2RhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3Rh
dGUoZmFsc2UpOworICAgICAgICAgICAgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSA9IGZhbHNlOwog
Ci0gICAgICAgIGlmICghbV9kYXRhLmFjdGl2ZVNlbGVjdGlvblN0YXRlKCkpCisgICAgICAgIGlm
ICghbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSkKICAgICAgICAgICAgIG9wdGlvbi0+c2V0U2VsZWN0
ZWRTdGF0ZShmYWxzZSk7CiAgICAgfQogCkBAIC0xMTQ3LDcgKzExNTEsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgsIGJvb2wgbXVs
dGksIGJvb2wgc2hpZgogCiAgICAgLy8gSWYgdGhlIGFuY2hvciBoYXNuJ3QgYmVlbiBzZXQsIGFu
ZCB3ZSdyZSBkb2luZyBhIHNpbmdsZSBzZWxlY3Rpb24gb3IgYQogICAgIC8vIHNoaWZ0IHNlbGVj
dGlvbiwgdGhlbiBpbml0aWFsaXplIHRoZSBhbmNob3IgdG8gdGhlIGZpcnN0IHNlbGVjdGVkIGlu
ZGV4LgotICAgIGlmIChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA8IDAgJiYg
IW11bHRpU2VsZWN0KQorICAgIGlmIChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4IDwgMCAm
JiAhbXVsdGlTZWxlY3QpCiAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KHNl
bGVjdGVkSW5kZXgoKSk7CiAKICAgICAvLyBTZXQgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiB0aGUg
Y2xpY2tlZCBvcHRpb24KQEAgLTExNTgsNyArMTE2Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBtdWx0aSwgYm9vbCBz
aGlmCiAgICAgLy8gd2UncmUgZG9pbmcgYSBzaW5nbGUgc2VsZWN0aW9uLCBvciBhIG11bHRpcGxl
IHNlbGVjdGlvbiAodXNpbmcgY21kIG9yCiAgICAgLy8gY3RybCksIHRoZW4gaW5pdGlhbGl6ZSB0
aGUgYW5jaG9yIGluZGV4IHRvIHRoZSBsaXN0SW5kZXggdGhhdCBqdXN0IGdvdAogICAgIC8vIGNs
aWNrZWQuCi0gICAgaWYgKG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCgpIDwgMCB8
fCAhc2hpZnRTZWxlY3QpCisgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPCAw
IHx8ICFzaGlmdFNlbGVjdCkKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgo
bGlzdEluZGV4KTsKIAogICAgIHNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KGxpc3RJbmRleCk7
CkBAIC0xMjAyLDcgKzEyMDYsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICAgICAgYm9vbCBoYW5kbGVkID0g
ZmFsc2U7CiAgICAgICAgIGludCBlbmRJbmRleCA9IDA7Ci0gICAgICAgIGlmIChtX2RhdGEuYWN0
aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSA8IDApIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlU2VsZWN0
aW9uRW5kSW5kZXggPCAwKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBlbmQgaW5k
ZXgKICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlm
aWVyID09ICJQYWdlRG93biIpIHsKICAgICAgICAgICAgICAgICBpbnQgc3RhcnRJbmRleCA9IGxh
c3RTZWxlY3RlZExpc3RJbmRleCgpOwpAQCAtMTIyMiwxNiArMTIyNiwxNiBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZCBpbmRleCBiYXNlZCBv
biB0aGUgY3VycmVudCBlbmQgaW5kZXgKICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09
ICJEb3duIikgewotICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0
SW5kZXgobV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkpOworICAgICAgICAgICAgICAg
IGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgobV9hY3RpdmVTZWxlY3Rpb25FbmRJ
bmRleCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikgewotICAgICAgICAgICAgICAgIGVuZEluZGV4
ID0gcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJ
bmRleCgpKTsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IHByZXZpb3VzU2VsZWN0YWJsZUxp
c3RJbmRleChtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKICAgICAgICAgICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFn
ZURvd24iKSB7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJ
bmRleFBhZ2VBd2F5KG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpLCBTa2lwRm9yd2Fy
ZHMpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQ
YWdlQXdheShtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4LCBTa2lwRm9yd2FyZHMpOwogICAgICAg
ICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVu
dGlmaWVyID09ICJQYWdlVXAiKSB7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2Vs
ZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgp
LCBTa2lwQmFja3dhcmRzKTsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3Rh
YmxlTGlzdEluZGV4UGFnZUF3YXkobV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCwgU2tpcEJhY2t3
YXJkcyk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTEyNDUsNyArMTI0OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxp
c3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgICAgICBpZiAoaXNT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgICAg
ICAvLyBDaGVjayBpZiB0aGUgc2VsZWN0aW9uIG1vdmVzIHRvIHRoZSBib3VuZGFyeS4KLSAgICAg
ICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJZGVudGlmaWVyID09ICJS
aWdodCIgfHwgKChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJV
cCIpICYmIGVuZEluZGV4ID09IG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKSkKKyAg
ICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJZGVudGlmaWVyID09
ICJSaWdodCIgfHwgKChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09
ICJVcCIpICYmIGVuZEluZGV4ID09IG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoZW5kSW5kZXggPj0gMCAmJiBoYW5kbGVk
KSB7CkBAIC0xMjU3LDE2ICsxMjYxLDE2IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RC
b3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQobGlzdEl0ZW1zLCAhbGlzdEl0ZW1zLnNpemUoKSB8fCAoZW5kSW5kZXggPj0gMCAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kSW5kZXgpIDwgbGlzdEl0ZW1zLnNpemUoKSkpOwogICAg
ICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoZW5kSW5kZXgpOwogCi0gICAgICAg
ICAgICBib29sIHNlbGVjdE5ld0l0ZW0gPSAhbV9kYXRhLm11bHRpcGxlKCkgfHwgc3RhdGljX2Nh
c3Q8S2V5Ym9hcmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKSB8fCAhaXNTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgICAgICAgICBib29sIHNlbGVj
dE5ld0l0ZW0gPSAhbV9tdWx0aXBsZSB8fCBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZl
bnQpLT5zaGlmdEtleSgpIHx8ICFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChkb2N1bWVudCgp
LT5mcmFtZSgpKTsKICAgICAgICAgICAgIGlmIChzZWxlY3ROZXdJdGVtKQotICAgICAgICAgICAg
ICAgIG1fZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0cnVlKTsKKyAgICAgICAgICAgICAg
ICBtX2FjdGl2ZVNlbGVjdGlvblN0YXRlID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIElmIHRoZSBh
bmNob3IgaXMgdW5pdGlhbGl6ZWQsIG9yIGlmIHdlJ3JlIGdvaW5nIHRvIGRlc2VsZWN0IGFsbAog
ICAgICAgICAgICAgLy8gb3RoZXIgb3B0aW9ucywgdGhlbiBzZXQgdGhlIGFuY2hvciBpbmRleCBl
cXVhbCB0byB0aGUgZW5kIGluZGV4LgotICAgICAgICAgICAgYm9vbCBkZXNlbGVjdE90aGVycyA9
ICFtX2RhdGEubXVsdGlwbGUoKSB8fCAoIXN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVu
dCktPnNoaWZ0S2V5KCkgJiYgc2VsZWN0TmV3SXRlbSk7Ci0gICAgICAgICAgICBpZiAobV9kYXRh
LmFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCkgPCAwIHx8IGRlc2VsZWN0T3RoZXJzKSB7Cisg
ICAgICAgICAgICBib29sIGRlc2VsZWN0T3RoZXJzID0gIW1fbXVsdGlwbGUgfHwgKCFzdGF0aWNf
Y2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5zaGlmdEtleSgpICYmIHNlbGVjdE5ld0l0ZW0p
OworICAgICAgICAgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPCAwIHx8IGRl
c2VsZWN0T3RoZXJzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRlc2VsZWN0T3RoZXJzKQogICAg
ICAgICAgICAgICAgICAgICBkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oKTsKLSAgICAg
ICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChtX2RhdGEuYWN0aXZlU2Vs
ZWN0aW9uRW5kSW5kZXgoKSk7CisgICAgICAgICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5j
aG9ySW5kZXgobV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+c2Nyb2xsVG9SZXZlYWxFbGVt
ZW50QXRMaXN0SW5kZXgoZW5kSW5kZXgpOwpAQCAtMTI4NywxMCArMTI5MSwxMCBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
CiAgICAgICAgICAgICBpZiAoZm9ybSgpKQogICAgICAgICAgICAgICAgIGZvcm0oKS0+c3VibWl0
SW1wbGljaXRseShldmVudCwgZmFsc2UpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAobV9kYXRhLm11bHRpcGxlKCkgJiYga2V5Q29k
ZSA9PSAnICcgJiYgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS0+ZnJhbWUo
KSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtX211bHRpcGxlICYmIGtleUNvZGUgPT0gJyAnICYm
IGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50KCktPmZyYW1lKCkpKSB7CiAgICAg
ICAgICAgICAvLyBVc2Ugc3BhY2UgdG8gdG9nZ2xlIHNlbGVjdGlvbiBjaGFuZ2UuCi0gICAgICAg
ICAgICBtX2RhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUoIW1fZGF0YS5hY3RpdmVTZWxlY3Rp
b25TdGF0ZSgpKTsKLSAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkU3RhdGUobGlzdFRvT3B0aW9u
SW5kZXgobV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkpLCB0cnVlIC8qbXVsdGkqLywg
ZmFsc2UgLypzaGlmdCovKTsKKyAgICAgICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSAh
bV9hY3RpdmVTZWxlY3Rpb25TdGF0ZTsKKyAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkU3RhdGUo
bGlzdFRvT3B0aW9uSW5kZXgobV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCksIHRydWUgLyptdWx0
aSovLCBmYWxzZSAvKnNoaWZ0Ki8pOwogICAgICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKCk7CiAg
ICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgfQpAQCAtMTMw
Miw3ICsxMzA2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgIGlmICh1c2VzTWVudUxpc3QoKSkK
ICAgICAgICAgbWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICAgICBlbHNlIAog
ICAgICAgICBsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CkBAIC0xMzUzLDExICsx
MzU3LDExIEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBMZWFkaW5nV2hpdGVTcGFjZShjb25zdCBTdHJp
bmcmIHN0cmluZykKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZChLZXli
b2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQtPnRpbWVTdGFtcCgpIDwgbV9kYXRh
Lmxhc3RDaGFyVGltZSgpKQorICAgIGlmIChldmVudC0+dGltZVN0YW1wKCkgPCBtX2xhc3RDaGFy
VGltZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRE9NVGltZVN0YW1wIGRlbHRhID0gZXZlbnQt
PnRpbWVTdGFtcCgpIC0gbV9kYXRhLmxhc3RDaGFyVGltZSgpOwotICAgIG1fZGF0YS5zZXRMYXN0
Q2hhclRpbWUoZXZlbnQtPnRpbWVTdGFtcCgpKTsKKyAgICBET01UaW1lU3RhbXAgZGVsdGEgPSBl
dmVudC0+dGltZVN0YW1wKCkgLSBtX2xhc3RDaGFyVGltZTsKKyAgICBtX2xhc3RDaGFyVGltZSA9
IGV2ZW50LT50aW1lU3RhbXAoKTsKIAogICAgIFVDaGFyIGMgPSBldmVudC0+Y2hhckNvZGUoKTsK
IApAQCAtMTM2NSwxOCArMTM2OSwxOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp0eXBlQWhl
YWRGaW5kKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGludCBzZWFyY2hTdGFydE9mZnNldCA9
IDE7CiAgICAgaWYgKGRlbHRhID4gdHlwZUFoZWFkVGltZW91dCkgewogICAgICAgICBwcmVmaXgg
PSBTdHJpbmcoJmMsIDEpOwotICAgICAgICBtX2RhdGEuc2V0VHlwZWRTdHJpbmcocHJlZml4KTsK
LSAgICAgICAgbV9kYXRhLnNldFJlcGVhdGluZ0NoYXIoYyk7CisgICAgICAgIG1fdHlwZWRTdHJp
bmcgPSBwcmVmaXg7CisgICAgICAgIG1fcmVwZWF0aW5nQ2hhciA9IGM7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9kYXRhLnR5cGVkU3RyaW5nKCkuYXBwZW5kKGMpOworICAgICAgICBtX3R5cGVk
U3RyaW5nLmFwcGVuZChjKTsKIAotICAgICAgICBpZiAoYyA9PSBtX2RhdGEucmVwZWF0aW5nQ2hh
cigpKSB7CisgICAgICAgIGlmIChjID09IG1fcmVwZWF0aW5nQ2hhcikgewogICAgICAgICAgICAg
Ly8gVGhlIHVzZXIgaXMgbGlrZWx5IHRyeWluZyB0byBjeWNsZSB0aHJvdWdoIGFsbCB0aGUgaXRl
bXMgc3RhcnRpbmcKICAgICAgICAgICAgIC8vIHdpdGggdGhpcyBjaGFyYWN0ZXIsIHNvIGp1c3Qg
c2VhcmNoIG9uIHRoZSBjaGFyYWN0ZXIKICAgICAgICAgICAgIHByZWZpeCA9IFN0cmluZygmYywg
MSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2RhdGEuc2V0UmVwZWF0aW5nQ2hh
cigwKTsKLSAgICAgICAgICAgIHByZWZpeCA9IG1fZGF0YS50eXBlZFN0cmluZygpOworICAgICAg
ICAgICAgbV9yZXBlYXRpbmdDaGFyID0gMDsKKyAgICAgICAgICAgIHByZWZpeCA9IG1fdHlwZWRT
dHJpbmc7CiAgICAgICAgICAgICBzZWFyY2hTdGFydE9mZnNldCA9IDA7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNDA0LDcgKzE0MDgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp0eXBlQWhl
YWRGaW5kKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBTdHJpbmcgdGV4dCA9IG9wdGlv
bkVsZW1lbnQtPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICAgICAgaWYg
KHN0cmlwTGVhZGluZ1doaXRlU3BhY2UodGV4dCkuZm9sZENhc2UoKS5zdGFydHNXaXRoKHByZWZp
eFdpdGhDYXNlRm9sZGVkKSkgewogICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleEludGVybmFs
KGxpc3RUb09wdGlvbkluZGV4KGluZGV4KSk7Ci0gICAgICAgICAgICBpZiAoIW1fZGF0YS51c2Vz
TWVudUxpc3QoKSkKKyAgICAgICAgICAgIGlmICghdXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAg
ICAgICAgbGlzdEJveE9uQ2hhbmdlKCk7CiAKICAgICAgICAgICAgIHNldE9wdGlvbnNDaGFuZ2Vk
T25SZW5kZXJlcigpOwpAQCAtMTQzOSw3ICsxNDQzLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgICAgICBzZXRT
ZWxlY3RlZEluZGV4SW50ZXJuYWwoaW5kZXgsIGZhbHNlLCB0cnVlKTsKICAgICB9CiAKLSAgICBp
ZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAg
ICAgbWVudUxpc3RPbkNoYW5nZSgpOwogICAgIGVsc2UKICAgICAgICAgbGlzdEJveE9uQ2hhbmdl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggMzhkMDMyYzg5
YmRhZDA1MDUzY2NiZGEyOWYzYjRhYTYwYzVhMWUzNC4uMzY3N2JkY2E5ZmIyNTFmMjI4YmU3YjMz
MTFkMTAwNjBiNjM2OTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
aApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNvbGxlY3Rpb25DYWNoZS5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgotI2luY2x1
ZGUgIlNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDggKzQ5LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3Q7CiAKLSAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zaXpl
KCk7IH0KLSAgICBib29sIG11bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm11bHRpcGxl
KCk7IH0KKyAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wg
bXVsdGlwbGUoKSBjb25zdCB7IHJldHVybiBtX211bHRpcGxlOyB9CiAKICAgICB2b2lkIGFkZChI
VE1MRWxlbWVudCosIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCByZW1vdmUoaW50IGluZGV4KTsKQEAgLTE1NSw2ICsxNTQsMTQgQEAgcHJpdmF0
ZToKICAgICBib29sIHBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKTsK
ICAgICB2b2lkIGxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdm9pZCBz
ZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKKyAgICBib29sIHVzZXNNZW51TGlzdCgpIGNv
bnN0CisgICAgeworI2lmIEVOQUJMRShOT19MSVNUQk9YX1JFTkRFUklORykKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZWxzZQorICAgICAgICByZXR1cm4gIW1fbXVsdGlwbGUgJiYgbV9zaXplIDw9
IDE7CisjZW5kaWYKKyAgICB9CiAKICAgICBlbnVtIFNraXBEaXJlY3Rpb24gewogICAgICAgICBT
a2lwQmFja3dhcmRzID0gLTEsCkBAIC0xNjcsOSArMTc0LDIwIEBAIHByaXZhdGU6CiAgICAgaW50
IGxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29uc3Q7CiAgICAgaW50IG5leHRTZWxlY3RhYmxl
TGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0SW5kZXgsIFNraXBEaXJlY3Rpb24pIGNvbnN0Owog
Ci0gICAgU2VsZWN0RWxlbWVudERhdGEgbV9kYXRhOwogICAgIENvbGxlY3Rpb25DYWNoZSBtX2Nv
bGxlY3Rpb25JbmZvOwogICAgIFZlY3RvcjxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CisgICAgVmVj
dG9yPGJvb2w+IG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uOworICAgIFZlY3Rvcjxib29sPiBtX2Nh
Y2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uOworICAgIERPTVRpbWVTdGFtcCBtX2xhc3RDaGFy
VGltZTsKKyAgICBTdHJpbmcgbV90eXBlZFN0cmluZzsKKyAgICBpbnQgbV9zaXplOworICAgIGlu
dCBtX2xhc3RPbkNoYW5nZUluZGV4OworICAgIGludCBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvcklu
ZGV4OworICAgIGludCBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4OworICAgIFVDaGFyIG1fcmVw
ZWF0aW5nQ2hhcjsKKyAgICBib29sIG1fdXNlckRyaXZlbkNoYW5nZTsKKyAgICBib29sIG1fbXVs
dGlwbGU7CisgICAgYm9vbCBtX2FjdGl2ZVNlbGVjdGlvblN0YXRlOwogICAgIGJvb2wgbV9yZWNh
bGNMaXN0SXRlbXM7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110503</attachid>
            <date>2011-10-11 05:51:46 -0700</date>
            <delta_ts>2011-10-12 00:10:19 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-69828-20111011215144.patch</filename>
            <type>text/plain</type>
            <size>47856</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDkwMThm
Yzc0MmJlMGNiNTU1ZjU3NTE3MjkzNmI4NDAyNzlkNTYzZC4uZjU1ZTExZjNhMWUyNGI0ZDE5MGFk
NDBlOWQzYTY5OTU5ZmI4NDQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU3OCw3ICs1Nzgs
NiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCiAgICAg
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCiAgICAgZG9tL1NjcmlwdFJ1bm5lci5jcHAK
LSAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAg
ICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgzMjdiYWZmODdkZWE0MjBmNTllYjdmZGUwMjZhODM3
ZDQ3ZjlkZTEuLjdkYTUyOWQxNTRhYTdlYzgwN2I2NmQ1NTU5YzEyNmMyNDJiOTRhOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMS0xMC0xMSAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW92ZSB0aGUgY29udGVudCBvZiBTZWxlY3RFbGVtZW50
RGF0YSBpbnRvIEhUTUxTZWxlY3RFbGVtZW50LCBhbmQgcmVtb3ZlIFNlbGVjdEVsZW1lbnQue2Nw
cCxofQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIE1v
dmUgYWxsIG9mIHRoZSBkYXRhIG1lbWJlcnMgb2YgU2VsZWN0RWxlbWVudERhdGEgdG8KKyAgICAg
ICAgSFRNTFNlbGVjdEVsZW1lbnQsIGFuZCB0aGVpciBhY2Nlc3NvciBmdW5jdGlvbnMgYXJlIG5v
dCBuZWVkZWQKKyAgICAgICAgYW55bW9yZS4KKyAgICAgICAgLSBNb3ZlIFNlbGVjdEVsZW1lbnRE
YXRhOjp1c2VNZW51TGlzdCgpIHRvIEhUTUxTZWxlY3RFbGVtZW50LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IFJlbW92ZSBTZWxlY3RFbGVtZW50LmNwcC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogUmVtb3ZlIFNlbGVjdEVsZW1lbnQue2NwcCxofS4K
KyAgICAgICAgKiBXZWJDb3JlLnBybzogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogZGl0dG8uCisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDogUmVtb3Zl
IGEgcmVmZXJlbmNlIHRvIFNlbGVjdEVsZW1lbnQuY3BwLgorICAgICAgICAqIGRvbS9PcHRpb25F
bGVtZW50LmNwcDogUmVtb3ZlIGEgcmVmZXJlbmNlIHRvIFNlbGVjdEVsZW1lbnQuaC4KKyAgICAg
ICAgKiBkb20vU2VsZWN0RWxlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZG9tL1NlbGVj
dEVsZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxlbWVu
dCk6CisgICAgICAgIEluaXRpYWxpemVzIHRoZSBtb3ZlZCBkYXRhIG1lbWJlcnMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4QnlVc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphY3RpdmVTZWxlY3Rpb25TdGFydExp
c3RJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZlU2Vs
ZWN0aW9uRW5kTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6Y2FuU2VsZWN0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
c2V0T3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RB
bGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
c2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6bWVudUxpc3RPbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEZvY3Vz
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoQmx1
ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU11bHRp
cGxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVTZWxlY3RlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojps
aXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgICogaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om11bHRpcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3QpOgorCiAyMDEx
LTEwLTExICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBRVERJUl9idWlsZCBhbmQgc3Rh
bmRhbG9uZV9wYWNrYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhOTk0Nzg2
YTdkM2M5N2YzODhiOWVhNzY4MjI1ZGVmNTlmNTAyYTVkLi5lYWNkMTYwYTIyN2YwZGFiYjQ1YjA0
ZDQzNDdjZDkzNmU0ZGUwNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEy
OTMsOCArMTI5Myw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1
bm5lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBcCi0JU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlmODFjMjMw
ZWQ5YmE5YTZjZGVjNGNlY2NiOTQwNDAwMDZjYTNkZjkuLjRlOGM4MDc4NDc4NjJkNjliZmZiNWIz
ZTAyOTEwZWI1Y2M3MmE0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUyNzksOCArNTI3OSw2IEBA
CiAgICAgICAgICAgICAnZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAg
ICAgICdkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAn
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oJywKLSAgICAgICAgICAgICdkb20vU2Vs
ZWN0RWxlbWVudC5jcHAnLAotICAgICAgICAgICAgJ2RvbS9TZWxlY3RFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NlbGVj
dG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCmluZGV4IDA2NGRjOTgxNTBmMjEwYzQ2M2QzZjgxMTBjNDM2OTA3YWMzYzBi
NjEuLjMwY2Y2MGIzNjY1ZGQzZDY2YTQ1ZjUyNTQ2MGY4NmU1OGFmYzE5NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC01NDQsNyArNTQ0LDYgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1NjcmlwdEVsZW1l
bnQuY3BwIFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9T
Y3JpcHRSdW5uZXIuY3BwIFwKLSAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAgXAogICAgIGRvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBcCiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCiAg
ICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBcCkBAIC0xNTU3LDcgKzE1NTYsNiBA
QCBIRUFERVJTICs9IFwKICAgICBkb20vUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIFwKICAgICBk
b20vU2NyaXB0RWxlbWVudC5oIFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIFwK
LSAgICBkb20vU2VsZWN0RWxlbWVudC5oIFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5oIFwKICAg
ICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCBcCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCAzMWFjOGUyMGU1YjdkMTc2ZjI0NmNjZjU4YjQyYzllZjJhMDZjMjIxLi43YTMyOGNl
NGFlMjBiNDc2ZDdiZTk3YTBlYmMwNTY0NTRlN2E1MzNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDg2NTgsNjIgKzQ4NjU4LDYgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVj
dEVsZW1lbnQuY3BwIgotCQkJCT4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0i
RGVidWd8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJ
CTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVh
c2V8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxU
b29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4K
LQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0i
UmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJ
CQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0J
CQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
Ci0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJ
CS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJ
CQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
Ci0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJ
CS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0RWxlbWVudC5oIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0b3JRdWVyeS5jcHAiCiAJ
CQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE5ODFjOTllMGU2NTBlOGI1YzNlZjYx
MTA1MzU5ZThmNmMzM2IzMzguLjE2MjAzMTNiNGI0NzY2MTZhYmQ2NjhjZGU3MGU3YjlkNGYxY2Fh
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwOSw4ICsxMDksNiBAQAogCQkwODNEQUVBOTBGMDFBN0ZCMDAzNDI3NTQgLyog
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODNEQUVBNTBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmggKi87IH07CiAJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAv
KiBGb250TWV0cmljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg0NTY4MDcxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg0QTA4MjkxMjhENzg2
NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODRBMDgyODEyOEQ3ODY3MDAyREIx
RjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKLQkJMDg0QUVCRTQw
RkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg0QUVCRTIwRkI1MDVGQTAwMzg0ODNFIC8qIFNl
bGVjdEVsZW1lbnQuY3BwICovOyB9OwotCQkwODRBRUJFNTBGQjUwNUZBMDAzODQ4M0UgLyogU2Vs
ZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg0QUVCRTMwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuaCAqLzsgfTsKIAkJ
MDg0REI1OUIxMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODREQjU5QTEyODAwOENDMDAy
QTZENjQgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NTI1RTYyMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA4NTRCMDE1MTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NTRCMDAzMTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJbmxpbmUuaCAqLzsgfTsKQEAgLTcx
MTEsOCArNzEwOSw2IEBACiAJCTA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4NDU2ODA3MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0cmljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGb250TWV0cmljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwODRBMDgyODEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg0QUVC
RTIwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA4NEFFQkUzMEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdEVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg0REI1OUExMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0Fu
aW1hdGVkU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1h
dGVkU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NTI1RTYyMTI3OEMw
MDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9m
Zi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODU0QjAwMjEyNTVFNEU2MDBCOUNE
RDAgLyogUmVuZGVyU1ZHSW5saW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclNWR0lubGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTE2OSw4ICsyMTE2NSw2IEBACiAJCQkJRTExQzlEOUEwRUIzNjgxMjAwRTQwOURCIC8qIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCAqLywKIAkJCQk4QTQxM0FERjEyMDdCQkE1MDA4MjAxNkUg
LyogU2NyaXB0UnVubmVyLmNwcCAqLywKIAkJCQk4QTQxM0FERTEyMDdCQkE1MDA4MjAxNkUgLyog
U2NyaXB0UnVubmVyLmggKi8sCi0JCQkJMDg0QUVCRTIwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVj
dEVsZW1lbnQuY3BwICovLAotCQkJCTA4NEFFQkUzMEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RF
bGVtZW50LmggKi8sCiAJCQkJRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVl
cnkuY3BwICovLAogCQkJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5
LmggKi8sCiAJCQkJQTc2NkNGOEIxMzgxMEUwQzAwMTFBMEIzIC8qIFNoYWRvd0NvbnRlbnRFbGVt
ZW50LmNwcCAqLywKQEAgLTIzOTUxLDcgKzIzOTQ1LDYgQEAKIAkJCQlCQ0QwRTBGQzBFOTcyQzM1
MDAyNjVERUEgLyogU2VjdXJpdHlPcmlnaW5IYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzFG
NEZGQzBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyQzNEQTJGMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTA4NEFFQkU1MEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxMDA5OUU2NDkyMDA1
NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4
REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2OTMyLDcgKzI2OTI1LDYgQEAKIAkJCQlCQ0QwRTBGQTBFOTcyQzM1MDAyNjVE
RUEgLyogU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxRjRGRkQwRDI1
RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyQzNEQTJFMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMDg0QUVCRTQwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRjA5OUU2NDkyMDA1
NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjhEQkRCNEIxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCA5ZjE2ZGRkOTE5MjQ0
M2Q3NjEyOTg5ZGFlNDExYjhhMDEyNTEwNDc5Li5jMmFiOWMwNGM2MTk3ODU1Zjc0M2ExOTE1NDZm
OTJkNTg4M2M1MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTExNCw3ICsx
MTQsNiBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIgogI2luY2x1ZGUg
IlNjcmlwdFJ1bm5lci5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNw
cCIKLSNpbmNsdWRlICJTZWxlY3RFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5
LmNwcCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L09wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuY3Bw
CmluZGV4IDgwNWRmMWM0YjVmNDM1Njk4NzczNDhkNzYxYzZkYWE2ZmNlMDAxOTIuLjA2MjQ1MThl
YWZkOGMzODUyMzYxNWI5NGQzMmY2YmVhMGFiNWMzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vT3B0aW9u
RWxlbWVudC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIk9wdGlvbkdyb3VwRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1l
bnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQzODMxNGFjNmZlZjdkMmUw
MWZiMWM4YzBjNzM3MWZhMTIxNDU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgot
Ci0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkV2ZW50Lmgi
Ci0jaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRN
TEZvcm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFNl
bGVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiTW91
c2VFdmVudC5oIgotI2luY2x1ZGUgIk9wdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJPcHRpb25H
cm91cEVsZW1lbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGlzdEJv
eC5oIgotI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCi0jaW5jbHVkZSAiU3BhdGlhbE5hdmln
YXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLXVzaW5nIHN0ZDo6bWluOwotdXNpbmcgc3RkOjptYXg7
Ci11c2luZyBuYW1lc3BhY2UgV1RGOwotdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotLy8gU2VsZWN0RWxlbWVudERhdGEKLVNlbGVjdEVsZW1lbnREYXRh
OjpTZWxlY3RFbGVtZW50RGF0YSgpCi0gICAgOiBtX2xhc3RDaGFyVGltZSgwKQotICAgICwgbV9y
ZXBlYXRpbmdDaGFyKDApCi0gICAgLCBtX3NpemUoMCkKLSAgICAsIG1fbGFzdE9uQ2hhbmdlSW5k
ZXgoLTEpCi0gICAgLCBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKQotICAgICwgbV9h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCgtMSkKLSAgICAsIG1fdXNlckRyaXZlbkNoYW5nZShmYWxz
ZSkKLSAgICAsIG1fbXVsdGlwbGUoZmFsc2UpCi0gICAgLCBtX2FjdGl2ZVNlbGVjdGlvblN0YXRl
KGZhbHNlKQotewotfQotCi1TZWxlY3RFbGVtZW50RGF0YTo6flNlbGVjdEVsZW1lbnREYXRhKCkK
LXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE3MjIwZTU2NjIwNjQyMGFhNTZlNzExOGUwMmE0YjRjMzZlNDk4NDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cC8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZu
ZGVmIFNlbGVjdEVsZW1lbnRfaAotI2RlZmluZSBTZWxlY3RFbGVtZW50X2gKLQotI2luY2x1ZGUg
IkRPTVRpbWVTdGFtcC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvVW5pY29kZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnQ7
Ci0KLS8vIEhUTUxTZWxlY3RFbGVtZW50IGhvbGQgdGhpcyBzdHJ1Y3QgYXMgbWVtYmVyIHZhcmlh
YmxlCi0vLyBhbmQgcGFzcyBpdCB0byB0aGUgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuCi1jbGFz
cyBTZWxlY3RFbGVtZW50RGF0YSB7Ci1wdWJsaWM6Ci0gICAgU2VsZWN0RWxlbWVudERhdGEoKTsK
LSAgICB+U2VsZWN0RWxlbWVudERhdGEoKTsKLQotICAgIGJvb2wgbXVsdGlwbGUoKSBjb25zdCB7
IHJldHVybiBtX211bHRpcGxlOyB9Ci0gICAgdm9pZCBzZXRNdWx0aXBsZShib29sIHZhbHVlKSB7
IG1fbXVsdGlwbGUgPSB2YWx1ZTsgfQotCi0gICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUoaW50IHZhbHVlKSB7IG1fc2l6ZSA9IHZhbHVlOyB9
Ci0KLSAgICBib29sIHVzZXNNZW51TGlzdCgpIGNvbnN0Ci0gICAgewotI2lmIEVOQUJMRShOT19M
SVNUQk9YX1JFTkRFUklORykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAgICBy
ZXR1cm4gIW1fbXVsdGlwbGUgJiYgbV9zaXplIDw9IDE7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBp
bnQgbGFzdE9uQ2hhbmdlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xhc3RPbkNoYW5nZUluZGV4
OyB9Ci0gICAgdm9pZCBzZXRMYXN0T25DaGFuZ2VJbmRleChpbnQgdmFsdWUpIHsgbV9sYXN0T25D
aGFuZ2VJbmRleCA9IHZhbHVlOyB9Ci0KLSAgICBib29sIHVzZXJEcml2ZW5DaGFuZ2UoKSBjb25z
dCB7IHJldHVybiBtX3VzZXJEcml2ZW5DaGFuZ2U7IH0KLSAgICB2b2lkIHNldFVzZXJEcml2ZW5D
aGFuZ2UoYm9vbCB2YWx1ZSkgeyBtX3VzZXJEcml2ZW5DaGFuZ2UgPSB2YWx1ZTsgfQotCi0gICAg
VmVjdG9yPGJvb2w+JiBsYXN0T25DaGFuZ2VTZWxlY3Rpb24oKSB7IHJldHVybiBtX2xhc3RPbkNo
YW5nZVNlbGVjdGlvbjsgfQotCi0gICAgYm9vbCBhY3RpdmVTZWxlY3Rpb25TdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGU7IH0KLSAgICB2b2lkIHNldEFjdGl2ZVNl
bGVjdGlvblN0YXRlKGJvb2wgdmFsdWUpIHsgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSA9IHZhbHVl
OyB9Ci0KLSAgICBpbnQgYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4OyB9Ci0gICAgdm9pZCBzZXRBY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleChpbnQgdmFsdWUpIHsgbV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eCA9IHZhbHVlOyB9Ci0KLSAgICBpbnQgYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4OyB9Ci0gICAgdm9pZCBzZXRBY3RpdmVT
ZWxlY3Rpb25FbmRJbmRleChpbnQgdmFsdWUpIHsgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCA9
IHZhbHVlOyB9Ci0KLSAgICBWZWN0b3I8Ym9vbD4mIGNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0
aW9uKCkgeyByZXR1cm4gbV9jYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbjsgfQotCi0gICAg
VUNoYXIgcmVwZWF0aW5nQ2hhcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0aW5nQ2hhcjsgfQot
ICAgIHZvaWQgc2V0UmVwZWF0aW5nQ2hhcihjb25zdCBVQ2hhciYgdmFsdWUpIHsgbV9yZXBlYXRp
bmdDaGFyID0gdmFsdWU7IH0KLQotICAgIERPTVRpbWVTdGFtcCBsYXN0Q2hhclRpbWUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RDaGFyVGltZTsgfQotICAgIHZvaWQgc2V0TGFzdENoYXJUaW1lKGNv
bnN0IERPTVRpbWVTdGFtcCYgdmFsdWUpIHsgbV9sYXN0Q2hhclRpbWUgPSB2YWx1ZTsgfQotCi0g
ICAgU3RyaW5nJiB0eXBlZFN0cmluZygpIHsgcmV0dXJuIG1fdHlwZWRTdHJpbmc7IH0KLSAgICB2
b2lkIHNldFR5cGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV90eXBlZFN0cmluZyA9
IHZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjaGVja0xpc3RJdGVtcyhjb25zdCBFbGVt
ZW50KikgY29uc3Q7Ci0KLSAgICBWZWN0b3I8Ym9vbD4gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb247
Ci0gICAgVmVjdG9yPGJvb2w+IG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb247Ci0KLSAg
ICAvLyBJbnN0YW5jZSB2YXJpYWJsZXMgZm9yIHR5cGUtYWhlYWQgZmluZAotICAgIERPTVRpbWVT
dGFtcCBtX2xhc3RDaGFyVGltZTsKLSAgICBTdHJpbmcgbV90eXBlZFN0cmluZzsKLSAgICBVQ2hh
ciBtX3JlcGVhdGluZ0NoYXI7Ci0KLSAgICBpbnQgbV9zaXplOwotICAgIGludCBtX2xhc3RPbkNo
YW5nZUluZGV4OwotICAgIGludCBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4OwotICAgIGlu
dCBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4OwotCi0gICAgYm9vbCBtX3VzZXJEcml2ZW5DaGFu
Z2U7Ci0gICAgYm9vbCBtX211bHRpcGxlOwotICAgIGJvb2wgbV9hY3RpdmVTZWxlY3Rpb25TdGF0
ZTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCmluZGV4IDYxOWIzNWRlNGIyMjkzZTAxNTU0YmU2NzIyZWVmYTU5OWJlMGIyZWQuLmQ2
MTExNGE2OWIxNjQzMzA4ZjZmZjJlZDU2NWEzYmVmNDhhMWMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC03Niw2ICs3NiwxNSBAQCBzdGF0aWMgY29u
c3QgRE9NVGltZVN0YW1wIHR5cGVBaGVhZFRpbWVvdXQgPSAxMDAwOwogCiBIVE1MU2VsZWN0RWxl
bWVudDo6SFRNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAgICAgOiBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlKHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQorICAgICwgbV9s
YXN0Q2hhclRpbWUoMCkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9sYXN0T25DaGFuZ2VJbmRl
eCgtMSkKKyAgICAsIG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoLTEpCisgICAgLCBtX2Fj
dGl2ZVNlbGVjdGlvbkVuZEluZGV4KC0xKQorICAgICwgbV9yZXBlYXRpbmdDaGFyKDApCisgICAg
LCBtX3VzZXJEcml2ZW5DaGFuZ2UoZmFsc2UpCisgICAgLCBtX211bHRpcGxlKGZhbHNlKQorICAg
ICwgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZShmYWxzZSkKICAgICAsIG1fcmVjYWxjTGlzdEl0ZW1z
KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNlbGVjdFRhZykpOwpAQCAtOTEsNyAr
MTAwLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MU2VsZWN0RWxlbWVudDo6Zm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0LW11bHRpcGxlIikpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzZWxlY3RPbmUsICgic2VsZWN0LW9uZSIp
KTsKLSAgICByZXR1cm4gbV9kYXRhLm11bHRpcGxlKCkgPyBzZWxlY3RNdWx0aXBsZSA6IHNlbGVj
dE9uZTsKKyAgICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25l
OwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zKEhUTUxPcHRpb25F
bGVtZW50KiBleGNsdWRlRWxlbWVudCkKQEAgLTEwOSw3ICsxMTgsNyBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZGV4QnlVc2VyKGludCBvcHRpb25JbmRleCwgYm9vbCBk
ZXNlbGVjdCwgYgogewogICAgIC8vIExpc3QgYm94IHNlbGVjdHMgY2FuIGZpcmUgb25jaGFuZ2Ug
ZXZlbnRzIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbiwgc3VjaCBhcwogICAgIC8vIG1vdXNlZG93
biBldmVudHMuIFRoaXMgYWxsb3dzIHRoYXQgc2FtZSBiZWhhdmlvciBwcm9ncmFtbWF0aWNhbGx5
LgotICAgIGlmICghbV9kYXRhLnVzZXNNZW51TGlzdCgpKSB7CisgICAgaWYgKCF1c2VzTWVudUxp
c3QoKSkgewogICAgICAgICB1cGRhdGVTZWxlY3RlZFN0YXRlKG9wdGlvbkluZGV4LCBhbGxvd011
bHRpcGxlU2VsZWN0aW9uLCBmYWxzZSk7CiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygp
OwogICAgICAgICBpZiAoZmlyZU9uQ2hhbmdlTm93KQpAQCAtMTc2LDE1ICsxODUsMTUgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveFNlbGVjdEl0ZW0oaW50IGxpc3RJbmRleCwgYm9v
bCBhbGxvd011bHRpcGx5U2VsZWMKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjphY3RpdmVTZWxl
Y3Rpb25TdGFydExpc3RJbmRleCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZGF0YS5hY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleCgpID49IDApCi0gICAgICAgIHJldHVybiBtX2RhdGEuYWN0aXZlU2Vs
ZWN0aW9uQW5jaG9ySW5kZXgoKTsKKyAgICBpZiAobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eCA+PSAwKQorICAgICAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleDsKICAg
ICByZXR1cm4gb3B0aW9uVG9MaXN0SW5kZXgoc2VsZWN0ZWRJbmRleCgpKTsKIH0KIAogaW50IEhU
TUxTZWxlY3RFbGVtZW50OjphY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKSBjb25zdAogewot
ICAgIGlmIChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSA+PSAwKQotICAgICAgICBy
ZXR1cm4gbV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCk7CisgICAgaWYgKG1fYWN0aXZl
U2VsZWN0aW9uRW5kSW5kZXggPj0gMCkKKyAgICAgICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9u
RW5kSW5kZXg7CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJbmRleCgpOwogfQogCkBAIC0y
NTAsNyArMjU5LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3Ry
aW5nICZ2YWx1ZSkKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyKSB7
Ci0gICAgICAgIGludCBvbGRTaXplID0gbV9kYXRhLnNpemUoKTsKKyAgICAgICAgaW50IG9sZFNp
emUgPSBtX3NpemU7CiAgICAgICAgIC8vIFNldCB0aGUgYXR0cmlidXRlIHZhbHVlIHRvIGEgbnVt
YmVyLgogICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBzaW5jZSB0aGUgc3R5bGUgcnVsZXMg
Zm9yIHRoaXMgYXR0cmlidXRlIGNhbiBkZXRlcm1pbmUgdGhlIGFwcGVhcmFuY2UgcHJvcGVydHku
CiAgICAgICAgIGludCBzaXplID0gYXR0ci0+dmFsdWUoKS50b0ludCgpOwpAQCAtMjYzLDkgKzI3
Miw5IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICAgICAgaWYgKG9sZFNpemUgIT0gc2l6ZSkKICAgICAgICAgICAgIHJl
Y2FsY0xpc3RJdGVtc0lmTmVlZGVkKCk7CiAKLSAgICAgICAgbV9kYXRhLnNldFNpemUoc2l6ZSk7
CisgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygp
OwotICAgICAgICBpZiAobV9kYXRhLnNpemUoKSAhPSBvbGRTaXplICYmIGF0dGFjaGVkKCkpIHsK
KyAgICAgICAgaWYgKG1fc2l6ZSAhPSBvbGRTaXplICYmIGF0dGFjaGVkKCkpIHsKICAgICAgICAg
ICAgIHJlYXR0YWNoKCk7CiAgICAgICAgICAgICBzZXRSZWNhbGNMaXN0SXRlbXMoKTsKICAgICAg
ICAgfQpAQCAtMjk4LDEyICszMDcsMTIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aXNNb3Vz
ZUZvY3VzYWJsZSgpIGNvbnN0CiAKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNhblNlbGVjdEFs
bCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2RhdGEudXNlc01lbnVMaXN0KCk7IAorICAgIHJl
dHVybiAhdXNlc01lbnVMaXN0KCk7IAogfQogCiBSZW5kZXJPYmplY3QqIEhUTUxTZWxlY3RFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
LSAgICBpZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgIGlmICh1c2VzTWVudUxpc3QoKSkK
ICAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lbnVMaXN0KHRoaXMpOwogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJMaXN0Qm94KHRoaXMpOwogfQpAQCAtMzg2LDcgKzM5NSw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbih1bnNpZ25lZCBpbmRleCwgSFRN
TE9wdGlvbkVsZW1lbnQqIG9wdGlvbiwgRXhjCiAgICAgaWYgKCFlYykgewogICAgICAgICBhZGQo
b3B0aW9uLCBiZWZvcmUsIGVjKTsKICAgICAgICAgaWYgKGRpZmYgPj0gMCAmJiBvcHRpb24tPnNl
bGVjdGVkKCkpCi0gICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGluZGV4LCAhbV9kYXRhLm11
bHRpcGxlKCkpOworICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChpbmRleCwgIW1fbXVsdGlw
bGUpOwogICAgIH0KIH0KIApAQCAtNTAwLDE1ICs1MDksMTUgQEAgaW50IEhUTUxTZWxlY3RFbGVt
ZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGludCBzdGFydEluZGV4LCBTa2lw
RGlyZWMKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKCkKIHsKLSAgICBBU1NF
UlQoIW1fZGF0YS51c2VzTWVudUxpc3QoKSk7Ci0gICAgaWYgKCFyZW5kZXJlcigpIHx8ICFtX2Rh
dGEubXVsdGlwbGUoKSkKKyAgICBBU1NFUlQoIXVzZXNNZW51TGlzdCgpKTsKKyAgICBpZiAoIXJl
bmRlcmVyKCkgfHwgIW1fbXVsdGlwbGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNhdmUg
dGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlIG5ldyBzZWxlY3RBbGwg
c2VsZWN0aW9uCiAgICAgLy8gd2hlbiBkaXNwYXRjaGluZyBjaGFuZ2UgZXZlbnRzCiAgICAgc2F2
ZUxhc3RTZWxlY3Rpb24oKTsKIAotICAgIG1fZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0
cnVlKTsKKyAgICBtX2FjdGl2ZVNlbGVjdGlvblN0YXRlID0gdHJ1ZTsKICAgICBzZXRBY3RpdmVT
ZWxlY3Rpb25BbmNob3JJbmRleChuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCgtMSkpOwogICAgIHNl
dEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KHByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleCgtMSkp
OwogCkBAIC01MTksNTAgKzUyOCw0NiBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RB
bGwoKQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzYXZlTGFzdFNlbGVjdGlvbigpCiB7Ci0g
ICAgaWYgKG1fZGF0YS51c2VzTWVudUxpc3QoKSkgewotICAgICAgICBtX2RhdGEuc2V0TGFzdE9u
Q2hhbmdlSW5kZXgoc2VsZWN0ZWRJbmRleCgpKTsKKyAgICBpZiAodXNlc01lbnVMaXN0KCkpIHsK
KyAgICAgICAgbV9sYXN0T25DaGFuZ2VJbmRleCA9IHNlbGVjdGVkSW5kZXgoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFZlY3Rvcjxib29sPiYgbGFzdE9uQ2hhbmdlU2VsZWN0aW9u
ID0gbV9kYXRhLmxhc3RPbkNoYW5nZVNlbGVjdGlvbigpOyAKLSAgICBsYXN0T25DaGFuZ2VTZWxl
Y3Rpb24uY2xlYXIoKTsKLQorICAgIG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uLmNsZWFyKCk7CiAg
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9u
RWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7Ci0gICAg
ICAgIGxhc3RPbkNoYW5nZVNlbGVjdGlvbi5hcHBlbmQob3B0aW9uRWxlbWVudCAmJiBvcHRpb25F
bGVtZW50LT5zZWxlY3RlZCgpKTsKKyAgICAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBw
ZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7CiAgICAgfQog
fQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eChpbnQgaW5kZXgpCiB7Ci0gICAgbV9kYXRhLnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4
KGluZGV4KTsKKyAgICBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4ID0gaW5kZXg7CiAKICAg
ICAvLyBDYWNoZSB0aGUgc2VsZWN0aW9uIHN0YXRlIHNvIHdlIGNhbiByZXN0b3JlIHRoZSBvbGQg
c2VsZWN0aW9uIGFzIHRoZSBuZXcKICAgICAvLyBzZWxlY3Rpb24gcGl2b3RzIGFyb3VuZCB0aGlz
IGFuY2hvciBpbmRleAotICAgIFZlY3Rvcjxib29sPiYgY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24gPSBtX2RhdGEuY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24oKTsgCi0gICAgY2Fj
aGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24uY2xlYXIoKTsKKyAgICBtX2NhY2hlZFN0YXRlRm9y
QWN0aXZlU2VsZWN0aW9uLmNsZWFyKCk7CiAKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBp
dGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5z
aXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9P
cHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKLSAgICAgICAgY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24uYXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7
CisgICAgICAgIG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24uYXBwZW5kKG9wdGlvbkVs
ZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7CiAgICAgfQogfQogCiB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpbnQgaW5kZXgpCiB7
Ci0gICAgbV9kYXRhLnNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KGluZGV4KTsKKyAgICBtX2Fj
dGl2ZVNlbGVjdGlvbkVuZEluZGV4ID0gaW5kZXg7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucykKIHsK
LSAgICBBU1NFUlQocmVuZGVyZXIoKSAmJiAocmVuZGVyZXIoKS0+aXNMaXN0Qm94KCkgfHwgbV9k
YXRhLm11bHRpcGxlKCkpKTsKLSAgICBBU1NFUlQoIWxpc3RJdGVtcygpLnNpemUoKSB8fCBtX2Rh
dGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA+PSAwKTsKKyAgICBBU1NFUlQocmVuZGVy
ZXIoKSAmJiAocmVuZGVyZXIoKS0+aXNMaXN0Qm94KCkgfHwgbV9tdWx0aXBsZSkpOworICAgIEFT
U0VSVCghbGlzdEl0ZW1zKCkuc2l6ZSgpIHx8IG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgg
Pj0gMCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydCA9IG1pbihtX2RhdGEuYWN0aXZlU2VsZWN0aW9u
QW5jaG9ySW5kZXgoKSwgbV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkpOwotICAgIHVu
c2lnbmVkIGVuZCA9IG1heChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSwgbV9k
YXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkpOwotICAgIFZlY3Rvcjxib29sPiYgY2FjaGVk
U3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24gPSBtX2RhdGEuY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydCA9IG1pbihtX2FjdGl2ZVNlbGVjdGlvbkFuY2hv
ckluZGV4LCBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKKyAgICB1bnNpZ25lZCBlbmQgPSBt
YXgobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRl
eCk7CiAKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewpAQCAtNTcx
LDExICs1NzYsMTEgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVj
dGlvbihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKGkgPj0gc3RhcnQgJiYgaSA8PSBlbmQpCi0gICAgICAgICAgICBvcHRpb25F
bGVtZW50LT5zZXRTZWxlY3RlZFN0YXRlKG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25TdGF0ZSgpKTsK
LSAgICAgICAgZWxzZSBpZiAoZGVzZWxlY3RPdGhlck9wdGlvbnMgfHwgaSA+PSBjYWNoZWRTdGF0
ZUZvckFjdGl2ZVNlbGVjdGlvbi5zaXplKCkpCisgICAgICAgICAgICBvcHRpb25FbGVtZW50LT5z
ZXRTZWxlY3RlZFN0YXRlKG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChkZXNlbGVjdE90aGVyT3B0aW9ucyB8fCBpID49IG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24uc2l6ZSgpKQogICAgICAgICAgICAgb3B0aW9uRWxlbWVudC0+c2V0U2VsZWN0ZWRTdGF0
ZShmYWxzZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQtPnNldFNl
bGVjdGVkU3RhdGUoY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb25baV0pOworICAgICAgICAg
ICAgb3B0aW9uRWxlbWVudC0+c2V0U2VsZWN0ZWRTdGF0ZShtX2NhY2hlZFN0YXRlRm9yQWN0aXZl
U2VsZWN0aW9uW2ldKTsKICAgICB9CiAKICAgICBzY3JvbGxUb1NlbGVjdGlvbigpOwpAQCAtNTg0
LDE0ICs1ODksMTMgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVj
dGlvbihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpsaXN0Qm94T25DaGFuZ2UoKQogewotICAgIEFTU0VSVCghbV9kYXRhLnVzZXNNZW51TGlzdCgp
IHx8IG1fZGF0YS5tdWx0aXBsZSgpKTsKKyAgICBBU1NFUlQoIXVzZXNNZW51TGlzdCgpIHx8IG1f
bXVsdGlwbGUpOwogCi0gICAgVmVjdG9yPGJvb2w+JiBsYXN0T25DaGFuZ2VTZWxlY3Rpb24gPSBt
X2RhdGEubGFzdE9uQ2hhbmdlU2VsZWN0aW9uKCk7IAogICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAgICAvLyBJZiB0aGUgY2FjaGVkIHNlbGVjdGlv
biBsaXN0IGlzIGVtcHR5LCBvciB0aGUgc2l6ZSBoYXMgY2hhbmdlZCwgdGhlbiBmaXJlCiAgICAg
Ly8gZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50LCBhbmQgcmV0dXJuIGVhcmx5LgotICAg
IGlmIChsYXN0T25DaGFuZ2VTZWxlY3Rpb24uaXNFbXB0eSgpIHx8IGxhc3RPbkNoYW5nZVNlbGVj
dGlvbi5zaXplKCkgIT0gaXRlbXMuc2l6ZSgpKSB7CisgICAgaWYgKG1fbGFzdE9uQ2hhbmdlU2Vs
ZWN0aW9uLmlzRW1wdHkoKSB8fCBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbi5zaXplKCkgIT0gaXRl
bXMuc2l6ZSgpKSB7CiAgICAgICAgIGRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjAxLDkgKzYwNSw5IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1l
bnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBib29sIHNlbGVjdGVkID0g
b3B0aW9uRWxlbWVudCAmJiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpOwotICAgICAgICBpZiAo
c2VsZWN0ZWQgIT0gbGFzdE9uQ2hhbmdlU2VsZWN0aW9uW2ldKQorICAgICAgICBpZiAoc2VsZWN0
ZWQgIT0gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb25baV0pCiAgICAgICAgICAgICBmaXJlT25DaGFu
Z2UgPSB0cnVlOwotICAgICAgICBsYXN0T25DaGFuZ2VTZWxlY3Rpb25baV0gPSBzZWxlY3RlZDsK
KyAgICAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb25baV0gPSBzZWxlY3RlZDsKICAgICB9CiAK
ICAgICBpZiAoZmlyZU9uQ2hhbmdlKQpAQCAtNjEyLDE5ICs2MTYsMTkgQEAgdm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
bWVudUxpc3RPbkNoYW5nZSgpCiB7Ci0gICAgQVNTRVJUKG1fZGF0YS51c2VzTWVudUxpc3QoKSk7
CisgICAgQVNTRVJUKHVzZXNNZW51TGlzdCgpKTsKIAogICAgIGludCBzZWxlY3RlZCA9IHNlbGVj
dGVkSW5kZXgoKTsKLSAgICBpZiAobV9kYXRhLmxhc3RPbkNoYW5nZUluZGV4KCkgIT0gc2VsZWN0
ZWQgJiYgbV9kYXRhLnVzZXJEcml2ZW5DaGFuZ2UoKSkgewotICAgICAgICBtX2RhdGEuc2V0TGFz
dE9uQ2hhbmdlSW5kZXgoc2VsZWN0ZWQpOwotICAgICAgICBtX2RhdGEuc2V0VXNlckRyaXZlbkNo
YW5nZShmYWxzZSk7CisgICAgaWYgKG1fbGFzdE9uQ2hhbmdlSW5kZXggIT0gc2VsZWN0ZWQgJiYg
bV91c2VyRHJpdmVuQ2hhbmdlKSB7CisgICAgICAgIG1fbGFzdE9uQ2hhbmdlSW5kZXggPSBzZWxl
Y3RlZDsKKyAgICAgICAgbV91c2VyRHJpdmVuQ2hhbmdlID0gZmFsc2U7CiAgICAgICAgIGRpc3Bh
dGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwogICAgIH0KIH0KIAogdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oKQogewotICAgIGlmIChtX2RhdGEudXNlc01lbnVM
aXN0KCkpCisgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCkBAIC02MzQsNyAr
NjM4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oKQogdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCkKIHsKICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgaWYgKG1fZGF0YS51c2VzTWVudUxpc3QoKSkKKyAgICAgICAgaWYgKHVzZXNNZW51TGlzdCgp
KQogICAgICAgICAgICAgdG9SZW5kZXJNZW51TGlzdChyZW5kZXJlciktPnNldE9wdGlvbnNDaGFu
Z2VkKHRydWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0b1JlbmRlckxpc3RCb3gocmVu
ZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKQEAgLTY2NCw3ICs2NjgsNyBAQCB2b2lk
IEhUTUxTZWxlY3RFbGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMoKQogewogICAgIG1fcmVjYWxj
TGlzdEl0ZW1zID0gdHJ1ZTsKICAgICAvLyBNYW51YWwgc2VsZWN0aW9uIGFuY2hvciBpcyByZXNl
dCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgc2VsZWN0IHByb2dyYW1tYXRpY2FsbHkuCi0gICAgbV9k
YXRhLnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKTsKKyAgICBtX2FjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4ID0gLTE7CiAgICAgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCk7
CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIGlmICghaW5Eb2N1bWVudCgpKQpAQCAt
NzAwLDggKzcwNCw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtc0lu
dGVybmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpCiAgICAgICAgIGlmIChPcHRpb25FbGVt
ZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGN1cnJlbnQpKSB7CiAgICAgICAg
ICAgICBtX2xpc3RJdGVtcy5hcHBlbmQoY3VycmVudCk7CiAKLSAgICAgICAgICAgIGlmICh1cGRh
dGVTZWxlY3RlZFN0YXRlcyAmJiAhbV9kYXRhLm11bHRpcGxlKCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWZvdW5kU2VsZWN0ZWQgJiYgKG1fZGF0YS5zaXplKCkgPD0gMSB8fCBvcHRpb25FbGVt
ZW50LT5zZWxlY3RlZCgpKSkgeworICAgICAgICAgICAgaWYgKHVwZGF0ZVNlbGVjdGVkU3RhdGVz
ICYmICFtX211bHRpcGxlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNlbGVjdGVkICYm
IChtX3NpemUgPD0gMSB8fCBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKSkgewogICAgICAgICAg
ICAgICAgICAgICBmb3VuZFNlbGVjdGVkID0gb3B0aW9uRWxlbWVudDsKICAgICAgICAgICAgICAg
ICAgICAgZm91bmRTZWxlY3RlZC0+c2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGZvdW5kU2VsZWN0ZWQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQo
KSkgewpAQCAtNzQzLDkgKzc0Nyw5IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJ
bmRleCgpIGNvbnN0CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJ
bnRlcm5hbChpbnQgb3B0aW9uSW5kZXgsIGJvb2wgZGVzZWxlY3QsIGJvb2wgZmlyZU9uQ2hhbmdl
Tm93LCBib29sIHVzZXJEcml2ZW5DaGFuZ2UpCiB7Ci0gICAgaWYgKG9wdGlvbkluZGV4ID09IC0x
ICYmICFkZXNlbGVjdCAmJiAhbV9kYXRhLm11bHRpcGxlKCkpCisgICAgaWYgKG9wdGlvbkluZGV4
ID09IC0xICYmICFkZXNlbGVjdCAmJiAhbV9tdWx0aXBsZSkKICAgICAgICAgb3B0aW9uSW5kZXgg
PSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCgtMSk7Ci0gICAgaWYgKCFtX2RhdGEubXVsdGlwbGUo
KSkKKyAgICBpZiAoIW1fbXVsdGlwbGUpCiAgICAgICAgIGRlc2VsZWN0ID0gdHJ1ZTsKIAogICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CkBAIC03NTQsOSAr
NzU4LDkgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVybmFs
KGludCBvcHRpb25JbmRleCwgYm9vbCBkZXNlbGVjdCwKICAgICBFbGVtZW50KiBleGNsdWRlRWxl
bWVudCA9IDA7CiAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSAobGlzdElu
ZGV4ID49IDAgPyB0b09wdGlvbkVsZW1lbnQoaXRlbXNbbGlzdEluZGV4XSkgOiAwKSkgewogICAg
ICAgICBleGNsdWRlRWxlbWVudCA9IGl0ZW1zW2xpc3RJbmRleF07Ci0gICAgICAgIGlmIChtX2Rh
dGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA8IDAgfHwgZGVzZWxlY3QpCisgICAgICAg
IGlmIChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4IDwgMCB8fCBkZXNlbGVjdCkKICAgICAg
ICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGxpc3RJbmRleCk7Ci0gICAgICAg
IGlmIChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSA8IDAgfHwgZGVzZWxlY3QpCisg
ICAgICAgIGlmIChtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4IDwgMCB8fCBkZXNlbGVjdCkKICAg
ICAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KGxpc3RJbmRleCk7CiAgICAgICAg
IG9wdGlvbkVsZW1lbnQtPnNldFNlbGVjdGVkU3RhdGUodHJ1ZSk7CiAgICAgfQpAQCAtNzcxLDEz
ICs3NzUsMTMgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVy
bmFsKGludCBvcHRpb25JbmRleCwgYm9vbCBkZXNlbGVjdCwKICAgICBzY3JvbGxUb1NlbGVjdGlv
bigpOwogCiAgICAgLy8gVGhpcyBvbmx5IGdldHMgY2FsbGVkIHdpdGggZmlyZU9uQ2hhbmdlTm93
IGZvciBtZW51IGxpc3RzLiAKLSAgICBpZiAobV9kYXRhLnVzZXNNZW51TGlzdCgpKSB7Ci0gICAg
ICAgIG1fZGF0YS5zZXRVc2VyRHJpdmVuQ2hhbmdlKHVzZXJEcml2ZW5DaGFuZ2UpOworICAgIGlm
ICh1c2VzTWVudUxpc3QoKSkgeworICAgICAgICBtX3VzZXJEcml2ZW5DaGFuZ2UgPSB1c2VyRHJp
dmVuQ2hhbmdlOwogICAgICAgICBpZiAoZmlyZU9uQ2hhbmdlTm93KQogICAgICAgICAgICAgbWVu
dUxpc3RPbkNoYW5nZSgpOwogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgICAgICBpZiAobV9k
YXRhLnVzZXNNZW51TGlzdCgpKQorICAgICAgICAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAg
ICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpLT5kaWRTZXRTZWxlY3RlZElu
ZGV4KGxpc3RJbmRleCk7CiAgICAgICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNMaXN0Qm94
KCkpCiAgICAgICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2VsZWN0aW9u
Q2hhbmdlZCgpOwpAQCAtODI4LDcgKzgzMiw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRp
c3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlKQogewogICAg
IC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlIG5ldyBz
ZWxlY3Rpb24gd2hlbgogICAgIC8vIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVudHMgZHVyaW5nIGJs
dXIgZXZlbnQgZGlzcGF0Y2hhbAotICAgIGlmIChtX2RhdGEudXNlc01lbnVMaXN0KCkpCisgICAg
aWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbigpOwogICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChvbGRGb2N1
c2VkTm9kZSk7CiB9CkBAIC04MzgsNyArODQyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
ZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSkKICAgICAv
LyBXZSBvbmx5IG5lZWQgdG8gZmlyZSBjaGFuZ2UgZXZlbnRzIGhlcmUgZm9yIG1lbnUgbGlzdHMs
IGJlY2F1c2Ugd2UgZmlyZQogICAgIC8vIGNoYW5nZSBldmVudHMgZm9yIGxpc3QgYm94ZXMgd2hl
bmV2ZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2UgaXMgYWN0dWFsbHkgbWFkZS4KICAgICAvLyBUaGlz
IG1hdGNoZXMgb3RoZXIgYnJvd3NlcnMnIGJlaGF2aW9yLgotICAgIGlmIChtX2RhdGEudXNlc01l
bnVMaXN0KCkpCisgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAgICBtZW51TGlzdE9uQ2hh
bmdlKCk7CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hCbHVy
RXZlbnQobmV3Rm9jdXNlZE5vZGUpOwogfQpAQCAtODkwLDEwICs4OTQsMTAgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0
ZSkKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cGFyc2VNdWx0aXBsZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkKIHsKLSAgICBib29sIG9sZFVzZXNNZW51TGlzdCA9IG1f
ZGF0YS51c2VzTWVudUxpc3QoKTsKLSAgICBtX2RhdGEuc2V0TXVsdGlwbGUoIWF0dHJpYnV0ZS0+
aXNOdWxsKCkpOworICAgIGJvb2wgb2xkVXNlc01lbnVMaXN0ID0gdXNlc01lbnVMaXN0KCk7Cisg
ICAgbV9tdWx0aXBsZSA9ICFhdHRyaWJ1dGUtPmlzTnVsbCgpOwogICAgIHVwZGF0ZVZhbGlkaXR5
KCk7Ci0gICAgaWYgKG9sZFVzZXNNZW51TGlzdCAhPSBtX2RhdGEudXNlc01lbnVMaXN0KCkpCisg
ICAgaWYgKG9sZFVzZXNNZW51TGlzdCAhPSB1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmVhdHRh
Y2hJZkF0dGFjaGVkKCk7CiB9CiAKQEAgLTkzMiw3ICs5MzYsNyBAQCB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50OjpyZXNldCgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaXRl
bXNbaV0tPmZhc3RIYXNBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyKSkgewotICAgICAgICAgICAgaWYg
KHNlbGVjdGVkT3B0aW9uICYmICFtX2RhdGEubXVsdGlwbGUoKSkKKyAgICAgICAgICAgIGlmIChz
ZWxlY3RlZE9wdGlvbiAmJiAhbV9tdWx0aXBsZSkKICAgICAgICAgICAgICAgICBzZWxlY3RlZE9w
dGlvbi0+c2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgICAgICBvcHRpb25FbGVtZW50
LT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gPSBv
cHRpb25FbGVtZW50OwpAQCAtOTQzLDcgKzk0Nyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlc2V0KCkKICAgICAgICAgICAgIGZpcnN0T3B0aW9uID0gb3B0aW9uRWxlbWVudDsKICAgICB9
CiAKLSAgICBpZiAoIXNlbGVjdGVkT3B0aW9uICYmIGZpcnN0T3B0aW9uICYmICFtX2RhdGEubXVs
dGlwbGUoKSAmJiBtX2RhdGEuc2l6ZSgpIDw9IDEpCisgICAgaWYgKCFzZWxlY3RlZE9wdGlvbiAm
JiBmaXJzdE9wdGlvbiAmJiAhbV9tdWx0aXBsZSAmJiBtX3NpemUgPD0gMSkKICAgICAgICAgZmly
c3RPcHRpb24tPnNldFNlbGVjdGVkU3RhdGUodHJ1ZSk7CiAKICAgICBzZXRPcHRpb25zQ2hhbmdl
ZE9uUmVuZGVyZXIoKTsKQEAgLTk5Myw3ICs5OTcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAvLyBm
cm9tIHRoZSBzZWxlY3QgZWxlbWVudCB3aGVuIHRoZSB1c2VyIGhpdHMgYW55IG9mIHRoZSBhcnJv
dyBrZXlzLAogICAgICAgICAvLyBpbnN0ZWFkIG9mIGNoYW5naW5nIHRoZSBzZWxlY3Rpb24uCiAg
ICAgICAgIGlmIChpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChkb2N1bWVudCgpLT5mcmFtZSgp
KSkgewotICAgICAgICAgICAgaWYgKCFtX2RhdGEuYWN0aXZlU2VsZWN0aW9uU3RhdGUoKSkKKyAg
ICAgICAgICAgIGlmICghbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTAzNSw3ICsxMDM5LDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAg
ICAgICBpZiAoa2V5Q29kZSA9PSAnICcgJiYgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9j
dW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgICAgIC8vIFVzZSBzcGFjZSB0byB0b2dnbGUg
YXJyb3cga2V5IGhhbmRsaW5nIGZvciBzZWxlY3Rpb24gY2hhbmdlIG9yIHNwYXRpYWwgbmF2aWdh
dGlvbi4KLSAgICAgICAgICAgIG1fZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSghbV9kYXRh
LmFjdGl2ZVNlbGVjdGlvblN0YXRlKCkpOworICAgICAgICAgICAgbV9hY3RpdmVTZWxlY3Rpb25T
dGF0ZSA9ICFtX2FjdGl2ZVNlbGVjdGlvblN0YXRlOwogICAgICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTExMjIs
MTAgKzExMjYsMTAgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0
ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKICAgICAvLyBkaXNwYXRjaGlu
ZyBjaGFuZ2UgZXZlbnRzIGR1cmluZyBtb3VzZXVwLCBvciBhZnRlciBhdXRvc2Nyb2xsIGZpbmlz
aGVzLgogICAgIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAKLSAgICBtX2RhdGEuc2V0QWN0aXZlU2Vs
ZWN0aW9uU3RhdGUodHJ1ZSk7CisgICAgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZSA9IHRydWU7CiAK
LSAgICBib29sIHNoaWZ0U2VsZWN0ID0gbV9kYXRhLm11bHRpcGxlKCkgJiYgc2hpZnQ7Ci0gICAg
Ym9vbCBtdWx0aVNlbGVjdCA9IG1fZGF0YS5tdWx0aXBsZSgpICYmIG11bHRpICYmICFzaGlmdDsK
KyAgICBib29sIHNoaWZ0U2VsZWN0ID0gbV9tdWx0aXBsZSAmJiBzaGlmdDsKKyAgICBib29sIG11
bHRpU2VsZWN0ID0gbV9tdWx0aXBsZSAmJiBtdWx0aSAmJiAhc2hpZnQ7CiAKICAgICBFbGVtZW50
KiBjbGlja2VkRWxlbWVudCA9IGxpc3RJdGVtcygpW2xpc3RJbmRleF07CiAgICAgT3B0aW9uRWxl
bWVudCogb3B0aW9uID0gdG9PcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KTsKQEAgLTExMzMs
OSArMTEzNyw5IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUo
aW50IGxpc3RJbmRleCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlmCiAgICAgICAgIC8vIEtlZXAgdHJh
Y2sgb2Ygd2hldGhlciBhbiBhY3RpdmUgc2VsZWN0aW9uIChsaWtlIGR1cmluZyBkcmFnCiAgICAg
ICAgIC8vIHNlbGVjdGlvbiksIHNob3VsZCBzZWxlY3Qgb3IgZGVzZWxlY3QKICAgICAgICAgaWYg
KG9wdGlvbi0+c2VsZWN0ZWQoKSAmJiBtdWx0aSkKLSAgICAgICAgICAgIG1fZGF0YS5zZXRBY3Rp
dmVTZWxlY3Rpb25TdGF0ZShmYWxzZSk7CisgICAgICAgICAgICBtX2FjdGl2ZVNlbGVjdGlvblN0
YXRlID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFtX2RhdGEuYWN0aXZlU2VsZWN0aW9uU3RhdGUo
KSkKKyAgICAgICAgaWYgKCFtX2FjdGl2ZVNlbGVjdGlvblN0YXRlKQogICAgICAgICAgICAgb3B0
aW9uLT5zZXRTZWxlY3RlZFN0YXRlKGZhbHNlKTsKICAgICB9CiAKQEAgLTExNDcsNyArMTE1MSw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJ
bmRleCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlmCiAKICAgICAvLyBJZiB0aGUgYW5jaG9yIGhhc24n
dCBiZWVuIHNldCwgYW5kIHdlJ3JlIGRvaW5nIGEgc2luZ2xlIHNlbGVjdGlvbiBvciBhCiAgICAg
Ly8gc2hpZnQgc2VsZWN0aW9uLCB0aGVuIGluaXRpYWxpemUgdGhlIGFuY2hvciB0byB0aGUgZmly
c3Qgc2VsZWN0ZWQgaW5kZXguCi0gICAgaWYgKG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25BbmNob3JJ
bmRleCgpIDwgMCAmJiAhbXVsdGlTZWxlY3QpCisgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5j
aG9ySW5kZXggPCAwICYmICFtdWx0aVNlbGVjdCkKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9u
QW5jaG9ySW5kZXgoc2VsZWN0ZWRJbmRleCgpKTsKIAogICAgIC8vIFNldCB0aGUgc2VsZWN0aW9u
IHN0YXRlIG9mIHRoZSBjbGlja2VkIG9wdGlvbgpAQCAtMTE1OCw3ICsxMTYyLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29s
IG11bHRpLCBib29sIHNoaWYKICAgICAvLyB3ZSdyZSBkb2luZyBhIHNpbmdsZSBzZWxlY3Rpb24s
IG9yIGEgbXVsdGlwbGUgc2VsZWN0aW9uICh1c2luZyBjbWQgb3IKICAgICAvLyBjdHJsKSwgdGhl
biBpbml0aWFsaXplIHRoZSBhbmNob3IgaW5kZXggdG8gdGhlIGxpc3RJbmRleCB0aGF0IGp1c3Qg
Z290CiAgICAgLy8gY2xpY2tlZC4KLSAgICBpZiAobV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hv
ckluZGV4KCkgPCAwIHx8ICFzaGlmdFNlbGVjdCkKKyAgICBpZiAobV9hY3RpdmVTZWxlY3Rpb25B
bmNob3JJbmRleCA8IDAgfHwgIXNoaWZ0U2VsZWN0KQogICAgICAgICBzZXRBY3RpdmVTZWxlY3Rp
b25BbmNob3JJbmRleChsaXN0SW5kZXgpOwogCiAgICAgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgobGlzdEluZGV4KTsKQEAgLTEyMDIsNyArMTIwNiw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgICAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKICAgICAgICAgaW50IGVuZEluZGV4ID0gMDsKLSAgICAgICAg
aWYgKG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpIDwgMCkgeworICAgICAgICBpZiAo
bV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCA8IDApIHsKICAgICAgICAgICAgIC8vIEluaXRpYWxp
emUgdGhlIGVuZCBpbmRleAogICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24i
IHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikgewogICAgICAgICAgICAgICAgIGludCBz
dGFydEluZGV4ID0gbGFzdFNlbGVjdGVkTGlzdEluZGV4KCk7CkBAIC0xMjIyLDE2ICsxMjI2LDE2
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNldCB0aGUgZW5k
IGluZGV4IGJhc2VkIG9uIHRoZSBjdXJyZW50IGVuZCBpbmRleAogICAgICAgICAgICAgaWYgKGtl
eUlkZW50aWZpZXIgPT0gIkRvd24iKSB7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0
U2VsZWN0YWJsZUxpc3RJbmRleChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSk7Cisg
ICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChtX2FjdGl2
ZVNlbGVjdGlvbkVuZEluZGV4KTsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiKSB7Ci0gICAgICAgICAg
ICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgobV9kYXRhLmFjdGl2
ZVNlbGVjdGlvbkVuZEluZGV4KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlv
dXNTZWxlY3RhYmxlTGlzdEluZGV4KG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgpOwogICAgICAg
ICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVu
dGlmaWVyID09ICJQYWdlRG93biIpIHsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRT
ZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkobV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4
KCksIFNraXBGb3J3YXJkcyk7CisgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0
YWJsZUxpc3RJbmRleFBhZ2VBd2F5KG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgsIFNraXBGb3J3
YXJkcyk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKLSAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkobV9kYXRhLmFjdGl2ZVNlbGVj
dGlvbkVuZEluZGV4KCksIFNraXBCYWNrd2FyZHMpOworICAgICAgICAgICAgICAgIGVuZEluZGV4
ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShtX2FjdGl2ZVNlbGVjdGlvbkVuZElu
ZGV4LCBTa2lwQmFja3dhcmRzKTsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTI0NSw3ICsxMjQ5LDcgQEAgdm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiAg
ICAgICAgIGlmIChpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChkb2N1bWVudCgpLT5mcmFtZSgp
KSkKICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBzZWxlY3Rpb24gbW92ZXMgdG8gdGhlIGJv
dW5kYXJ5LgotICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkxlZnQiIHx8IGtleUlk
ZW50aWZpZXIgPT0gIlJpZ2h0IiB8fCAoKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlk
ZW50aWZpZXIgPT0gIlVwIikgJiYgZW5kSW5kZXggPT0gbV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkVu
ZEluZGV4KCkpKQorICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkxlZnQiIHx8IGtl
eUlkZW50aWZpZXIgPT0gIlJpZ2h0IiB8fCAoKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtl
eUlkZW50aWZpZXIgPT0gIlVwIikgJiYgZW5kSW5kZXggPT0gbV9hY3RpdmVTZWxlY3Rpb25FbmRJ
bmRleCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbmRJbmRleCA+
PSAwICYmIGhhbmRsZWQpIHsKQEAgLTEyNTcsMTYgKzEyNjEsMTYgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJ
bmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRJbmRleCkgPCBsaXN0SXRlbXMu
c2l6ZSgpKSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChlbmRJbmRl
eCk7CiAKLSAgICAgICAgICAgIGJvb2wgc2VsZWN0TmV3SXRlbSA9ICFtX2RhdGEubXVsdGlwbGUo
KSB8fCBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5zaGlmdEtleSgpIHx8ICFp
c1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChkb2N1bWVudCgpLT5mcmFtZSgpKTsKKyAgICAgICAg
ICAgIGJvb2wgc2VsZWN0TmV3SXRlbSA9ICFtX211bHRpcGxlIHx8IHN0YXRpY19jYXN0PEtleWJv
YXJkRXZlbnQqPihldmVudCktPnNoaWZ0S2V5KCkgfHwgIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFi
bGVkKGRvY3VtZW50KCktPmZyYW1lKCkpOwogICAgICAgICAgICAgaWYgKHNlbGVjdE5ld0l0ZW0p
Ci0gICAgICAgICAgICAgICAgbV9kYXRhLnNldEFjdGl2ZVNlbGVjdGlvblN0YXRlKHRydWUpOwor
ICAgICAgICAgICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSB0cnVlOwogICAgICAgICAg
ICAgLy8gSWYgdGhlIGFuY2hvciBpcyB1bml0aWFsaXplZCwgb3IgaWYgd2UncmUgZ29pbmcgdG8g
ZGVzZWxlY3QgYWxsCiAgICAgICAgICAgICAvLyBvdGhlciBvcHRpb25zLCB0aGVuIHNldCB0aGUg
YW5jaG9yIGluZGV4IGVxdWFsIHRvIHRoZSBlbmQgaW5kZXguCi0gICAgICAgICAgICBib29sIGRl
c2VsZWN0T3RoZXJzID0gIW1fZGF0YS5tdWx0aXBsZSgpIHx8ICghc3RhdGljX2Nhc3Q8S2V5Ym9h
cmRFdmVudCo+KGV2ZW50KS0+c2hpZnRLZXkoKSAmJiBzZWxlY3ROZXdJdGVtKTsKLSAgICAgICAg
ICAgIGlmIChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA8IDAgfHwgZGVzZWxl
Y3RPdGhlcnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGVzZWxlY3RPdGhlcnMgPSAhbV9tdWx0aXBs
ZSB8fCAoIXN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCktPnNoaWZ0S2V5KCkgJiYg
c2VsZWN0TmV3SXRlbSk7CisgICAgICAgICAgICBpZiAobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJ
bmRleCA8IDAgfHwgZGVzZWxlY3RPdGhlcnMpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzZWxl
Y3RPdGhlcnMpCiAgICAgICAgICAgICAgICAgICAgIGRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRh
dGlvbigpOwotICAgICAgICAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KG1f
ZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICBzZXRBY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleChtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKCkpLT5zY3Jv
bGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChlbmRJbmRleCk7CkBAIC0xMjg3LDEwICsxMjkx
LDEwIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmIChmb3JtKCkpCiAgICAgICAgICAgICAgICAg
Zm9ybSgpLT5zdWJtaXRJbXBsaWNpdGx5KGV2ZW50LCBmYWxzZSk7CiAgICAgICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChtX2RhdGEubXVsdGlw
bGUoKSAmJiBrZXlDb2RlID09ICcgJyAmJiBpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChkb2N1
bWVudCgpLT5mcmFtZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKG1fbXVsdGlwbGUgJiYga2V5
Q29kZSA9PSAnICcgJiYgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS0+ZnJh
bWUoKSkpIHsKICAgICAgICAgICAgIC8vIFVzZSBzcGFjZSB0byB0b2dnbGUgc2VsZWN0aW9uIGNo
YW5nZS4KLSAgICAgICAgICAgIG1fZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSghbV9kYXRh
LmFjdGl2ZVNlbGVjdGlvblN0YXRlKCkpOwotICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRTdGF0
ZShsaXN0VG9PcHRpb25JbmRleChtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSksIHRy
dWUgLyptdWx0aSovLCBmYWxzZSAvKnNoaWZ0Ki8pOworICAgICAgICAgICAgbV9hY3RpdmVTZWxl
Y3Rpb25TdGF0ZSA9ICFtX2FjdGl2ZVNlbGVjdGlvblN0YXRlOworICAgICAgICAgICAgdXBkYXRl
U2VsZWN0ZWRTdGF0ZShsaXN0VG9PcHRpb25JbmRleChtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4
KSwgdHJ1ZSAvKm11bHRpKi8sIGZhbHNlIC8qc2hpZnQqLyk7CiAgICAgICAgICAgICBsaXN0Qm94
T25DaGFuZ2UoKTsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAg
ICAgICB9CkBAIC0xMzAyLDcgKzEzMDYsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2RhdGEudXNlc01lbnVMaXN0KCkpCisgICAgaWYgKHVz
ZXNNZW51TGlzdCgpKQogICAgICAgICBtZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwogICAgIGVsc2UgCiAgICAgICAgIGxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
QEAgLTEzNTMsMTEgKzEzNTcsMTEgQEAgc3RhdGljIFN0cmluZyBzdHJpcExlYWRpbmdXaGl0ZVNw
YWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp0eXBl
QWhlYWRGaW5kKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIGlmIChldmVudC0+dGltZVN0
YW1wKCkgPCBtX2RhdGEubGFzdENoYXJUaW1lKCkpCisgICAgaWYgKGV2ZW50LT50aW1lU3RhbXAo
KSA8IG1fbGFzdENoYXJUaW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBET01UaW1lU3RhbXAg
ZGVsdGEgPSBldmVudC0+dGltZVN0YW1wKCkgLSBtX2RhdGEubGFzdENoYXJUaW1lKCk7Ci0gICAg
bV9kYXRhLnNldExhc3RDaGFyVGltZShldmVudC0+dGltZVN0YW1wKCkpOworICAgIERPTVRpbWVT
dGFtcCBkZWx0YSA9IGV2ZW50LT50aW1lU3RhbXAoKSAtIG1fbGFzdENoYXJUaW1lOworICAgIG1f
bGFzdENoYXJUaW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogCiAgICAgVUNoYXIgYyA9IGV2ZW50
LT5jaGFyQ29kZSgpOwogCkBAIC0xMzY1LDE4ICsxMzY5LDE4IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnR5cGVBaGVhZEZpbmQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaW50IHNlYXJj
aFN0YXJ0T2Zmc2V0ID0gMTsKICAgICBpZiAoZGVsdGEgPiB0eXBlQWhlYWRUaW1lb3V0KSB7CiAg
ICAgICAgIHByZWZpeCA9IFN0cmluZygmYywgMSk7Ci0gICAgICAgIG1fZGF0YS5zZXRUeXBlZFN0
cmluZyhwcmVmaXgpOwotICAgICAgICBtX2RhdGEuc2V0UmVwZWF0aW5nQ2hhcihjKTsKKyAgICAg
ICAgbV90eXBlZFN0cmluZyA9IHByZWZpeDsKKyAgICAgICAgbV9yZXBlYXRpbmdDaGFyID0gYzsK
ICAgICB9IGVsc2UgewotICAgICAgICBtX2RhdGEudHlwZWRTdHJpbmcoKS5hcHBlbmQoYyk7Cisg
ICAgICAgIG1fdHlwZWRTdHJpbmcuYXBwZW5kKGMpOwogCi0gICAgICAgIGlmIChjID09IG1fZGF0
YS5yZXBlYXRpbmdDaGFyKCkpIHsKKyAgICAgICAgaWYgKGMgPT0gbV9yZXBlYXRpbmdDaGFyKSB7
CiAgICAgICAgICAgICAvLyBUaGUgdXNlciBpcyBsaWtlbHkgdHJ5aW5nIHRvIGN5Y2xlIHRocm91
Z2ggYWxsIHRoZSBpdGVtcyBzdGFydGluZwogICAgICAgICAgICAgLy8gd2l0aCB0aGlzIGNoYXJh
Y3Rlciwgc28ganVzdCBzZWFyY2ggb24gdGhlIGNoYXJhY3RlcgogICAgICAgICAgICAgcHJlZml4
ID0gU3RyaW5nKCZjLCAxKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZGF0YS5z
ZXRSZXBlYXRpbmdDaGFyKDApOwotICAgICAgICAgICAgcHJlZml4ID0gbV9kYXRhLnR5cGVkU3Ry
aW5nKCk7CisgICAgICAgICAgICBtX3JlcGVhdGluZ0NoYXIgPSAwOworICAgICAgICAgICAgcHJl
Zml4ID0gbV90eXBlZFN0cmluZzsKICAgICAgICAgICAgIHNlYXJjaFN0YXJ0T2Zmc2V0ID0gMDsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE0MDQsNyArMTQwOCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnR5cGVBaGVhZEZpbmQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIFN0cmlu
ZyB0ZXh0ID0gb3B0aW9uRWxlbWVudC0+dGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgp
OwogICAgICAgICBpZiAoc3RyaXBMZWFkaW5nV2hpdGVTcGFjZSh0ZXh0KS5mb2xkQ2FzZSgpLnN0
YXJ0c1dpdGgocHJlZml4V2l0aENhc2VGb2xkZWQpKSB7CiAgICAgICAgICAgICBzZXRTZWxlY3Rl
ZEluZGV4SW50ZXJuYWwobGlzdFRvT3B0aW9uSW5kZXgoaW5kZXgpKTsKLSAgICAgICAgICAgIGlm
ICghbV9kYXRhLnVzZXNNZW51TGlzdCgpKQorICAgICAgICAgICAgaWYgKCF1c2VzTWVudUxpc3Qo
KSkKICAgICAgICAgICAgICAgICBsaXN0Qm94T25DaGFuZ2UoKTsKIAogICAgICAgICAgICAgc2V0
T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCk7CkBAIC0xNDM5LDcgKzE0NDMsNyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjphY2Nlc3NLZXlTZXRTZWxlY3RlZEluZGV4KGludCBpbmRleCkKICAg
ICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbmRleCwgZmFsc2UsIHRydWUpOwog
ICAgIH0KIAotICAgIGlmIChtX2RhdGEudXNlc01lbnVMaXN0KCkpCisgICAgaWYgKHVzZXNNZW51
TGlzdCgpKQogICAgICAgICBtZW51TGlzdE9uQ2hhbmdlKCk7CiAgICAgZWxzZQogICAgICAgICBs
aXN0Qm94T25DaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApp
bmRleCAzOGQwMzJjODliZGFkMDUwNTNjY2JkYTI5ZjNiNGFhNjBjNWExZTM0Li4zNjc3YmRjYTlm
YjI1MWYyMjhiZTdiMzMxMWQxMDA2MGI2MzY5MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvbkNh
Y2hlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsOCArNDksOCBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKIAotICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnNpemUoKTsgfQotICAgIGJvb2wgbXVsdGlwbGUoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEubXVsdGlwbGUoKTsgfQorICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CisgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXVsdGlwbGU7IH0KIAog
ICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50KiwgSFRNTEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOwpAQCAtMTU1LDYgKzE1
NCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCopOwogICAgIHZvaWQgbGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKICAgICB2b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpOworICAgIGJvb2wgdXNl
c01lbnVMaXN0KCkgY29uc3QKKyAgICB7CisjaWYgRU5BQkxFKE5PX0xJU1RCT1hfUkVOREVSSU5H
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgICAgIHJldHVybiAhbV9tdWx0aXBs
ZSAmJiBtX3NpemUgPD0gMTsKKyNlbmRpZgorICAgIH0KIAogICAgIGVudW0gU2tpcERpcmVjdGlv
biB7CiAgICAgICAgIFNraXBCYWNrd2FyZHMgPSAtMSwKQEAgLTE2Nyw5ICsxNzQsMjAgQEAgcHJp
dmF0ZToKICAgICBpbnQgbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdDsKICAgICBpbnQg
bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVj
dGlvbikgY29uc3Q7CiAKLSAgICBTZWxlY3RFbGVtZW50RGF0YSBtX2RhdGE7CiAgICAgQ29sbGVj
dGlvbkNhY2hlIG1fY29sbGVjdGlvbkluZm87CiAgICAgVmVjdG9yPEVsZW1lbnQqPiBtX2xpc3RJ
dGVtczsKKyAgICBWZWN0b3I8Ym9vbD4gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb247CisgICAgVmVj
dG9yPGJvb2w+IG1fY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb247CisgICAgRE9NVGltZVN0
YW1wIG1fbGFzdENoYXJUaW1lOworICAgIFN0cmluZyBtX3R5cGVkU3RyaW5nOworICAgIGludCBt
X3NpemU7CisgICAgaW50IG1fbGFzdE9uQ2hhbmdlSW5kZXg7CisgICAgaW50IG1fYWN0aXZlU2Vs
ZWN0aW9uQW5jaG9ySW5kZXg7CisgICAgaW50IG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXg7Cisg
ICAgVUNoYXIgbV9yZXBlYXRpbmdDaGFyOworICAgIGJvb2wgbV91c2VyRHJpdmVuQ2hhbmdlOwor
ICAgIGJvb2wgbV9tdWx0aXBsZTsKKyAgICBib29sIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGU7CiAg
ICAgYm9vbCBtX3JlY2FsY0xpc3RJdGVtczsKIH07CiAK
</data>
<flag name="review"
          id="108029"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>