<?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>52836</bug_id>
          
          <creation_ts>2011-01-20 13:01:24 -0800</creation_ts>
          <short_desc>[GTK] Move scrollbar rendering out of gtk2drawing.c</short_desc>
          <delta_ts>2011-02-08 11:16:45 -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>51155</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337536</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-20 13:01:24 -0800</bug_when>
    <thetext>This bug tracks moving scrollbar rendering out of gtk2drawing.c. This is the final piece of the Mozilla theme drawing code that we use, so we can remove these files completely once this bug is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337553</commentid>
    <comment_count>1</comment_count>
      <attachid>79644</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-20 13:26:13 -0800</bug_when>
    <thetext>Created attachment 79644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337650</commentid>
    <comment_count>2</comment_count>
      <attachid>79644</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-20 15:28:37 -0800</bug_when>
    <thetext>Comment on attachment 79644
Patch

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

&gt; Source/WebCore/platform/gtk/ScrollbarThemeGtk2.cpp:58
&gt; +                         &quot;slider_width&quot;, &amp;m_thumbFatness,
&gt; +                         &quot;trough_border&quot;, &amp;m_troughBorderWidth,

I will change the underscores here to dashes before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337974</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-21 02:57:49 -0800</bug_when>
    <thetext>would be nice to see the gtk ews results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338087</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-21 09:06:48 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; would be nice to see the gtk ews results.

I can repost it after the blocking bug has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338321</commentid>
    <comment_count>5</comment_count>
      <attachid>79787</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-21 14:00:19 -0800</bug_when>
    <thetext>Created attachment 79787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338324</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 14:02:07 -0800</bug_when>
    <thetext>Attachment 79787 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/gtk/ScrollbarThemeGtk2.cpp:62:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/gtk/ScrollbarThemeGtk2.cpp:198:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346667</commentid>
    <comment_count>7</comment_count>
      <attachid>79787</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-02-07 10:46:15 -0800</bug_when>
    <thetext>Comment on attachment 79787
Patch

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

&gt; Source/WebCore/platform/gtk/ScrollbarThemeGtk2.cpp:112
&gt; +    // properly the theme may draw not draw the thumb borders properly.

s/draw not/not/, right?

&gt; Source/WebCore/platform/gtk/ScrollbarThemeGtk2.cpp:186
&gt; +    gfloat arrowScaling;

Xan does not approve of using g* types when they&apos;re just typedefs of the standard C ones.

&gt; Source/WebCore/platform/gtk/WidgetRenderingContext.cpp:155
&gt; +void WidgetRenderingContext::gtkPaintBox(const IntRect&amp; rect, GtkWidget* widget, GtkStateType stateType, GtkShadowType shadowType, const gchar* detail, bool adjustAllocation)

Would it hurt to remove the bool and always perform the allocation? I mean, except for the (negligible?) extra work? It might make this more future-proof, and we can toss this additional argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347549</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-08 11:15:47 -0800</bug_when>
    <thetext>Committed r77960: &lt;http://trac.webkit.org/changeset/77960&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347550</commentid>
    <comment_count>9</comment_count>
      <attachid>79787</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-08 11:16:45 -0800</bug_when>
    <thetext>Comment on attachment 79787
Patch

Thanks for the review! Landed with your suggestions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79644</attachid>
            <date>2011-01-20 13:26:13 -0800</date>
            <delta_ts>2011-01-21 14:00:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52836-20110120132614.patch</filename>
            <type>text/plain</type>
            <size>20642</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Y2Q1YWY3ZGZiNzJlYTk1ZWNjMWIwMGFlNGFkNzViZDI4ZmYyOTBlLi4x
ZjliYTkyNjJhMmZjY2MwZjFkOTM1ODgyNWNkYjJhMjEwOGQ2YjYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDEtMjAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIE1vdmUgc2Nyb2xsYmFyIHJlbmRlcmluZyBvdXQgb2YgZ3RrMmRyYXdpbmcuYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4MzYKKworICAg
ICAgICBSZXBsYWNlIGd0azJkcmF3aW5nLmMgc2Nyb2xsYmFyIHJlbmRlcmluZyB3aXRoIG91ciBv
d24gdmVyc2lvbi4gVGhpcworICAgICAgICBpcyB0aGUgbGFzdCB1c2Ugb2YgdGhlIE1vemlsbGEg
dGhlbWUgZHJhd2luZyBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQg
bm90IGNoYW5nZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBkZWZhdWx0CisgICAgICAgIHRoZW1lLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaDogQWRkIHNvbWUgbW9yZSBi
YWNrcG9ydGVkIGFsbG9jYXRpb24gc2V0dGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuaDogQWRkIGEgZ2V0dGVyIGZvciB0aGUgc2Nyb2xsYmFyIHdpZGdldHMuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHA6ICBJbml0aWFsaXplIGFu
ZCBhZGQgZ2V0dGVycyBmb3Igc2Nyb2xsYmFyIHdpZGdldHMuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1Jbml0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6Z3RrSFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6Omd0a1ZTY3JvbGxiYXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjpwYWludCk6IFdlIG9ubHkgcmVwYWludCB0aGUgc2Nyb2xsZWQKKyAgICAgICAg
d2luZG93IGJhY2tncm91bmQgaWYgd2UgYXJlIHJlcGFpbnRpbmcgYSBidXR0b24gb3IgdGhlIHRo
dW1iLiBJbiB0aGF0CisgICAgICAgIGNhc2UgYWxzbyByZXBhaW50IHRoZSB0cmFjayByZWN0Lgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOiBQb3J0IHRvIFdp
ZGdldFJlbmRlcmluZ0NvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0
azo6U2Nyb2xsYmFyVGhlbWVHdGspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjp1cGRhdGVUaGVtZVByb3BlcnRpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFdpZGdldEZvclNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1Bh
aW50Qm94KTogQWRkZWQgYW4gb3B0aW9uIHdoaWNoCisgICAgICAgIGFsc28gYWRqdXN0cyBhIHdp
ZGdldCBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgcGFpbnQgcmVjdC4gVGhpcyBpcworICAg
ICAgICBuZWNlc3NhcnkgdG8gcHJvcGVybHkgZHJhdyBzY3JvbGxiYXIgYnV0dG9ucy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oOiBEaXR0by4KKwogMjAx
MS0wMS0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a1ZlcnNpb25pbmcuaAppbmRleCA3ZTlmY2QxM2YzMDY4OTViNGFhMTg5MzhjMjhjY2Yy
MmVkNzM0OGQ3Li43MGUxYmJlYjgzMjI5ZGM5NTBjZjU5M2YxMTlhODliMGRmNjcyZjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKQEAgLTk0LDcgKzk0
LDEwIEBAIGNvbnN0IGdjaGFyKiBndGtfbWVudV9pdGVtX2dldF9sYWJlbChHdGtNZW51SXRlbSop
OwogI2RlZmluZSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2xlbmd0aChkYXRhKSAoZGF0YSktPmxl
bmd0aAogI2RlZmluZSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGEoZGF0YSkgKGRhdGEpLT5k
YXRhCiAjZGVmaW5lIGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfdGFyZ2V0KGRhdGEpIChkYXRhKS0+
dGFyZ2V0Ci0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF9wYWdlX3NpemUoYWRqLCB2YWx1ZSkg
KGFkaiktPnBhZ2Vfc2l6ZSA9IHZhbHVlCisjZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF9wYWdl
X3NpemUoYWRqLCBuZXdWYWx1ZSkgKChhZGopLT5wYWdlX3NpemUgPSBuZXdWYWx1ZSkKKyNkZWZp
bmUgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKGFkaiwgbmV3VmFsdWUpICgoYWRqKS0+dmFsdWUg
PSBuZXdWYWx1ZSkKKyNkZWZpbmUgZ3RrX2FkanVzdG1lbnRfc2V0X2xvd2VyKGFkaiwgbmV3VmFs
dWUpICgoYWRqKS0+bG93ZXIgPSBuZXdWYWx1ZSkKKyNkZWZpbmUgZ3RrX2FkanVzdG1lbnRfc2V0
X3VwcGVyKGFkaiwgbmV3VmFsdWUpICgoYWRqKS0+dXBwZXIgPSBuZXdWYWx1ZSkKIAogdm9pZCBn
dGtfYWRqdXN0bWVudF9jb25maWd1cmUoR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCwgZ2RvdWJs
ZSB2YWx1ZSwgZ2RvdWJsZSBsb3dlciwgZ2RvdWJsZSB1cHBlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdkb3VibGUgc3RlcEluY3JlbWVudCwgZ2RvdWJsZSBwYWdlSW5jcmVtZW50
LCBnZG91YmxlIHBhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrLmgKaW5kZXggMjYxYmU1OGU5MDcyOGM0MGUxY2M1NDI4ZjdlODNmZThkZDYyY2Y2
My4uZTc0MmJmODg2NDdmNTI0ODM5YzU2OWJjNGEwNWU3YjVjZTg4MGIwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTkyLDcgKzkyLDggQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIEd0a1dpZGdl
dCogZ3RrU2Nyb2xsYmFyKCk7CisgICAgR3RrV2lkZ2V0KiBndGtWU2Nyb2xsYmFyKCkgY29uc3Q7
CisgICAgR3RrV2lkZ2V0KiBndGtIU2Nyb2xsYmFyKCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQg
Z2V0SW5kaWNhdG9yTWV0cmljcyhDb250cm9sUGFydCwgaW50JiBpbmRpY2F0b3JTaXplLCBpbnQm
IGluZGljYXRvclNwYWNpbmcpOwogI2Vsc2UKICAgICBHdGtTdHlsZUNvbnRleHQqIGd0a1Njcm9s
bGJhclN0eWxlKCk7CkBAIC0yMjgsNiArMjI5LDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEd0
a1dpZGdldCogbV9ndGtDb21ib0JveEJ1dHRvbjsKICAgICBtdXRhYmxlIEd0a1dpZGdldCogbV9n
dGtDb21ib0JveEFycm93OwogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0NvbWJvQm94U2Vw
YXJhdG9yOworICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a1ZTY3JvbGxiYXI7CisgICAgbXV0
YWJsZSBHdGtXaWRnZXQqIG1fZ3RrSFNjcm9sbGJhcjsKICAgICBib29sIG1fdGhlbWVQYXJ0c0hh
dmVSR0JBQ29sb3JtYXA7CiAgICAgZnJpZW5kIGNsYXNzIFdpZGdldFJlbmRlcmluZ0NvbnRleHQ7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0azIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
Mi5jcHAKaW5kZXggZGU0MTk1ZDVkMGRjMmIzNzE2OGYyYjY3YTZmY2Q1MGNiMDMwYzUzYy4uN2Mw
MmU3NDBlMjVlOTc0NWMzZDRiNDBhOGNlMjlkODAyNDgyMjMxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKQEAgLTY4LDYgKzY4LDggQEAg
dm9pZCBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1Jbml0KCkKICAgICBtX2d0a0NvbWJvQm94QnV0
dG9uID0gMDsKICAgICBtX2d0a0NvbWJvQm94QXJyb3cgPSAwOwogICAgIG1fZ3RrQ29tYm9Cb3hT
ZXBhcmF0b3IgPSAwOworICAgIG1fZ3RrVlNjcm9sbGJhciA9IDA7CisgICAgbV9ndGtIU2Nyb2xs
YmFyID0gMDsKIAogICAgIG1lbXNldCgmbV90aGVtZVBhcnRzLCAwLCBzaXplb2YoR3RrVGhlbWVQ
YXJ0cykpOwogICAgIEdka0NvbG9ybWFwKiBjb2xvcm1hcCA9IGdka19zY3JlZW5fZ2V0X3JnYmFf
Y29sb3JtYXAoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKQEAgLTg4Miw5ICs4ODQsMjIgQEAg
R3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrQ29tYm9Cb3hTZXBhcmF0b3IoKSBjb25zdAog
ICAgIHJldHVybiBtX2d0a0NvbWJvQm94U2VwYXJhdG9yOwogfQogCi1HdGtXaWRnZXQqIFJlbmRl
clRoZW1lR3RrOjpndGtTY3JvbGxiYXIoKQorR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3Rr
SFNjcm9sbGJhcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1vel9ndGtfZ2V0X3Njcm9sbGJhcl93
aWRnZXQoKTsKKyAgICBpZiAobV9ndGtIU2Nyb2xsYmFyKQorICAgICAgICByZXR1cm4gbV9ndGtI
U2Nyb2xsYmFyOworICAgIG1fZ3RrSFNjcm9sbGJhciA9IGd0a19oc2Nyb2xsYmFyX25ldygwKTsK
KyAgICBzZXR1cFdpZGdldEFuZEFkZFRvQ29udGFpbmVyKG1fZ3RrSFNjcm9sbGJhciwgZ3RrQ29u
dGFpbmVyKCkpOworICAgIHJldHVybiBtX2d0a0hTY3JvbGxiYXI7Cit9CisKK0d0a1dpZGdldCog
UmVuZGVyVGhlbWVHdGs6Omd0a1ZTY3JvbGxiYXIoKSBjb25zdAoreworICAgIGlmIChtX2d0a1ZT
Y3JvbGxiYXIpCisgICAgICAgIHJldHVybiBtX2d0a1ZTY3JvbGxiYXI7CisgICAgbV9ndGtWU2Ny
b2xsYmFyID0gZ3RrX3ZzY3JvbGxiYXJfbmV3KDApOworICAgIHNldHVwV2lkZ2V0QW5kQWRkVG9D
b250YWluZXIobV9ndGtWU2Nyb2xsYmFyLCBndGtDb250YWluZXIoKSk7CisgICAgcmV0dXJuIG1f
Z3RrVlNjcm9sbGJhcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggY2I5YjBm
OGFjNDQ3MTc1MWQ1MjA5OWJjZDkyYjRlYmQwNGUxYzc5MC4uN2Y3YzI2OThiODc4NmEzNzBkMGYw
YWY4M2JmMmJmODJhYjFjOGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0yMjgsOSArMjI4LDEwIEBAIGJvb2wgU2Nyb2xs
YmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29uCiAgICAgICAgICAgICBzY3JvbGxNYXNrIHw9IFRodW1iUGFydDsKICAgICB9
CiAKLSAgICBwYWludFNjcm9sbGJhckJhY2tncm91bmQoZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxi
YXIpOwotCi0gICAgaWYgKHNjcm9sbE1hc2sgJiBUcmFja0JHUGFydCkKKyAgICBTY3JvbGxiYXJD
b250cm9sUGFydE1hc2sgYWxsQnV0dG9ucyA9IEJhY2tCdXR0b25TdGFydFBhcnQgfCBCYWNrQnV0
dG9uRW5kUGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZv
cndhcmRCdXR0b25TdGFydFBhcnQgfCBGb3J3YXJkQnV0dG9uRW5kUGFydDsKKyAgICBpZiAoc2Ny
b2xsTWFzayAmIFRyYWNrQkdQYXJ0IHx8IHNjcm9sbE1hc2sgJiBUaHVtYlBhcnQgfHwgc2Nyb2xs
TWFzayAmIGFsbEJ1dHRvbnMpCisgICAgICAgIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChncmFw
aGljc0NvbnRleHQsIHNjcm9sbGJhcik7CiAgICAgICAgIHBhaW50VHJhY2tCYWNrZ3JvdW5kKGdy
YXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLCB0cmFja1BhaW50UmVjdCk7CiAKICAgICAvLyBQYWlu
dCB0aGUgYmFjayBhbmQgZm9yd2FyZCBidXR0b25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcAppbmRleCA3OTI5NWMxMDhmYzQzNzgz
OGEzOTZhZWFkMDViZTM0MTI2YmMzOWI2Li4xMmE3NDVjOGYwNjc3ZjIyNjIyMzRjZjJiN2RiNWU4
Zjg5MmNiNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsyLmNwcApAQCAtNDYsMTA3ICs0NiwxNjkgQEAgc3RhdGljIHZvaWQgZ3RrU3R5
bGVTZXRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrU3R5bGUqIHByZXZpb3VzLCBTY3Jv
bGxiYXIKIFNjcm9sbGJhclRoZW1lR3RrOjpTY3JvbGxiYXJUaGVtZUd0aygpCiB7CiAgICAgdXBk
YXRlVGhlbWVQcm9wZXJ0aWVzKCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzdGF0aWNfY2FzdDxS
ZW5kZXJUaGVtZUd0ayo+KFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS5nZXQoKSktPmd0a1Nj
cm9sbGJhcigpLAorICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVH
dGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0KCkpLT5ndGtIU2Nyb2xsYmFyKCks
CiAgICAgICAgICAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwg
dGhpcyk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVRoZW1lUHJvcGVydGll
cygpCiB7Ci0gICAgTW96R3RrU2Nyb2xsYmFyTWV0cmljcyBtZXRyaWNzOwotICAgIG1vel9ndGtf
Z2V0X3Njcm9sbGJhcl9tZXRyaWNzKCZtZXRyaWNzKTsKLQotICAgIG1fdGh1bWJGYXRuZXNzID0g
bWV0cmljcy5zbGlkZXJfd2lkdGg7Ci0gICAgbV90cm91Z2hCb3JkZXJXaWR0aCA9IG1ldHJpY3Mu
dHJvdWdoX2JvcmRlcjsKLSAgICBtX3N0ZXBwZXJTaXplID0gbWV0cmljcy5zdGVwcGVyX3NpemU7
Ci0gICAgbV9zdGVwcGVyU3BhY2luZyA9IG1ldHJpY3Muc3RlcHBlcl9zcGFjaW5nOwotICAgIG1f
bWluVGh1bWJMZW5ndGggPSBtZXRyaWNzLm1pbl9zbGlkZXJfc2l6ZTsKLSAgICBtX3Ryb3VnaFVu
ZGVyU3RlcHBlcnMgPSBtZXRyaWNzLnRyb3VnaF91bmRlcl9zdGVwcGVyczsKLSAgICBtX2hhc0Zv
cndhcmRCdXR0b25TdGFydFBhcnQgPSBtZXRyaWNzLmhhc19zZWNvbmRhcnlfZm9yd2FyZF9zdGVw
cGVyOwotICAgIG1faGFzQmFja0J1dHRvbkVuZFBhcnQgPSBtZXRyaWNzLmhhc19zZWNvbmRhcnlf
YmFja3dhcmRfc3RlcHBlcjsKLQorICAgIEd0a1dpZGdldCogc2Nyb2xsYmFyID0gc3RhdGljX2Nh
c3Q8UmVuZGVyVGhlbWVHdGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0KCkpLT5n
dGtIU2Nyb2xsYmFyKCk7CisgICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoc2Nyb2xsYmFyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICJzbGlkZXJfd2lkdGgiLCAmbV90aHVtYkZhdG5lc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgInRyb3VnaF9ib3JkZXIiLCAmbV90cm91Z2hCb3JkZXJX
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3RlcHBlci1zaXplIiwgJm1fc3RlcHBl
clNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRyb3VnaC11bmRlci1zdGVwcGVycyIs
ICZtX3Ryb3VnaFVuZGVyU3RlcHBlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgImhhcy1z
ZWNvbmRhcnktZm9yd2FyZC1zdGVwcGVyIiwgJm1faGFzRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzLXNlY29uZGFyeS1iYWNrd2FyZC1zdGVwcGVy
IiwgJm1faGFzQmFja0J1dHRvbkVuZFBhcnQsIE5VTEwpOworICAgIG1fbWluVGh1bWJMZW5ndGgg
PSBndGtfcmFuZ2VfZ2V0X21pbl9zbGlkZXJfc2l6ZShHVEtfUkFOR0Uoc2Nyb2xsYmFyKSk7CiAg
ICAgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgR3RrV2lk
Z2V0KiBnZXRXaWRnZXRGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAg
R3RrV2lkZ2V0U3RhdGUgc3RhdGU7Ci0gICAgc3RhdGUuZm9jdXNlZCA9IEZBTFNFOwotICAgIHN0
YXRlLmlzRGVmYXVsdCA9IEZBTFNFOwotICAgIHN0YXRlLmNhbkRlZmF1bHQgPSBGQUxTRTsKLSAg
ICBzdGF0ZS5kaXNhYmxlZCA9IEZBTFNFOwotICAgIHN0YXRlLmFjdGl2ZSA9IEZBTFNFOwotICAg
IHN0YXRlLmluSG92ZXIgPSBGQUxTRTsKKyAgICBSZW5kZXJUaGVtZUd0ayogdGhlbWUgPSBzdGF0
aWNfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS5nZXQo
KSk7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9s
bGJhciA/IHRoZW1lLT5ndGtWU2Nyb2xsYmFyKCkgOiB0aGVtZS0+Z3RrSFNjcm9sbGJhcigpOwor
fQogCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQorewogICAgIC8vIFBhaW50IHRoZSB0cmFjayBiYWNrZ3JvdW5kLiBJZiB0aGUgdHJvdWdo
LXVuZGVyLXN0ZXBwZXJzIHByb3BlcnR5IGlzIHRydWUsIHRoaXMKICAgICAvLyBzaG91bGQgYmUg
dGhlIGZ1bGwgc2l6ZSBvZiB0aGUgc2Nyb2xsYmFyLCBidXQgaWYgaXMgZmFsc2UsIGl0IHNob3Vs
ZCBvbmx5IGJlIHRoZQogICAgIC8vIHRyYWNrIHJlY3QuCi0gICAgSW50UmVjdCBmdWxsU2Nyb2xs
YmFyUmVjdCA9IHJlY3Q7CisgICAgSW50UmVjdCBmdWxsU2Nyb2xsYmFyUmVjdChyZWN0KTsKICAg
ICBpZiAobV90cm91Z2hVbmRlclN0ZXBwZXJzKQogICAgICAgICBmdWxsU2Nyb2xsYmFyUmVjdCA9
IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCBzY3JvbGxiYXItPndpZHRo
KCksIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwogCi0gICAgR3RrVGhlbWVXaWRnZXRUeXBlIHR5cGUg
PSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBNT1pfR1RL
X1NDUk9MTEJBUl9UUkFDS19WRVJUSUNBTCA6IE1PWl9HVEtfU0NST0xMQkFSX1RSQUNLX0hPUkla
T05UQUw7CiAgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dCB3aWRnZXRDb250ZXh0KGNvbnRleHQs
IGZ1bGxTY3JvbGxiYXJSZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0LnBhaW50TW96aWxsYVdpZGdl
dCh0eXBlLCAmc3RhdGUsIDApOworICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50KCksIGZ1
bGxTY3JvbGxiYXJSZWN0LnNpemUoKSk7CisgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludEJveChw
YWludFJlY3QsIGdldFdpZGdldEZvclNjcm9sbGJhcihzY3JvbGxiYXIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX0FDVElWRSwgR1RLX1NIQURPV19JTiwgInRyb3Vn
aCIpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKLSAg
ICAvLyBUaGlzIGlzIHVudXNlZCBieSB0aGUgbW96X2d0a19zY3JvbGxlY2Rfd2luZG93X3BhaW50
LgotICAgIEd0a1dpZGdldFN0YXRlIHN0YXRlOwogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJl
Y3QgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53
aWR0aCgpLCBzY3JvbGxiYXItPmhlaWdodCgpKTsKKwogICAgIFdpZGdldFJlbmRlcmluZ0NvbnRl
eHQgd2lkZ2V0Q29udGV4dChjb250ZXh0LCBmdWxsU2Nyb2xsYmFyUmVjdCk7Ci0gICAgd2lkZ2V0
Q29udGV4dC5wYWludE1vemlsbGFXaWRnZXQoTU9aX0dUS19TQ1JPTExFRF9XSU5ET1csICZzdGF0
ZSwgMCk7CisgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludEJveChmdWxsU2Nyb2xsYmFyUmVjdCwg
Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhciksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLCAic2Nyb2xsZWRfd2luZG93
Iik7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBHdGtXaWRnZXRTdGF0ZSBzdGF0ZTsKLSAgICBzdGF0ZS5mb2N1c2VkID0gRkFMU0U7
Ci0gICAgc3RhdGUuaXNEZWZhdWx0ID0gRkFMU0U7Ci0gICAgc3RhdGUuY2FuRGVmYXVsdCA9IEZB
TFNFOwotICAgIHN0YXRlLmRpc2FibGVkID0gRkFMU0U7Ci0gICAgc3RhdGUuYWN0aXZlID0gc2Ny
b2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydDsKLSAgICBzdGF0ZS5pbkhvdmVyID0g
c2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IFRodW1iUGFydDsKLSAgICBzdGF0ZS5tYXhwb3Mg
PSBzY3JvbGxiYXItPm1heGltdW0oKTsKLSAgICBzdGF0ZS5jdXJwb3MgPSBzY3JvbGxiYXItPmN1
cnJlbnRQb3MoKTsKLQotICAgIEd0a1RoZW1lV2lkZ2V0VHlwZSB0eXBlID0gc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gTU9aX0dUS19TQ1JPTExCQVJfVEhV
TUJfVkVSVElDQUwgOiBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9IT1JJWk9OVEFMOworICAgIEd0
a1dpZGdldCogd2lkZ2V0ID0gZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAg
Z2Jvb2xlYW4gYWN0aXZhdGVTbGlkZXI7CisgICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQod2lkZ2V0
LCAiYWN0aXZhdGUtc2xpZGVyIiwgJmFjdGl2YXRlU2xpZGVyLCBOVUxMKTsKKworICAgIEd0a1N0
YXRlVHlwZSBzdGF0ZVR5cGUgPSBHVEtfU1RBVEVfTk9STUFMOworICAgIEd0a1NoYWRvd1R5cGUg
c2hhZG93VHlwZSA9IEdUS19TSEFET1dfT1VUOworICAgIGlmIChhY3RpdmF0ZVNsaWRlciAmJiBz
Y3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KSB7CisgICAgICAgIHN0YXRlVHlw
ZSA9IEdUS19TVEFURV9BQ1RJVkU7CisgICAgICAgIHNoYWRvd1R5cGUgPSBHVEtfU0hBRE9XX0lO
OworICAgIH0gZWxzZSBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCB8
fCBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgICAgICBzdGF0ZVR5
cGUgPSBHVEtfU1RBVEVfUFJFTElHSFQ7CisKKyAgICAvLyBUaGUgYWRqdXN0bWVudCBjb250cm9s
cyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBzY3JvbGxiYXIgdGh1bWIuIElmIGl0J3Mgbm90IHNldAor
ICAgIC8vIHByb3Blcmx5IHRoZSB0aGVtZSBtYXkgZHJhdyBub3QgZHJhdyB0aGUgdGh1bWIgYm9y
ZGVycyBwcm9wZXJseS4KKyAgICBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50ID0gZ3RrX3Jhbmdl
X2dldF9hZGp1c3RtZW50KEdUS19SQU5HRSh3aWRnZXQpKTsKKyAgICBndGtfYWRqdXN0bWVudF9z
ZXRfdmFsdWUoYWRqdXN0bWVudCwgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkpOworICAgIGd0a19h
ZGp1c3RtZW50X3NldF9sb3dlcihhZGp1c3RtZW50LCAwKTsKKyAgICBndGtfYWRqdXN0bWVudF9z
ZXRfdXBwZXIoYWRqdXN0bWVudCwgc2Nyb2xsYmFyLT5tYXhpbXVtKCkpOworCisgICAgR3RrT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24gPSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTDsKKyAgICBp
ZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAg
ICAgIGd0a19hZGp1c3RtZW50X3NldF9wYWdlX3NpemUoYWRqdXN0bWVudCwgcmVjdC5oZWlnaHQo
KSk7CisgICAgICAgIG9yaWVudGF0aW9uID0gR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMOworICAg
IH0gZWxzZQorICAgICAgICBndGtfYWRqdXN0bWVudF9zZXRfcGFnZV9zaXplKGFkanVzdG1lbnQs
IHJlY3Qud2lkdGgoKSk7CisKICAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRl
eHQoY29udGV4dCwgcmVjdCk7Ci0gICAgd2lkZ2V0Q29udGV4dC5wYWludE1vemlsbGFXaWRnZXQo
dHlwZSwgJnN0YXRlLCAwKTsKKyAgICBJbnRSZWN0IHNsaWRlclJlY3QoSW50UG9pbnQoKSwgcmVj
dC5zaXplKCkpOworICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRTbGlkZXIoc2xpZGVyUmVjdCwg
d2lkZ2V0LCBzdGF0ZVR5cGUsIHNoYWRvd1R5cGUsICJzbGlkZXIiLCBvcmllbnRhdGlvbik7CiB9
CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9s
bGJhclBhcnQgcGFydCkKIHsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIGlmIChzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgIGZsYWdzIHw9IE1P
Wl9HVEtfU1RFUFBFUl9WRVJUSUNBTDsKLQotICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25F
bmRQYXJ0KQotICAgICAgICBmbGFncyB8PSAoTU9aX0dUS19TVEVQUEVSX0RPV04gfCBNT1pfR1RL
X1NURVBQRVJfQk9UVE9NKTsKLSAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0
KQotICAgICAgICBmbGFncyB8PSBNT1pfR1RLX1NURVBQRVJfRE9XTjsKLQotICAgIEd0a1dpZGdl
dFN0YXRlIHN0YXRlOwotICAgIHN0YXRlLmZvY3VzZWQgPSBUUlVFOwotICAgIHN0YXRlLmlzRGVm
YXVsdCA9IFRSVUU7Ci0gICAgc3RhdGUuY2FuRGVmYXVsdCA9IFRSVUU7Ci0gICAgc3RhdGUuZGVw
cmVzc2VkID0gRkFMU0U7CisgICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNhYmxlZCBpZiB0
aGUgdGh1bWIgaXMgYXMgdGhlIGFwcHJvcHJpYXRlIGV4dHJlbWUuCisgICAgR3RrU2hhZG93VHlw
ZSBzaGFkb3dUeXBlID0gR1RLX1NIQURPV19PVVQ7CisgICAgR3RrU3RhdGVUeXBlIHN0YXRlVHlw
ZSA9IEdUS19TVEFURV9JTlNFTlNJVElWRTsKKyAgICBib29sIHByZXNzZWQgPSAocGFydCA9PSBz
Y3JvbGxiYXItPnByZXNzZWRQYXJ0KCkpOwogCiAgICAgaWYgKChCYWNrQnV0dG9uU3RhcnRQYXJ0
ID09IHBhcnQgJiYgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkpCiAgICAgICAgIHx8IChCYWNrQnV0
dG9uRW5kUGFydCA9PSBwYXJ0ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygpKQogICAgICAgICB8
fCAoRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3Mo
KSAhPSBzY3JvbGxiYXItPm1heGltdW0oKSkKICAgICAgICAgfHwgKEZvcndhcmRCdXR0b25TdGFy
dFBhcnQgPT0gcGFydCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAhPSBzY3JvbGxiYXItPm1h
eGltdW0oKSkpIHsKLSAgICAgICAgc3RhdGUuZGlzYWJsZWQgPSBGQUxTRTsKLSAgICAgICAgc3Rh
dGUuYWN0aXZlID0gcGFydCA9PSBzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCk7Ci0gICAgICAgIHN0
YXRlLmluSG92ZXIgPSBwYXJ0ID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKTsKKyAgICAgICAg
c3RhdGVUeXBlID0gR1RLX1NUQVRFX05PUk1BTDsKKyAgICAgICAgaWYgKHByZXNzZWQpIHsKKyAg
ICAgICAgICAgIHN0YXRlVHlwZSA9IEdUS19TVEFURV9BQ1RJVkU7CisgICAgICAgICAgICBzaGFk
b3dUeXBlID0gR1RLX1NIQURPV19JTjsKKyAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09IHNjcm9s
bGJhci0+aG92ZXJlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0YXRlVHlwZSA9IEdUS19TVEFURV9Q
UkVMSUdIVDsKKyAgICB9CisKKyAgICAvLyBUaGVtZXMgZGV0ZXJtaW5lIGhvdyB0byBkcmF3IHRo
ZSBidXR0b24gKHdoaWNoIGJ1dHRvbiB0byBkcmF3KSBiYXNlZCBvbiB0aGUgYWxsb2NhdGlvbgor
ICAgIC8vIG9mIHRoZSB3aWRnZXQuIFdoZXJlIHRoZSB0YXJnZXQgcmVjdCBpcyBpbiByZWxhdGlv
biB0byB0aGUgdG90YWwgd2lkZ2V0IGFsbG9jYXRpb24KKyAgICAvLyBkZXRlcm1pbmVzIHRoZSBi
dXR0b24uCisgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCk7CisgICAgaW50IGJ1dHRvblNpemUgPSAob3JpZW50YXRpb24gPT0gVmVy
dGljYWxTY3JvbGxiYXIpID8gcmVjdC5oZWlnaHQoKSA6IHJlY3Qud2lkdGgoKTsKKyAgICBpbnQg
dG90YWxBbGxvY2F0aW9uID0gYnV0dG9uU2l6ZSAqIDU7IC8vIE9uZSBzcGFjZSBmb3IgZWFjaCBi
dXR0b24gYW5kIG9uZSBleHRyYS4KKyAgICBpbnQgYnV0dG9uT2Zmc2V0ID0gMDsKKyAgICBpZiAo
Rm9yd2FyZEJ1dHRvblN0YXJ0UGFydCA9PSBwYXJ0KQorICAgICAgICBidXR0b25PZmZzZXQgPSBi
dXR0b25TaXplOworICAgIGVsc2UgaWYgKEJhY2tCdXR0b25FbmRQYXJ0ID09IHBhcnQpCisgICAg
ICAgIGJ1dHRvbk9mZnNldCA9IDMgKiBidXR0b25TaXplOworICAgIGVsc2UgaWYgKEZvcndhcmRC
dXR0b25FbmRQYXJ0ID09IHBhcnQpCisgICAgICAgIGJ1dHRvbk9mZnNldCA9IDQgKiBidXR0b25T
aXplOworCisgICAgLy8gTm93IHdlIHdhbnQgdGhlIGFsbG9jYXRpb24gdG8gYmUgcmVsYXRpdmUg
dG8gdGhlIG9yaWdpbiBvZiB0aGUgcGFpbnRlZCByZWN0LgorICAgIEd0a1dpZGdldCogd2lkZ2V0
ID0gZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAgR3RrQWxsb2NhdGlvbiBh
bGxvY2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmYWxsb2Nh
dGlvbik7CisgICAgYWxsb2NhdGlvbi54ID0gYWxsb2NhdGlvbi55ID0gMDsKKyAgICBhbGxvY2F0
aW9uLndpZHRoID0gcmVjdC53aWR0aCgpOworICAgIGFsbG9jYXRpb24uaGVpZ2h0ID0gcmVjdC5o
ZWlnaHQoKTsKKworICAgIGlmIChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewor
ICAgICAgICBhbGxvY2F0aW9uLmhlaWdodCA9IHRvdGFsQWxsb2NhdGlvbjsKKyAgICAgICAgYWxs
b2NhdGlvbi55IC09IGJ1dHRvbk9mZnNldDsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0ZS5k
aXNhYmxlZCA9IFRSVUU7Ci0gICAgICAgIHN0YXRlLmFjdGl2ZSA9IEZBTFNFOwotICAgICAgICBz
dGF0ZS5pbkhvdmVyID0gRkFMU0U7CisgICAgICAgIGFsbG9jYXRpb24ud2lkdGggPSB0b3RhbEFs
bG9jYXRpb247CisgICAgICAgIGFsbG9jYXRpb24ueCAtPSBidXR0b25PZmZzZXQ7CiAgICAgfQor
ICAgIGd0a193aWRnZXRfc2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmYWxsb2NhdGlvbik7CiAKKyAg
ICBjb25zdCBjaGFyKiBkZXRhaWwgPSBvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/
ICJ2c2Nyb2xsYmFyIiA6ICJoc2Nyb2xsYmFyIjsKICAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0
IHdpZGdldENvbnRleHQoY29udGV4dCwgcmVjdCk7Ci0gICAgd2lkZ2V0Q29udGV4dC5wYWludE1v
emlsbGFXaWRnZXQoTU9aX0dUS19TQ1JPTExCQVJfQlVUVE9OLCAmc3RhdGUsIGZsYWdzKTsKKwor
ICAgIEludFJlY3QgYnV0dG9uUmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUoKSk7CisgICAgd2lk
Z2V0Q29udGV4dC5ndGtQYWludEJveChidXR0b25SZWN0LCB3aWRnZXQsIHN0YXRlVHlwZSwgc2hh
ZG93VHlwZSwgZGV0YWlsLCB0cnVlKTsKKworICAgIGdmbG9hdCBhcnJvd1NjYWxpbmc7CisgICAg
Z3RrX3dpZGdldF9zdHlsZV9nZXQod2lkZ2V0LCAiYXJyb3ctc2NhbGluZyIsICZhcnJvd1NjYWxp
bmcsIE5VTEwpOworICAgIEludFNpemUgYXJyb3dTaXplID0gcmVjdC5zaXplKCk7CisgICAgYXJy
b3dTaXplLnNjYWxlKGFycm93U2NhbGluZyk7CisgICAgSW50UmVjdCBhcnJvd1JlY3QoSW50UG9p
bnQoYnV0dG9uUmVjdC54KCkgKyAoYnV0dG9uUmVjdC53aWR0aCgpIC0gYXJyb3dTaXplLndpZHRo
KCkpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25SZWN0LnkoKSAr
IChidXR0b25SZWN0LmhlaWdodCgpIC0gYXJyb3dTaXplLmhlaWdodCgpKSAvIDIpLAorICAgICAg
ICAgICAgICAgICAgICAgIGFycm93U2l6ZSk7CisgICAgaWYgKHByZXNzZWQpIHsKKyAgICAgICAg
Z2ludCBhcnJvd0Rpc3BsYWNlbWVudFgsIGFycm93RGlzcGxhY2VtZW50WTsKKyAgICAgICAgZ3Rr
X3dpZGdldF9zdHlsZV9nZXQod2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXJyb3ctZGlzcGxhY2VtZW50LXgiLCAmYXJyb3dEaXNwbGFjZW1lbnRYLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYXJyb3ctZGlzcGxhY2VtZW50LXkiLCAmYXJyb3dEaXNwbGFjZW1l
bnRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgYXJyb3dS
ZWN0Lm1vdmUoYXJyb3dEaXNwbGFjZW1lbnRYLCBhcnJvd0Rpc3BsYWNlbWVudFkpOworICAgIH0K
KworICAgIEd0a0Fycm93VHlwZSBhcnJvd1R5cGUgPSBHVEtfQVJST1dfRE9XTjsKKyAgICBpZiAo
b3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHBhcnQgPT0g
QmFja0J1dHRvbkVuZFBhcnQgfHwgcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KQorICAgICAg
ICAgICAgYXJyb3dUeXBlID0gR1RLX0FSUk9XX1VQOworICAgIH0gZWxzZSBpZiAob3JpZW50YXRp
b24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICBhcnJvd1R5cGUgPSBHVEtfQVJS
T1dfUklHSFQ7CisgICAgICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0IHx8IHBhcnQg
PT0gQmFja0J1dHRvblN0YXJ0UGFydCkKKyAgICAgICAgICAgIGFycm93VHlwZSA9IEdUS19BUlJP
V19MRUZUOworICAgIH0KKyAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50QXJyb3coYXJyb3dSZWN0
LCB3aWRnZXQsIHN0YXRlVHlwZSwgc2hhZG93VHlwZSwgYXJyb3dUeXBlLCBkZXRhaWwpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTFiMzJlYWExYzM4OTdj
MWUyYmNiZTZiZWI1YzdlZGVkNWEwY2M2YS4uMDA5M2ZiZTkyN2Y0ZGI4NWYzYmMxNmY4NmY4YjMx
ZWE3MTJhOTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
aWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTUyLDEwICsxNTIsMjEgQEAgYm9vbCBXaWRn
ZXRSZW5kZXJpbmdDb250ZXh0OjpwYWludE1vemlsbGFXaWRnZXQoR3RrVGhlbWVXaWRnZXRUeXBl
IHR5cGUsIEd0a1dpZGcKICAgICByZXR1cm4gIW1faGFkRXJyb3I7CiB9CiAKLXZvaWQgV2lkZ2V0
UmVuZGVyaW5nQ29udGV4dDo6Z3RrUGFpbnRCb3goY29uc3QgSW50UmVjdCYgcmVjdCwgR3RrV2lk
Z2V0KiB3aWRnZXQsIEd0a1N0YXRlVHlwZSBzdGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUgc2hhZG93
VHlwZSwgY29uc3QgZ2NoYXIqIGRldGFpbCkKK3ZvaWQgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6
Z3RrUGFpbnRCb3goY29uc3QgSW50UmVjdCYgcmVjdCwgR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1N0
YXRlVHlwZSBzdGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUgc2hhZG93VHlwZSwgY29uc3QgZ2NoYXIq
IGRldGFpbCwgYm9vbCBhZGp1c3RBbGxvY2F0aW9uKQogewogICAgIEdka1JlY3RhbmdsZSBwYWlu
dFJlY3QgPSB7IG1fcGFpbnRSZWN0LnggKyByZWN0LngoKSwgbV9wYWludFJlY3QueSArIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkgfTsKLSAgICBndGtfcGFpbnRfYm94KGd0
a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCksIG1fdGFyZ2V0LCBzdGF0ZVR5cGUsIHNoYWRvd1R5
cGUsICZtX3BhaW50UmVjdCwKKworICAgIC8vIFNvbWUgd2lkZ2V0cyBhbHNvIG5lZWQgdGhlaXIg
YWxsb2NhdGlvbiBhZGp1c3RlZCB0byBhY2NvdW50IGZvciBleHRyYSBzcGFjZS4gUmlnaHQgbm93
CisgICAgLy8gb25seSBzY3JvbGxiYXIgYnV0dG9ucyBoYXZlIHNpZ25pZmljYW50IGFsbG9jYXRp
b25zLgorICAgIGlmIChhZGp1c3RBbGxvY2F0aW9uKSB7CisgICAgICAgIEd0a0FsbG9jYXRpb24g
YWxsb2NhdGlvbjsKKyAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsICZh
bGxvY2F0aW9uKTsKKyAgICAgICAgYWxsb2NhdGlvbi54ICs9IG1fcGFpbnRSZWN0Lng7CisgICAg
ICAgIGFsbG9jYXRpb24ueSArPSBtX3BhaW50UmVjdC55OworICAgICAgICBndGtfd2lkZ2V0X3Nl
dF9hbGxvY2F0aW9uKHdpZGdldCwgJmFsbG9jYXRpb24pOworICAgIH0KKworICAgIGd0a19wYWlu
dF9ib3goZ3RrX3dpZGdldF9nZXRfc3R5bGUod2lkZ2V0KSwgbV90YXJnZXQsIHN0YXRlVHlwZSwg
c2hhZG93VHlwZSwgJnBhaW50UmVjdCwKICAgICAgICAgICAgICAgICAgIHdpZGdldCwgZGV0YWls
LCBwYWludFJlY3QueCwgcGFpbnRSZWN0LnksIHBhaW50UmVjdC53aWR0aCwgcGFpbnRSZWN0Lmhl
aWdodCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRn
ZXRSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGUyNDhmMDRlNzI3M2RkMzliMTBkNjZiYjFlYjczYTFj
ZGVjZWZiZjguLmYwYmRhMjIyMDg0YmQ4YzQ3NTNmZDZlOTNlYmEyNDBhOTM5NTE4YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRl
eHQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgfldpZGdldFJlbmRlcmluZ0NvbnRl
eHQoKTsKIAogICAgIGJvb2wgcGFpbnRNb3ppbGxhV2lkZ2V0KEd0a1RoZW1lV2lkZ2V0VHlwZSwg
R3RrV2lkZ2V0U3RhdGUqLCBpbnQgZmxhZ3MsIEd0a1RleHREaXJlY3Rpb24gPSBHVEtfVEVYVF9E
SVJfTk9ORSk7Ci0gICAgdm9pZCBndGtQYWludEJveChjb25zdCBJbnRSZWN0JiwgR3RrV2lkZ2V0
KiwgR3RrU3RhdGVUeXBlLCBHdGtTaGFkb3dUeXBlLCBjb25zdCBnY2hhciopOworICAgIHZvaWQg
Z3RrUGFpbnRCb3goY29uc3QgSW50UmVjdCYsIEd0a1dpZGdldCosIEd0a1N0YXRlVHlwZSwgR3Rr
U2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqLCBib29sIGFkanVzdEFsbG9jYXRpb24gPSBmYWxzZSk7
CiAgICAgdm9pZCBndGtQYWludEZsYXRCb3goY29uc3QgSW50UmVjdCYsIEd0a1dpZGdldCosIEd0
a1N0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqKTsKICAgICB2b2lkIGd0a1Bh
aW50Rm9jdXMoY29uc3QgSW50UmVjdCYsIEd0a1dpZGdldCosIEd0a1N0YXRlVHlwZSwgY29uc3Qg
Z2NoYXIqKTsKICAgICB2b2lkIGd0a1BhaW50U2xpZGVyKGNvbnN0IEludFJlY3QmLCBHdGtXaWRn
ZXQqLCBHdGtTdGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUsIGNvbnN0IGdjaGFyKiwgR3RrT3JpZW50
YXRpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79787</attachid>
            <date>2011-01-21 14:00:19 -0800</date>
            <delta_ts>2011-02-08 11:16:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52836-20110121140018.patch</filename>
            <type>text/plain</type>
            <size>20635</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYWJlNjhmMzUwOTQ4MGFiNzRmOGRiNTYzYWQ4NDJkMGFjYTQ1NGQ5Li41
Y2M4ZTIzYjhhNDllNWZiMTkwYTA2ZDFkMTNiMjk1M2UwOTIxMGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDEtMjAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIE1vdmUgc2Nyb2xsYmFyIHJlbmRlcmluZyBvdXQgb2YgZ3RrMmRyYXdpbmcuYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4MzYKKworICAg
ICAgICBSZXBsYWNlIGd0azJkcmF3aW5nLmMgc2Nyb2xsYmFyIHJlbmRlcmluZyB3aXRoIG91ciBv
d24gdmVyc2lvbi4gVGhpcworICAgICAgICBpcyB0aGUgbGFzdCB1c2Ugb2YgdGhlIE1vemlsbGEg
dGhlbWUgZHJhd2luZyBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQg
bm90IGNoYW5nZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBkZWZhdWx0CisgICAgICAgIHRoZW1lLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaDogQWRkIHNvbWUgbW9yZSBi
YWNrcG9ydGVkIGFsbG9jYXRpb24gc2V0dGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuaDogQWRkIGEgZ2V0dGVyIGZvciB0aGUgc2Nyb2xsYmFyIHdpZGdldHMuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHA6ICBJbml0aWFsaXplIGFu
ZCBhZGQgZ2V0dGVycyBmb3Igc2Nyb2xsYmFyIHdpZGdldHMuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1Jbml0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6Z3RrSFNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6Omd0a1ZTY3JvbGxiYXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjpwYWludCk6IFdlIG9ubHkgcmVwYWludCB0aGUgc2Nyb2xsZWQKKyAgICAgICAg
d2luZG93IGJhY2tncm91bmQgaWYgd2UgYXJlIHJlcGFpbnRpbmcgYSBidXR0b24gb3IgdGhlIHRo
dW1iLiBJbiB0aGF0CisgICAgICAgIGNhc2UgYWxzbyByZXBhaW50IHRoZSB0cmFjayByZWN0Lgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOiBQb3J0IHRvIFdp
ZGdldFJlbmRlcmluZ0NvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0
azo6U2Nyb2xsYmFyVGhlbWVHdGspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjp1cGRhdGVUaGVtZVByb3BlcnRpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFdpZGdldEZvclNjcm9sbGJhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6Omd0a1Bh
aW50Qm94KTogQWRkZWQgYW4gb3B0aW9uIHdoaWNoCisgICAgICAgIGFsc28gYWRqdXN0cyBhIHdp
ZGdldCBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgcGFpbnQgcmVjdC4gVGhpcyBpcworICAg
ICAgICBuZWNlc3NhcnkgdG8gcHJvcGVybHkgZHJhdyBzY3JvbGxiYXIgYnV0dG9ucy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oOiBEaXR0by4KKwogMjAx
MS0wMS0yMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtWZXJzaW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VmVyc2lvbmluZy5oCmluZGV4IDdlOWZjZDEzZjMwNjg5NWI0YWExODkzOGMyOGNjZjIyZWQ3MzQ4
ZDcuLjcwZTFiYmViODMyMjlkYzk1MGNmNTkzZjExOWE4OWIwZGY2NzJmMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaApAQCAtOTQsNyArOTQsMTAgQEAg
Y29uc3QgZ2NoYXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVtKik7CiAjZGVm
aW5lIGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfbGVuZ3RoKGRhdGEpIChkYXRhKS0+bGVuZ3RoCiAj
ZGVmaW5lIGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSAoZGF0YSktPmRhdGEKICNk
ZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF90YXJnZXQoZGF0YSkgKGRhdGEpLT50YXJnZXQK
LSNkZWZpbmUgZ3RrX2FkanVzdG1lbnRfc2V0X3BhZ2Vfc2l6ZShhZGosIHZhbHVlKSAoYWRqKS0+
cGFnZV9zaXplID0gdmFsdWUKKyNkZWZpbmUgZ3RrX2FkanVzdG1lbnRfc2V0X3BhZ2Vfc2l6ZShh
ZGosIG5ld1ZhbHVlKSAoKGFkaiktPnBhZ2Vfc2l6ZSA9IG5ld1ZhbHVlKQorI2RlZmluZSBndGtf
YWRqdXN0bWVudF9zZXRfdmFsdWUoYWRqLCBuZXdWYWx1ZSkgKChhZGopLT52YWx1ZSA9IG5ld1Zh
bHVlKQorI2RlZmluZSBndGtfYWRqdXN0bWVudF9zZXRfbG93ZXIoYWRqLCBuZXdWYWx1ZSkgKChh
ZGopLT5sb3dlciA9IG5ld1ZhbHVlKQorI2RlZmluZSBndGtfYWRqdXN0bWVudF9zZXRfdXBwZXIo
YWRqLCBuZXdWYWx1ZSkgKChhZGopLT51cHBlciA9IG5ld1ZhbHVlKQogCiB2b2lkIGd0a19hZGp1
c3RtZW50X2NvbmZpZ3VyZShHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50LCBnZG91YmxlIHZhbHVl
LCBnZG91YmxlIGxvd2VyLCBnZG91YmxlIHVwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2RvdWJsZSBzdGVwSW5jcmVtZW50LCBnZG91YmxlIHBhZ2VJbmNyZW1lbnQsIGdkb3Vi
bGUgcGFnZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuaAppbmRleCA1NzY1NzgyYjljZjcxZWQ3ZDgzYzE3ZTBiM2FjMzk5YjUxMmM3NGNlLi4zMmE4
YjAzNDQ2ZTdhYWFlMzkwNDU4ZmJlMDFjMTMwMmQxZWUyYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtOTIsNyArOTIsOCBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgR3RrV2lkZ2V0KiBndGtT
Y3JvbGxiYXIoKTsKKyAgICBHdGtXaWRnZXQqIGd0a1ZTY3JvbGxiYXIoKSBjb25zdDsKKyAgICBH
dGtXaWRnZXQqIGd0a0hTY3JvbGxiYXIoKSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBnZXRJbmRp
Y2F0b3JNZXRyaWNzKENvbnRyb2xQYXJ0LCBpbnQmIGluZGljYXRvclNpemUsIGludCYgaW5kaWNh
dG9yU3BhY2luZyk7CiAjZWxzZQogICAgIEd0a1N0eWxlQ29udGV4dCogZ3RrU2Nyb2xsYmFyU3R5
bGUoKTsKQEAgLTIzMCw2ICsyMzEsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgR3RrV2lkZ2V0
KiBtX2d0a0NvbWJvQm94QnV0dG9uOwogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0NvbWJv
Qm94QXJyb3c7CiAgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3RrQ29tYm9Cb3hTZXBhcmF0b3I7
CisgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3RrVlNjcm9sbGJhcjsKKyAgICBtdXRhYmxlIEd0
a1dpZGdldCogbV9ndGtIU2Nyb2xsYmFyOwogICAgIGJvb2wgbV90aGVtZVBhcnRzSGF2ZVJHQkFD
b2xvcm1hcDsKICAgICBmcmllbmQgY2xhc3MgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApp
bmRleCBkZTQxOTVkNWQwZGMyYjM3MTY4ZjJiNjdhNmZjZDUwY2IwMzBjNTNjLi43YzAyZTc0MGUy
NWU5NzQ1YzNkNGI0MGE4Y2UyOWQ4MDI0ODIyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApAQCAtNjgsNiArNjgsOCBAQCB2b2lkIFJl
bmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluaXQoKQogICAgIG1fZ3RrQ29tYm9Cb3hCdXR0b24gPSAw
OwogICAgIG1fZ3RrQ29tYm9Cb3hBcnJvdyA9IDA7CiAgICAgbV9ndGtDb21ib0JveFNlcGFyYXRv
ciA9IDA7CisgICAgbV9ndGtWU2Nyb2xsYmFyID0gMDsKKyAgICBtX2d0a0hTY3JvbGxiYXIgPSAw
OwogCiAgICAgbWVtc2V0KCZtX3RoZW1lUGFydHMsIDAsIHNpemVvZihHdGtUaGVtZVBhcnRzKSk7
CiAgICAgR2RrQ29sb3JtYXAqIGNvbG9ybWFwID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV9jb2xvcm1h
cChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwpAQCAtODgyLDkgKzg4NCwyMiBAQCBHdGtXaWRn
ZXQqIFJlbmRlclRoZW1lR3RrOjpndGtDb21ib0JveFNlcGFyYXRvcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZ3RrQ29tYm9Cb3hTZXBhcmF0b3I7CiB9CiAKLUd0a1dpZGdldCogUmVuZGVyVGhlbWVH
dGs6Omd0a1Njcm9sbGJhcigpCitHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtIU2Nyb2xs
YmFyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dpZGdldCgp
OworICAgIGlmIChtX2d0a0hTY3JvbGxiYXIpCisgICAgICAgIHJldHVybiBtX2d0a0hTY3JvbGxi
YXI7CisgICAgbV9ndGtIU2Nyb2xsYmFyID0gZ3RrX2hzY3JvbGxiYXJfbmV3KDApOworICAgIHNl
dHVwV2lkZ2V0QW5kQWRkVG9Db250YWluZXIobV9ndGtIU2Nyb2xsYmFyLCBndGtDb250YWluZXIo
KSk7CisgICAgcmV0dXJuIG1fZ3RrSFNjcm9sbGJhcjsKK30KKworR3RrV2lkZ2V0KiBSZW5kZXJU
aGVtZUd0azo6Z3RrVlNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgaWYgKG1fZ3RrVlNjcm9sbGJh
cikKKyAgICAgICAgcmV0dXJuIG1fZ3RrVlNjcm9sbGJhcjsKKyAgICBtX2d0a1ZTY3JvbGxiYXIg
PSBndGtfdnNjcm9sbGJhcl9uZXcoMCk7CisgICAgc2V0dXBXaWRnZXRBbmRBZGRUb0NvbnRhaW5l
cihtX2d0a1ZTY3JvbGxiYXIsIGd0a0NvbnRhaW5lcigpKTsKKyAgICByZXR1cm4gbV9ndGtWU2Ny
b2xsYmFyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAppbmRleCBjYjliMGY4YWM0NDcx
NzUxZDUyMDk5YmNkOTJiNGViZDA0ZTFjNzkwLi43ZjdjMjY5OGI4Nzg2YTM3MGQwZjBhZjgzYmYy
YmY4MmFiMWM4ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0ay5jcHAKQEAgLTIyOCw5ICsyMjgsMTAgQEAgYm9vbCBTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb24KICAgICAgICAgICAgIHNjcm9sbE1hc2sgfD0gVGh1bWJQYXJ0OwogICAgIH0KIAotICAg
IHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChncmFwaGljc0NvbnRleHQsIHNjcm9sbGJhcik7Ci0K
LSAgICBpZiAoc2Nyb2xsTWFzayAmIFRyYWNrQkdQYXJ0KQorICAgIFNjcm9sbGJhckNvbnRyb2xQ
YXJ0TWFzayBhbGxCdXR0b25zID0gQmFja0J1dHRvblN0YXJ0UGFydCB8IEJhY2tCdXR0b25FbmRQ
YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRm9yd2FyZEJ1
dHRvblN0YXJ0UGFydCB8IEZvcndhcmRCdXR0b25FbmRQYXJ0OworICAgIGlmIChzY3JvbGxNYXNr
ICYgVHJhY2tCR1BhcnQgfHwgc2Nyb2xsTWFzayAmIFRodW1iUGFydCB8fCBzY3JvbGxNYXNrICYg
YWxsQnV0dG9ucykKKyAgICAgICAgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKGdyYXBoaWNzQ29u
dGV4dCwgc2Nyb2xsYmFyKTsKICAgICAgICAgcGFpbnRUcmFja0JhY2tncm91bmQoZ3JhcGhpY3ND
b250ZXh0LCBzY3JvbGxiYXIsIHRyYWNrUGFpbnRSZWN0KTsKIAogICAgIC8vIFBhaW50IHRoZSBi
YWNrIGFuZCBmb3J3YXJkIGJ1dHRvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCmluZGV4IDc5Mjk1YzEwOGZjNDM3ODM4YTM5NmFl
YWQwNWJlMzQxMjZiYzM5YjYuLjEyYTc0NWM4ZjA2NzdmMjI2MjIzNGNmMmI3ZGI1ZThmODkyY2I1
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVt
ZUd0azIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVt
ZUd0azIuY3BwCkBAIC00NiwxMDcgKzQ2LDE2OSBAQCBzdGF0aWMgdm9pZCBndGtTdHlsZVNldENh
bGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtTdHlsZSogcHJldmlvdXMsIFNjcm9sbGJhcgog
U2Nyb2xsYmFyVGhlbWVHdGs6OlNjcm9sbGJhclRoZW1lR3RrKCkKIHsKICAgICB1cGRhdGVUaGVt
ZVByb3BlcnRpZXMoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHN0YXRpY19jYXN0PFJlbmRlclRo
ZW1lR3RrKj4oUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLmdldCgpKS0+Z3RrU2Nyb2xsYmFy
KCksCisgICAgZ19zaWduYWxfY29ubmVjdChzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KFJl
bmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS5nZXQoKSktPmd0a0hTY3JvbGxiYXIoKSwKICAgICAg
ICAgICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCB0aGlzKTsK
IH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQcm9wZXJ0aWVzKCkKIHsK
LSAgICBNb3pHdGtTY3JvbGxiYXJNZXRyaWNzIG1ldHJpY3M7Ci0gICAgbW96X2d0a19nZXRfc2Ny
b2xsYmFyX21ldHJpY3MoJm1ldHJpY3MpOwotCi0gICAgbV90aHVtYkZhdG5lc3MgPSBtZXRyaWNz
LnNsaWRlcl93aWR0aDsKLSAgICBtX3Ryb3VnaEJvcmRlcldpZHRoID0gbWV0cmljcy50cm91Z2hf
Ym9yZGVyOwotICAgIG1fc3RlcHBlclNpemUgPSBtZXRyaWNzLnN0ZXBwZXJfc2l6ZTsKLSAgICBt
X3N0ZXBwZXJTcGFjaW5nID0gbWV0cmljcy5zdGVwcGVyX3NwYWNpbmc7Ci0gICAgbV9taW5UaHVt
Ykxlbmd0aCA9IG1ldHJpY3MubWluX3NsaWRlcl9zaXplOwotICAgIG1fdHJvdWdoVW5kZXJTdGVw
cGVycyA9IG1ldHJpY3MudHJvdWdoX3VuZGVyX3N0ZXBwZXJzOwotICAgIG1faGFzRm9yd2FyZEJ1
dHRvblN0YXJ0UGFydCA9IG1ldHJpY3MuaGFzX3NlY29uZGFyeV9mb3J3YXJkX3N0ZXBwZXI7Ci0g
ICAgbV9oYXNCYWNrQnV0dG9uRW5kUGFydCA9IG1ldHJpY3MuaGFzX3NlY29uZGFyeV9iYWNrd2Fy
ZF9zdGVwcGVyOwotCisgICAgR3RrV2lkZ2V0KiBzY3JvbGxiYXIgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUd0ayo+KFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS5nZXQoKSktPmd0a0hTY3Jv
bGxiYXIoKTsKKyAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChzY3JvbGxiYXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgInNsaWRlcl93aWR0aCIsICZtX3RodW1iRmF0bmVzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAidHJvdWdoX2JvcmRlciIsICZtX3Ryb3VnaEJvcmRlcldpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICJzdGVwcGVyLXNpemUiLCAmbV9zdGVwcGVyU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAidHJvdWdoLXVuZGVyLXN0ZXBwZXJzIiwgJm1fdHJv
dWdoVW5kZXJTdGVwcGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzLXNlY29uZGFy
eS1mb3J3YXJkLXN0ZXBwZXIiLCAmbV9oYXNGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICJoYXMtc2Vjb25kYXJ5LWJhY2t3YXJkLXN0ZXBwZXIiLCAmbV9o
YXNCYWNrQnV0dG9uRW5kUGFydCwgTlVMTCk7CisgICAgbV9taW5UaHVtYkxlbmd0aCA9IGd0a19y
YW5nZV9nZXRfbWluX3NsaWRlcl9zaXplKEdUS19SQU5HRShzY3JvbGxiYXIpKTsKICAgICB1cGRh
dGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyBHdGtXaWRnZXQqIGdl
dFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKLSAgICBHdGtXaWRn
ZXRTdGF0ZSBzdGF0ZTsKLSAgICBzdGF0ZS5mb2N1c2VkID0gRkFMU0U7Ci0gICAgc3RhdGUuaXNE
ZWZhdWx0ID0gRkFMU0U7Ci0gICAgc3RhdGUuY2FuRGVmYXVsdCA9IEZBTFNFOwotICAgIHN0YXRl
LmRpc2FibGVkID0gRkFMU0U7Ci0gICAgc3RhdGUuYWN0aXZlID0gRkFMU0U7Ci0gICAgc3RhdGUu
aW5Ib3ZlciA9IEZBTFNFOworICAgIFJlbmRlclRoZW1lR3RrKiB0aGVtZSA9IHN0YXRpY19jYXN0
PFJlbmRlclRoZW1lR3RrKj4oUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLmdldCgpKTsKKyAg
ICByZXR1cm4gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8g
dGhlbWUtPmd0a1ZTY3JvbGxiYXIoKSA6IHRoZW1lLT5ndGtIU2Nyb2xsYmFyKCk7Cit9CiAKK3Zv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7
CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gtdW5kZXIt
c3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0aGUgZnVs
bCBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxkIG9ubHkg
YmUgdGhlCiAgICAgLy8gdHJhY2sgcmVjdC4KLSAgICBJbnRSZWN0IGZ1bGxTY3JvbGxiYXJSZWN0
ID0gcmVjdDsKKyAgICBJbnRSZWN0IGZ1bGxTY3JvbGxiYXJSZWN0KHJlY3QpOwogICAgIGlmICht
X3Ryb3VnaFVuZGVyU3RlcHBlcnMpCiAgICAgICAgIGZ1bGxTY3JvbGxiYXJSZWN0ID0gSW50UmVj
dChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNjcm9sbGJhci0+d2lkdGgoKSwgc2Ny
b2xsYmFyLT5oZWlnaHQoKSk7CiAKLSAgICBHdGtUaGVtZVdpZGdldFR5cGUgdHlwZSA9IHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IE1PWl9HVEtfU0NST0xM
QkFSX1RSQUNLX1ZFUlRJQ0FMIDogTU9aX0dUS19TQ1JPTExCQVJfVFJBQ0tfSE9SSVpPTlRBTDsK
ICAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRleHQoY29udGV4dCwgZnVsbFNj
cm9sbGJhclJlY3QpOwotICAgIHdpZGdldENvbnRleHQucGFpbnRNb3ppbGxhV2lkZ2V0KHR5cGUs
ICZzdGF0ZSwgMCk7CisgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoKSwgZnVsbFNjcm9s
bGJhclJlY3Quc2l6ZSgpKTsKKyAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Qm94KHBhaW50UmVj
dCwgZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhciksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVEtfU1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX0lOLCAidHJvdWdoIik7CiB9
CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIC8vIFRo
aXMgaXMgdW51c2VkIGJ5IHRoZSBtb3pfZ3RrX3Njcm9sbGVjZF93aW5kb3dfcGFpbnQuCi0gICAg
R3RrV2lkZ2V0U3RhdGUgc3RhdGU7CiAgICAgSW50UmVjdCBmdWxsU2Nyb2xsYmFyUmVjdCA9IElu
dFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCBzY3JvbGxiYXItPndpZHRoKCks
IHNjcm9sbGJhci0+aGVpZ2h0KCkpOworCiAgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dCB3aWRn
ZXRDb250ZXh0KGNvbnRleHQsIGZ1bGxTY3JvbGxiYXJSZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0
LnBhaW50TW96aWxsYVdpZGdldChNT1pfR1RLX1NDUk9MTEVEX1dJTkRPVywgJnN0YXRlLCAwKTsK
KyAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Qm94KGZ1bGxTY3JvbGxiYXJSZWN0LCBnZXRXaWRn
ZXRGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfSU4sICJzY3JvbGxlZF93aW5kb3ciKTsKIH0K
IAogdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAg
IEd0a1dpZGdldFN0YXRlIHN0YXRlOwotICAgIHN0YXRlLmZvY3VzZWQgPSBGQUxTRTsKLSAgICBz
dGF0ZS5pc0RlZmF1bHQgPSBGQUxTRTsKLSAgICBzdGF0ZS5jYW5EZWZhdWx0ID0gRkFMU0U7Ci0g
ICAgc3RhdGUuZGlzYWJsZWQgPSBGQUxTRTsKLSAgICBzdGF0ZS5hY3RpdmUgPSBzY3JvbGxiYXIt
PnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0OwotICAgIHN0YXRlLmluSG92ZXIgPSBzY3JvbGxi
YXItPmhvdmVyZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0OwotICAgIHN0YXRlLm1heHBvcyA9IHNjcm9s
bGJhci0+bWF4aW11bSgpOwotICAgIHN0YXRlLmN1cnBvcyA9IHNjcm9sbGJhci0+Y3VycmVudFBv
cygpOwotCi0gICAgR3RrVGhlbWVXaWRnZXRUeXBlIHR5cGUgPSBzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9WRVJU
SUNBTCA6IE1PWl9HVEtfU0NST0xMQkFSX1RIVU1CX0hPUklaT05UQUw7CisgICAgR3RrV2lkZ2V0
KiB3aWRnZXQgPSBnZXRXaWRnZXRGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICBnYm9vbGVh
biBhY3RpdmF0ZVNsaWRlcjsKKyAgICBndGtfd2lkZ2V0X3N0eWxlX2dldCh3aWRnZXQsICJhY3Rp
dmF0ZS1zbGlkZXIiLCAmYWN0aXZhdGVTbGlkZXIsIE5VTEwpOworCisgICAgR3RrU3RhdGVUeXBl
IHN0YXRlVHlwZSA9IEdUS19TVEFURV9OT1JNQUw7CisgICAgR3RrU2hhZG93VHlwZSBzaGFkb3dU
eXBlID0gR1RLX1NIQURPV19PVVQ7CisgICAgaWYgKGFjdGl2YXRlU2xpZGVyICYmIHNjcm9sbGJh
ci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpIHsKKyAgICAgICAgc3RhdGVUeXBlID0gR1RL
X1NUQVRFX0FDVElWRTsKKyAgICAgICAgc2hhZG93VHlwZSA9IEdUS19TSEFET1dfSU47CisgICAg
fSBlbHNlIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0IHx8IHNjcm9s
bGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisgICAgICAgIHN0YXRlVHlwZSA9IEdU
S19TVEFURV9QUkVMSUdIVDsKKworICAgIC8vIFRoZSBhZGp1c3RtZW50IGNvbnRyb2xzIHRoZSBy
ZW5kZXJpbmcgb2YgdGhlIHNjcm9sbGJhciB0aHVtYi4gSWYgaXQncyBub3Qgc2V0CisgICAgLy8g
cHJvcGVybHkgdGhlIHRoZW1lIG1heSBkcmF3IG5vdCBkcmF3IHRoZSB0aHVtYiBib3JkZXJzIHBy
b3Blcmx5LgorICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQgPSBndGtfcmFuZ2VfZ2V0X2Fk
anVzdG1lbnQoR1RLX1JBTkdFKHdpZGdldCkpOworICAgIGd0a19hZGp1c3RtZW50X3NldF92YWx1
ZShhZGp1c3RtZW50LCBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSk7CisgICAgZ3RrX2FkanVzdG1l
bnRfc2V0X2xvd2VyKGFkanVzdG1lbnQsIDApOworICAgIGd0a19hZGp1c3RtZW50X3NldF91cHBl
cihhZGp1c3RtZW50LCBzY3JvbGxiYXItPm1heGltdW0oKSk7CisKKyAgICBHdGtPcmllbnRhdGlv
biBvcmllbnRhdGlvbiA9IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMOworICAgIGlmIChzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgZ3Rr
X2FkanVzdG1lbnRfc2V0X3BhZ2Vfc2l6ZShhZGp1c3RtZW50LCByZWN0LmhlaWdodCgpKTsKKyAg
ICAgICAgb3JpZW50YXRpb24gPSBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUw7CisgICAgfSBlbHNl
CisgICAgICAgIGd0a19hZGp1c3RtZW50X3NldF9wYWdlX3NpemUoYWRqdXN0bWVudCwgcmVjdC53
aWR0aCgpKTsKKwogICAgIFdpZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChjb250
ZXh0LCByZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0LnBhaW50TW96aWxsYVdpZGdldCh0eXBlLCAm
c3RhdGUsIDApOworICAgIEludFJlY3Qgc2xpZGVyUmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUo
KSk7CisgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludFNsaWRlcihzbGlkZXJSZWN0LCB3aWRnZXQs
IHN0YXRlVHlwZSwgc2hhZG93VHlwZSwgInNsaWRlciIsIG9yaWVudGF0aW9uKTsKIH0KIAogdm9p
ZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQogewotICAgIGludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgZmxhZ3MgfD0gTU9aX0dUS19T
VEVQUEVSX1ZFUlRJQ0FMOwotCi0gICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQp
Ci0gICAgICAgIGZsYWdzIHw9IChNT1pfR1RLX1NURVBQRVJfRE9XTiB8IE1PWl9HVEtfU1RFUFBF
Ul9CT1RUT00pOwotICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCi0gICAg
ICAgIGZsYWdzIHw9IE1PWl9HVEtfU1RFUFBFUl9ET1dOOwotCi0gICAgR3RrV2lkZ2V0U3RhdGUg
c3RhdGU7Ci0gICAgc3RhdGUuZm9jdXNlZCA9IFRSVUU7Ci0gICAgc3RhdGUuaXNEZWZhdWx0ID0g
VFJVRTsKLSAgICBzdGF0ZS5jYW5EZWZhdWx0ID0gVFJVRTsKLSAgICBzdGF0ZS5kZXByZXNzZWQg
PSBGQUxTRTsKKyAgICAvLyBUaGUgYnV0dG9ucyB3aWxsIGJlIGRpc2FibGVkIGlmIHRoZSB0aHVt
YiBpcyBhcyB0aGUgYXBwcm9wcmlhdGUgZXh0cmVtZS4KKyAgICBHdGtTaGFkb3dUeXBlIHNoYWRv
d1R5cGUgPSBHVEtfU0hBRE9XX09VVDsKKyAgICBHdGtTdGF0ZVR5cGUgc3RhdGVUeXBlID0gR1RL
X1NUQVRFX0lOU0VOU0lUSVZFOworICAgIGJvb2wgcHJlc3NlZCA9IChwYXJ0ID09IHNjcm9sbGJh
ci0+cHJlc3NlZFBhcnQoKSk7CiAKICAgICBpZiAoKEJhY2tCdXR0b25TdGFydFBhcnQgPT0gcGFy
dCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSkKICAgICAgICAgfHwgKEJhY2tCdXR0b25FbmRQ
YXJ0ID09IHBhcnQgJiYgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkpCiAgICAgICAgIHx8IChGb3J3
YXJkQnV0dG9uRW5kUGFydCA9PSBwYXJ0ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygpICE9IHNj
cm9sbGJhci0+bWF4aW11bSgpKQogICAgICAgICB8fCAoRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCA9
PSBwYXJ0ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygpICE9IHNjcm9sbGJhci0+bWF4aW11bSgp
KSkgewotICAgICAgICBzdGF0ZS5kaXNhYmxlZCA9IEZBTFNFOwotICAgICAgICBzdGF0ZS5hY3Rp
dmUgPSBwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKTsKLSAgICAgICAgc3RhdGUuaW5I
b3ZlciA9IHBhcnQgPT0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpOworICAgICAgICBzdGF0ZVR5
cGUgPSBHVEtfU1RBVEVfTk9STUFMOworICAgICAgICBpZiAocHJlc3NlZCkgeworICAgICAgICAg
ICAgc3RhdGVUeXBlID0gR1RLX1NUQVRFX0FDVElWRTsKKyAgICAgICAgICAgIHNoYWRvd1R5cGUg
PSBHVEtfU0hBRE9XX0lOOworICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT0gc2Nyb2xsYmFyLT5o
b3ZlcmVkUGFydCgpKQorICAgICAgICAgICAgc3RhdGVUeXBlID0gR1RLX1NUQVRFX1BSRUxJR0hU
OworICAgIH0KKworICAgIC8vIFRoZW1lcyBkZXRlcm1pbmUgaG93IHRvIGRyYXcgdGhlIGJ1dHRv
biAod2hpY2ggYnV0dG9uIHRvIGRyYXcpIGJhc2VkIG9uIHRoZSBhbGxvY2F0aW9uCisgICAgLy8g
b2YgdGhlIHdpZGdldC4gV2hlcmUgdGhlIHRhcmdldCByZWN0IGlzIGluIHJlbGF0aW9uIHRvIHRo
ZSB0b3RhbCB3aWRnZXQgYWxsb2NhdGlvbgorICAgIC8vIGRldGVybWluZXMgdGhlIGJ1dHRvbi4K
KyAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKTsKKyAgICBpbnQgYnV0dG9uU2l6ZSA9IChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNj
cm9sbGJhcikgPyByZWN0LmhlaWdodCgpIDogcmVjdC53aWR0aCgpOworICAgIGludCB0b3RhbEFs
bG9jYXRpb24gPSBidXR0b25TaXplICogNTsgLy8gT25lIHNwYWNlIGZvciBlYWNoIGJ1dHRvbiBh
bmQgb25lIGV4dHJhLgorICAgIGludCBidXR0b25PZmZzZXQgPSAwOworICAgIGlmIChGb3J3YXJk
QnV0dG9uU3RhcnRQYXJ0ID09IHBhcnQpCisgICAgICAgIGJ1dHRvbk9mZnNldCA9IGJ1dHRvblNp
emU7CisgICAgZWxzZSBpZiAoQmFja0J1dHRvbkVuZFBhcnQgPT0gcGFydCkKKyAgICAgICAgYnV0
dG9uT2Zmc2V0ID0gMyAqIGJ1dHRvblNpemU7CisgICAgZWxzZSBpZiAoRm9yd2FyZEJ1dHRvbkVu
ZFBhcnQgPT0gcGFydCkKKyAgICAgICAgYnV0dG9uT2Zmc2V0ID0gNCAqIGJ1dHRvblNpemU7CisK
KyAgICAvLyBOb3cgd2Ugd2FudCB0aGUgYWxsb2NhdGlvbiB0byBiZSByZWxhdGl2ZSB0byB0aGUg
b3JpZ2luIG9mIHRoZSBwYWludGVkIHJlY3QuCisgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBnZXRX
aWRnZXRGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRp
b247CisgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsICZhbGxvY2F0aW9uKTsK
KyAgICBhbGxvY2F0aW9uLnggPSBhbGxvY2F0aW9uLnkgPSAwOworICAgIGFsbG9jYXRpb24ud2lk
dGggPSByZWN0LndpZHRoKCk7CisgICAgYWxsb2NhdGlvbi5oZWlnaHQgPSByZWN0LmhlaWdodCgp
OworCisgICAgaWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAg
IGFsbG9jYXRpb24uaGVpZ2h0ID0gdG90YWxBbGxvY2F0aW9uOworICAgICAgICBhbGxvY2F0aW9u
LnkgLT0gYnV0dG9uT2Zmc2V0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0YXRlLmRpc2FibGVk
ID0gVFJVRTsKLSAgICAgICAgc3RhdGUuYWN0aXZlID0gRkFMU0U7Ci0gICAgICAgIHN0YXRlLmlu
SG92ZXIgPSBGQUxTRTsKKyAgICAgICAgYWxsb2NhdGlvbi53aWR0aCA9IHRvdGFsQWxsb2NhdGlv
bjsKKyAgICAgICAgYWxsb2NhdGlvbi54IC09IGJ1dHRvbk9mZnNldDsKICAgICB9CisgICAgZ3Rr
X3dpZGdldF9zZXRfYWxsb2NhdGlvbih3aWRnZXQsICZhbGxvY2F0aW9uKTsKIAorICAgIGNvbnN0
IGNoYXIqIGRldGFpbCA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gInZzY3Jv
bGxiYXIiIDogImhzY3JvbGxiYXIiOwogICAgIFdpZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0
Q29udGV4dChjb250ZXh0LCByZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0LnBhaW50TW96aWxsYVdp
ZGdldChNT1pfR1RLX1NDUk9MTEJBUl9CVVRUT04sICZzdGF0ZSwgZmxhZ3MpOworCisgICAgSW50
UmVjdCBidXR0b25SZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKTsKKyAgICB3aWRnZXRDb250
ZXh0Lmd0a1BhaW50Qm94KGJ1dHRvblJlY3QsIHdpZGdldCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBl
LCBkZXRhaWwsIHRydWUpOworCisgICAgZ2Zsb2F0IGFycm93U2NhbGluZzsKKyAgICBndGtfd2lk
Z2V0X3N0eWxlX2dldCh3aWRnZXQsICJhcnJvdy1zY2FsaW5nIiwgJmFycm93U2NhbGluZywgTlVM
TCk7CisgICAgSW50U2l6ZSBhcnJvd1NpemUgPSByZWN0LnNpemUoKTsKKyAgICBhcnJvd1NpemUu
c2NhbGUoYXJyb3dTY2FsaW5nKTsKKyAgICBJbnRSZWN0IGFycm93UmVjdChJbnRQb2ludChidXR0
b25SZWN0LngoKSArIChidXR0b25SZWN0LndpZHRoKCkgLSBhcnJvd1NpemUud2lkdGgoKSkgLyAy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QueSgpICsgKGJ1dHRv
blJlY3QuaGVpZ2h0KCkgLSBhcnJvd1NpemUuaGVpZ2h0KCkpIC8gMiksCisgICAgICAgICAgICAg
ICAgICAgICAgYXJyb3dTaXplKTsKKyAgICBpZiAocHJlc3NlZCkgeworICAgICAgICBnaW50IGFy
cm93RGlzcGxhY2VtZW50WCwgYXJyb3dEaXNwbGFjZW1lbnRZOworICAgICAgICBndGtfd2lkZ2V0
X3N0eWxlX2dldCh3aWRnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJvdy1k
aXNwbGFjZW1lbnQteCIsICZhcnJvd0Rpc3BsYWNlbWVudFgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJhcnJvdy1kaXNwbGFjZW1lbnQteSIsICZhcnJvd0Rpc3BsYWNlbWVudFksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBhcnJvd1JlY3QubW92
ZShhcnJvd0Rpc3BsYWNlbWVudFgsIGFycm93RGlzcGxhY2VtZW50WSk7CisgICAgfQorCisgICAg
R3RrQXJyb3dUeXBlIGFycm93VHlwZSA9IEdUS19BUlJPV19ET1dOOworICAgIGlmIChvcmllbnRh
dGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0
dG9uRW5kUGFydCB8fCBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQpCisgICAgICAgICAgICBh
cnJvd1R5cGUgPSBHVEtfQVJST1dfVVA7CisgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvbiA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIGFycm93VHlwZSA9IEdUS19BUlJPV19SSUdI
VDsKKyAgICAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBhcnQgfHwgcGFydCA9PSBCYWNr
QnV0dG9uU3RhcnRQYXJ0KQorICAgICAgICAgICAgYXJyb3dUeXBlID0gR1RLX0FSUk9XX0xFRlQ7
CisgICAgfQorICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRBcnJvdyhhcnJvd1JlY3QsIHdpZGdl
dCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBlLCBhcnJvd1R5cGUsIGRldGFpbCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1MWIzMmVhYTFjMzg5N2MxZTJiY2Jl
NmJlYjVjN2VkZWQ1YTBjYzZhLi4wMDkzZmJlOTI3ZjRkYjg1ZjNiYzE2Zjg2ZjhiMzFlYTcxMmE5
ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNTIsMTAgKzE1MiwyMSBAQCBib29sIFdpZGdldFJlbmRl
cmluZ0NvbnRleHQ6OnBhaW50TW96aWxsYVdpZGdldChHdGtUaGVtZVdpZGdldFR5cGUgdHlwZSwg
R3RrV2lkZwogICAgIHJldHVybiAhbV9oYWRFcnJvcjsKIH0KIAotdm9pZCBXaWRnZXRSZW5kZXJp
bmdDb250ZXh0OjpndGtQYWludEJveChjb25zdCBJbnRSZWN0JiByZWN0LCBHdGtXaWRnZXQqIHdp
ZGdldCwgR3RrU3RhdGVUeXBlIHN0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSBzaGFkb3dUeXBlLCBj
b25zdCBnY2hhciogZGV0YWlsKQordm9pZCBXaWRnZXRSZW5kZXJpbmdDb250ZXh0OjpndGtQYWlu
dEJveChjb25zdCBJbnRSZWN0JiByZWN0LCBHdGtXaWRnZXQqIHdpZGdldCwgR3RrU3RhdGVUeXBl
IHN0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSBzaGFkb3dUeXBlLCBjb25zdCBnY2hhciogZGV0YWls
LCBib29sIGFkanVzdEFsbG9jYXRpb24pCiB7CiAgICAgR2RrUmVjdGFuZ2xlIHBhaW50UmVjdCA9
IHsgbV9wYWludFJlY3QueCArIHJlY3QueCgpLCBtX3BhaW50UmVjdC55ICsgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSB9OwotICAgIGd0a19wYWludF9ib3goZ3RrX3dpZGdl
dF9nZXRfc3R5bGUod2lkZ2V0KSwgbV90YXJnZXQsIHN0YXRlVHlwZSwgc2hhZG93VHlwZSwgJm1f
cGFpbnRSZWN0LAorCisgICAgLy8gU29tZSB3aWRnZXRzIGFsc28gbmVlZCB0aGVpciBhbGxvY2F0
aW9uIGFkanVzdGVkIHRvIGFjY291bnQgZm9yIGV4dHJhIHNwYWNlLiBSaWdodCBub3cKKyAgICAv
LyBvbmx5IHNjcm9sbGJhciBidXR0b25zIGhhdmUgc2lnbmlmaWNhbnQgYWxsb2NhdGlvbnMuCisg
ICAgaWYgKGFkanVzdEFsbG9jYXRpb24pIHsKKyAgICAgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0
aW9uOworICAgICAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKHdpZGdldCwgJmFsbG9jYXRp
b24pOworICAgICAgICBhbGxvY2F0aW9uLnggKz0gbV9wYWludFJlY3QueDsKKyAgICAgICAgYWxs
b2NhdGlvbi55ICs9IG1fcGFpbnRSZWN0Lnk7CisgICAgICAgIGd0a193aWRnZXRfc2V0X2FsbG9j
YXRpb24od2lkZ2V0LCAmYWxsb2NhdGlvbik7CisgICAgfQorCisgICAgZ3RrX3BhaW50X2JveChn
dGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCBtX3RhcmdldCwgc3RhdGVUeXBlLCBzaGFkb3dU
eXBlLCAmcGFpbnRSZWN0LAogICAgICAgICAgICAgICAgICAgd2lkZ2V0LCBkZXRhaWwsIHBhaW50
UmVjdC54LCBwYWludFJlY3QueSwgcGFpbnRSZWN0LndpZHRoLCBwYWludFJlY3QuaGVpZ2h0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJp
bmdDb250ZXh0LmgKaW5kZXggZTI0OGYwNGU3MjczZGQzOWIxMGQ2NmJiMWViNzNhMWNkZWNlZmJm
OC4uZjBiZGEyMjIwODRiZDhjNDc1M2ZkNmU5M2ViYTI0MGE5Mzk1MThjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5oCkBA
IC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB+V2lkZ2V0UmVuZGVyaW5nQ29udGV4dCgpOwog
CiAgICAgYm9vbCBwYWludE1vemlsbGFXaWRnZXQoR3RrVGhlbWVXaWRnZXRUeXBlLCBHdGtXaWRn
ZXRTdGF0ZSosIGludCBmbGFncywgR3RrVGV4dERpcmVjdGlvbiA9IEdUS19URVhUX0RJUl9OT05F
KTsKLSAgICB2b2lkIGd0a1BhaW50Qm94KGNvbnN0IEludFJlY3QmLCBHdGtXaWRnZXQqLCBHdGtT
dGF0ZVR5cGUsIEd0a1NoYWRvd1R5cGUsIGNvbnN0IGdjaGFyKik7CisgICAgdm9pZCBndGtQYWlu
dEJveChjb25zdCBJbnRSZWN0JiwgR3RrV2lkZ2V0KiwgR3RrU3RhdGVUeXBlLCBHdGtTaGFkb3dU
eXBlLCBjb25zdCBnY2hhciosIGJvb2wgYWRqdXN0QWxsb2NhdGlvbiA9IGZhbHNlKTsKICAgICB2
b2lkIGd0a1BhaW50RmxhdEJveChjb25zdCBJbnRSZWN0JiwgR3RrV2lkZ2V0KiwgR3RrU3RhdGVU
eXBlLCBHdGtTaGFkb3dUeXBlLCBjb25zdCBnY2hhciopOwogICAgIHZvaWQgZ3RrUGFpbnRGb2N1
cyhjb25zdCBJbnRSZWN0JiwgR3RrV2lkZ2V0KiwgR3RrU3RhdGVUeXBlLCBjb25zdCBnY2hhciop
OwogICAgIHZvaWQgZ3RrUGFpbnRTbGlkZXIoY29uc3QgSW50UmVjdCYsIEd0a1dpZGdldCosIEd0
a1N0YXRlVHlwZSwgR3RrU2hhZG93VHlwZSwgY29uc3QgZ2NoYXIqLCBHdGtPcmllbnRhdGlvbik7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>