<?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>47836</bug_id>
          
          <creation_ts>2010-10-18 10:46:11 -0700</creation_ts>
          <short_desc>[GTK] Move input type=range rendering to RenderThemeGtk</short_desc>
          <delta_ts>2010-12-15 11:19:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40139</dependson>
          <blocked>48486</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295608</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-18 10:46:11 -0700</bug_when>
    <thetext>This will be the first in a series of patches which move support for rendering widgets out of gtk2drawing.c and into RenderThemeGtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295615</commentid>
    <comment_count>1</comment_count>
      <attachid>71059</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-18 11:00:18 -0700</bug_when>
    <thetext>Created attachment 71059
Patch for this issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300713</commentid>
    <comment_count>2</comment_count>
      <attachid>72116</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-27 17:00:12 -0700</bug_when>
    <thetext>Created attachment 72116
Patch fixing several issues and updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317568</commentid>
    <comment_count>3</comment_count>
      <attachid>72116</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-12-06 05:17:31 -0800</bug_when>
    <thetext>Comment on attachment 72116
Patch fixing several issues and updated to ToT

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

&gt; WebCore/platform/gtk/RenderThemeGtk.cpp:548
&gt; +        shrink.setWidth(gtk_widget_get_style(widget)-&gt;ythickness);

Looks like we want xthickness here.

&gt; WebCore/platform/gtk/RenderThemeGtk.cpp:618
&gt; +        GtkWidget* widget = part == SliderThumbHorizontalPart ? gtkHScale() : gtkVScale();
&gt; +        int length = 0, width = 0;
&gt; +        gtk_widget_style_get(widget,
&gt; +                             &quot;slider_length&quot;, &amp;length,
&gt; +                             &quot;slider_width&quot;, &amp;width,
&gt; +                             NULL);
&gt; +        o-&gt;style()-&gt;setWidth(Length(length, Fixed));
&gt; +        o-&gt;style()-&gt;setHeight(Length(width, Fixed));

This is very unintuitive. Is really height? Is it always height, or just when it&apos;s an horizontal slider? Looking at GTK+&apos;s code, it looks like width is height when horizontal and width for real when vertical, and WebCore&apos;s style seems to be saner, and always treat width as width, so I think this is wrong.

r=me with those two fixed =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322265</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 15:14:36 -0800</bug_when>
    <thetext>Attachment 72116 was posted by a committer and has review+, assigning to Martin Robinson for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322704</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-15 11:19:20 -0800</bug_when>
    <thetext>Committed r74129: &lt;http://trac.webkit.org/changeset/74129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71059</attachid>
            <date>2010-10-18 11:00:18 -0700</date>
            <delta_ts>2010-10-27 17:00:09 -0700</delta_ts>
            <desc>Patch for this issue</desc>
            <filename>bug-47836-20101018110017.patch</filename>
            <type>text/plain</type>
            <size>32626</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWY5ODRkNjM0ZGIxY2I3NzUyZDk5OWM3OWZiNTczZGJjM2FmYjFhNy4uY2M4MTc5ZmNmM2Y1NmQy
NWFkYzhmYTc5MWI1ZTUzZDQ3ZTg2NDFlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAxMC0xMC0xOCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gTW92ZSBpbnB1dCB0eXBlPXJhbmdl
IHJlbmRlcmluZyB0byBSZW5kZXJUaGVtZUd0aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4MzYKKworICAgICAgICBCZWdpbiBtb3Zpbmcgd2lkZ2V0
IHJlbmRlcmluZyBvdXQgb2YgdGhlIG9sZCBNb3ppbGxhIHRoZW1lIGRyYXdpbmcgY29kZSwKKyAg
ICAgICAgd2hpY2ggc2hvdWxkIHJlbW92ZSBtYW55IGxpbmVzIG9mIGNvZGUgd2hlbiBjb21wbGV0
ZWQuIFdpZGdldFJlbmRlcmluZ0NvbnRleHQKKyAgICAgICAgbm93IGhpZGVzIHRoZSBHVEsrIDIg
dnMuIDMgQVBJIGRpZmZlcmVuY2VzLCBzbyB0aGF0IFJlbmRlclRoZW1lR3RrIGNhbiBzdGF5Cisg
ICAgICAgIHZlcnNpb24gYWdub3N0aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMg
cGF0Y2ggZG9lcyBub3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVH
dGs6OlJlbmRlclRoZW1lR3RrKTogZ3RrQ29udGFpbmVyKCkgbm93IHJldHVybnMgYQorICAgICAg
ICBHdGtXaWRnZXQsIHNvIHVwZGF0ZSB0aGUgY2FzdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6OmdldEd0a1N0YXRlVHlwZSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNo
CisgICAgICAgIGNvbnZlcnRzIGEgUmVuZGVyT2JqZWN0IHN0YXRlIGludG8gYSBHdGtTdGF0ZVR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRSZW5kZXJPYmplY3Qp
OiBSZW1vdmVkIHdvcmstYXJvdW5kcyBmb3IKKyAgICAgICAgc2NhbGUgcGFpbnRpbmcsIGFzIGl0
J3Mgbm90IGhhbmRsZWQgYnkgdGhpcyBtZXRob2QgYW55IGxvbmdlci4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKTogVXBkYXRlZCB0byB1c2UKKyAg
ICAgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwYWludFNsaWRlclRodW1iKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKTogR2V0IHRoZSBzaXplCisgICAgICAg
IHByb3BlcnRpZXMgZGlyZWN0bHkgZnJvbSB0aGUgd2lkZ2V0IG5vdyBpbnN0ZWFkIG9mIGFza2lu
ZyB0aGUgTW96aWxsYSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnNl
dHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIpOiBBZGRlZCB0aGlzCisgICAgICAgIGhlbHBlciB3
aGljaCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgY29kZSBxdWl0ZSBhIGJpdC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtDb250YWluZXIpOiBVcGRhdGVkIHRvIHVzZSBoZWxw
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrQnV0dG9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrRW50cnkpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a1ZTY2FsZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a0hTY2FsZSk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKTogUmVtb3Zl
ZAorICAgICAgICBHVEtfQ09OVEFJTkVSIGNhc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmg6IFVwZGF0ZWQgdG8gYWRkIG5ldyBHdGtIU2NhbGUgYW5kCisgICAgICAg
ICBHdGtWU2NhbGUgbWVtYmVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVy
aW5nQ29udGV4dC5oOiBBZGVkIG5ldyBtZXRob2RzIHRvIHByb3h5CisgICAgICAgIGd0a19wYWlu
dF9ib3gsIGd0a19wYWludF9mb2N1cyBhbmQgZ3RrX3BhaW50X3NsaWRlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dEd0azIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6Z3RrUGFpbnRCb3gpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1BhaW50Rm9jdXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1BhaW50U2xp
ZGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRl
eHRHdGszLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0
a1BhaW50Qm94KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRSZW5kZXJpbmdDb250
ZXh0OjpndGtQYWludEZvY3VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRSZW5k
ZXJpbmdDb250ZXh0OjpndGtQYWludFNsaWRlcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9ndGsyZHJhd2luZy5jOiBSZW1vdmVkIGRlZnVuY3QgY29kZSEKKyAgICAgICAgKG1vel9n
dGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRnZXRfcGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGszZHJhd2luZy5jOiBEaXR0by4KKyAgICAgICAgKG1v
el9ndGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRnZXRfcGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6CisKIDIwMTAtMTAtMTUgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CmluZGV4IDU5ZGExMTUzNjVjNDExYTlkOTM1OTZlNDEzNWY2NWQ4MDIyMGU5ZDIuLmZmMzI1MTY1
NTY0NzBlZTA0MmI3ZjYzNTgyODFiYTM2MGI3M2YwMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBSZW5kZXJUaGVtZUd0azo6UmVu
ZGVyVGhlbWVHdGsoKQogICAgICsrbW96R3RrUmVmQ291bnQ7CiAKICNpZiBFTkFCTEUoVklERU8p
Ci0gICAgaW5pdE1lZGlhU3R5bGluZyhndGtfcmNfZ2V0X3N0eWxlKEdUS19XSURHRVQoZ3RrQ29u
dGFpbmVyKCkpKSwgZmFsc2UpOworICAgIGluaXRNZWRpYVN0eWxpbmcoZ3RrX3JjX2dldF9zdHls
ZShndGtDb250YWluZXIoKSksIGZhbHNlKTsKICNlbmRpZgogfQogCkBAIC0yMjgsNiArMjI4LDE3
IEBAIHN0YXRpYyBib29sIHN1cHBvcnRzRm9jdXMoQ29udHJvbFBhcnQgYXBwZWFyYW5jZSkKICAg
ICB9CiB9CiAKK0d0a1N0YXRlVHlwZSBSZW5kZXJUaGVtZUd0azo6Z2V0R3RrU3RhdGVUeXBlKFJl
bmRlck9iamVjdCogb2JqZWN0KQoreworICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkgfHwgaXNS
ZWFkT25seUNvbnRyb2wob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIEdUS19TVEFURV9JTlNFTlNJ
VElWRTsKKyAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkpCisgICAgICAgIHJldHVybiBHVEtfU1RB
VEVfQUNUSVZFOworICAgIGlmIChpc0hvdmVyZWQob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIEdU
S19TVEFURV9QUkVMSUdIVDsKKyAgICByZXR1cm4gR1RLX1NUQVRFX05PUk1BTDsKK30KKwogYm9v
bCBSZW5kZXJUaGVtZUd0azo6c3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAogewogICAgIHJldHVybiBzdXBwb3J0c0ZvY3VzKHN0eWxlLT5hcHBlYXJhbmNl
KCkpOwpAQCAtMzA2LDE0ICszMTcsNiBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFJlbmRl
ck9iamVjdChHdGtUaGVtZVdpZGdldFR5cGUgdHlwZSwgUmVuZGVyT2JqZWN0KiByZQogICAgIHdp
ZGdldFN0YXRlLmlzRGVmYXVsdCA9IGZhbHNlOwogICAgIHdpZGdldFN0YXRlLmNhbkRlZmF1bHQg
PSBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBUaGUgZGVwcmVzc2VkIHZhbHVlIHNob3VsZCBwcm9i
YWJseSBhcHBseSBmb3Igb3RoZXIgdGhlbWUgcGFydHMgdG9vLgotICAgIC8vIEl0IG11c3QgYmUg
dXNlZCBmb3IgcmFuZ2UgdGh1bWJzLCBiZWNhdXNlIG90aGVyd2lzZSB3aGVuIHRoZSB0aHVtYiBp
cyBwcmVzc2VkLAotICAgIC8vIHRoZSByZW5kZXJpbmcgaXMgaW5jb3JyZWN0LgotICAgIGlmICh0
eXBlID09IE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTCB8fCB0eXBlID09IE1PWl9HVEtf
U0NBTEVfVEhVTUJfVkVSVElDQUwpCi0gICAgICAgIHdpZGdldFN0YXRlLmRlcHJlc3NlZCA9IGlz
UHJlc3NlZChyZW5kZXJPYmplY3QpOwotICAgIGVsc2UKLSAgICAgICAgd2lkZ2V0U3RhdGUuZGVw
cmVzc2VkID0gZmFsc2U7Ci0KICAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRl
eHQoY29udGV4dCwgcmVjdCk7CiAgICAgcmV0dXJuICF3aWRnZXRDb250ZXh0LnBhaW50TW96aWxs
YVdpZGdldCh0eXBlLCAmd2lkZ2V0U3RhdGUsIGZsYWdzLCBndGtUZXh0RGlyZWN0aW9uKHJlbmRl
ck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKIH0KQEAgLTQ3OSwxNCArNDgyLDI5IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKKyAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBv
YmplY3QtPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKICAgICBBU1NFUlQocGFydCA9PSBTbGlkZXJI
b3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclZlcnRpY2FsUGFydCk7CiAKLSAgICBHdGtU
aGVtZVdpZGdldFR5cGUgZ3RrUGFydCA9IE1PWl9HVEtfU0NBTEVfSE9SSVpPTlRBTDsKLSAgICBp
ZiAocGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCi0gICAgICAgIGd0a1BhcnQgPSBNT1pfR1RL
X1NDQUxFX1ZFUlRJQ0FMOworICAgIC8vIFdlIHNocmluayB0aGUgdHJvdWdoIHJlY3Qgc2xpZ2h0
bHkgdG8gbWFrZSByb29tIGZvciB0aGUgZm9jdXMgaW5kaWNhdG9yLgorICAgIEludFNpemUgc2hy
aW5rID0gSW50U2l6ZSgxLCAxKTsKKyAgICBHdGtXaWRnZXQqIHdpZGdldCA9IDA7CisgICAgaWYg
KHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0KSB7CisgICAgICAgIHdpZGdldCA9IGd0a1ZTY2Fs
ZSgpOworICAgICAgICBzaHJpbmsuc2V0SGVpZ2h0KGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdl
dCktPnl0aGlja25lc3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHdpZGdldCA9IGd0a0hTY2Fs
ZSgpOworICAgICAgICBzaHJpbmsuc2V0V2lkdGgoZ3RrX3dpZGdldF9nZXRfc3R5bGUod2lkZ2V0
KS0+eXRoaWNrbmVzcyk7CisgICAgfQorCisgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dCB3aWRn
ZXRDb250ZXh0KGluZm8uY29udGV4dCwgcmVjdCk7CisgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWlu
dEJveCh3aWRnZXQsIEdUS19TVEFURV9BQ1RJVkUsIEdUS19TSEFET1dfT1VULCAidHJvdWdoIiwg
c2hyaW5rKTsKKyAgICBpZiAoaXNGb2N1c2VkKG9iamVjdCkpCisgICAgICAgIHdpZGdldENvbnRl
eHQuZ3RrUGFpbnRGb2N1cyh3aWRnZXQsIGdldEd0a1N0YXRlVHlwZShvYmplY3QpLCBHVEtfU0hB
RE9XX09VVCwgInRyb3VnaCIpOwogCi0gICAgcmV0dXJuIHBhaW50UmVuZGVyT2JqZWN0KGd0a1Bh
cnQsIG9iamVjdCwgaW5mby5jb250ZXh0LCB0b1JlbmRlckJveChvYmplY3QpLT5hYnNvbHV0ZUNv
bnRlbnRCb3goKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFJlbmRlclRoZW1lR3Rr
OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdApAQCAtNDk2LDE0ICs1MTQsMjIgQEAgdm9pZCBSZW5kZXJU
aGVtZUd0azo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqIHN0eWwKIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUaHVtYihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogeworICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgQ29udHJvbFBhcnQgcGFydCA9IG9iamVjdC0+c3R5bGUo
KS0+YXBwZWFyYW5jZSgpOwogICAgIEFTU0VSVChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRh
bFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCk7CiAKLSAgICBHdGtUaGVt
ZVdpZGdldFR5cGUgZ3RrUGFydCA9IE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTDsKKyAg
ICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRleHQoaW5mby5jb250ZXh0LCByZWN0
KTsKICAgICBpZiAocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkKLSAgICAgICAgZ3Rr
UGFydCA9IE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUw7CisgICAgICAgIHdpZGdldENvbnRl
eHQuZ3RrUGFpbnRTbGlkZXIoZ3RrVlNjYWxlKCksIGdldEd0a1N0YXRlVHlwZShvYmplY3QpLCBH
VEtfU0hBRE9XX09VVCwKKyAgICAgICAgICAgICJ2c2NhbGUiLCBHVEtfT1JJRU5UQVRJT05fVkVS
VElDQUwpOworICAgIGVsc2UKKyAgICAgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludFNsaWRlcihn
dGtIU2NhbGUoKSwgZ2V0R3RrU3RhdGVUeXBlKG9iamVjdCksIEdUS19TSEFET1dfT1VULAorICAg
ICAgICAgICAgICJoc2NhbGUiLCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcGFpbnRSZW5kZXJPYmplY3QoZ3RrUGFydCwgb2Jq
ZWN0LCBpbmZvLmNvbnRleHQsIHJlY3QpOwogfQogCiB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1
c3RTbGlkZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdApAQCAtNTIxLDEwICs1NDcsMTUgQEAgdm9pZCBSZW5kZXJUaGVtZUd0
azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCogbykgY29uc3QKICAgICB9IGVs
c2UKICNlbmRpZgogICAgIGlmIChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwg
cGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgewotICAgICAgICBnaW50IHdpZHRoLCBo
ZWlnaHQ7Ci0gICAgICAgIG1vel9ndGtfZ2V0X3NjYWxldGh1bWJfbWV0cmljcyhwYXJ0ID09IFNs
aWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCA6IEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCwgJndpZHRoLCAmaGVpZ2h0KTsKLSAgICAgICAgby0+c3R5
bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOwotICAgICAgICBvLT5zdHlsZSgp
LT5zZXRIZWlnaHQoTGVuZ3RoKGhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgR3RrV2lkZ2V0KiB3
aWRnZXQgPSBwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBndGtIU2NhbGUoKSA6
IGd0a1ZTY2FsZSgpOworICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgaW50IHdpZHRo
ID0gMDsKKyAgICAgICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQod2lkZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAic2xpZGVyX2xlbmd0aCIsICZsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzbGlkZXJfd2lkdGgiLCAmd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgo
bGVuZ3RoLCBGaXhlZCkpOworICAgICAgICBvLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKHdp
ZHRoLCBGaXhlZCkpOwogICAgIH0KIH0KIApAQCAtNjE1LDE3ICs2NDYsMzAgQEAgc3RhdGljIHZv
aWQgZ3RrU3R5bGVTZXRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrU3R5bGUqIHByZXZp
b3VzLCBSZW5kZXJUaGUKICAgICByZW5kZXJUaGVtZS0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2Uo
KTsKIH0KIAotR3RrQ29udGFpbmVyKiBSZW5kZXJUaGVtZUd0azo6Z3RrQ29udGFpbmVyKCkgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OnNldHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEd0a1dpZGdldCogd2luZG93KSBjb25zdAoreworICAgIGd0a19jb250
YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2lkZ2V0KTsKKyAgICBndGtfd2lkZ2V0
X3JlYWxpemUod2lkZ2V0KTsKKyAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVCh3aWRnZXQp
LCAidHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7CisKKyAgICAv
LyBGSVhNRTogUGVyaGFwcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgdGhlIGNvbnRh
aW5pbmcgd2luZG93IG9yIHBhcmVudCBjb250YWluZXIuCisgICAgZ19zaWduYWxfY29ubmVjdCh3
aWRnZXQsICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBjb25z
dF9jYXN0PFJlbmRlclRoZW1lR3RrKj4odGhpcykpOworfQorCitHdGtXaWRnZXQqIFJlbmRlclRo
ZW1lR3RrOjpndGtDb250YWluZXIoKSBjb25zdAogewogICAgIGlmIChtX2d0a0NvbnRhaW5lcikK
ICAgICAgICAgcmV0dXJuIG1fZ3RrQ29udGFpbmVyOwogCiAgICAgbV9ndGtXaW5kb3cgPSBndGtf
d2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKTsKLSAgICBtX2d0a0NvbnRhaW5lciA9IEdUS19D
T05UQUlORVIoZ3RrX2ZpeGVkX25ldygpKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrV2lu
ZG93LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3Rf
Y2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRoaXMpKTsKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKG1fZ3RrV2luZG93KSwgR1RLX1dJREdFVChtX2d0a0NvbnRhaW5lcikpOworI2lm
IEdUS19BUElfVkVSU0lPTl8yCisgICAgZ3RrX3dpZGdldF9zZXRfY29sb3JtYXAobV9ndGtXaW5k
b3csIG1fdGhlbWVQYXJ0cy0+Y29sb3JtYXApOworI2VuZGlmCiAgICAgZ3RrX3dpZGdldF9yZWFs
aXplKG1fZ3RrV2luZG93KTsKKyAgICBndGtfd2lkZ2V0X3NldF9uYW1lKG1fZ3RrV2luZG93LCAi
TW96aWxsYUd0a1dpZGdldCIpOwogCisgICAgbV9ndGtDb250YWluZXIgPSBndGtfZml4ZWRfbmV3
KCk7CisgICAgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5lcihtX2d0a0NvbnRhaW5lciwgbV9n
dGtXaW5kb3cpOwogICAgIHJldHVybiBtX2d0a0NvbnRhaW5lcjsKIH0KIApAQCAtNjMzLDEyICs2
NzcsOCBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtCdXR0b24oKSBjb25zdAogewog
ICAgIGlmIChtX2d0a0J1dHRvbikKICAgICAgICAgcmV0dXJuIG1fZ3RrQnV0dG9uOwotCiAgICAg
bV9ndGtCdXR0b24gPSBndGtfYnV0dG9uX25ldygpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9n
dGtCdXR0b24sICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBj
b25zdF9jYXN0PFJlbmRlclRoZW1lR3RrKj4odGhpcykpOwotICAgIGd0a19jb250YWluZXJfYWRk
KGd0a0NvbnRhaW5lcigpLCBtX2d0a0J1dHRvbik7Ci0gICAgZ3RrX3dpZGdldF9yZWFsaXplKG1f
Z3RrQnV0dG9uKTsKLQorICAgIHNldHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIobV9ndGtCdXR0
b24sIGd0a0NvbnRhaW5lcigpKTsKICAgICByZXR1cm4gbV9ndGtCdXR0b247CiB9CiAKQEAgLTY0
NiwxMiArNjg2LDggQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrRW50cnkoKSBjb25z
dAogewogICAgIGlmIChtX2d0a0VudHJ5KQogICAgICAgICByZXR1cm4gbV9ndGtFbnRyeTsKLQog
ICAgIG1fZ3RrRW50cnkgPSBndGtfZW50cnlfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCht
X2d0a0VudHJ5LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwg
Y29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRoaXMpKTsKLSAgICBndGtfY29udGFpbmVyX2Fk
ZChndGtDb250YWluZXIoKSwgbV9ndGtFbnRyeSk7Ci0gICAgZ3RrX3dpZGdldF9yZWFsaXplKG1f
Z3RrRW50cnkpOwotCisgICAgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5lcihtX2d0a0VudHJ5
LCBndGtDb250YWluZXIoKSk7CiAgICAgcmV0dXJuIG1fZ3RrRW50cnk7CiB9CiAKQEAgLTY1OSwx
NSArNjk1LDMxIEBAIEd0a1dpZGdldCogUmVuZGVyVGhlbWVHdGs6Omd0a1RyZWVWaWV3KCkgY29u
c3QKIHsKICAgICBpZiAobV9ndGtUcmVlVmlldykKICAgICAgICAgcmV0dXJuIG1fZ3RrVHJlZVZp
ZXc7Ci0KICAgICBtX2d0a1RyZWVWaWV3ID0gZ3RrX3RyZWVfdmlld19uZXcoKTsKLSAgICBnX3Np
Z25hbF9jb25uZWN0KG1fZ3RrVHJlZVZpZXcsICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0
eWxlU2V0Q2FsbGJhY2spLCBjb25zdF9jYXN0PFJlbmRlclRoZW1lR3RrKj4odGhpcykpOwotICAg
IGd0a19jb250YWluZXJfYWRkKGd0a0NvbnRhaW5lcigpLCBtX2d0a1RyZWVWaWV3KTsKLSAgICBn
dGtfd2lkZ2V0X3JlYWxpemUobV9ndGtUcmVlVmlldyk7Ci0KKyAgICBzZXR1cFdpZGdldEFuZEFk
ZFRvQ29udGFpbmVyKG1fZ3RrVHJlZVZpZXcsIGd0a0NvbnRhaW5lcigpKTsKICAgICByZXR1cm4g
bV9ndGtUcmVlVmlldzsKIH0KIAorR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrVlNjYWxl
KCkgY29uc3QKK3sKKyAgICBpZiAobV9ndGtWU2NhbGUpCisgICAgICAgIHJldHVybiBtX2d0a1ZT
Y2FsZTsKKyAgICBtX2d0a1ZTY2FsZSA9IGd0a192c2NhbGVfbmV3KDApOworICAgIGd0a193aWRn
ZXRfc2V0X2RpcmVjdGlvbihtX2d0a1ZTY2FsZSwgR1RLX1RFWFRfRElSX0xUUik7CisgICAgc2V0
dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5lcihtX2d0a1ZTY2FsZSwgZ3RrQ29udGFpbmVyKCkpOwor
ICAgIHJldHVybiBtX2d0a1ZTY2FsZTsKK30KKworR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6
Z3RrSFNjYWxlKCkgY29uc3QKK3sKKyAgICBpZiAobV9ndGtIU2NhbGUpCisgICAgICAgIHJldHVy
biBtX2d0a0hTY2FsZTsKKyAgICBtX2d0a0hTY2FsZSA9IGd0a19oc2NhbGVfbmV3KDApOworICAg
IGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihtX2d0a0hTY2FsZSwgR1RLX1RFWFRfRElSX0xUUik7
CisgICAgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5lcihtX2d0a0hTY2FsZSwgZ3RrQ29udGFp
bmVyKCkpOworICAgIHJldHVybiBtX2d0a0hTY2FsZTsKK30KKwogR3RrV2lkZ2V0KiBSZW5kZXJU
aGVtZUd0azo6Z3RrU2Nyb2xsYmFyKCkKIHsKICAgICByZXR1cm4gbW96X2d0a19nZXRfc2Nyb2xs
YmFyX3dpZGdldCgpOwpAQCAtNjc2LDcgKzcyOCw3IEBAIEd0a1dpZGdldCogUmVuZGVyVGhlbWVH
dGs6Omd0a1Njcm9sbGJhcigpCiB2b2lkIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUNvbG9yc0Rp
ZENoYW5nZSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIGluaXRNZWRpYVN0eWxpbmcoZ3Rr
X3JjX2dldF9zdHlsZShHVEtfV0lER0VUKGd0a0NvbnRhaW5lcigpKSksIHRydWUpOworICAgIGlu
aXRNZWRpYVN0eWxpbmcoZ3RrX3JjX2dldF9zdHlsZShndGtDb250YWluZXIoKSksIHRydWUpOwog
I2VuZGlmCiAgICAgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCA4NjRlOTQ0MDU4ZTE1ZTkxNzMz
NWIzMGMyMmYxMWU3ODVmYWVlYjczLi4xYzQ1MGJlOTNkM2VjZDZlYTUxNDE3OWY2NWI0OTU0ODll
NThhYmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTE0NCwyNiAr
MTQ0LDI0IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIC8qCi0gICAgICog
aG9sZCB0aGUgc3RhdGUKLSAgICAgKi8KICAgICBHdGtXaWRnZXQqIGd0a0J1dHRvbigpIGNvbnN0
OwogICAgIEd0a1dpZGdldCogZ3RrRW50cnkoKSBjb25zdDsKICAgICBHdGtXaWRnZXQqIGd0a1Ry
ZWVWaWV3KCkgY29uc3Q7CisgICAgR3RrV2lkZ2V0KiBndGtWU2NhbGUoKSBjb25zdDsKKyAgICBH
dGtXaWRnZXQqIGd0a0hTY2FsZSgpIGNvbnN0OworICAgIEd0a1dpZGdldCogZ3RrQ29udGFpbmVy
KCkgY29uc3Q7CiAKLSAgICAvKgotICAgICAqIHVubWFwcGVkIEdka1dpbmRvdyBoYXZpbmcgYSBj
b250YWluZXIuIFRoaXMgaXMgaG9sZGluZyBhbGwKLSAgICAgKiBvdXIgZmFrZSB3aWRnZXRzCi0g
ICAgICovCi0gICAgR3RrQ29udGFpbmVyKiBndGtDb250YWluZXIoKSBjb25zdDsKLQorICAgIHZv
aWQgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5lcihHdGtXaWRnZXQqLCBHdGtXaWRnZXQqKSBj
b25zdDsKKyAgICBHdGtTdGF0ZVR5cGUgZ2V0R3RrU3RhdGVUeXBlKFJlbmRlck9iamVjdCogb2Jq
ZWN0KTsKICAgICBib29sIHBhaW50UmVuZGVyT2JqZWN0KEd0a1RoZW1lV2lkZ2V0VHlwZSwgUmVu
ZGVyT2JqZWN0KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IGZs
YWdzID0gMCk7CiAKICAgICBtdXRhYmxlIEd0a1dpZGdldCogbV9ndGtXaW5kb3c7Ci0gICAgbXV0
YWJsZSBHdGtDb250YWluZXIqIG1fZ3RrQ29udGFpbmVyOworICAgIG11dGFibGUgR3RrV2lkZ2V0
KiBtX2d0a0NvbnRhaW5lcjsKICAgICBtdXRhYmxlIEd0a1dpZGdldCogbV9ndGtCdXR0b247CiAg
ICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3RrRW50cnk7CiAgICAgbXV0YWJsZSBHdGtXaWRnZXQq
IG1fZ3RrVHJlZVZpZXc7CisgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3RrVlNjYWxlOworICAg
IG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0hTY2FsZTsKIAogICAgIG11dGFibGUgQ29sb3IgbV9w
YW5lbENvbG9yOwogICAgIG11dGFibGUgQ29sb3IgbV9zbGlkZXJDb2xvcjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzYmI4MDY1ODI5MGU2
MTQ3Y2U3YjBjNWQ5ZDE5YjljMDU0YjEyODg0Li45MmJiYmVlNDliMmEzYWUyOGZlZTRmNGY2Mjc4
YjNlMjQ2MDNkYjU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5k
ZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5n
Q29udGV4dC5oCkBAIC0zNCw3ICszNCwxMSBAQCBjbGFzcyBXaWRnZXRSZW5kZXJpbmdDb250ZXh0
IHsKIHB1YmxpYzoKICAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmKTsKICAgICB+V2lkZ2V0UmVuZGVyaW5nQ29udGV4dCgpOworCiAgICAg
Ym9vbCBwYWludE1vemlsbGFXaWRnZXQoR3RrVGhlbWVXaWRnZXRUeXBlLCBHdGtXaWRnZXRTdGF0
ZSosIGludCBmbGFncywgR3RrVGV4dERpcmVjdGlvbiA9IEdUS19URVhUX0RJUl9OT05FKTsKKyAg
ICB2b2lkIGd0a1BhaW50Qm94KEd0a1dpZGdldCosIEd0a1N0YXRlVHlwZSwgR3RrU2hhZG93VHlw
ZSwgY29uc3QgZ2NoYXIqLCBjb25zdCBJbnRTaXplJiBzaHJpbmspOworICAgIHZvaWQgZ3RrUGFp
bnRGb2N1cyhHdGtXaWRnZXQqLCBHdGtTdGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUsIGNvbnN0IGdj
aGFyKik7CisgICAgdm9pZCBndGtQYWludFNsaWRlcihHdGtXaWRnZXQqLCBHdGtTdGF0ZVR5cGUs
IEd0a1NoYWRvd1R5cGUsIGNvbnN0IGdjaGFyKiwgR3RrT3JpZW50YXRpb24pOwogCiBwcml2YXRl
OgogICAgIEdyYXBoaWNzQ29udGV4dCogbV9ncmFwaGljc0NvbnRleHQ7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0R3RrMi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0R3RrMi5jcHAKaW5kZXggNzgw
NGMxZTI5YTJiNmJmODk4ODMxNDMyN2FkNmJhNDQ1Y2JkNzFlNS4uN2E0MDZhZGZhNjI0NTZiODY5
ODU3NWU1MTMwNmQxNDBmNWJiYjFiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
V2lkZ2V0UmVuZGVyaW5nQ29udGV4dEd0azIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldFJlbmRlcmluZ0NvbnRleHRHdGsyLmNwcApAQCAtMTYyLDYgKzE2MiwzMyBAQCBib29s
IFdpZGdldFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50TW96aWxsYVdpZGdldChHdGtUaGVtZVdpZGdl
dFR5cGUgdHlwZSwgR3RrV2lkZwogICAgIHJldHVybiAhbV9oYWRFcnJvcjsKIH0KIAordm9pZCBX
aWRnZXRSZW5kZXJpbmdDb250ZXh0OjpndGtQYWludEJveChHdGtXaWRnZXQqIHdpZGdldCwgR3Rr
U3RhdGVUeXBlIHN0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSBzaGFkb3dUeXBlLCBjb25zdCBnY2hh
ciogZGV0YWlsLCBjb25zdCBJbnRTaXplJiBzaHJpbmspCit7CisgICAgLy8gU29tZSB3aWRnZXRz
IG5lZWQgdG8gcGFpbnQgYSBzbWFsbGVyIGJveCB0aGFuIHRoZWlyIHNpemUuCisgICAgR2RrUmVj
dGFuZ2xlIHJlYWxSZWN0ID0gbV9wYWludFJlY3Q7CisgICAgaWYgKCFzaHJpbmsuaXNFbXB0eSgp
KSB7CisgICAgICAgIHJlYWxSZWN0LnggKz0gc2hyaW5rLndpZHRoKCk7CisgICAgICAgIHJlYWxS
ZWN0LndpZHRoIC09IChzaHJpbmsud2lkdGgoKSAqIDIpOworICAgICAgICByZWFsUmVjdC55ICs9
IHNocmluay53aWR0aCgpOworICAgICAgICByZWFsUmVjdC5oZWlnaHQgLT0gKHNocmluay53aWR0
aCgpICogMik7CisgICAgfQorCisgICAgZ3RrX3BhaW50X2JveChndGtfd2lkZ2V0X2dldF9zdHls
ZSh3aWRnZXQpLCBtX3RhcmdldCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBlLCAmcmVhbFJlY3QsCisg
ICAgICAgICAgICAgICAgICB3aWRnZXQsIGRldGFpbCwgcmVhbFJlY3QueCwgcmVhbFJlY3QueSwg
cmVhbFJlY3Qud2lkdGgsIHJlYWxSZWN0LmhlaWdodCk7Cit9CisKK3ZvaWQgV2lkZ2V0UmVuZGVy
aW5nQ29udGV4dDo6Z3RrUGFpbnRGb2N1cyhHdGtXaWRnZXQqIHdpZGdldCwgR3RrU3RhdGVUeXBl
IHN0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSBzaGFkb3dUeXBlLCBjb25zdCBnY2hhciogZGV0YWls
KQoreworICAgIGd0a19wYWludF9ib3goZ3RrX3dpZGdldF9nZXRfc3R5bGUod2lkZ2V0KSwgbV90
YXJnZXQsIHN0YXRlVHlwZSwgc2hhZG93VHlwZSwgJm1fcGFpbnRSZWN0LCB3aWRnZXQsCisgICAg
ICAgICAgICAgICAgICBkZXRhaWwsIG1fcGFpbnRSZWN0LngsIG1fcGFpbnRSZWN0LnksIG1fcGFp
bnRSZWN0LndpZHRoLCBtX3BhaW50UmVjdC5oZWlnaHQpOworfQorCit2b2lkIFdpZGdldFJlbmRl
cmluZ0NvbnRleHQ6Omd0a1BhaW50U2xpZGVyKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtTdGF0ZVR5
cGUgc3RhdGVUeXBlLCBHdGtTaGFkb3dUeXBlIHNoYWRvd1R5cGUsIGNvbnN0IGdjaGFyKiBkZXRh
aWwsIEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uKQoreworICAgIGd0a19wYWludF9zbGlkZXIo
Z3RrX3dpZGdldF9nZXRfc3R5bGUod2lkZ2V0KSwgbV90YXJnZXQsIHN0YXRlVHlwZSwgc2hhZG93
VHlwZSwgJm1fcGFpbnRSZWN0LCB3aWRnZXQsCisgICAgICAgICAgICAgICAgICAgICBkZXRhaWws
IG1fcGFpbnRSZWN0LngsIG1fcGFpbnRSZWN0LnksIG1fcGFpbnRSZWN0LndpZHRoLCBtX3BhaW50
UmVjdC5oZWlnaHQsIG9yaWVudGF0aW9uKTsKK30KKwogfQogCiAjZW5kaWYgLy8gR1RLX0FQSV9W
RVJTSU9OXzIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmlu
Z0NvbnRleHRHdGszLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0Nv
bnRleHRHdGszLmNwcAppbmRleCA2OTNjNDBlMWFjYjlhYjEwYzk4YjMyNWFkNjMyNmEzNzgwZTNj
OGM0Li5lOWYyZTQzZGM0MzFiNDA4YTNlOGMzYzY5ZTNmZmZlZjkzNDZjMmYzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0R3RrMy5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dEd0azMuY3BwCkBA
IC00Nyw0ICs0NywzMSBAQCBib29sIFdpZGdldFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50TW96aWxs
YVdpZGdldChHdGtUaGVtZVdpZGdldFR5cGUgdHlwZSwgR3RrV2lkZwogICAgIHJldHVybiAhbV9o
YWRFcnJvcjsKIH0KIAordm9pZCBXaWRnZXRSZW5kZXJpbmdDb250ZXh0OjpndGtQYWludEJveChH
dGtXaWRnZXQqIHdpZGdldCwgR3RrU3RhdGVUeXBlIHN0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSBz
aGFkb3dUeXBlLCBjb25zdCBnY2hhciogZGV0YWlsLCBjb25zdCBJbnRTaXplJiBzaHJpbmspCit7
CisgICAgLy8gU29tZSB3aWRnZXRzIG5lZWQgdG8gcGFpbnQgYSBzbWFsbGVyIGJveCB0aGFuIHRo
ZWlyIHNpemUuCisgICAgR2RrUmVjdGFuZ2xlIHJlYWxSZWN0ID0gbV9wYWludFJlY3Q7CisgICAg
aWYgKCFzaHJpbmsuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlYWxSZWN0LnggKz0gc2hyaW5rLndp
ZHRoKCk7CisgICAgICAgIHJlYWxSZWN0LndpZHRoIC09IChzaHJpbmsud2lkdGgoKSAqIDIpOwor
ICAgICAgICByZWFsUmVjdC55ICs9IHNocmluay53aWR0aCgpOworICAgICAgICByZWFsUmVjdC5o
ZWlnaHQgLT0gKHNocmluay53aWR0aCgpICogMik7CisgICAgfQorCisgICAgZ3RrX3BhaW50X2Jv
eChndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCBtX3RhcmdldCwgc3RhdGVUeXBlLCBzaGFk
b3dUeXBlLCB3aWRnZXQsCisgICAgICAgICAgICAgICAgICBkZXRhaWwsIHJlYWxSZWN0LngsIHJl
YWxSZWN0LnksIHJlYWxSZWN0LndpZHRoLCByZWFsUmVjdC5oZWlnaHQpOworfQorCit2b2lkIFdp
ZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1BhaW50Rm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0
a1N0YXRlVHlwZSBzdGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUgc2hhZG93VHlwZSwgY29uc3QgZ2No
YXIqIGRldGFpbCkKK3sKKyAgICBndGtfcGFpbnRfYm94KGd0a193aWRnZXRfZ2V0X3N0eWxlKHdp
ZGdldCksIG1fdGFyZ2V0LCBzdGF0ZVR5cGUsIHNoYWRvd1R5cGUsIHdpZGdldCwKKyAgICAgICAg
ICAgICAgICAgIGRldGFpbCwgbV9wYWludFJlY3QueCwgbV9wYWludFJlY3QueSwgbV9wYWludFJl
Y3Qud2lkdGgsIG1fcGFpbnRSZWN0LmhlaWdodCk7Cit9CisKK3ZvaWQgV2lkZ2V0UmVuZGVyaW5n
Q29udGV4dDo6Z3RrUGFpbnRTbGlkZXIoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0YXRlVHlwZSBz
dGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUgc2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqIGRldGFpbCwg
R3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgZ3RrX3BhaW50X3NsaWRlcihndGtf
d2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCBtX3RhcmdldCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBl
LCB3aWRnZXQsCisgICAgICAgICAgICAgICAgICAgICBkZXRhaWwsIG1fcGFpbnRSZWN0LngsIG1f
cGFpbnRSZWN0LnksIG1fcGFpbnRSZWN0LndpZHRoLCBtX3BhaW50UmVjdC5oZWlnaHQsIG9yaWVu
dGF0aW9uKTsKK30KKwogI2VuZGlmIC8vICFHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L2d0azJkcmF3aW5nLmMKaW5kZXggZDJkOGIyMDcyOGJiODkwNDk5ZTM4NWIxZDFiMTJhNjZiNDhi
ZmNlZS4uNmZiY2MzYzE3YzlhYTZlYjgxY2JiZjQ1ZWMwYWUzNDZmMTIwNTRmYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYworKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9ndGsyZHJhd2luZy5jCkBAIC00Niw2ICs0Niw5IEBACiAKICNpZmRlZiBHVEtfQVBJ
X1ZFUlNJT05fMgogCisjdW5kZWYgR0RLX0RJU0FCTEVfREVQUkVDQVRFRAorI3VuZGVmIEdUS19E
SVNBQkxFX0RFUFJFQ0FURUQKKwogI2luY2x1ZGUgPGdkay9nZGtwcml2YXRlLmg+CiAjaW5jbHVk
ZSAiZ3RrZHJhd2luZy5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKQEAgLTE4MiwyMCAr
MTg1LDYgQEAgZW5zdXJlX3Njcm9sbGJhcl93aWRnZXQoKQogfQogCiBzdGF0aWMgZ2ludAotZW5z
dXJlX3NjYWxlX3dpZGdldCgpCi17Ci0gIGlmICghZ1BhcnRzLT5oU2NhbGVXaWRnZXQpIHsKLSAg
ICBnUGFydHMtPmhTY2FsZVdpZGdldCA9IGd0a19oc2NhbGVfbmV3KE5VTEwpOwotICAgIHNldHVw
X3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5oU2NhbGVXaWRnZXQpOwotICB9Ci0gIGlmICghZ1Bh
cnRzLT52U2NhbGVXaWRnZXQpIHsKLSAgICBnUGFydHMtPnZTY2FsZVdpZGdldCA9IGd0a192c2Nh
bGVfbmV3KE5VTEwpOwotICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT52U2NhbGVX
aWRnZXQpOwotICB9Ci0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50
CiBlbnN1cmVfZW50cnlfd2lkZ2V0KCkKIHsKICAgICBpZiAoIWdQYXJ0cy0+ZW50cnlXaWRnZXQp
IHsKQEAgLTkxOCw4MyArOTA3LDYgQEAgbW96X2d0a19zY3JvbGxiYXJfdGh1bWJfcGFpbnQoR3Rr
VGhlbWVXaWRnZXRUeXBlIHdpZGdldCwKIH0KIAogc3RhdGljIGdpbnQKLW1vel9ndGtfc2NhbGVf
cGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgR3RrT3JpZW50YXRpb24gZmxhZ3MsIEd0a1RleHREaXJl
Y3Rpb24gZGlyZWN0aW9uKQotewotICBnaW50IHggPSAwLCB5ID0gMDsKLSAgR3RrU3RhdGVUeXBl
IHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICBHdGtTdHlsZSogc3R5bGU7
Ci0gIEd0a1dpZGdldCogd2lkZ2V0OwotCi0gIGVuc3VyZV9zY2FsZV93aWRnZXQoKTsKLSAgd2lk
Z2V0ID0gKChmbGFncyA9PSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCkgPyBnUGFydHMtPmhT
Y2FsZVdpZGdldCA6IGdQYXJ0cy0+dlNjYWxlV2lkZ2V0KTsKLSAgZ3RrX3dpZGdldF9zZXRfZGly
ZWN0aW9uKHdpZGdldCwgZGlyZWN0aW9uKTsKLQotICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0
eWxlKHdpZGdldCk7Ci0KLSAgaWYgKGZsYWdzID09IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFM
KSB7Ci0gICAgeCA9IFhUSElDS05FU1Moc3R5bGUpOwotICAgIHkrKzsKLSAgfQotICBlbHNlIHsK
LSAgICB4Kys7Ci0gICAgeSA9IFlUSElDS05FU1Moc3R5bGUpOwotICB9Ci0KLSAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gIGd0a19zdHlsZV9hcHBseV9kZWZh
dWx0X2JhY2tncm91bmQoc3R5bGUsIGRyYXdhYmxlLCBUUlVFLCBHVEtfU1RBVEVfTk9STUFMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCByZWN0LT54LCBy
ZWN0LT55LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRo
LCByZWN0LT5oZWlnaHQpOwotCi0gIGd0a19wYWludF9ib3goc3R5bGUsIGRyYXdhYmxlLCBHVEtf
U1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX0lOLCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICB3
aWRnZXQsICJ0cm91Z2giLCByZWN0LT54ICsgeCwgcmVjdC0+eSArIHksCi0gICAgICAgICAgICAg
ICAgcmVjdC0+d2lkdGggLSAyKngsIHJlY3QtPmhlaWdodCAtIDIqeSk7Ci0KLSAgaWYgKHN0YXRl
LT5mb2N1c2VkKQotICAgIGd0a19wYWludF9mb2N1cyhzdHlsZSwgZHJhd2FibGUsIHN0YXRlX3R5
cGUsIGNsaXByZWN0LCB3aWRnZXQsICJ0cm91Z2giLAotICAgICAgICAgICAgICAgICAgICByZWN0
LT54LCByZWN0LT55LCByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19zY2FsZV90aHVtYl9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtPcmllbnRhdGlvbiBmbGFncywgR3Rr
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gIEd0a1N0YXRlVHlwZSBzdGF0ZV90eXBlID0g
Q29udmVydEd0a1N0YXRlKHN0YXRlKTsKLSAgR3RrU3R5bGUqIHN0eWxlOwotICBHdGtXaWRnZXQq
IHdpZGdldDsKLSAgZ2ludCB0aHVtYl93aWR0aCwgdGh1bWJfaGVpZ2h0LCB4LCB5OwotCi0gIGVu
c3VyZV9zY2FsZV93aWRnZXQoKTsKLSAgd2lkZ2V0ID0gKChmbGFncyA9PSBHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCkgPyBnUGFydHMtPmhTY2FsZVdpZGdldCA6IGdQYXJ0cy0+dlNjYWxlV2lk
Z2V0KTsKLSAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZGlyZWN0aW9uKTsKLQot
ICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0KLSAgLyogZGV0ZXJtaW5l
IHRoZSB0aHVtYiBzaXplLCBhbmQgcG9zaXRpb24gdGhlIHRodW1iIGluIHRoZSBjZW50ZXIgaW4g
dGhlIG9wcG9zaXRlIGF4aXMgKi8KLSAgaWYgKGZsYWdzID09IEdUS19PUklFTlRBVElPTl9IT1JJ
Wk9OVEFMKSB7Ci0gICAgbW96X2d0a19nZXRfc2NhbGV0aHVtYl9tZXRyaWNzKEdUS19PUklFTlRB
VElPTl9IT1JJWk9OVEFMLCAmdGh1bWJfd2lkdGgsICZ0aHVtYl9oZWlnaHQpOwotICAgIHggPSBy
ZWN0LT54OwotICAgIHkgPSByZWN0LT55ICsgKHJlY3QtPmhlaWdodCAtIHRodW1iX2hlaWdodCkg
LyAyOwotICB9Ci0gIGVsc2UgewotICAgIG1vel9ndGtfZ2V0X3NjYWxldGh1bWJfbWV0cmljcyhH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwsICZ0aHVtYl9oZWlnaHQsICZ0aHVtYl93aWR0aCk7Ci0g
ICAgeCA9IHJlY3QtPnggKyAocmVjdC0+d2lkdGggLSB0aHVtYl93aWR0aCkgLyAyOwotICAgIHkg
PSByZWN0LT55OwotICB9Ci0KLSAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVj
dC0+eSk7Ci0gIGd0a19wYWludF9zbGlkZXIoc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBH
VEtfU0hBRE9XX09VVCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgd2lkZ2V0LCAoZmxh
Z3MgPT0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpID8gImhzY2FsZSIgOiAidnNjYWxlIiwK
LSAgICAgICAgICAgICAgICAgICB4LCB5LCB0aHVtYl93aWR0aCwgdGh1bWJfaGVpZ2h0LCBmbGFn
cyk7Ci0KLSAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKIG1vel9n
dGtfZW50cnlfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3Qs
CiAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0
YXRlKiBzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1Rl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTMwNywxNCArMTIxOSw2IEBAIG1vel9ndGtfZ2V0
X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2lu
dCogdG9wLAogICAgICAgICBlbnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCk7CiAgICAgICAgIHcgPSBn
UGFydHMtPnByb2dyZXNXaWRnZXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19T
Q0FMRV9IT1JJWk9OVEFMOgotICAgICAgICBlbnN1cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gICAgICAg
IHcgPSBnUGFydHMtPmhTY2FsZVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pf
R1RLX1NDQUxFX1ZFUlRJQ0FMOgotICAgICAgICBlbnN1cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gICAg
ICAgIHcgPSBnUGFydHMtPnZTY2FsZVdpZGdldDsKLSAgICAgICAgYnJlYWs7CiAgICAgLyogVGhl
c2Ugd2lkZ2V0cyBoYXZlIG5vIGJvcmRlcnMsIHNpbmNlIHRoZXkgYXJlIG5vdCBjb250YWluZXJz
LiAqLwogICAgIGNhc2UgTU9aX0dUS19DSEVDS0JVVFRPTjoKICAgICBjYXNlIE1PWl9HVEtfUkFE
SU9CVVRUT046CkBAIC0xMzIzLDggKzEyMjcsNiBAQCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVy
KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKICAgICBj
YXNlIE1PWl9HVEtfU0NST0xMQkFSX1RSQUNLX1ZFUlRJQ0FMOgogICAgIGNhc2UgTU9aX0dUS19T
Q1JPTExCQVJfVEhVTUJfSE9SSVpPTlRBTDoKICAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RI
VU1CX1ZFUlRJQ0FMOgotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9USFVNQl9IT1JJWk9OVEFMOgot
ICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9USFVNQl9WRVJUSUNBTDoKICAgICBjYXNlIE1PWl9HVEtf
UFJPR1JFU1NfQ0hVTks6CiAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20g
PSAwOwogICAgICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwpAQCAtMTM0MSwyMiArMTI0Myw2
IEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwg
Z2ludCogbGVmdCwgZ2ludCogdG9wLAogfQogCiBnaW50Ci1tb3pfZ3RrX2dldF9zY2FsZXRodW1i
X21ldHJpY3MoR3RrT3JpZW50YXRpb24gb3JpZW50LCBnaW50KiB0aHVtYl9sZW5ndGgsIGdpbnQq
IHRodW1iX2hlaWdodCkKLXsKLSAgR3RrV2lkZ2V0KiB3aWRnZXQ7Ci0KLSAgZW5zdXJlX3NjYWxl
X3dpZGdldCgpOwotICB3aWRnZXQgPSAoKG9yaWVudCA9PSBHVEtfT1JJRU5UQVRJT05fSE9SSVpP
TlRBTCkgPyBnUGFydHMtPmhTY2FsZVdpZGdldCA6IGdQYXJ0cy0+dlNjYWxlV2lkZ2V0KTsKLQot
ICBndGtfd2lkZ2V0X3N0eWxlX2dldCAod2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
InNsaWRlcl9sZW5ndGgiLCB0aHVtYl9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAi
c2xpZGVyX3dpZHRoIiwgdGh1bWJfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7Ci0KLSAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotZ2ludAogbW96X2d0a19nZXRf
c2Nyb2xsYmFyX21ldHJpY3MoTW96R3RrU2Nyb2xsYmFyTWV0cmljcyAqbWV0cmljcykKIHsKICAg
ICBlbnN1cmVfc2Nyb2xsYmFyX3dpZGdldCgpOwpAQCAtMTQyMSwxNiArMTMwNyw2IEBAIG1vel9n
dGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIEdka0RyYXdhYmxlKiBk
cmF3YWJsZSwKICAgICBjYXNlIE1PWl9HVEtfU0NST0xMRURfV0lORE9XOgogICAgICAgICByZXR1
cm4gbW96X2d0a19zY3JvbGxlZF93aW5kb3dfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0
LCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9IT1JJWk9O
VEFMOgotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9WRVJUSUNBTDoKLSAgICAgICAgcmV0dXJuIG1v
el9ndGtfc2NhbGVfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a09yaWVudGF0aW9uKSBmbGFncywgZGly
ZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NDQUxFX1RIVU1CX0hP
UklaT05UQUw6Ci0gICAgY2FzZSBNT1pfR1RLX1NDQUxFX1RIVU1CX1ZFUlRJQ0FMOgotICAgICAg
ICByZXR1cm4gbW96X2d0a19zY2FsZV90aHVtYl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJl
Y3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3Rr
T3JpZW50YXRpb24pIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IE1PWl9HVEtfRU5UUlk6CiAgICAgICAgIGVuc3VyZV9lbnRyeV93aWRnZXQoKTsKICAgICAgICAg
cmV0dXJuIG1vel9ndGtfZW50cnlfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0
ZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azNkcmF3aW5nLmMgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9ndGszZHJhd2luZy5jCmluZGV4IGRkYTExMGQ5YzZmZDQ5MTZmMmQw
ZDVlMDk5MjA1OWQ4MDdhODU4NDcuLjY3NjYwNTQ3YzlkNTEzOTc4YTc2MzNkMTkxNjFlYjdjZDE3
N2ZkZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azNkcmF3aW5nLmMKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrM2RyYXdpbmcuYwpAQCAtMTc4LDIwICsxNzgsNiBA
QCBlbnN1cmVfc2Nyb2xsYmFyX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVfc2Nh
bGVfd2lkZ2V0KCkKLXsKLSAgaWYgKCFnUGFydHMtPmhTY2FsZVdpZGdldCkgewotICAgIGdQYXJ0
cy0+aFNjYWxlV2lkZ2V0ID0gZ3RrX2hzY2FsZV9uZXcoTlVMTCk7Ci0gICAgc2V0dXBfd2lkZ2V0
X3Byb3RvdHlwZShnUGFydHMtPmhTY2FsZVdpZGdldCk7Ci0gIH0KLSAgaWYgKCFnUGFydHMtPnZT
Y2FsZVdpZGdldCkgewotICAgIGdQYXJ0cy0+dlNjYWxlV2lkZ2V0ID0gZ3RrX3ZzY2FsZV9uZXco
TlVMTCk7Ci0gICAgc2V0dXBfd2lkZ2V0X3Byb3RvdHlwZShnUGFydHMtPnZTY2FsZVdpZGdldCk7
Ci0gIH0KLSAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKIGVuc3Vy
ZV9lbnRyeV93aWRnZXQoKQogewogICAgIGlmICghZ1BhcnRzLT5lbnRyeVdpZGdldCkgewpAQCAt
ODUwLDgyICs4MzYsNiBAQCBtb3pfZ3RrX3Njcm9sbGJhcl90aHVtYl9wYWludChHdGtUaGVtZVdp
ZGdldFR5cGUgd2lkZ2V0LAogfQogCiBzdGF0aWMgZ2ludAotbW96X2d0a19zY2FsZV9wYWludChj
YWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICBHdGtX
aWRnZXRTdGF0ZSogc3RhdGUsIEd0a09yaWVudGF0aW9uIGZsYWdzLAotICAgICAgICAgICAgICAg
ICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgZ2ludCB4ID0gMCwgeSA9IDA7
Ci0gIEd0a1N0YXRlVHlwZSBzdGF0ZV90eXBlID0gQ29udmVydEd0a1N0YXRlKHN0YXRlKTsKLSAg
R3RrU3R5bGUqIHN0eWxlOwotICBHdGtXaWRnZXQqIHdpZGdldDsKLQotICBlbnN1cmVfc2NhbGVf
d2lkZ2V0KCk7Ci0gIHdpZGdldCA9ICgoZmxhZ3MgPT0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwpID8gZ1BhcnRzLT5oU2NhbGVXaWRnZXQgOiBnUGFydHMtPnZTY2FsZVdpZGdldCk7Ci0gIGd0
a193aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgc3R5bGUgPSBn
dGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpOwotCi0gIGlmIChmbGFncyA9PSBHVEtfT1JJRU5U
QVRJT05fSE9SSVpPTlRBTCkgewotICAgIHggPSBYVEhJQ0tORVNTKHN0eWxlKTsKLSAgICB5Kys7
Ci0gIH0KLSAgZWxzZSB7Ci0gICAgeCsrOwotICAgIHkgPSBZVEhJQ0tORVNTKHN0eWxlKTsKLSAg
fQotCi0gIGd0a19zdHlsZV9hcHBseV9kZWZhdWx0X2JhY2tncm91bmQoc3R5bGUsIGNyLCBndGtf
d2lkZ2V0X2dldF93aW5kb3cgKHdpZGdldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gIGd0a19wYWludF9ib3goc3R5
bGUsIGNyLCBHVEtfU1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX0lOLAotICAgICAgICAgICAgICAg
IHdpZGdldCwgInRyb3VnaCIsIHJlY3QtPnggKyB4LCByZWN0LT55ICsgeSwKLSAgICAgICAgICAg
ICAgICByZWN0LT53aWR0aCAtIDIqeCwgcmVjdC0+aGVpZ2h0IC0gMip5KTsKLQotICBpZiAoc3Rh
dGUtPmZvY3VzZWQpCi0gICAgZ3RrX3BhaW50X2ZvY3VzKHN0eWxlLCBjciwgc3RhdGVfdHlwZSwg
d2lkZ2V0LCAidHJvdWdoIiwKLSAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwg
cmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsK
LX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfc2NhbGVfdGh1bWJfcGFpbnQoY2Fpcm9fdCogY3Is
IEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrV2lkZ2V0
U3RhdGUqIHN0YXRlLCBHdGtPcmllbnRhdGlvbiBmbGFncywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gIEd0a1N0YXRlVHlwZSBzdGF0
ZV90eXBlID0gQ29udmVydEd0a1N0YXRlKHN0YXRlKTsKLSAgR3RrU3R5bGUqIHN0eWxlOwotICBH
dGtXaWRnZXQqIHdpZGdldDsKLSAgZ2ludCB0aHVtYl93aWR0aCwgdGh1bWJfaGVpZ2h0LCB4LCB5
OwotCi0gIGVuc3VyZV9zY2FsZV93aWRnZXQoKTsKLSAgd2lkZ2V0ID0gKChmbGFncyA9PSBHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCkgPyBnUGFydHMtPmhTY2FsZVdpZGdldCA6IGdQYXJ0cy0+
dlNjYWxlV2lkZ2V0KTsKLSAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZGlyZWN0
aW9uKTsKLQotICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0KLSAgLyog
ZGV0ZXJtaW5lIHRoZSB0aHVtYiBzaXplLCBhbmQgcG9zaXRpb24gdGhlIHRodW1iIGluIHRoZSBj
ZW50ZXIgaW4gdGhlIG9wcG9zaXRlIGF4aXMgKi8KLSAgaWYgKGZsYWdzID09IEdUS19PUklFTlRB
VElPTl9IT1JJWk9OVEFMKSB7Ci0gICAgbW96X2d0a19nZXRfc2NhbGV0aHVtYl9tZXRyaWNzKEdU
S19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCAmdGh1bWJfd2lkdGgsICZ0aHVtYl9oZWlnaHQpOwot
ICAgIHggPSByZWN0LT54OwotICAgIHkgPSByZWN0LT55ICsgKHJlY3QtPmhlaWdodCAtIHRodW1i
X2hlaWdodCkgLyAyOwotICB9Ci0gIGVsc2UgewotICAgIG1vel9ndGtfZ2V0X3NjYWxldGh1bWJf
bWV0cmljcyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsICZ0aHVtYl9oZWlnaHQsICZ0aHVtYl93
aWR0aCk7Ci0gICAgeCA9IHJlY3QtPnggKyAocmVjdC0+d2lkdGggLSB0aHVtYl93aWR0aCkgLyAy
OwotICAgIHkgPSByZWN0LT55OwotICB9Ci0KLSAgZ3RrX3BhaW50X3NsaWRlcihzdHlsZSwgY3Is
IHN0YXRlX3R5cGUsIEdUS19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAgIHdpZGdldCwg
KGZsYWdzID09IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKSA/ICJoc2NhbGUiIDogInZzY2Fs
ZSIsCi0gICAgICAgICAgICAgICAgICAgeCwgeSwgdGh1bWJfd2lkdGgsIHRodW1iX2hlaWdodCwg
ZmxhZ3MpOwotCi0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50CiBt
b3pfZ3RrX2VudHJ5X3BhaW50KGNhaXJvX3QqIGNyLCBHZGtSZWN0YW5nbGUqIHJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgIEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwgR3RrV2lkZ2V0KiB3aWRnZXQs
CiAgICAgICAgICAgICAgICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTIy
OSwxNCArMTEzOSw2IEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRU
eXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCogdG9wLAogICAgICAgICBlbnN1cmVfcHJvZ3Jl
c3Nfd2lkZ2V0KCk7CiAgICAgICAgIHcgPSBnUGFydHMtPnByb2dyZXNXaWRnZXQ7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9IT1JJWk9OVEFMOgotICAgICAgICBlbnN1
cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPmhTY2FsZVdpZGdldDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NDQUxFX1ZFUlRJQ0FMOgotICAgICAgICBl
bnN1cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPnZTY2FsZVdpZGdldDsK
LSAgICAgICAgYnJlYWs7CiAgICAgLyogVGhlc2Ugd2lkZ2V0cyBoYXZlIG5vIGJvcmRlcnMsIHNp
bmNlIHRoZXkgYXJlIG5vdCBjb250YWluZXJzLiAqLwogICAgIGNhc2UgTU9aX0dUS19DSEVDS0JV
VFRPTjoKICAgICBjYXNlIE1PWl9HVEtfUkFESU9CVVRUT046CkBAIC0xMjQ1LDggKzExNDcsNiBA
QCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdp
bnQqIGxlZnQsIGdpbnQqIHRvcCwKICAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RSQUNLX1ZF
UlRJQ0FMOgogICAgIGNhc2UgTU9aX0dUS19TQ1JPTExCQVJfVEhVTUJfSE9SSVpPTlRBTDoKICAg
ICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RIVU1CX1ZFUlRJQ0FMOgotICAgIGNhc2UgTU9aX0dU
S19TQ0FMRV9USFVNQl9IT1JJWk9OVEFMOgotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9USFVNQl9W
RVJUSUNBTDoKICAgICBjYXNlIE1PWl9HVEtfUFJPR1JFU1NfQ0hVTks6CiAgICAgICAgICpsZWZ0
ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20gPSAwOwogICAgICAgICByZXR1cm4gTU9aX0dUS19T
VUNDRVNTOwpAQCAtMTI2MywyMiArMTE2Myw2IEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIo
R3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCogdG9wLAogfQogCiBn
aW50Ci1tb3pfZ3RrX2dldF9zY2FsZXRodW1iX21ldHJpY3MoR3RrT3JpZW50YXRpb24gb3JpZW50
LCBnaW50KiB0aHVtYl9sZW5ndGgsIGdpbnQqIHRodW1iX2hlaWdodCkKLXsKLSAgR3RrV2lkZ2V0
KiB3aWRnZXQ7Ci0KLSAgZW5zdXJlX3NjYWxlX3dpZGdldCgpOwotICB3aWRnZXQgPSAoKG9yaWVu
dCA9PSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCkgPyBnUGFydHMtPmhTY2FsZVdpZGdldCA6
IGdQYXJ0cy0+dlNjYWxlV2lkZ2V0KTsKLQotICBndGtfd2lkZ2V0X3N0eWxlX2dldCAod2lkZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgInNsaWRlcl9sZW5ndGgiLCB0aHVtYl9sZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAic2xpZGVyX3dpZHRoIiwgdGh1bWJfaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VT
UzsKLX0KLQotZ2ludAogbW96X2d0a19nZXRfc2Nyb2xsYmFyX21ldHJpY3MoTW96R3RrU2Nyb2xs
YmFyTWV0cmljcyAqbWV0cmljcykKIHsKICAgICBlbnN1cmVfc2Nyb2xsYmFyX3dpZGdldCgpOwpA
QCAtMTM0MiwxNiArMTIyNiw2IEBAIG1vel9ndGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0
VHlwZSB3aWRnZXQsIGNhaXJvX3QqIGNyLAogICAgIGNhc2UgTU9aX0dUS19TQ1JPTExFRF9XSU5E
T1c6CiAgICAgICAgIHJldHVybiBtb3pfZ3RrX3Njcm9sbGVkX3dpbmRvd19wYWludChjciwgcmVj
dCwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfSE9SSVpP
TlRBTDoKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVkVSVElDQUw6Ci0gICAgICAgIHJldHVybiBt
b3pfZ3RrX3NjYWxlX3BhaW50KGNyLCByZWN0LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKEd0a09yaWVudGF0aW9uKSBmbGFncywgZGlyZWN0aW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NDQUxFX1RIVU1CX0hPUklaT05UQUw6Ci0gICAg
Y2FzZSBNT1pfR1RLX1NDQUxFX1RIVU1CX1ZFUlRJQ0FMOgotICAgICAgICByZXR1cm4gbW96X2d0
a19zY2FsZV90aHVtYl9wYWludChjciwgcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChHdGtPcmllbnRhdGlvbikgZmxhZ3MsIGRpcmVjdGlvbik7
Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9aX0dUS19FTlRSWToKICAgICAgICAgZW5zdXJl
X2VudHJ5X3dpZGdldCgpOwogICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWludChjciwg
cmVjdCwgc3RhdGUsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5n
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmgKaW5kZXggYTk4MTU0M2E2YjJl
NTlmNzNmNTg3MGNhY2QxNDcwMDg5ZTUyZDZmMC4uOWQxM2EwNzgwMzQ4YmY2NjcyOTZkYWZhMDY0
MDJhYmJiNmY0NDU5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2lu
Zy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaApAQCAtOTMsOCArOTMs
NiBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrVGhlbWVQYXJ0cyB7CiAgICAgR3RrV2lkZ2V0KiByYWRp
b2J1dHRvbldpZGdldDsKICAgICBHdGtXaWRnZXQqIGhvcml6U2Nyb2xsYmFyV2lkZ2V0OwogICAg
IEd0a1dpZGdldCogdmVydFNjcm9sbGJhcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGhTY2FsZVdp
ZGdldDsKLSAgICBHdGtXaWRnZXQqIHZTY2FsZVdpZGdldDsKICAgICBHdGtXaWRnZXQqIGVudHJ5
V2lkZ2V0OwogICAgIEd0a1dpZGdldCogY29tYm9Cb3hXaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiBj
b21ib0JveEJ1dHRvbldpZGdldDsKQEAgLTE0NywxMiArMTQ1LDYgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgTU9aX0dUS19TQ1JPTExCQVJfVEhVTUJfVkVSVElDQUwsCiAgIC8qIFBhaW50cyB0aGUgYmFj
a2dyb3VuZCBvZiBhIHNjcm9sbGVkIHdpbmRvdyAqLwogICBNT1pfR1RLX1NDUk9MTEVEX1dJTkRP
VywKLSAgLyogUGFpbnRzIGEgR3RrU2NhbGUuICovCi0gIE1PWl9HVEtfU0NBTEVfSE9SSVpPTlRB
TCwKLSAgTU9aX0dUS19TQ0FMRV9WRVJUSUNBTCwKLSAgLyogUGFpbnRzIGEgR3RrU2NhbGUgdGh1
bWIuICovCi0gIE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTCwKLSAgTU9aX0dUS19TQ0FM
RV9USFVNQl9WRVJUSUNBTCwKICAgTU9aX0dUS19FTlRSWSwKICAgLyogUGFpbnRzIGEgR3RrT3B0
aW9uTWVudS4gKi8KICAgTU9aX0dUS19EUk9QRE9XTiwKQEAgLTI3NywxNyArMjY5LDYgQEAgbW96
X2d0a193aWRnZXRfZ2V0X2ZvY3VzKEd0a1dpZGdldCogd2lkZ2V0LCBnYm9vbGVhbiogaW50ZXJp
b3JfZm9jdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCogZm9jdXNfd2lkdGgsIGdp
bnQqIGZvY3VzX3BhZCk7CiAKIC8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSBHdGtT
Y2FsZSB0aHVtYgotICogb3JpZW50OiAgICAgICAgICAgW0lOXSB0aGUgc2NhbGUgb3JpZW50YXRp
b24KLSAqIHRodW1iX2xlbmd0aDogICAgIFtPVVRdIHRoZSBsZW5ndGggb2YgdGhlIHRodW1iCi0g
KiB0aHVtYl9oZWlnaHQ6ICAgICBbT1VUXSB0aGUgaGVpZ2h0IG9mIHRoZSB0aHVtYgotICoKLSAq
IHJldHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVy
cm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQKLW1vel9ndGtfZ2V0X3NjYWxldGh1bWJfbWV0
cmljcyhHdGtPcmllbnRhdGlvbiBvcmllbnQsIGdpbnQqIHRodW1iX2xlbmd0aCwgZ2ludCogdGh1
bWJfaGVpZ2h0KTsKLQotLyoqCiAgKiBHZXQgdGhlIGRlc2lyZWQgbWV0cmljcyBmb3IgYSBHdGtT
Y3JvbGxiYXIKICAqIG1ldHJpY3M6ICAgICAgICAgIFtJTl0gIHN0cnVjdCB3aGljaCB3aWxsIGNv
bnRhaW4gdGhlIG1ldHJpY3MKICAqCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72116</attachid>
            <date>2010-10-27 17:00:12 -0700</date>
            <delta_ts>2010-12-06 05:17:31 -0800</delta_ts>
            <desc>Patch fixing several issues and updated to ToT</desc>
            <filename>bug-47836-20101027170013.patch</filename>
            <type>text/plain</type>
            <size>33593</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2Q0MWE1NmM5ODBkMTc0NzJjY2Q0NTJmNDkxZWY2YmQ3ZDNjN2MxZC4uMjllN2YzZjEzNjQzYTFh
YjQ0ZTI5Y2YxNjRhMTIwMjAyOWFkY2EzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAxMC0xMC0xOCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gTW92ZSBpbnB1dCB0eXBlPXJhbmdl
IHJlbmRlcmluZyB0byBSZW5kZXJUaGVtZUd0aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4MzYKKworICAgICAgICBCZWdpbiBtb3Zpbmcgd2lkZ2V0
IHJlbmRlcmluZyBvdXQgb2YgdGhlIG9sZCBNb3ppbGxhIHRoZW1lIGRyYXdpbmcgY29kZSwKKyAg
ICAgICAgd2hpY2ggc2hvdWxkIHJlbW92ZSBtYW55IGxpbmVzIG9mIGNvZGUgd2hlbiBjb21wbGV0
ZWQuIFdpZGdldFJlbmRlcmluZ0NvbnRleHQKKyAgICAgICAgbm93IGhpZGVzIHRoZSBHVEsrIDIg
dnMuIDMgQVBJIGRpZmZlcmVuY2VzLCBzbyB0aGF0IFJlbmRlclRoZW1lR3RrIGNhbiBzdGF5Cisg
ICAgICAgIHZlcnNpb24gYWdub3N0aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMg
cGF0Y2ggZG9lcyBub3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVH
dGs6OlJlbmRlclRoZW1lR3RrKTogZ3RrQ29udGFpbmVyKCkgbm93IHJldHVybnMgYQorICAgICAg
ICBHdGtXaWRnZXQsIHNvIHVwZGF0ZSB0aGUgY2FzdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6OmdldEd0a1N0YXRlVHlwZSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNo
CisgICAgICAgIGNvbnZlcnRzIGEgUmVuZGVyT2JqZWN0IHN0YXRlIGludG8gYSBHdGtTdGF0ZVR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRSZW5kZXJPYmplY3Qp
OiBSZW1vdmVkIHdvcmstYXJvdW5kcyBmb3IKKyAgICAgICAgc2NhbGUgcGFpbnRpbmcsIGFzIGl0
J3Mgbm90IGhhbmRsZWQgYnkgdGhpcyBtZXRob2QgYW55IGxvbmdlci4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKTogVXBkYXRlZCB0byB1c2UKKyAg
ICAgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwYWludFNsaWRlclRodW1iKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKTogR2V0IHRoZSBzaXplCisgICAgICAg
IHByb3BlcnRpZXMgZGlyZWN0bHkgZnJvbSB0aGUgd2lkZ2V0IG5vdyBpbnN0ZWFkIG9mIGFza2lu
ZyB0aGUgTW96aWxsYSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnNl
dHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIpOiBBZGRlZCB0aGlzCisgICAgICAgIGhlbHBlciB3
aGljaCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgY29kZSBxdWl0ZSBhIGJpdC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtDb250YWluZXIpOiBVcGRhdGVkIHRvIHVzZSBoZWxw
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrQnV0dG9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrRW50cnkpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a1ZTY2FsZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a0hTY2FsZSk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKTogUmVtb3Zl
ZAorICAgICAgICBHVEtfQ09OVEFJTkVSIGNhc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmg6IFVwZGF0ZWQgdG8gYWRkIG5ldyBHdGtIU2NhbGUgYW5kCisgICAgICAg
ICBHdGtWU2NhbGUgbWVtYmVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVy
aW5nQ29udGV4dC5oOiBBZGVkIG5ldyBtZXRob2RzIHRvIHByb3h5CisgICAgICAgIGd0a19wYWlu
dF9ib3gsIGd0a19wYWludF9mb2N1cyBhbmQgZ3RrX3BhaW50X3NsaWRlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dEd0azIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6Z3RrUGFpbnRCb3gpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1BhaW50Rm9jdXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1BhaW50U2xp
ZGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRl
eHRHdGszLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0
a1BhaW50Qm94KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRSZW5kZXJpbmdDb250
ZXh0OjpndGtQYWludEZvY3VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRSZW5k
ZXJpbmdDb250ZXh0OjpndGtQYWludFNsaWRlcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9ndGsyZHJhd2luZy5jOiBSZW1vdmVkIGRlZnVuY3QgY29kZSEKKyAgICAgICAgKG1vel9n
dGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRnZXRfcGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGszZHJhd2luZy5jOiBEaXR0by4KKyAgICAgICAgKG1v
el9ndGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRnZXRfcGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6CisKIDIwMTAtMTAtMTUgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CmluZGV4IGY4NTY3YjZjMWM5ZmI2ZDM0ODNlOWE3NmY4NzhhM2RjNWYzOGJlM2IuLjllNjYzOWUw
ZmVmYWQzMWNmZjNkYmRhMDk5ZDM3NWI0MDA3MDQwODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFmZmluZVRy
YW5zZm9ybS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJHT3du
UHRyLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCkBAIC0xNzUsNyArMTc2LDcgQEAgUmVuZGVy
VGhlbWVHdGs6OlJlbmRlclRoZW1lR3RrKCkKICAgICArK21vekd0a1JlZkNvdW50OwogCiAjaWYg
RU5BQkxFKFZJREVPKQotICAgIGluaXRNZWRpYVN0eWxpbmcoZ3RrX3JjX2dldF9zdHlsZShHVEtf
V0lER0VUKGd0a0NvbnRhaW5lcigpKSksIGZhbHNlKTsKKyAgICBpbml0TWVkaWFTdHlsaW5nKGd0
a19yY19nZXRfc3R5bGUoZ3RrQ29udGFpbmVyKCkpLCBmYWxzZSk7CiAjZW5kaWYKIH0KIApAQCAt
MjI4LDYgKzIyOSwxNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZvY3VzKENvbnRyb2xQYXJ0IGFw
cGVhcmFuY2UpCiAgICAgfQogfQogCitHdGtTdGF0ZVR5cGUgUmVuZGVyVGhlbWVHdGs6OmdldEd0
a1N0YXRlVHlwZShSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBpZiAoIWlzRW5hYmxlZChv
YmplY3QpIHx8IGlzUmVhZE9ubHlDb250cm9sKG9iamVjdCkpCisgICAgICAgIHJldHVybiBHVEtf
U1RBVEVfSU5TRU5TSVRJVkU7CisgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpKQorICAgICAgICBy
ZXR1cm4gR1RLX1NUQVRFX0FDVElWRTsKKyAgICBpZiAoaXNIb3ZlcmVkKG9iamVjdCkpCisgICAg
ICAgIHJldHVybiBHVEtfU1RBVEVfUFJFTElHSFQ7CisgICAgcmV0dXJuIEdUS19TVEFURV9OT1JN
QUw7Cit9CisKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cyhzdHls
ZS0+YXBwZWFyYW5jZSgpKTsKQEAgLTMwNiwxNCArMzE4LDYgQEAgYm9vbCBSZW5kZXJUaGVtZUd0
azo6cGFpbnRSZW5kZXJPYmplY3QoR3RrVGhlbWVXaWRnZXRUeXBlIHR5cGUsIFJlbmRlck9iamVj
dCogcmUKICAgICB3aWRnZXRTdGF0ZS5pc0RlZmF1bHQgPSBmYWxzZTsKICAgICB3aWRnZXRTdGF0
ZS5jYW5EZWZhdWx0ID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVGhlIGRlcHJlc3NlZCB2YWx1
ZSBzaG91bGQgcHJvYmFibHkgYXBwbHkgZm9yIG90aGVyIHRoZW1lIHBhcnRzIHRvby4KLSAgICAv
LyBJdCBtdXN0IGJlIHVzZWQgZm9yIHJhbmdlIHRodW1icywgYmVjYXVzZSBvdGhlcndpc2Ugd2hl
biB0aGUgdGh1bWIgaXMgcHJlc3NlZCwKLSAgICAvLyB0aGUgcmVuZGVyaW5nIGlzIGluY29ycmVj
dC4KLSAgICBpZiAodHlwZSA9PSBNT1pfR1RLX1NDQUxFX1RIVU1CX0hPUklaT05UQUwgfHwgdHlw
ZSA9PSBNT1pfR1RLX1NDQUxFX1RIVU1CX1ZFUlRJQ0FMKQotICAgICAgICB3aWRnZXRTdGF0ZS5k
ZXByZXNzZWQgPSBpc1ByZXNzZWQocmVuZGVyT2JqZWN0KTsKLSAgICBlbHNlCi0gICAgICAgIHdp
ZGdldFN0YXRlLmRlcHJlc3NlZCA9IGZhbHNlOwotCiAgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4
dCB3aWRnZXRDb250ZXh0KGNvbnRleHQsIHJlY3QpOwogICAgIHJldHVybiAhd2lkZ2V0Q29udGV4
dC5wYWludE1vemlsbGFXaWRnZXQodHlwZSwgJndpZGdldFN0YXRlLCBmbGFncywgZ3RrVGV4dERp
cmVjdGlvbihyZW5kZXJPYmplY3QtPnN0eWxlKCktPmRpcmVjdGlvbigpKSk7CiB9CkBAIC01Mjcs
MTQgKzUzMSwzMCBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdAogCiBib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAgaWYgKGluZm8uY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBDb250cm9s
UGFydCBwYXJ0ID0gb2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CiAgICAgQVNTRVJUKHBh
cnQgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQp
OwogCi0gICAgR3RrVGhlbWVXaWRnZXRUeXBlIGd0a1BhcnQgPSBNT1pfR1RLX1NDQUxFX0hPUkla
T05UQUw7Ci0gICAgaWYgKHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQotICAgICAgICBndGtQ
YXJ0ID0gTU9aX0dUS19TQ0FMRV9WRVJUSUNBTDsKKyAgICAvLyBXZSBzaHJpbmsgdGhlIHRyb3Vn
aCByZWN0IHNsaWdodGx5IHRvIG1ha2Ugcm9vbSBmb3IgdGhlIGZvY3VzIGluZGljYXRvci4KKyAg
ICBJbnRTaXplIHNocmluayA9IEludFNpemUoMSwgMSk7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQg
PSAwOworICAgIGlmIChwYXJ0ID09IFNsaWRlclZlcnRpY2FsUGFydCkgeworICAgICAgICB3aWRn
ZXQgPSBndGtWU2NhbGUoKTsKKyAgICAgICAgc2hyaW5rLnNldEhlaWdodChndGtfd2lkZ2V0X2dl
dF9zdHlsZSh3aWRnZXQpLT55dGhpY2tuZXNzKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3aWRn
ZXQgPSBndGtIU2NhbGUoKTsKKyAgICAgICAgc2hyaW5rLnNldFdpZHRoKGd0a193aWRnZXRfZ2V0
X3N0eWxlKHdpZGdldCktPnl0aGlja25lc3MpOworICAgIH0KKyAgICBndGtfd2lkZ2V0X3NldF9k
aXJlY3Rpb24od2lkZ2V0LCBndGtUZXh0RGlyZWN0aW9uKG9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0
aW9uKCkpKTsKKworICAgIFdpZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChpbmZv
LmNvbnRleHQsIHJlY3QpOworICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRCb3god2lkZ2V0LCBH
VEtfU1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX09VVCwgInRyb3VnaCIsIHNocmluayk7CisgICAg
aWYgKGlzRm9jdXNlZChvYmplY3QpKQorICAgICAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Rm9j
dXMod2lkZ2V0LCBnZXRHdGtTdGF0ZVR5cGUob2JqZWN0KSwgInRyb3VnaCIsIEludFNpemUoKSk7
CiAKLSAgICByZXR1cm4gcGFpbnRSZW5kZXJPYmplY3QoZ3RrUGFydCwgb2JqZWN0LCBpbmZvLmNv
bnRleHQsIHRvUmVuZGVyQm94KG9iamVjdCktPmFic29sdXRlQ29udGVudEJveCgpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRyYWNr
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNv
bnN0CkBAIC01NDQsMTQgKzU2NCwzMyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlk
ZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bAogCiBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAgaWYgKGlu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBDb250cm9sUGFydCBwYXJ0ID0gb2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CiAg
ICAgQVNTRVJUKHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNs
aWRlclRodW1iVmVydGljYWxQYXJ0KTsKIAotICAgIEd0a1RoZW1lV2lkZ2V0VHlwZSBndGtQYXJ0
ID0gTU9aX0dUS19TQ0FMRV9USFVNQl9IT1JJWk9OVEFMOwotICAgIGlmIChwYXJ0ID09IFNsaWRl
clRodW1iVmVydGljYWxQYXJ0KQotICAgICAgICBndGtQYXJ0ID0gTU9aX0dUS19TQ0FMRV9USFVN
Ql9WRVJUSUNBTDsKLQotICAgIHJldHVybiBwYWludFJlbmRlck9iamVjdChndGtQYXJ0LCBvYmpl
Y3QsIGluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSAwOworICAg
IGNvbnN0IGNoYXIqIGRldGFpbCA9IDA7CisgICAgR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb247
CisgICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKKyAgICAgICAgd2lk
Z2V0ID0gZ3RrVlNjYWxlKCk7CisgICAgICAgIGRldGFpbCA9ICJ2c2NhbGUiOworICAgICAgICBv
cmllbnRhdGlvbiA9IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTDsKKyAgICB9IGVsc2UgeworICAg
ICAgICB3aWRnZXQgPSBndGtIU2NhbGUoKTsKKyAgICAgICAgZGV0YWlsID0gImhzY2FsZSI7Cisg
ICAgICAgIG9yaWVudGF0aW9uID0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUw7CisgICAgfQor
ICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGd0a1RleHREaXJlY3Rpb24ob2Jq
ZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpOworCisgICAgLy8gT25seSBzb21lIHRoZW1lcyBo
YXZlIHNsaWRlciB0aHVtYnMgcmVzcG9uZCB0byBjbGlja3MgYW5kIHNvbWUgZG9uJ3QuIFRoaXMg
aW5mb3JtYXRpb24gaXMKKyAgICAvLyBnYXRoZXJlZCB2aWEgdGhlICdhY3RpdmF0ZS1zbGlkZXIn
IHByb3BlcnR5LCBidXQgaXQncyBkZXByZWNhdGVkIGluIEdUSysgMi4yMiBhbmQgcmVtb3ZlZCBp
bgorICAgIC8vIEdUSysgMy54LiBUaGUgZHJhd2JhY2sgb2Ygbm90IGhvbm9yaW5nIGl0IGlzIHRo
YXQgc2xpZGVyIHRodW1icyBjaGFuZ2UgY29sb3Igd2hlbiB5b3UgY2xpY2sKKyAgICAvLyBvbiB0
aGVtLiAKKyAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRleHQoaW5mby5jb250
ZXh0LCByZWN0KTsKKyAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50U2xpZGVyKHdpZGdldCwgZ2V0
R3RrU3RhdGVUeXBlKG9iamVjdCksIEdUS19TSEFET1dfT1VULCBkZXRhaWwsIG9yaWVudGF0aW9u
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNs
aWRlclRodW1iU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0CkBAIC01NjksMTAgKzYwOCwxNCBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjph
ZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0
ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7Ci0gICAgICAgIGdpbnQgd2lkdGgsIGhlaWdo
dDsKLSAgICAgICAgbW96X2d0a19nZXRfc2NhbGV0aHVtYl9tZXRyaWNzKHBhcnQgPT0gU2xpZGVy
VGh1bWJIb3Jpem9udGFsUGFydCA/IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMIDogR1RLX09S
SUVOVEFUSU9OX1ZFUlRJQ0FMLCAmd2lkdGgsICZoZWlnaHQpOwotICAgICAgICBvLT5zdHlsZSgp
LT5zZXRXaWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNl
dEhlaWdodChMZW5ndGgoaGVpZ2h0LCBGaXhlZCkpOworICAgICAgICBHdGtXaWRnZXQqIHdpZGdl
dCA9IHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IGd0a0hTY2FsZSgpIDogZ3Rr
VlNjYWxlKCk7CisgICAgICAgIGludCBsZW5ndGggPSAwLCB3aWR0aCA9IDA7CisgICAgICAgIGd0
a193aWRnZXRfc3R5bGVfZ2V0KHdpZGdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InNsaWRlcl9sZW5ndGgiLCAmbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2xpZGVyX3dpZHRoIiwgJndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KTsKKyAgICAgICAgby0+c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKGxlbmd0aCwgRml4ZWQpKTsK
KyAgICAgICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKICAg
ICB9CiB9CiAKQEAgLTY5OSwxNyArNzQyLDMwIEBAIHN0YXRpYyB2b2lkIGd0a1N0eWxlU2V0Q2Fs
bGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0eWxlKiBwcmV2aW91cywgUmVuZGVyVGhlCiAg
ICAgcmVuZGVyVGhlbWUtPnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiB9CiAKLUd0a0NvbnRh
aW5lciogUmVuZGVyVGhlbWVHdGs6Omd0a0NvbnRhaW5lcigpIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lR3RrOjpzZXR1cFdpZGdldEFuZEFkZFRvQ29udGFpbmVyKEd0a1dpZGdldCogd2lkZ2V0LCBH
dGtXaWRnZXQqIHdpbmRvdykgY29uc3QKK3sKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKHdpbmRvdyksIHdpZGdldCk7CisgICAgZ3RrX3dpZGdldF9yZWFsaXplKHdpZGdldCk7
CisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qod2lkZ2V0KSwgInRyYW5zcGFyZW50LWJn
LWhpbnQiLCBHSU5UX1RPX1BPSU5URVIoVFJVRSkpOworCisgICAgLy8gRklYTUU6IFBlcmhhcHMg
dGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIHRoZSBjb250YWluaW5nIHdpbmRvdyBvciBw
YXJlbnQgY29udGFpbmVyLgorICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2lkZ2V0LCAic3R5bGUtc2V0
IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVt
ZUd0ayo+KHRoaXMpKTsKK30KKworR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrQ29udGFp
bmVyKCkgY29uc3QKIHsKICAgICBpZiAobV9ndGtDb250YWluZXIpCiAgICAgICAgIHJldHVybiBt
X2d0a0NvbnRhaW5lcjsKIAogICAgIG1fZ3RrV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJ
TkRPV19QT1BVUCk7Ci0gICAgbV9ndGtDb250YWluZXIgPSBHVEtfQ09OVEFJTkVSKGd0a19maXhl
ZF9uZXcoKSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1dpbmRvdywgInN0eWxlLXNldCIs
IEdfQ0FMTEJBQ0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIGNvbnN0X2Nhc3Q8UmVuZGVyVGhlbWVH
dGsqPih0aGlzKSk7Ci0gICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX2d0a1dp
bmRvdyksIEdUS19XSURHRVQobV9ndGtDb250YWluZXIpKTsKKyNpZiBHVEtfQVBJX1ZFUlNJT05f
MgorICAgIGd0a193aWRnZXRfc2V0X2NvbG9ybWFwKG1fZ3RrV2luZG93LCBtX3RoZW1lUGFydHMt
PmNvbG9ybWFwKTsKKyNlbmRpZgogICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX2d0a1dpbmRvdyk7
CisgICAgZ3RrX3dpZGdldF9zZXRfbmFtZShtX2d0a1dpbmRvdywgIk1vemlsbGFHdGtXaWRnZXQi
KTsKIAorICAgIG1fZ3RrQ29udGFpbmVyID0gZ3RrX2ZpeGVkX25ldygpOworICAgIHNldHVwV2lk
Z2V0QW5kQWRkVG9Db250YWluZXIobV9ndGtDb250YWluZXIsIG1fZ3RrV2luZG93KTsKICAgICBy
ZXR1cm4gbV9ndGtDb250YWluZXI7CiB9CiAKQEAgLTcxNywxMiArNzczLDggQEAgR3RrV2lkZ2V0
KiBSZW5kZXJUaGVtZUd0azo6Z3RrQnV0dG9uKCkgY29uc3QKIHsKICAgICBpZiAobV9ndGtCdXR0
b24pCiAgICAgICAgIHJldHVybiBtX2d0a0J1dHRvbjsKLQogICAgIG1fZ3RrQnV0dG9uID0gZ3Rr
X2J1dHRvbl9uZXcoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrQnV0dG9uLCAic3R5bGUt
c2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJU
aGVtZUd0ayo+KHRoaXMpKTsKLSAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwg
bV9ndGtCdXR0b24pOwotICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX2d0a0J1dHRvbik7Ci0KKyAg
ICBzZXR1cFdpZGdldEFuZEFkZFRvQ29udGFpbmVyKG1fZ3RrQnV0dG9uLCBndGtDb250YWluZXIo
KSk7CiAgICAgcmV0dXJuIG1fZ3RrQnV0dG9uOwogfQogCkBAIC03MzAsMTIgKzc4Miw4IEBAIEd0
a1dpZGdldCogUmVuZGVyVGhlbWVHdGs6Omd0a0VudHJ5KCkgY29uc3QKIHsKICAgICBpZiAobV9n
dGtFbnRyeSkKICAgICAgICAgcmV0dXJuIG1fZ3RrRW50cnk7Ci0KICAgICBtX2d0a0VudHJ5ID0g
Z3RrX2VudHJ5X25ldygpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9ndGtFbnRyeSwgInN0eWxl
LXNldCIsIEdfQ0FMTEJBQ0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIGNvbnN0X2Nhc3Q8UmVuZGVy
VGhlbWVHdGsqPih0aGlzKSk7Ci0gICAgZ3RrX2NvbnRhaW5lcl9hZGQoZ3RrQ29udGFpbmVyKCks
IG1fZ3RrRW50cnkpOwotICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX2d0a0VudHJ5KTsKLQorICAg
IHNldHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIobV9ndGtFbnRyeSwgZ3RrQ29udGFpbmVyKCkp
OwogICAgIHJldHVybiBtX2d0a0VudHJ5OwogfQogCkBAIC03NDMsMTUgKzc5MSwyOSBAQCBHdGtX
aWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldygpIGNvbnN0CiB7CiAgICAgaWYgKG1f
Z3RrVHJlZVZpZXcpCiAgICAgICAgIHJldHVybiBtX2d0a1RyZWVWaWV3OwotCiAgICAgbV9ndGtU
cmVlVmlldyA9IGd0a190cmVlX3ZpZXdfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0
a1RyZWVWaWV3LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwg
Y29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRoaXMpKTsKLSAgICBndGtfY29udGFpbmVyX2Fk
ZChndGtDb250YWluZXIoKSwgbV9ndGtUcmVlVmlldyk7Ci0gICAgZ3RrX3dpZGdldF9yZWFsaXpl
KG1fZ3RrVHJlZVZpZXcpOwotCisgICAgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5lcihtX2d0
a1RyZWVWaWV3LCBndGtDb250YWluZXIoKSk7CiAgICAgcmV0dXJuIG1fZ3RrVHJlZVZpZXc7CiB9
CiAKK0d0a1dpZGdldCogUmVuZGVyVGhlbWVHdGs6Omd0a1ZTY2FsZSgpIGNvbnN0Cit7CisgICAg
aWYgKG1fZ3RrVlNjYWxlKQorICAgICAgICByZXR1cm4gbV9ndGtWU2NhbGU7CisgICAgbV9ndGtW
U2NhbGUgPSBndGtfdnNjYWxlX25ldygwKTsKKyAgICBzZXR1cFdpZGdldEFuZEFkZFRvQ29udGFp
bmVyKG1fZ3RrVlNjYWxlLCBndGtDb250YWluZXIoKSk7CisgICAgcmV0dXJuIG1fZ3RrVlNjYWxl
OworfQorCitHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtIU2NhbGUoKSBjb25zdAorewor
ICAgIGlmIChtX2d0a0hTY2FsZSkKKyAgICAgICAgcmV0dXJuIG1fZ3RrSFNjYWxlOworICAgIG1f
Z3RrSFNjYWxlID0gZ3RrX2hzY2FsZV9uZXcoMCk7CisgICAgc2V0dXBXaWRnZXRBbmRBZGRUb0Nv
bnRhaW5lcihtX2d0a0hTY2FsZSwgZ3RrQ29udGFpbmVyKCkpOworICAgIHJldHVybiBtX2d0a0hT
Y2FsZTsKK30KKwogR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrU2Nyb2xsYmFyKCkKIHsK
ICAgICByZXR1cm4gbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dpZGdldCgpOwpAQCAtNzYwLDcgKzgy
Miw3IEBAIEd0a1dpZGdldCogUmVuZGVyVGhlbWVHdGs6Omd0a1Njcm9sbGJhcigpCiB2b2lkIFJl
bmRlclRoZW1lR3RrOjpwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpCiB7CiAjaWYgRU5BQkxFKFZJ
REVPKQotICAgIGluaXRNZWRpYVN0eWxpbmcoZ3RrX3JjX2dldF9zdHlsZShHVEtfV0lER0VUKGd0
a0NvbnRhaW5lcigpKSksIHRydWUpOworICAgIGluaXRNZWRpYVN0eWxpbmcoZ3RrX3JjX2dldF9z
dHlsZShndGtDb250YWluZXIoKSksIHRydWUpOwogI2VuZGlmCiAgICAgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuaAppbmRleCBmN2VlN2QzMWE0NTRkZmFiNTVlMGEwMGMzMjVmY2Q2YTEwYWFkZDBlLi5kMWM1
ZjY2MTE5ZDg0MDQwZGEyNGNmNDJhNTczZGFkNjI3N2VjZDU3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrLmgKQEAgLTE1NSwyNiArMTU1LDI0IEBAIHByb3RlY3RlZDoKICNlbmRp
ZgogCiBwcml2YXRlOgotICAgIC8qCi0gICAgICogaG9sZCB0aGUgc3RhdGUKLSAgICAgKi8KICAg
ICBHdGtXaWRnZXQqIGd0a0J1dHRvbigpIGNvbnN0OwogICAgIEd0a1dpZGdldCogZ3RrRW50cnko
KSBjb25zdDsKICAgICBHdGtXaWRnZXQqIGd0a1RyZWVWaWV3KCkgY29uc3Q7CisgICAgR3RrV2lk
Z2V0KiBndGtWU2NhbGUoKSBjb25zdDsKKyAgICBHdGtXaWRnZXQqIGd0a0hTY2FsZSgpIGNvbnN0
OworICAgIEd0a1dpZGdldCogZ3RrQ29udGFpbmVyKCkgY29uc3Q7CiAKLSAgICAvKgotICAgICAq
IHVubWFwcGVkIEdka1dpbmRvdyBoYXZpbmcgYSBjb250YWluZXIuIFRoaXMgaXMgaG9sZGluZyBh
bGwKLSAgICAgKiBvdXIgZmFrZSB3aWRnZXRzCi0gICAgICovCi0gICAgR3RrQ29udGFpbmVyKiBn
dGtDb250YWluZXIoKSBjb25zdDsKLQorICAgIHZvaWQgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRh
aW5lcihHdGtXaWRnZXQqLCBHdGtXaWRnZXQqKSBjb25zdDsKKyAgICBHdGtTdGF0ZVR5cGUgZ2V0
R3RrU3RhdGVUeXBlKFJlbmRlck9iamVjdCogb2JqZWN0KTsKICAgICBib29sIHBhaW50UmVuZGVy
T2JqZWN0KEd0a1RoZW1lV2lkZ2V0VHlwZSwgUmVuZGVyT2JqZWN0KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IGZsYWdzID0gMCk7CiAKICAgICBtdXRhYmxlIEd0
a1dpZGdldCogbV9ndGtXaW5kb3c7Ci0gICAgbXV0YWJsZSBHdGtDb250YWluZXIqIG1fZ3RrQ29u
dGFpbmVyOworICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0NvbnRhaW5lcjsKICAgICBtdXRh
YmxlIEd0a1dpZGdldCogbV9ndGtCdXR0b247CiAgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3Rr
RW50cnk7CiAgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3RrVHJlZVZpZXc7CisgICAgbXV0YWJs
ZSBHdGtXaWRnZXQqIG1fZ3RrVlNjYWxlOworICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0hT
Y2FsZTsKIAogICAgIG11dGFibGUgQ29sb3IgbV9wYW5lbENvbG9yOwogICAgIG11dGFibGUgQ29s
b3IgbV9zbGlkZXJDb2xvcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dFJlbmRlcmluZ0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCAzYmI4MDY1ODI5MGU2MTQ3Y2U3YjBjNWQ5ZDE5YjljMDU0YjEyODg0
Li5jM2RkNWZmZTM0YzM3MTdjM2I5Y2QyODkxYThkNDczYWJmZmU4MjBlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zNCw3ICszNCwxMSBA
QCBjbGFzcyBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBXaWRnZXRSZW5k
ZXJpbmdDb250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAgICB+V2lk
Z2V0UmVuZGVyaW5nQ29udGV4dCgpOworCiAgICAgYm9vbCBwYWludE1vemlsbGFXaWRnZXQoR3Rr
VGhlbWVXaWRnZXRUeXBlLCBHdGtXaWRnZXRTdGF0ZSosIGludCBmbGFncywgR3RrVGV4dERpcmVj
dGlvbiA9IEdUS19URVhUX0RJUl9OT05FKTsKKyAgICB2b2lkIGd0a1BhaW50Qm94KEd0a1dpZGdl
dCosIEd0a1N0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqLCBjb25zdCBJbnRT
aXplJiBzaHJpbmspOworICAgIHZvaWQgZ3RrUGFpbnRGb2N1cyhHdGtXaWRnZXQqLCBHdGtTdGF0
ZVR5cGUsIGNvbnN0IGdjaGFyKiwgY29uc3QgSW50U2l6ZSYgc2hyaW5rKTsKKyAgICB2b2lkIGd0
a1BhaW50U2xpZGVyKEd0a1dpZGdldCosIEd0a1N0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSwgY29u
c3QgZ2NoYXIqLCBHdGtPcmllbnRhdGlvbik7CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBtX2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldFJlbmRlcmluZ0NvbnRleHRHdGsyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dp
ZGdldFJlbmRlcmluZ0NvbnRleHRHdGsyLmNwcAppbmRleCBlM2Q4OTY1OTRlMTc2Mjc4NDE1Nzg1
MGUwM2RjZjkyYjBiNDU5ZmNiLi44NjkyNzMzZjNlNjY3NGY3NWY0NzQzMWM3MGQxMjRlNDM5YjM3
Mjc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250
ZXh0R3RrMi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29u
dGV4dEd0azIuY3BwCkBAIC0xNjMsNiArMTYzLDMwIEBAIGJvb2wgV2lkZ2V0UmVuZGVyaW5nQ29u
dGV4dDo6cGFpbnRNb3ppbGxhV2lkZ2V0KEd0a1RoZW1lV2lkZ2V0VHlwZSB0eXBlLCBHdGtXaWRn
CiAgICAgcmV0dXJuICFtX2hhZEVycm9yOwogfQogCit2b2lkIFdpZGdldFJlbmRlcmluZ0NvbnRl
eHQ6Omd0a1BhaW50Qm94KEd0a1dpZGdldCogd2lkZ2V0LCBHdGtTdGF0ZVR5cGUgc3RhdGVUeXBl
LCBHdGtTaGFkb3dUeXBlIHNoYWRvd1R5cGUsIGNvbnN0IGdjaGFyKiBkZXRhaWwsIGNvbnN0IElu
dFNpemUmIHNocmluaykKK3sKKyAgICAvLyBTb21lIHdpZGdldHMgbmVlZCB0byBwYWludCBhIHNt
YWxsZXIgYm94IHRoYW4gdGhlaXIgc2l6ZS4KKyAgICBHZGtSZWN0YW5nbGUgcmVhbFJlY3QgPSB7
IG1fcGFpbnRSZWN0LnggKyBzaHJpbmsud2lkdGgoKSwgbV9wYWludFJlY3QueSArIHNocmluay5o
ZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFpbnRSZWN0LndpZHRo
IC0gKDIgKiBzaHJpbmsud2lkdGgoKSksIG1fcGFpbnRSZWN0LmhlaWdodCAtICgyICogc2hyaW5r
LmhlaWdodCgpKSB9OworICAgIGd0a19wYWludF9ib3goZ3RrX3dpZGdldF9nZXRfc3R5bGUod2lk
Z2V0KSwgbV90YXJnZXQsIHN0YXRlVHlwZSwgc2hhZG93VHlwZSwgJnJlYWxSZWN0LAorICAgICAg
ICAgICAgICAgICAgd2lkZ2V0LCBkZXRhaWwsIHJlYWxSZWN0LngsIHJlYWxSZWN0LnksIHJlYWxS
ZWN0LndpZHRoLCByZWFsUmVjdC5oZWlnaHQpOworfQorCit2b2lkIFdpZGdldFJlbmRlcmluZ0Nv
bnRleHQ6Omd0a1BhaW50Rm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0YXRlVHlwZSBzdGF0
ZVR5cGUsIGNvbnN0IGdjaGFyKiBkZXRhaWwsIGNvbnN0IEludFNpemUmIHNocmluaykKK3sKKyAg
ICAvLyBTb21lIHdpZGdldHMgbmVlZCB0byBwYWludCBhIHNtYWxsZXIgYm94IHRoYW4gdGhlaXIg
c2l6ZS4KKyAgICBHZGtSZWN0YW5nbGUgcmVhbFJlY3QgPSB7IG1fcGFpbnRSZWN0LnggKyBzaHJp
bmsud2lkdGgoKSwgbV9wYWludFJlY3QueSArIHNocmluay5oZWlnaHQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFpbnRSZWN0LndpZHRoIC0gKDIgKiBzaHJpbmsud2lkdGgo
KSksIG1fcGFpbnRSZWN0LmhlaWdodCAtICgyICogc2hyaW5rLmhlaWdodCgpKSB9OworICAgIGd0
a19wYWludF9mb2N1cyhndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCBtX3RhcmdldCwgc3Rh
dGVUeXBlLCAmcmVhbFJlY3QsIHdpZGdldCwKKyAgICAgICAgICAgICAgICAgICAgZGV0YWlsLCBy
ZWFsUmVjdC54LCByZWFsUmVjdC55LCByZWFsUmVjdC53aWR0aCwgcmVhbFJlY3QuaGVpZ2h0KTsK
K30KKwordm9pZCBXaWRnZXRSZW5kZXJpbmdDb250ZXh0OjpndGtQYWludFNsaWRlcihHdGtXaWRn
ZXQqIHdpZGdldCwgR3RrU3RhdGVUeXBlIHN0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSBzaGFkb3dU
eXBlLCBjb25zdCBnY2hhciogZGV0YWlsLCBHdGtPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3sK
KyAgICBndGtfcGFpbnRfc2xpZGVyKGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCksIG1fdGFy
Z2V0LCBzdGF0ZVR5cGUsIHNoYWRvd1R5cGUsICZtX3BhaW50UmVjdCwgd2lkZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgZGV0YWlsLCBtX3BhaW50UmVjdC54LCBtX3BhaW50UmVjdC55LCBtX3Bh
aW50UmVjdC53aWR0aCwgbV9wYWludFJlY3QuaGVpZ2h0LCBvcmllbnRhdGlvbik7Cit9CisKIH0K
IAogI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0R3RrMy5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0R3RrMy5jcHAKaW5kZXggMTY2NTc4NTk3MTRmY2I4
YjRkYTYyYWE0YmUwYjQ2MmFmMDE2OGMwNy4uMjAwMzA2MTcyNmJiZmJmNjdjZGJhNTRlMDViYjk3
ODVjZjNiYWRkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVy
aW5nQ29udGV4dEd0azMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHRHdGszLmNwcApAQCAtNDcsNiArNDcsMjggQEAgYm9vbCBXaWRnZXRSZW5kZXJp
bmdDb250ZXh0OjpwYWludE1vemlsbGFXaWRnZXQoR3RrVGhlbWVXaWRnZXRUeXBlIHR5cGUsIEd0
a1dpZGcKICAgICByZXR1cm4gIW1faGFkRXJyb3I7CiB9CiAKK3ZvaWQgV2lkZ2V0UmVuZGVyaW5n
Q29udGV4dDo6Z3RrUGFpbnRCb3goR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0YXRlVHlwZSBzdGF0
ZVR5cGUsIEd0a1NoYWRvd1R5cGUgc2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqIGRldGFpbCwgY29u
c3QgSW50U2l6ZSYgc2hyaW5rKQoreworICAgIC8vIFNvbWUgd2lkZ2V0cyBuZWVkIHRvIHBhaW50
IGEgc21hbGxlciBib3ggdGhhbiB0aGVpciBzaXplLgorICAgIEdka1JlY3RhbmdsZSByZWFsUmVj
dCA9IHsgbV9wYWludFJlY3QueCArIHNocmluay53aWR0aCgpLCBtX3BhaW50UmVjdC55ICsgc2hy
aW5rLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWludFJlY3Qu
d2lkdGggLSAoMiAqIHNocmluay53aWR0aCgpKSwgbV9wYWludFJlY3QuaGVpZ2h0IC0gKDIgKiBz
aHJpbmsuaGVpZ2h0KCkpIH07CisgICAgZ3RrX3BhaW50X2JveChndGtfd2lkZ2V0X2dldF9zdHls
ZSh3aWRnZXQpLCBtX3RhcmdldCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBlLCB3aWRnZXQsCisgICAg
ICAgICAgICAgICAgICBkZXRhaWwsIHJlYWxSZWN0LngsIHJlYWxSZWN0LnksIHJlYWxSZWN0Lndp
ZHRoLCByZWFsUmVjdC5oZWlnaHQpOworfQorCit2b2lkIFdpZGdldFJlbmRlcmluZ0NvbnRleHQ6
Omd0a1BhaW50Rm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0YXRlVHlwZSBzdGF0ZVR5cGUs
IGNvbnN0IGdjaGFyKiBkZXRhaWwsIGNvbnN0IEludFNpemUmIHNocmluaykKK3sKKyAgICAvLyBT
b21lIHdpZGdldHMgbmVlZCB0byBwYWludCBhIHNtYWxsZXIgYm94IHRoYW4gdGhlaXIgc2l6ZS4K
KyAgICBHZGtSZWN0YW5nbGUgcmVhbFJlY3QgPSB7IG1fcGFpbnRSZWN0LnggKyBzaHJpbmsud2lk
dGgoKSwgbV9wYWludFJlY3QueSArIHNocmluay5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFpbnRSZWN0LndpZHRoIC0gKDIgKiBzaHJpbmsud2lkdGgoKSksIG1f
cGFpbnRSZWN0LmhlaWdodCAtICgyICogc2hyaW5rLmhlaWdodCgpKSB9OworICAgIGd0a19wYWlu
dF9mb2N1cyhndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCBtX3RhcmdldCwgc3RhdGVUeXBl
LCB3aWRnZXQsIGRldGFpbCwKKyAgICAgICAgICAgICAgICAgICAgbV9wYWludFJlY3QueCwgbV9w
YWludFJlY3QueSwgbV9wYWludFJlY3Qud2lkdGgsIG1fcGFpbnRSZWN0LmhlaWdodCk7Cit9CisK
K3ZvaWQgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6Z3RrUGFpbnRTbGlkZXIoR3RrV2lkZ2V0KiB3
aWRnZXQsIEd0a1N0YXRlVHlwZSBzdGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUgc2hhZG93VHlwZSwg
Y29uc3QgZ2NoYXIqIGRldGFpbCwgR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAg
Z3RrX3BhaW50X3NsaWRlcihndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCBtX3RhcmdldCwg
c3RhdGVUeXBlLCBzaGFkb3dUeXBlLCB3aWRnZXQsCisgICAgICAgICAgICAgICAgICAgICBkZXRh
aWwsIG1fcGFpbnRSZWN0LngsIG1fcGFpbnRSZWN0LnksIG1fcGFpbnRSZWN0LndpZHRoLCBtX3Bh
aW50UmVjdC5oZWlnaHQsIG9yaWVudGF0aW9uKTsKIH0KIAogI2VuZGlmIC8vICFHVEtfQVBJX1ZF
UlNJT05fMgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKaW5kZXggMmYyZWRiNjBkOTFhNWNh
YzU2ZjliMzUwOTljNGQ2YmRiMWYyMGMyOS4uM2ViZDMzMjllMTViZGE1NWI1ZGE3ZGExN2I2YjY0
MWE5NmJlZmM3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcu
YworKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCkBAIC0xODUsMjAgKzE4
NSw2IEBAIGVuc3VyZV9zY3JvbGxiYXJfd2lkZ2V0KCkKIH0KIAogc3RhdGljIGdpbnQKLWVuc3Vy
ZV9zY2FsZV93aWRnZXQoKQotewotICBpZiAoIWdQYXJ0cy0+aFNjYWxlV2lkZ2V0KSB7Ci0gICAg
Z1BhcnRzLT5oU2NhbGVXaWRnZXQgPSBndGtfaHNjYWxlX25ldyhOVUxMKTsKLSAgICBzZXR1cF93
aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+aFNjYWxlV2lkZ2V0KTsKLSAgfQotICBpZiAoIWdQYXJ0
cy0+dlNjYWxlV2lkZ2V0KSB7Ci0gICAgZ1BhcnRzLT52U2NhbGVXaWRnZXQgPSBndGtfdnNjYWxl
X25ldyhOVUxMKTsKLSAgICBzZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+dlNjYWxlV2lk
Z2V0KTsKLSAgfQotICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAog
ZW5zdXJlX2VudHJ5X3dpZGdldCgpCiB7CiAgICAgaWYgKCFnUGFydHMtPmVudHJ5V2lkZ2V0KSB7
CkBAIC05MjEsODMgKzkwNyw2IEBAIG1vel9ndGtfc2Nyb2xsYmFyX3RodW1iX3BhaW50KEd0a1Ro
ZW1lV2lkZ2V0VHlwZSB3aWRnZXQsCiB9CiAKIHN0YXRpYyBnaW50Ci1tb3pfZ3RrX3NjYWxlX3Bh
aW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgIEd0a09yaWVudGF0aW9uIGZsYWdzLCBHdGtUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbikKLXsKLSAgZ2ludCB4ID0gMCwgeSA9IDA7Ci0gIEd0a1N0YXRlVHlwZSBz
dGF0ZV90eXBlID0gQ29udmVydEd0a1N0YXRlKHN0YXRlKTsKLSAgR3RrU3R5bGUqIHN0eWxlOwot
ICBHdGtXaWRnZXQqIHdpZGdldDsKLQotICBlbnN1cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gIHdpZGdl
dCA9ICgoZmxhZ3MgPT0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpID8gZ1BhcnRzLT5oU2Nh
bGVXaWRnZXQgOiBnUGFydHMtPnZTY2FsZVdpZGdldCk7Ci0gIGd0a193aWRnZXRfc2V0X2RpcmVj
dGlvbih3aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHls
ZSh3aWRnZXQpOwotCi0gIGlmIChmbGFncyA9PSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCkg
ewotICAgIHggPSBYVEhJQ0tORVNTKHN0eWxlKTsKLSAgICB5Kys7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgeCsrOwotICAgIHkgPSBZVEhJQ0tORVNTKHN0eWxlKTsKLSAgfQotCi0gIFRTT2Zmc2V0U3R5
bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICBndGtfc3R5bGVfYXBwbHlfZGVmYXVs
dF9iYWNrZ3JvdW5kKHN0eWxlLCBkcmF3YWJsZSwgVFJVRSwgR1RLX1NUQVRFX05PUk1BTCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVj
dC0+eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwg
cmVjdC0+aGVpZ2h0KTsKLQotICBndGtfcGFpbnRfYm94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NU
QVRFX0FDVElWRSwgR1RLX1NIQURPV19JTiwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgd2lk
Z2V0LCAidHJvdWdoIiwgcmVjdC0+eCArIHgsIHJlY3QtPnkgKyB5LAotICAgICAgICAgICAgICAg
IHJlY3QtPndpZHRoIC0gMip4LCByZWN0LT5oZWlnaHQgLSAyKnkpOwotCi0gIGlmIChzdGF0ZS0+
Zm9jdXNlZCkKLSAgICBndGtfcGFpbnRfZm9jdXMoc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBl
LCBjbGlwcmVjdCwgd2lkZ2V0LCAidHJvdWdoIiwKLSAgICAgICAgICAgICAgICAgICAgcmVjdC0+
eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgcmV0dXJuIE1PWl9H
VEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfc2NhbGVfdGh1bWJfcGFpbnQo
R2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrT3JpZW50YXRpb24gZmxhZ3MsIEd0a1Rl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENv
bnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gIEd0a1N0eWxlKiBzdHlsZTsKLSAgR3RrV2lkZ2V0KiB3
aWRnZXQ7Ci0gIGdpbnQgdGh1bWJfd2lkdGgsIHRodW1iX2hlaWdodCwgeCwgeTsKLQotICBlbnN1
cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gIHdpZGdldCA9ICgoZmxhZ3MgPT0gR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwpID8gZ1BhcnRzLT5oU2NhbGVXaWRnZXQgOiBnUGFydHMtPnZTY2FsZVdpZGdl
dCk7Ci0gIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAg
c3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpOwotCi0gIC8qIGRldGVybWluZSB0
aGUgdGh1bWIgc2l6ZSwgYW5kIHBvc2l0aW9uIHRoZSB0aHVtYiBpbiB0aGUgY2VudGVyIGluIHRo
ZSBvcHBvc2l0ZSBheGlzICovCi0gIGlmIChmbGFncyA9PSBHVEtfT1JJRU5UQVRJT05fSE9SSVpP
TlRBTCkgewotICAgIG1vel9ndGtfZ2V0X3NjYWxldGh1bWJfbWV0cmljcyhHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCwgJnRodW1iX3dpZHRoLCAmdGh1bWJfaGVpZ2h0KTsKLSAgICB4ID0gcmVj
dC0+eDsKLSAgICB5ID0gcmVjdC0+eSArIChyZWN0LT5oZWlnaHQgLSB0aHVtYl9oZWlnaHQpIC8g
MjsKLSAgfQotICBlbHNlIHsKLSAgICBtb3pfZ3RrX2dldF9zY2FsZXRodW1iX21ldHJpY3MoR1RL
X09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAmdGh1bWJfaGVpZ2h0LCAmdGh1bWJfd2lkdGgpOwotICAg
IHggPSByZWN0LT54ICsgKHJlY3QtPndpZHRoIC0gdGh1bWJfd2lkdGgpIC8gMjsKLSAgICB5ID0g
cmVjdC0+eTsKLSAgfQotCi0gIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3Qt
PnkpOwotICBndGtfcGFpbnRfc2xpZGVyKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgR1RL
X1NIQURPV19PVVQsIGNsaXByZWN0LAotICAgICAgICAgICAgICAgICAgIHdpZGdldCwgKGZsYWdz
ID09IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKSA/ICJoc2NhbGUiIDogInZzY2FsZSIsCi0g
ICAgICAgICAgICAgICAgICAgeCwgeSwgdGh1bWJfd2lkdGgsIHRodW1iX2hlaWdodCwgZmxhZ3Mp
OwotCi0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50CiBtb3pfZ3Rr
X2VudHJ5X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAog
ICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0
ZSogc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIEd0a1dpZGdldCogd2lkZ2V0LCBHdGtUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTEzMTAsMTQgKzEyMTksNiBAQCBtb3pfZ3RrX2dldF93
aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdpbnQqIGxlZnQsIGdpbnQq
IHRvcCwKICAgICAgICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwogICAgICAgICB3ID0gZ1Bh
cnRzLT5wcm9ncmVzV2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU0NB
TEVfSE9SSVpPTlRBTDoKLSAgICAgICAgZW5zdXJlX3NjYWxlX3dpZGdldCgpOwotICAgICAgICB3
ID0gZ1BhcnRzLT5oU2NhbGVXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dU
S19TQ0FMRV9WRVJUSUNBTDoKLSAgICAgICAgZW5zdXJlX3NjYWxlX3dpZGdldCgpOwotICAgICAg
ICB3ID0gZ1BhcnRzLT52U2NhbGVXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwogICAgIC8qIFRoZXNl
IHdpZGdldHMgaGF2ZSBubyBib3JkZXJzLCBzaW5jZSB0aGV5IGFyZSBub3QgY29udGFpbmVycy4g
Ki8KICAgICBjYXNlIE1PWl9HVEtfQ0hFQ0tCVVRUT046CiAgICAgY2FzZSBNT1pfR1RLX1JBRElP
QlVUVE9OOgpAQCAtMTMyNiw4ICsxMjI3LDYgQEAgbW96X2d0a19nZXRfd2lkZ2V0X2JvcmRlcihH
dGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBnaW50KiBsZWZ0LCBnaW50KiB0b3AsCiAgICAgY2Fz
ZSBNT1pfR1RLX1NDUk9MTEJBUl9UUkFDS19WRVJUSUNBTDoKICAgICBjYXNlIE1PWl9HVEtfU0NS
T0xMQkFSX1RIVU1CX0hPUklaT05UQUw6CiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9USFVN
Ql9WRVJUSUNBTDoKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTDoKLSAg
ICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUw6CiAgICAgY2FzZSBNT1pfR1RLX1BS
T0dSRVNTX0NIVU5LOgogICAgICAgICAqbGVmdCA9ICp0b3AgPSAqcmlnaHQgPSAqYm90dG9tID0g
MDsKICAgICAgICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKQEAgLTEzNDQsMjIgKzEyNDMsNiBA
QCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdp
bnQqIGxlZnQsIGdpbnQqIHRvcCwKIH0KIAogZ2ludAotbW96X2d0a19nZXRfc2NhbGV0aHVtYl9t
ZXRyaWNzKEd0a09yaWVudGF0aW9uIG9yaWVudCwgZ2ludCogdGh1bWJfbGVuZ3RoLCBnaW50KiB0
aHVtYl9oZWlnaHQpCi17Ci0gIEd0a1dpZGdldCogd2lkZ2V0OwotCi0gIGVuc3VyZV9zY2FsZV93
aWRnZXQoKTsKLSAgd2lkZ2V0ID0gKChvcmllbnQgPT0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwpID8gZ1BhcnRzLT5oU2NhbGVXaWRnZXQgOiBnUGFydHMtPnZTY2FsZVdpZGdldCk7Ci0KLSAg
Z3RrX3dpZGdldF9zdHlsZV9nZXQgKHdpZGdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJz
bGlkZXJfbGVuZ3RoIiwgdGh1bWJfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgInNs
aWRlcl93aWR0aCIsIHRodW1iX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OwotCi0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKIG1vel9ndGtfZ2V0X3Nj
cm9sbGJhcl9tZXRyaWNzKE1vekd0a1Njcm9sbGJhck1ldHJpY3MgKm1ldHJpY3MpCiB7CiAgICAg
ZW5zdXJlX3Njcm9sbGJhcl93aWRnZXQoKTsKQEAgLTE0MjQsMTYgKzEzMDcsNiBAQCBtb3pfZ3Rr
X3dpZGdldF9wYWludChHdGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBHZGtEcmF3YWJsZSogZHJh
d2FibGUsCiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEVEX1dJTkRPVzoKICAgICAgICAgcmV0dXJu
IG1vel9ndGtfc2Nyb2xsZWRfd2luZG93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwg
c3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfSE9SSVpPTlRB
TDoKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVkVSVElDQUw6Ci0gICAgICAgIHJldHVybiBtb3pf
Z3RrX3NjYWxlX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHdGtPcmllbnRhdGlvbikgZmxhZ3MsIGRpcmVj
dGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9USFVNQl9IT1JJ
Wk9OVEFMOgotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9USFVNQl9WRVJUSUNBTDoKLSAgICAgICAg
cmV0dXJuIG1vel9ndGtfc2NhbGVfdGh1bWJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0
LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a09y
aWVudGF0aW9uKSBmbGFncywgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
T1pfR1RLX0VOVFJZOgogICAgICAgICBlbnN1cmVfZW50cnlfd2lkZ2V0KCk7CiAgICAgICAgIHJl
dHVybiBtb3pfZ3RrX2VudHJ5X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGszZHJhd2luZy5jIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvZ3RrM2RyYXdpbmcuYwppbmRleCBkZGExMTBkOWM2ZmQ0OTE2ZjJkMGQ1
ZTA5OTIwNTlkODA3YTg1ODQ3Li42NzY2MDU0N2M5ZDUxMzk3OGE3NjMzZDE5MTYxZWI3Y2QxNzdm
ZGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGszZHJhd2luZy5jCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azNkcmF3aW5nLmMKQEAgLTE3OCwyMCArMTc4LDYgQEAg
ZW5zdXJlX3Njcm9sbGJhcl93aWRnZXQoKQogfQogCiBzdGF0aWMgZ2ludAotZW5zdXJlX3NjYWxl
X3dpZGdldCgpCi17Ci0gIGlmICghZ1BhcnRzLT5oU2NhbGVXaWRnZXQpIHsKLSAgICBnUGFydHMt
PmhTY2FsZVdpZGdldCA9IGd0a19oc2NhbGVfbmV3KE5VTEwpOwotICAgIHNldHVwX3dpZGdldF9w
cm90b3R5cGUoZ1BhcnRzLT5oU2NhbGVXaWRnZXQpOwotICB9Ci0gIGlmICghZ1BhcnRzLT52U2Nh
bGVXaWRnZXQpIHsKLSAgICBnUGFydHMtPnZTY2FsZVdpZGdldCA9IGd0a192c2NhbGVfbmV3KE5V
TEwpOwotICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT52U2NhbGVXaWRnZXQpOwot
ICB9Ci0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50CiBlbnN1cmVf
ZW50cnlfd2lkZ2V0KCkKIHsKICAgICBpZiAoIWdQYXJ0cy0+ZW50cnlXaWRnZXQpIHsKQEAgLTg1
MCw4MiArODM2LDYgQEAgbW96X2d0a19zY3JvbGxiYXJfdGh1bWJfcGFpbnQoR3RrVGhlbWVXaWRn
ZXRUeXBlIHdpZGdldCwKIH0KIAogc3RhdGljIGdpbnQKLW1vel9ndGtfc2NhbGVfcGFpbnQoY2Fp
cm9fdCogY3IsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgR3RrV2lk
Z2V0U3RhdGUqIHN0YXRlLCBHdGtPcmllbnRhdGlvbiBmbGFncywKLSAgICAgICAgICAgICAgICAg
ICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gIGdpbnQgeCA9IDAsIHkgPSAwOwot
ICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gIEd0
a1N0eWxlKiBzdHlsZTsKLSAgR3RrV2lkZ2V0KiB3aWRnZXQ7Ci0KLSAgZW5zdXJlX3NjYWxlX3dp
ZGdldCgpOwotICB3aWRnZXQgPSAoKGZsYWdzID09IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFM
KSA/IGdQYXJ0cy0+aFNjYWxlV2lkZ2V0IDogZ1BhcnRzLT52U2NhbGVXaWRnZXQpOwotICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24od2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gIHN0eWxlID0gZ3Rr
X3dpZGdldF9nZXRfc3R5bGUod2lkZ2V0KTsKLQotICBpZiAoZmxhZ3MgPT0gR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwpIHsKLSAgICB4ID0gWFRISUNLTkVTUyhzdHlsZSk7Ci0gICAgeSsrOwot
ICB9Ci0gIGVsc2UgewotICAgIHgrKzsKLSAgICB5ID0gWVRISUNLTkVTUyhzdHlsZSk7Ci0gIH0K
LQotICBndGtfc3R5bGVfYXBwbHlfZGVmYXVsdF9iYWNrZ3JvdW5kKHN0eWxlLCBjciwgZ3RrX3dp
ZGdldF9nZXRfd2luZG93ICh3aWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjdC0+eCwgcmVjdC0+eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICBndGtfcGFpbnRfYm94KHN0eWxl
LCBjciwgR1RLX1NUQVRFX0FDVElWRSwgR1RLX1NIQURPV19JTiwKLSAgICAgICAgICAgICAgICB3
aWRnZXQsICJ0cm91Z2giLCByZWN0LT54ICsgeCwgcmVjdC0+eSArIHksCi0gICAgICAgICAgICAg
ICAgcmVjdC0+d2lkdGggLSAyKngsIHJlY3QtPmhlaWdodCAtIDIqeSk7Ci0KLSAgaWYgKHN0YXRl
LT5mb2N1c2VkKQotICAgIGd0a19wYWludF9mb2N1cyhzdHlsZSwgY3IsIHN0YXRlX3R5cGUsIHdp
ZGdldCwgInRyb3VnaCIsCi0gICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJl
Y3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19
Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3NjYWxlX3RodW1iX3BhaW50KGNhaXJvX3QqIGNyLCBH
ZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEd0a1dpZGdldFN0
YXRlKiBzdGF0ZSwgR3RrT3JpZW50YXRpb24gZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICBHdGtTdGF0ZVR5cGUgc3RhdGVf
dHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gIEd0a1N0eWxlKiBzdHlsZTsKLSAgR3Rr
V2lkZ2V0KiB3aWRnZXQ7Ci0gIGdpbnQgdGh1bWJfd2lkdGgsIHRodW1iX2hlaWdodCwgeCwgeTsK
LQotICBlbnN1cmVfc2NhbGVfd2lkZ2V0KCk7Ci0gIHdpZGdldCA9ICgoZmxhZ3MgPT0gR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwpID8gZ1BhcnRzLT5oU2NhbGVXaWRnZXQgOiBnUGFydHMtPnZT
Y2FsZVdpZGdldCk7Ci0gIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGRpcmVjdGlv
bik7Ci0KLSAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpOwotCi0gIC8qIGRl
dGVybWluZSB0aGUgdGh1bWIgc2l6ZSwgYW5kIHBvc2l0aW9uIHRoZSB0aHVtYiBpbiB0aGUgY2Vu
dGVyIGluIHRoZSBvcHBvc2l0ZSBheGlzICovCi0gIGlmIChmbGFncyA9PSBHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCkgewotICAgIG1vel9ndGtfZ2V0X3NjYWxldGh1bWJfbWV0cmljcyhHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgJnRodW1iX3dpZHRoLCAmdGh1bWJfaGVpZ2h0KTsKLSAg
ICB4ID0gcmVjdC0+eDsKLSAgICB5ID0gcmVjdC0+eSArIChyZWN0LT5oZWlnaHQgLSB0aHVtYl9o
ZWlnaHQpIC8gMjsKLSAgfQotICBlbHNlIHsKLSAgICBtb3pfZ3RrX2dldF9zY2FsZXRodW1iX21l
dHJpY3MoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAmdGh1bWJfaGVpZ2h0LCAmdGh1bWJfd2lk
dGgpOwotICAgIHggPSByZWN0LT54ICsgKHJlY3QtPndpZHRoIC0gdGh1bWJfd2lkdGgpIC8gMjsK
LSAgICB5ID0gcmVjdC0+eTsKLSAgfQotCi0gIGd0a19wYWludF9zbGlkZXIoc3R5bGUsIGNyLCBz
dGF0ZV90eXBlLCBHVEtfU0hBRE9XX09VVCwKLSAgICAgICAgICAgICAgICAgICB3aWRnZXQsIChm
bGFncyA9PSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCkgPyAiaHNjYWxlIiA6ICJ2c2NhbGUi
LAotICAgICAgICAgICAgICAgICAgIHgsIHksIHRodW1iX3dpZHRoLCB0aHVtYl9oZWlnaHQsIGZs
YWdzKTsKLQotICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAogbW96
X2d0a19lbnRyeV9wYWludChjYWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiByZWN0LAogICAgICAg
ICAgICAgICAgICAgICBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsIEd0a1dpZGdldCogd2lkZ2V0LAog
ICAgICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTEyMjks
MTQgKzExMzksNiBAQCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlw
ZSB3aWRnZXQsIGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKICAgICAgICAgZW5zdXJlX3Byb2dyZXNz
X3dpZGdldCgpOwogICAgICAgICB3ID0gZ1BhcnRzLT5wcm9ncmVzV2lkZ2V0OwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfSE9SSVpPTlRBTDoKLSAgICAgICAgZW5zdXJl
X3NjYWxlX3dpZGdldCgpOwotICAgICAgICB3ID0gZ1BhcnRzLT5oU2NhbGVXaWRnZXQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9WRVJUSUNBTDoKLSAgICAgICAgZW5z
dXJlX3NjYWxlX3dpZGdldCgpOwotICAgICAgICB3ID0gZ1BhcnRzLT52U2NhbGVXaWRnZXQ7Ci0g
ICAgICAgIGJyZWFrOwogICAgIC8qIFRoZXNlIHdpZGdldHMgaGF2ZSBubyBib3JkZXJzLCBzaW5j
ZSB0aGV5IGFyZSBub3QgY29udGFpbmVycy4gKi8KICAgICBjYXNlIE1PWl9HVEtfQ0hFQ0tCVVRU
T046CiAgICAgY2FzZSBNT1pfR1RLX1JBRElPQlVUVE9OOgpAQCAtMTI0NSw4ICsxMTQ3LDYgQEAg
bW96X2d0a19nZXRfd2lkZ2V0X2JvcmRlcihHdGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBnaW50
KiBsZWZ0LCBnaW50KiB0b3AsCiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9UUkFDS19WRVJU
SUNBTDoKICAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RIVU1CX0hPUklaT05UQUw6CiAgICAg
Y2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9WRVJUSUNBTDoKLSAgICBjYXNlIE1PWl9HVEtf
U0NBTEVfVEhVTUJfSE9SSVpPTlRBTDoKLSAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVS
VElDQUw6CiAgICAgY2FzZSBNT1pfR1RLX1BST0dSRVNTX0NIVU5LOgogICAgICAgICAqbGVmdCA9
ICp0b3AgPSAqcmlnaHQgPSAqYm90dG9tID0gMDsKICAgICAgICAgcmV0dXJuIE1PWl9HVEtfU1VD
Q0VTUzsKQEAgLTEyNjMsMjIgKzExNjMsNiBAQCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0
a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKIH0KIAogZ2lu
dAotbW96X2d0a19nZXRfc2NhbGV0aHVtYl9tZXRyaWNzKEd0a09yaWVudGF0aW9uIG9yaWVudCwg
Z2ludCogdGh1bWJfbGVuZ3RoLCBnaW50KiB0aHVtYl9oZWlnaHQpCi17Ci0gIEd0a1dpZGdldCog
d2lkZ2V0OwotCi0gIGVuc3VyZV9zY2FsZV93aWRnZXQoKTsKLSAgd2lkZ2V0ID0gKChvcmllbnQg
PT0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpID8gZ1BhcnRzLT5oU2NhbGVXaWRnZXQgOiBn
UGFydHMtPnZTY2FsZVdpZGdldCk7Ci0KLSAgZ3RrX3dpZGdldF9zdHlsZV9nZXQgKHdpZGdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICJzbGlkZXJfbGVuZ3RoIiwgdGh1bWJfbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgInNsaWRlcl93aWR0aCIsIHRodW1iX2hlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7
Ci19Ci0KLWdpbnQKIG1vel9ndGtfZ2V0X3Njcm9sbGJhcl9tZXRyaWNzKE1vekd0a1Njcm9sbGJh
ck1ldHJpY3MgKm1ldHJpY3MpCiB7CiAgICAgZW5zdXJlX3Njcm9sbGJhcl93aWRnZXQoKTsKQEAg
LTEzNDIsMTYgKzEyMjYsNiBAQCBtb3pfZ3RrX3dpZGdldF9wYWludChHdGtUaGVtZVdpZGdldFR5
cGUgd2lkZ2V0LCBjYWlyb190KiBjciwKICAgICBjYXNlIE1PWl9HVEtfU0NST0xMRURfV0lORE9X
OgogICAgICAgICByZXR1cm4gbW96X2d0a19zY3JvbGxlZF93aW5kb3dfcGFpbnQoY3IsIHJlY3Qs
IHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NDQUxFX0hPUklaT05U
QUw6Ci0gICAgY2FzZSBNT1pfR1RLX1NDQUxFX1ZFUlRJQ0FMOgotICAgICAgICByZXR1cm4gbW96
X2d0a19zY2FsZV9wYWludChjciwgcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChHdGtPcmllbnRhdGlvbikgZmxhZ3MsIGRpcmVjdGlvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19TQ0FMRV9USFVNQl9IT1JJWk9OVEFMOgotICAgIGNh
c2UgTU9aX0dUS19TQ0FMRV9USFVNQl9WRVJUSUNBTDoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtf
c2NhbGVfdGh1bWJfcGFpbnQoY3IsIHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoR3RrT3JpZW50YXRpb24pIGZsYWdzLCBkaXJlY3Rpb24pOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIE1PWl9HVEtfRU5UUlk6CiAgICAgICAgIGVuc3VyZV9l
bnRyeV93aWRnZXQoKTsKICAgICAgICAgcmV0dXJuIG1vel9ndGtfZW50cnlfcGFpbnQoY3IsIHJl
Y3QsIHN0YXRlLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2luZy5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2luZy5oCmluZGV4IGE5ODE1NDNhNmIyZTU5
ZjczZjU4NzBjYWNkMTQ3MDA4OWU1MmQ2ZjAuLjlkMTNhMDc4MDM0OGJmNjY3Mjk2ZGFmYTA2NDAy
YWJiYjZmNDQ1OTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmgKQEAgLTkzLDggKzkzLDYg
QEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1RoZW1lUGFydHMgewogICAgIEd0a1dpZGdldCogcmFkaW9i
dXR0b25XaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiBob3JpelNjcm9sbGJhcldpZGdldDsKICAgICBH
dGtXaWRnZXQqIHZlcnRTY3JvbGxiYXJXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBoU2NhbGVXaWRn
ZXQ7Ci0gICAgR3RrV2lkZ2V0KiB2U2NhbGVXaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiBlbnRyeVdp
ZGdldDsKICAgICBHdGtXaWRnZXQqIGNvbWJvQm94V2lkZ2V0OwogICAgIEd0a1dpZGdldCogY29t
Ym9Cb3hCdXR0b25XaWRnZXQ7CkBAIC0xNDcsMTIgKzE0NSw2IEBAIHR5cGVkZWYgZW51bSB7CiAg
IE1PWl9HVEtfU0NST0xMQkFSX1RIVU1CX1ZFUlRJQ0FMLAogICAvKiBQYWludHMgdGhlIGJhY2tn
cm91bmQgb2YgYSBzY3JvbGxlZCB3aW5kb3cgKi8KICAgTU9aX0dUS19TQ1JPTExFRF9XSU5ET1cs
Ci0gIC8qIFBhaW50cyBhIEd0a1NjYWxlLiAqLwotICBNT1pfR1RLX1NDQUxFX0hPUklaT05UQUws
Ci0gIE1PWl9HVEtfU0NBTEVfVkVSVElDQUwsCi0gIC8qIFBhaW50cyBhIEd0a1NjYWxlIHRodW1i
LiAqLwotICBNT1pfR1RLX1NDQUxFX1RIVU1CX0hPUklaT05UQUwsCi0gIE1PWl9HVEtfU0NBTEVf
VEhVTUJfVkVSVElDQUwsCiAgIE1PWl9HVEtfRU5UUlksCiAgIC8qIFBhaW50cyBhIEd0a09wdGlv
bk1lbnUuICovCiAgIE1PWl9HVEtfRFJPUERPV04sCkBAIC0yNzcsMTcgKzI2OSw2IEBAIG1vel9n
dGtfd2lkZ2V0X2dldF9mb2N1cyhHdGtXaWRnZXQqIHdpZGdldCwgZ2Jvb2xlYW4qIGludGVyaW9y
X2ZvY3VzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQqIGZvY3VzX3dpZHRoLCBnaW50
KiBmb2N1c19wYWQpOwogCiAvKioKLSAqIEdldCB0aGUgZGVzaXJlZCBzaXplIG9mIGEgR3RrU2Nh
bGUgdGh1bWIKLSAqIG9yaWVudDogICAgICAgICAgIFtJTl0gdGhlIHNjYWxlIG9yaWVudGF0aW9u
Ci0gKiB0aHVtYl9sZW5ndGg6ICAgICBbT1VUXSB0aGUgbGVuZ3RoIG9mIHRoZSB0aHVtYgotICog
dGh1bWJfaGVpZ2h0OiAgICAgW09VVF0gdGhlIGhlaWdodCBvZiB0aGUgdGh1bWIKLSAqCi0gKiBy
ZXR1cm5zOiAgICBNT1pfR1RLX1NVQ0NFU1MgaWYgdGhlcmUgd2FzIG5vIGVycm9yLCBhbiBlcnJv
ciBjb2RlIG90aGVyd2lzZQotICovCi1naW50Ci1tb3pfZ3RrX2dldF9zY2FsZXRodW1iX21ldHJp
Y3MoR3RrT3JpZW50YXRpb24gb3JpZW50LCBnaW50KiB0aHVtYl9sZW5ndGgsIGdpbnQqIHRodW1i
X2hlaWdodCk7Ci0KLS8qKgogICogR2V0IHRoZSBkZXNpcmVkIG1ldHJpY3MgZm9yIGEgR3RrU2Ny
b2xsYmFyCiAgKiBtZXRyaWNzOiAgICAgICAgICBbSU5dICBzdHJ1Y3Qgd2hpY2ggd2lsbCBjb250
YWluIHRoZSBtZXRyaWNzCiAgKgo=
</data>
<flag name="review"
          id="62297"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>