<?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>98147</bug_id>
          
          <creation_ts>2012-10-02 04:41:01 -0700</creation_ts>
          <short_desc>Implement GraphicsSurface for Windows.</short_desc>
          <delta_ts>2012-10-25 02:43:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98501</dependson>
    
    <dependson>99709</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zeno Albisser">zeno</reporter>
          <assigned_to name="Zeno Albisser">zeno</assigned_to>
          <cc>abecsi</cc>
    
    <cc>hausmann</cc>
    
    <cc>noam</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732540</commentid>
    <comment_count>0</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-02 04:41:01 -0700</bug_when>
    <thetext>GraphicsSurface is used to share textures between the WebProcess and the UIProcess.
Currently there are only implementations for Mac and Linux/GLX.
We should make it available for Windows as well to allow for WebGL.
ANGLE can be used to map GL calls to DirectX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749484</commentid>
    <comment_count>1</comment_count>
      <attachid>170348</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 02:45:36 -0700</bug_when>
    <thetext>Created attachment 170348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749485</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 02:47:51 -0700</bug_when>
    <thetext>Attachment 170348 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/graphics/surfaces/win/GraphicsSurfaceWin.cpp:351:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 9 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>749488</commentid>
    <comment_count>3</comment_count>
      <attachid>170348</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 02:54:25 -0700</bug_when>
    <thetext>Comment on attachment 170348
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:353
&gt;&gt; +             1,  1
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Indentation is like that on purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749498</commentid>
    <comment_count>4</comment_count>
      <attachid>170348</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-24 03:12:44 -0700</bug_when>
    <thetext>Comment on attachment 170348
Patch

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

&gt; Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:6
&gt; +/*
&gt; +
&gt; + Copyright (C) 2012 Zeno Albisser &lt;zeno@webkit.org&gt;
&gt; +
&gt; + This library is free software; you can redistribute it and/or
&gt; + modify it under the terms of the GNU Library General Public

I think we normally have *&apos;s here in the beginning of each line

&gt; Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:79
&gt; +        initShaderProgram();

webkit usually uses initialize*

&gt; Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:488
&gt; +    if (m_private)
&gt; +        delete m_private;

That if is not needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749576</commentid>
    <comment_count>5</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 05:28:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think we normally have *&apos;s here in the beginning of each line
Depends on the licence header, we have both. I aligned with GraphicsContext3DQt.cpp, GraphicsSurface.h, GraphicsSurface.cpp and others.

&gt; webkit usually uses initialize*
I&apos;ll fix that.

&gt; &gt; +    if (m_private)
&gt; &gt; +        delete m_private;
&gt; That if is not needed
i&apos;ll fix that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749579</commentid>
    <comment_count>6</comment_count>
      <attachid>170374</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 05:30:49 -0700</bug_when>
    <thetext>Created attachment 170374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749582</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 05:33:40 -0700</bug_when>
    <thetext>Attachment 170374 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/graphics/surfaces/win/GraphicsSurfaceWin.cpp:351:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 9 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>749588</commentid>
    <comment_count>8</comment_count>
      <attachid>170374</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-24 05:44:53 -0700</bug_when>
    <thetext>Comment on attachment 170374
Patch

r=me as this is at least a good start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749596</commentid>
    <comment_count>9</comment_count>
      <attachid>170374</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 06:19:07 -0700</bug_when>
    <thetext>Comment on attachment 170374
Patch

Clearing flags on attachment: 170374

Committed r132343: &lt;http://trac.webkit.org/changeset/132343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749597</commentid>
    <comment_count>10</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 06:19:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750528</commentid>
    <comment_count>11</comment_count>
      <attachid>170374</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-25 01:13:16 -0700</bug_when>
    <thetext>Comment on attachment 170374
Patch

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

&gt; Source/WebCore/platform/graphics/surfaces/win/GraphicsSurfaceWin.cpp:3
&gt; + Copyright (C) 2012 Zeno Albisser &lt;zeno@webkit.org&gt;

Shouldn&apos;t this at least include Digia?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750592</commentid>
    <comment_count>12</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-25 02:43:38 -0700</bug_when>
    <thetext>&gt; Shouldn&apos;t this at least include Digia?
I will add this the next time i touch the file.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170348</attachid>
            <date>2012-10-24 02:45:36 -0700</date>
            <delta_ts>2012-10-24 05:30:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98147-20121024114411.patch</filename>
            <type>text/plain</type>
            <size>30053</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIyYWYzZGU5ZjBlY2Fm
NmVmZmQ0MGQ0NDRjM2YzZjI2MzUyOTYwOC4uNmUzODMzNTQ0YzM4MWE0NjIyOWY2NWM4Y2YyMjE1
YjVjMjAwNjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTEwLTIzICBaZW5v
IEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBHcmFwaGlj
c1N1cmZhY2UgZm9yIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODE0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgICAgIEluY2x1ZGUgR3JhcGhpY3NT
dXJmYWNlV2luLmNwcCBpbiBTT1VSQ0VTIG9uIFdpbmRvd3MuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgICAgICBBZGQgdHlw
ZWRlZiBmb3IgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2Ugb24gV2luZG93cy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oOgorICAgICAg
ICAgICAgQWRkIHR5cGVkZWYgZm9yIEJ1ZmZlckhhbmRsZSBvbiBXaW5kb3dzLgorICAgICAgICAo
R3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgICAgIFRoZSBH
cmFwaGljc1N1cmZhY2UgaW1wbGVtZW50YXRpb24gb24gV2luZG93cyByZWxpZXMgb24gdGhlCisg
ICAgICAgICAgICBhdmFpbGFiaWxpdHkgb2YgQU5HTEUgYW5kIHRoZSBFR0xfQU5HTEVfcXVlcnlf
c3VyZmFjZV9wb2ludGVyIGV4dGVuc2lvbi4KKyAgICAgICAgICAgIEZvciBRdCB0aGlzIHJlcXVp
cmVtZW50cyBhcmUgaW1wbGljaXRseSBzYXRpc2ZpZWQsIHdoZW4gUXQgaXMgYnVpbHQKKyAgICAg
ICAgICAgIG9uIFdpbmRvd3MgYW5kIFFUX0NPTkZJRyBjb250YWlucyBPcGVuR0xFUzIuCisgICAg
ICAgICAgICBUaGUgR3JhcGhpY3NTdXJmYWNlIHRoZW4gcmVuZGVycyBhIGdpdmVuIHRleHR1cmUg
b250byBhbiBvZmZzY3JlZW4KKyAgICAgICAgICAgIHBpeGVsIGJ1ZmZlciBzdXJmYWNlLCBxdWVy
aWVzIHRoZSBzdXJmYWNlIHBvaW50ZXIgdXNpbmcgdGhlCisgICAgICAgICAgICBFR0xfQU5HTEVf
cXVlcnlfc3VyZmFjZV9wb2ludGVyIGV4dGVuc2lvbiwgYW5kIHRyYW5zbWl0cyB0aGUgcmVjZWl2
ZWQKKyAgICAgICAgICAgIHN1cmZhY2UgcG9pbnRlciAoc2hhcmUgaGFuZGxlKSBvdmVyIElQQy4K
KyAgICAgICAgICAgIE9uIHRoZSBVSVByb2Nlc3Mgc2lkZSwgdGhlIHN1cmZhY2UgcG9pbnRlciBj
YW4gdGhlbiBiZSByZXNvbHZlZAorICAgICAgICAgICAgdXNpbmcgZWdsQ3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Omxv
YWRTaGFkZXIpOgorICAgICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgc2hhZGVycyBuZWVkZWQgZm9y
IGRyYXdpbmcgb250byB0aGUgR3JhcGhpY3NTdXJmYWNlLgorICAgICAgICAoR3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgICAgIEluIGNhc2Ugb2YgdGhlIGluc3Rh
bmNlIGJlaW5nIG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUsCisgICAgICAgICAgICBjcmVhdGUgYW4g
RUdMQ29udGV4dCB0aGF0IHNoYXJlcyB0aGUgdGV4dHVyZSBvYmplY3RzIHdpdGggdGhlIHByb3Zp
ZGVkCisgICAgICAgICAgICBzaGFyZSBjb250ZXh0LiBBbHNvIGNyZWF0ZSB0d28gcGl4ZWwgYnVm
ZmVyIHN1cmZhY2VzLCBvbmUgYXMgZnJvbnQtIGFuZAorICAgICAgICAgICAgb25lIGFzIGJhY2ti
dWZmZXIuCisgICAgICAgICAgICBRdWVyeSB0aGUgc3VyZmFjZSBwb2ludGVycyBmb3IgdGhlIHBp
eGVsIGJ1ZmZlciBzdXJmYWNlcyBhbmQgaW5pdGlhbGl6ZQorICAgICAgICAgICAgdGhlIEdyYXBo
aWNzU3VyZmFjZVRva2VuIHRoYXQgY2FuIGJlIHBhc3NlZCBvdmVyIElQQyBsYXRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6On5HcmFwaGljc1N1cmZhY2VQcml2
YXRlKToKKyAgICAgICAgICAgIFJlbGVhc2UgYWxsIGFxdWlyZWQgcmVzb3VyY2VzIGFuZCBkZXN0
cm95IHRoZSBwaXhlbCBidWZmZXIgc3VyZmFjZXMuCisgICAgICAgICAgICBBbHNvIGNsb3NlIHRo
ZSBFR0wtRGlzcGxheSBjb25uZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Y29weUZyb21UZXh0dXJlKToKKyAgICAgICAgICAgIE1ha2UgdGhlIGJlbG9u
Z2luZyBjb250ZXh0IGN1cnJlbnQgb24gdGhlIGJhY2sgYnVmZmVyIHN1cmZhY2UKKyAgICAgICAg
ICAgIGFuZCB1c2UgZHJhd1RleHR1cmUoKSB0byBkcmF3IHRoZSBwcm92aWRlZCB0ZXh0dXJlIG9u
dG8gdGhlIEdyYXBoaWNzU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGU6Om1ha2VDdXJyZW50KToKKyAgICAgICAgICAgIFNhdmUgdGhlIHByZXZpb3VzbHkg
Y3VycmVudCBjb250ZXh0LCB0aGVuIG1ha2UgdGhlIGNvbnRleHQgYmVsb25naW5nCisgICAgICAg
ICAgICB0byB0aGUgR3JhcGhpY3NTdXJmYWNlIGN1cnJlbnQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25lQ3VycmVudCk6CisgICAgICAgICAgICBSZXN0b3Jl
IHRoZSBjb250ZXh0IHRoYXQgd2FzIGN1cnJlbnQgYmVmb3JlIGNhbGxpbmcgbWFrZUN1cnJlbnQo
KS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgICAgIFN3YXAgZnJvbnQgYW5kIGJhY2sgYnVmZmVyIHN1cmZhY2VzIGFuZCBo
YW5kbGVzLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6dG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZnJvbnRCdWZmZXJU
ZXh0dXJlSUQpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBjYWxs
ZWQgZnJvbSB0aGUgVUlQcm9jZXNzIHNpZGUuCisgICAgICAgICAgICBJZiBubyBmcm9udCBidWZm
ZXIgc3VyZmFjZSBoYXMgYmVlbiBjcmVhdGVkIGJlZm9yZSBmb3IgdGhlIGN1cnJlbnQKKyAgICAg
ICAgICAgIGZyb250IGJ1ZmZlciBoYW5kbGUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQuCisgICAgICAg
ICAgICBUaGVuIGVnbEJpbmRUZXhJbWFnZSB3aWxsIGJlIHVzZWQgdG8gYWN0dWFsbHkgYmluZCB0
aGUgY3VycmVudAorICAgICAgICAgICAgZnJvbnQgYnVmZmVyIHN1cmZhY2UgdG8gYSB0ZXh0dXJl
IGFzIGEgc291cmNlIGZvciBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6aW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpiYWNrQnVmZmVyU2hhcmVI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6cmVsZWFz
ZUZyb250QnVmZmVyVGV4dHVyZSk6CisgICAgICAgICAgICBGcmVlIHRoZSByZXNvdXJjZXMgcmVs
YXRlZCB0byB0aGUgZnJvbnQgYnVmZmVyIHN1cmZhY2UuCisgICAgICAgICAgICBPbiB0aGUgVUlQ
cm9jZXNzIHNpZGUgd2UgbmV2ZXIgYWN0dWFsbHkgYmluZCB0aGUgYmFjayBidWZmZXIuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjppbml0U2hhZGVyUHJvZ3JhbSk6
CisgICAgICAgICAgICBJbml0aWFsaXplIGFuZCBsaW5rIHRoZSBzaGFkZXIgcHJvZ3JhbXMgbmVj
ZXNzYXJ5IGZvciBkcmF3aW5nCisgICAgICAgICAgICBvbnRvIHRoZSBHcmFwaGljc1N1cmZhY2Uu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVTdXJmYWNl
RnJvbVNoYXJlSGFuZGxlKToKKyAgICAgICAgICAgIENyZWF0ZXMgYSBzaW5nbGUgcGl4ZWwgYnVm
ZmVyIHN1cmZhY2UgZnJvbSBhIHNoYXJlIEhhbmRsZS4KKyAgICAgICAgICAgIFRoaXMgZnVuY3Rp
b24gd2lsbCBiZSBjYWxsZWQgb24gdGhlIFVJUHJvY2VzcyBzaWRlLAorICAgICAgICAgICAgZm9y
IHRoZSBmcm9udCBidWZmZXIgaGFuZGxlLCB3aGVuZXZlciB0aGUgYnVmZmVycyBoYXZlIGJlZW4g
c3dhcHBlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmRyYXdU
ZXh0dXJlKToKKyAgICAgICAgICAgIFRoZSBXZWJQcm9jZXNzIHVzZXMgdGhpcyBmdW5jdGlvbiB0
byBkcmF3IGEgZ2l2ZW4KKyAgICAgICAgICAgIHRleHR1cmUgb250byB0aGUgR3JhcGhpY3NTdXJm
YWNlJ3MgYmFjayBidWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtRXhwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1HZXRUZXh0dXJlSUQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0
Zm9ybUNvcHlUb0dMVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICAgICBVc2VzIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoKSB0byBkcmF3IHRoZSBmcm9udCBidWZmZXIgdGV4
dHVyZQorICAgICAgICAgICAgdG8gdGhlIFRleHR1cmVNYXBwZXIgb24gdGhlIFVJUHJvY2VzcyBz
aWRlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZyb250QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVVubG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSk6CisKIDIwMTItMDktMjcg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBMaXN0SGFzaFNldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGE1ZmU4M2UyYzNlNDcyMTUxNTZmOTFjMjhjZmZiZjc2NzY0N2E2MzQuLmFm
YWJjYWVmZTc3OGI1MDI5YmMyZDMzOGMwZGQ5NTJkN2E4OTg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0xMC0yMyAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4K
KworICAgICAgICBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlIGZvciBXaW5kb3dzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxNDcKKworICAgICAg
ICBBZGQgZW5jb2RlIGFuZCBkZWNvZGUgaW1wbGVtZW50YXRpb24gZm9yIEdyYXBoaWNzU3VyZmFj
ZVRva2VuIG9uIFdpbmRvd3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAg
ICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorCiAyMDEyLTEwLTI0ICBZYWVsIEFoYXJvbiAgPHlh
ZWwuYWhhcm9uQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW0FDXSBCbGFjayBzY3Jl
ZW4gaW4gd2ViIGluc3BlY3RvciB3aW5kb3cgd2l0aCBBQyBvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZjJj
NGQ2ZDg1MmY1Y2U1YjVlOWM1ZDM4MzQwMmFhMGVjZGM1OWIyYy4uNDdiZjUxYmQ1NDc5NmEyMGYw
YTUyN2UzZjQ4ZGM4NzliNmMxMDYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00MDYyLDYgKzQwNjIsOSBA
QCB1c2U/KEdSQVBISUNTX1NVUkZBQ0UpIHsKICAgICAgICAgU09VUkNFUyArPSBwbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAogICAgICAgICBJTkNM
VURFUEFUSCArPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsvSGVhZGVycwogICAgIH0KKyAgICB3aW4zMiB7CisgICAgICAgIFNPVVJDRVMgKz0gcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHAKKyAgICB9
CiAgICAgaGF2ZT8oWENPTVBPU0lURSkgewogICAgICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5oCmluZGV4IDEzYWMzMzA1MTQ2ZGNmODlmMmJlYTlkY2MyMWEyNzk1MGQ1MzI3
MjcuLjU2MDJjZjUyMTcxMTI5ZTRkZWIwMzYxMTc3MzI4YTQ3ZjQ5NWZiMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5oCkBAIC0zNSwxMCArMzUsMTUgQEAKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJm
YWNlKiBJT1N1cmZhY2VSZWY7CiB0eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdyYXBoaWNz
U3VyZmFjZTsKICNlbmRpZgorCiAjaWYgT1MoTElOVVgpCiB0eXBlZGVmIHVpbnQzMl90IFBsYXRm
b3JtR3JhcGhpY3NTdXJmYWNlOwogI2VuZGlmCiAKKyNpZiBPUyhXSU5ET1dTKQordHlwZWRlZiBI
QU5ETEUgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2U7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBCaXRtYXBUZXh0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZVRva2Vu
LmgKaW5kZXggNDUzNDJmMTQxODNjYjJkZmYxMmMyNjg0NjU2YzNkNDg5MGE5NzU2Ni4uNzU5OTdk
YTQ3ZDE2YWMxMzM1YWQxYTY3MjgzMWZmMzNmNDA5NTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2VUb2tlbi5oCkBAIC0zMyw3ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbiB7CiAKLXR5cGVkZWYgdWludDMyX3QgQnVmZmVySGFu
ZGxlOworI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCisgICAgdHlwZWRlZiB1aW50MzJfdCBC
dWZmZXJIYW5kbGU7CisjZW5kaWYKKyNpZiBPUyhXSU5ET1dTKQorICAgIHR5cGVkZWYgSEFORExF
IEJ1ZmZlckhhbmRsZTsKKyNlbmRpZgogCiAjaWYgSEFWRShHTFgpCiAgICAgR3JhcGhpY3NTdXJm
YWNlVG9rZW4odWludDMyX3Qgd2luZG93SUQgPSAwKQpAQCAtNTIsNyArNTcsNyBAQCB0eXBlZGVm
IHVpbnQzMl90IEJ1ZmZlckhhbmRsZTsKIAogI2VuZGlmCiAKLSNpZiBPUyhEQVJXSU4pCisjaWYg
T1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQogICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuKEJ1ZmZl
ckhhbmRsZSBmcm9udEJ1ZmZlciA9IDAsIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVyID0gMCkKICAg
ICAgICAgOiBmcm9udEJ1ZmZlckhhbmRsZShmcm9udEJ1ZmZlcikKICAgICAgICAgLCBiYWNrQnVm
ZmVySGFuZGxlKGJhY2tCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQwYTBkZGNhNzA4MmVjMGNjNTVlNjFlZTAzMTQ1OTU3MDc4YWJlZGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDQ5MyBAQAorLyoKKwor
IENvcHlyaWdodCAoQykgMjAxMiBaZW5vIEFsYmlzc2VyIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFw
aGljc1N1cmZhY2UuaCIKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJHTC5oIgorCisjZGVmaW5lIEVHTF9FR0xFWFRfUFJPVE9UWVBFUyAvLyBUaGlz
IG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgaW5jbHVkaW5nIGVnbC5oIGFuZCBlZ2xleHQuaC4KKyNp
bmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaWYgUExBVEZP
Uk0oUVQpCisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFPcGVuR0xDb250
ZXh0PgorI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgU1RSSU5HSUZZKC4uLikgI19fVkFfQVJH
U19fCisKK3N0YXRpYyBHTHVpbnQgbG9hZFNoYWRlcihHTGVudW0gdHlwZSwgY29uc3QgR0xjaGFy
ICpzaGFkZXJTcmMpCit7CisgICAgR0x1aW50IHNoYWRlcjsKKyAgICBHTGludCBjb21waWxlZDsK
KworICAgIHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKHR5cGUpOworICAgIGlmICghc2hhZGVyKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnNoYWRl
clNyYywgMCk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xHZXRTaGFkZXJp
dihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICghY29tcGls
ZWQpIHsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBzaGFkZXI7Cit9CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VQ
cml2YXRlIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IEludFNp
emUmIHNpemUsIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKQorICAgICAgICA6IG1fdG9rZW4o
dG9rZW4pCisgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKKyAgICAgICAgLCBtX2RldGFj
aGVkUmVhZFN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2RldGFjaGVkRHJhd1N1cmZhY2UoMCkKKyAg
ICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2VnbERpc3BsYXkoMCkKKyAgICAgICAg
LCBtX2VnbENvbnRleHQoMCkKKyAgICAgICAgLCBtX2VnbENvbmZpZygwKQorICAgICAgICAsIG1f
ZWdsRnJvbnRCdWZmZXJTdXJmYWNlKDApCisgICAgICAgICwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFj
ZSgwKQorICAgICAgICAsIG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUodG9rZW4uZnJv
bnRCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKHRva2Vu
LmZyb250QnVmZmVySGFuZGxlKQorICAgICAgICAsIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlKHRv
a2VuLmJhY2tCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkK
KyAgICAgICAgLCBtX3NoYWRlclByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIGluaXRTaGFkZXJQ
cm9ncmFtKCk7CisgICAgfQorCisKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXpl
LCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdzKQorICAgICAgICA6IG1fZGV0YWNoZWRDb250
ZXh0KDApCisgICAgICAgICwgbV9kZXRhY2hlZFJlYWRTdXJmYWNlKDApCisgICAgICAgICwgbV9k
ZXRhY2hlZERyYXdTdXJmYWNlKDApCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICwg
bV9lZ2xEaXNwbGF5KDApCisgICAgICAgICwgbV9lZ2xDb250ZXh0KDApCisgICAgICAgICwgbV9l
Z2xDb25maWcoMCkKKyAgICAgICAgLCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSgwKQorICAgICAg
ICAsIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2luaXRpYWxGcm9udEJ1
ZmZlclNoYXJlSGFuZGxlKDApCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKDAp
CisgICAgICAgICwgbV9iYWNrQnVmZmVyU2hhcmVIYW5kbGUoMCkKKyAgICAgICAgLCBtX2Zyb250
QnVmZmVyVGV4dHVyZSgwKQorICAgICAgICAsIG1fc2hhZGVyUHJvZ3JhbSgwKQorICAgIHsKKyAg
ICAgICAgaW5pdFNoYWRlclByb2dyYW0oKTsKKworICAgICAgICBzdGF0aWMgUEZORUdMUVVFUllT
VVJGQUNFUE9JTlRFUkFOR0xFUFJPQyBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUgPSAwOwor
ICAgICAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSkgeworICAgICAgICAgICAg
ZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xRVUVS
WVNVUkZBQ0VQT0lOVEVSQU5HTEVQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlTdXJm
YWNlUG9pbnRlckFOR0xFIikpOworICAgICAgICAgICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2VQb2lu
dGVyQU5HTEUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFtX2VnbERpc3BsYXkgfHwgIW1fZWdsQ29udGV4dCB8fCAhbV9lZ2xDb25maWcpIHsKKyAg
ICAgICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldEN1cnJlbnREaXNwbGF5KCk7CisKKyNpZiBQ
TEFURk9STShRVCkKKyAgICAgICAgICAgIFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSogbmF0aXZl
SW50ZXJmYWNlID0gUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSgpOwor
ICAgICAgICAgICAgbV9lZ2xDb25maWcgPSBzdGF0aWNfY2FzdDxFR0xDb25maWc+KG5hdGl2ZUlu
dGVyZmFjZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRlcmFsKCJlZ2xD
b25maWciKSwgc2hhcmVDb250ZXh0KSk7CisgICAgICAgICAgICBFR0xDb250ZXh0IGVnbFNoYXJl
Q29udGV4dCA9IHN0YXRpY19jYXN0PEVHTENvbnRleHQ+KG5hdGl2ZUludGVyZmFjZS0+bmF0aXZl
UmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRlcmFsKCJlZ2xDb250ZXh0IiksIHNoYXJl
Q29udGV4dCkpOworI2VuZGlmCisgICAgICAgICAgICBFR0xpbnQgY29udGV4dEF0dHJpYnV0ZXNb
XSA9IHsgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVHTF9OT05FIH07CisgICAgICAg
ICAgICBtX2VnbENvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1fZWdsRGlzcGxheSwgbV9lZ2xD
b25maWcsIGVnbFNoYXJlQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMpOworICAgICAgICB9CisK
KyAgICAgICAgRUdMaW50IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgIEVHTF9XSURUSCwg
c2l6ZS53aWR0aCgpLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWlnaHQoKSwKKyAg
ICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdCLAorICAgICAgICAg
ICAgRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xfVEVYVFVSRV8yRCwKKyAgICAgICAgICAgIEVHTF9O
T05FCisgICAgICAgIH07CisKKyAgICAgICAgbV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UgPSBlZ2xD
cmVhdGVQYnVmZmVyU3VyZmFjZShtX2VnbERpc3BsYXksIG1fZWdsQ29uZmlnLCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJm
YWNlKG1fZWdsRGlzcGxheSwgbV9lZ2xDb25maWcsIGF0dHJpYnV0ZXMpOworICAgICAgICBpZiAo
bV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UgfHwgbV9lZ2xCYWNrQnVm
ZmVyU3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUobV9lZ2xEaXNwbGF5LCBtX2VnbEZyb250
QnVmZmVyU3VyZmFjZSwgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSwgJm1f
ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk7CisgICAgICAgIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRShtX2VnbERpc3BsYXksIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UsIEVHTF9EM0RfVEVYVFVS
RV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsICZtX2JhY2tCdWZmZXJTaGFyZUhhbmRsZSk7CisKKyAg
ICAgICAgbV9pbml0aWFsRnJvbnRCdWZmZXJTaGFyZUhhbmRsZSA9IG1fZnJvbnRCdWZmZXJTaGFy
ZUhhbmRsZTsKKworICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4obV9mcm9u
dEJ1ZmZlclNoYXJlSGFuZGxlLCBtX2JhY2tCdWZmZXJTaGFyZUhhbmRsZSk7CisgICAgfQorCisg
ICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQorICAgIHsKKyAgICAgICAgcmVsZWFzZUZyb250
QnVmZmVyVGV4dHVyZSgpOworCisgICAgICAgIGlmIChtX2VnbEJhY2tCdWZmZXJTdXJmYWNlKQor
ICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNwbGF5LCBtX2VnbEJhY2tCdWZm
ZXJTdXJmYWNlKTsKKworICAgICAgICBpZiAobV9zaGFkZXJQcm9ncmFtKQorICAgICAgICAgICAg
Z2xEZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisgICAgICAgIG1fc2hhZGVyUHJvZ3Jh
bSA9IDA7CisKKyAgICAgICAgaWYgKG1fZWdsRGlzcGxheSAmJiBtX2VnbENvbnRleHQpCisgICAg
ICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2VnbERpc3BsYXksIG1fZWdsQ29udGV4dCk7Cisg
ICAgfQorCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCkKKyAgICB7CisgICAgICAgIGlmICghbWFrZUN1cnJlbnQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIDApOworICAgICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgZ2xGaW5p
c2goKTsKKyAgICAgICAgZG9uZUN1cnJlbnQoKTsKKyAgICB9CisKKyAgICBib29sIG1ha2VDdXJy
ZW50KCkKKyAgICB7CisgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gZWdsR2V0Q3VycmVudENv
bnRleHQoKTsKKyAgICAgICAgbV9kZXRhY2hlZFJlYWRTdXJmYWNlID0gZWdsR2V0Q3VycmVudFN1
cmZhY2UoRUdMX1JFQUQpOworICAgICAgICBtX2RldGFjaGVkRHJhd1N1cmZhY2UgPSBlZ2xHZXRD
dXJyZW50U3VyZmFjZShFR0xfRFJBVyk7CisKKyAgICAgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50
KG1fZWdsRGlzcGxheSwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSwgbV9lZ2xCYWNrQnVmZmVyU3Vy
ZmFjZSwgbV9lZ2xDb250ZXh0KTsKKyAgICB9CisKKyAgICBib29sIGRvbmVDdXJyZW50KCkKKyAg
ICB7CisgICAgICAgIGlmICghbV9kZXRhY2hlZENvbnRleHQgfHwgIW1fZGV0YWNoZWREcmF3U3Vy
ZmFjZSB8fCAhbV9kZXRhY2hlZFJlYWRTdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGJvb2wgc3VjY2VzcyA9IGVnbE1ha2VDdXJyZW50KG1fZWdsRGlzcGxheSwg
bV9kZXRhY2hlZERyYXdTdXJmYWNlLCBtX2RldGFjaGVkUmVhZFN1cmZhY2UsIG1fZGV0YWNoZWRD
b250ZXh0KTsKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSAwOworICAgICAgICBtX2RldGFj
aGVkUmVhZFN1cmZhY2UgPSAwOworICAgICAgICBtX2RldGFjaGVkRHJhd1N1cmZhY2UgPSAwOwor
ICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdyYXBoaWNzU3Vy
ZmFjZSBzd2FwQnVmZmVycygpCisgICAgeworICAgICAgICBpZiAobV9mcm9udEJ1ZmZlclRleHR1
cmUpCisgICAgICAgICAgICByZWxlYXNlRnJvbnRCdWZmZXJUZXh0dXJlKCk7CisgICAgICAgIHN0
ZDo6c3dhcChtX2VnbEZyb250QnVmZmVyU3VyZmFjZSwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSk7
CisgICAgICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyU2hhcmVIYW5kbGUsIG1fYmFja0J1ZmZl
clNoYXJlSGFuZGxlKTsKKworICAgICAgICByZXR1cm4gbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxl
OworICAgIH0KKworICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworICAgIHVpbnQzMl90IGZyb250QnVm
ZmVyVGV4dHVyZUlEKCkKKyAgICB7CisgICAgICAgIGlmICghbV9lZ2xGcm9udEJ1ZmZlclN1cmZh
Y2UpIHsKKyAgICAgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlID0gY3JlYXRlU3VyZmFj
ZUZyb21TaGFyZUhhbmRsZShtX3NpemUsIG1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk7CisKKyAg
ICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAgICAg
ICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAgICAgICAgICAg
IGVnbEJpbmRUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlLCBF
R0xfQkFDS19CVUZGRVIpOworCisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRCdWZmZXJUZXh0dXJlOworICAgIH0K
KworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIGluaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFu
ZGxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luaXRpYWxGcm9udEJ1ZmZlclNo
YXJlSGFuZGxlOworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIGZyb250QnVm
ZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRCdWZm
ZXJTaGFyZUhhbmRsZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBiYWNr
QnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmFja0J1
ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZUZyb250QnVmZmVyVGV4
dHVyZSgpCisgICAgeworICAgICAgICBpZiAobV9mcm9udEJ1ZmZlclRleHR1cmUpIHsKKyAgICAg
ICAgICAgIGVnbFJlbGVhc2VUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWdsRnJvbnRCdWZmZXJT
dXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmbV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlclRleHR1
cmUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNl
KQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNwbGF5LCBtX2VnbEZyb250
QnVmZmVyU3VyZmFjZSk7CisgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlID0gMDsKKyAg
ICB9CisKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdFNoYWRlclByb2dyYW0oKQorICAgIHsK
KyAgICAgICAgaWYgKG1fc2hhZGVyUHJvZ3JhbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBHTGNoYXIgdlNoYWRlclN0cltdID0KKyAgICAgICAgICAgIFNUUklOR0lGWSgKKyAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjMiB2ZXJ0ZXg7CisgICAgICAgICAgICAgICAg
YXR0cmlidXRlIGhpZ2hwIHZlYzIgdGV4dHVyZUNvb3JkaW5hdGVzOworICAgICAgICAgICAgICAg
IHZhcnlpbmcgaGlnaHAgdmVjMiB0ZXh0dXJlQ29vcmRzOworICAgICAgICAgICAgICAgIHZvaWQg
bWFpbih2b2lkKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KHZlcnRleCwgMC4wLCAxLjApOworICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlQ29vcmRzID0gdGV4dHVyZUNvb3JkaW5hdGVzOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICk7CisKKyAgICAgICAgR0xjaGFyIGZTaGFkZXJTdHJbXSA9CisgICAgICAgICAgICBT
VFJJTkdJRlkoCisgICAgICAgICAgICAgICAgdmFyeWluZyBoaWdocCB2ZWMyIHRleHR1cmVDb29y
ZHM7CisgICAgICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTsKKyAgICAgICAg
ICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGhpZ2hwIHZlYzMgY29sb3IgPSB0ZXh0dXJlMkQodGV4dHVyZSwgdGV4dHVyZUNvb3Jk
cykucmdiOworICAgICAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNsYW1wKGNv
bG9yLCAwLjAsIDEuMCksIDEuMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsK
KworICAgICAgICBHTHVpbnQgdmVydGV4U2hhZGVyOworICAgICAgICBHTHVpbnQgZnJhZ21lbnRT
aGFkZXI7CisgICAgICAgIEdMaW50IGxpbmtlZDsKKworICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSBs
b2FkU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZTaGFkZXJTdHIpOworICAgICAgICBmcmFnbWVu
dFNoYWRlciA9IGxvYWRTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmU2hhZGVyU3RyKTsKKyAg
ICAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIgfHwgIWZyYWdtZW50U2hhZGVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1fc2hhZGVyUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOwor
ICAgICAgICBpZiAoIW1fc2hhZGVyUHJvZ3JhbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBnbEF0dGFjaFNoYWRlcihtX3NoYWRlclByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAg
ICAgIGdsQXR0YWNoU2hhZGVyKG1fc2hhZGVyUHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworCisg
ICAgICAgIGdsTGlua1Byb2dyYW0obV9zaGFkZXJQcm9ncmFtKTsKKyAgICAgICAgZ2xHZXRQcm9n
cmFtaXYobV9zaGFkZXJQcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7CisgICAgICAg
IGlmICghbGlua2VkKSB7CisgICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obV9zaGFkZXJQcm9n
cmFtKTsKKyAgICAgICAgICAgIG1fc2hhZGVyUHJvZ3JhbSA9IDA7CisgICAgICAgIH0KKworICAg
ICAgICBtX3ZlcnRleEF0dHIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwg
InZlcnRleCIpOworICAgICAgICBtX3RleHR1cmVDb29yZGluYXRlc0F0dHIgPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInRleHR1cmVDb29yZGluYXRlcyIpOworICAgICAg
ICBtX3RleHR1cmVVbmlmb3JtID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtX3NoYWRlclByb2dyYW0s
ICJ0ZXh0dXJlIik7CisKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9D
TEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICB9CisKKyAgICBFR0xTdXJm
YWNlIGNyZWF0ZVN1cmZhY2VGcm9tU2hhcmVIYW5kbGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSEFO
RExFIHNoYXJlSGFuZGxlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2VnbERpc3BsYXkgIHx8ICFt
X2VnbENvbmZpZykgeworICAgICAgICAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0Q3VycmVudERp
c3BsYXkoKTsKKworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAgICAgUVBsYXRmb3JtTmF0aXZl
SW50ZXJmYWNlKiBuYXRpdmVJbnRlcmZhY2UgPSBRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmF0
aXZlSW50ZXJmYWNlKCk7CisgICAgICAgICAgICBtX2VnbENvbmZpZyA9IHN0YXRpY19jYXN0PEVH
TENvbmZpZz4obmF0aXZlSW50ZXJmYWNlLT5uYXRpdmVSZXNvdXJjZUZvckNvbnRleHQoUUJ5dGVB
cnJheUxpdGVyYWwoImVnbENvbmZpZyIpLCBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQo
KSkpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBFR0xpbnQgYXR0cmlidXRlc1tdID0g
eworICAgICAgICAgICAgRUdMX1dJRFRILCBzaXplLndpZHRoKCksCisgICAgICAgICAgICBFR0xf
SEVJR0hULCBzaXplLmhlaWdodCgpLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBF
R0xfVEVYVFVSRV9SR0IsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsIEVHTF9URVhU
VVJFXzJELAorICAgICAgICAgICAgRUdMX05PTkUKKyAgICAgICAgfTsKKworICAgICAgICBFR0xT
dXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihtX2VnbERp
c3BsYXksIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsIHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPihzaGFyZUhhbmRsZSksIG1fZWdsQ29uZmlnLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgQVNTRVJUKHN1cmZhY2UpOworCisgICAgICAgIHJldHVybiBzdXJmYWNl
OworICAgIH0KKworICAgIHZvaWQgZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSkKKyAgICB7
CisgICAgICAgIGdsVXNlUHJvZ3JhbShtX3NoYWRlclByb2dyYW0pOworCisgICAgICAgIGdsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleHR1cmUpOworCisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7
CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICAgICAgR0xm
bG9hdCBhZlZlcnRpY2VzW10gPSB7CisgICAgICAgICAgICAtMSwgLTEsCisgICAgICAgICAgICAg
MSwgLTEsCisgICAgICAgICAgICAtMSwgIDEsCisgICAgICAgICAgICAgMSwgIDEKKyAgICAgICAg
fTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1fdmVydGV4QXR0ciwgMiwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCAwLCBhZlZlcnRpY2VzKTsKKworICAgICAgICBHTGZsb2F0IGFmdGV4dHVy
ZUNvb3JkaW5hdGVzW10gPSB7CisgICAgICAgICAgICAwLCAxLAorICAgICAgICAgICAgMSwgMSwK
KyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICAxLCAwCisgICAgICAgIH07CisgICAgICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihtX3RleHR1cmVDb29yZGluYXRlc0F0dHIsIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgYWZ0ZXh0dXJlQ29vcmRpbmF0ZXMpOworCisgICAgICAgIGdsVW5p
Zm9ybTFpKG1fdGV4dHVyZVVuaWZvcm0sIDApOworCisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkobV92ZXJ0ZXhBdHRyKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShtX3RleHR1cmVDb29yZGluYXRlc0F0dHIpOworCisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9U
UklBTkdMRV9TVFJJUCwgMCwgNCk7CisKKyAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkobV92ZXJ0ZXhBdHRyKTsKKyAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobV90
ZXh0dXJlQ29vcmRpbmF0ZXNBdHRyKTsKKworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIDApOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBt
X3Rva2VuOworICAgIEVHTENvbnRleHQgbV9kZXRhY2hlZENvbnRleHQ7CisgICAgRUdMU3VyZmFj
ZSBtX2RldGFjaGVkUmVhZFN1cmZhY2U7CisgICAgRUdMU3VyZmFjZSBtX2RldGFjaGVkRHJhd1N1
cmZhY2U7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgRUdMRGlzcGxheSBtX2VnbERpc3BsYXk7
CisgICAgRUdMQ29udGV4dCBtX2VnbENvbnRleHQ7CisgICAgRUdMQ29uZmlnIG1fZWdsQ29uZmln
OworICAgIEVHTFN1cmZhY2UgbV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2U7CisgICAgRUdMU3VyZmFj
ZSBtX2VnbEJhY2tCdWZmZXJTdXJmYWNlOworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIG1f
aW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGU7CisgICAgUGxhdGZvcm1HcmFwaGljc1N1cmZh
Y2UgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlOworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNl
IG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlOworICAgIEdMdWludCBtX2Zyb250QnVmZmVyVGV4dHVy
ZTsKKyAgICBHTGludCBtX3NoYWRlclByb2dyYW07CisKKyAgICBHTHVpbnQgbV92ZXJ0ZXhBdHRy
OworICAgIEdMdWludCBtX3RleHR1cmVDb29yZGluYXRlc0F0dHI7CisgICAgR0x1aW50IG1fdGV4
dHVyZVVuaWZvcm07Cit9OworCitHcmFwaGljc1N1cmZhY2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtRXhwb3J0KCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50b2tlbigpOworfQor
Cit1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5mcm9udEJ1ZmZlclRleHR1cmVJRCgpOworfQorCit2b2lkIEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5VG9HTFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIG9m
ZnNldCkKK3sKKyAgICAvLyBDdXJyZW50bHkgbm90IGltcGxlbWVudGVkLgorfQorCit2b2lkIEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sKKyAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4
dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQoreworICAgIEdM
dWludCBmcm9udEJ1ZmZlclRleHR1cmUgPSBwbGF0Zm9ybUdldFRleHR1cmVJRCgpOworCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAg
YWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1Jl
Y3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKSwgdGFyZ2V0UmVjdCkpOwor
ICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4
dHVyZShmcm9udEJ1ZmZlclRleHR1cmUsIDAsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRU
cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOworfQorCit1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdAoreworICAgIGlmIChtX3ByaXZhdGUtPmluaXRp
YWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgPT0gbV9wcml2YXRlLT5mcm9udEJ1ZmZlclNoYXJl
SGFuZGxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChtX3ByaXZhdGUtPmluaXRpYWxG
cm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgPT0gbV9wcml2YXRlLT5iYWNrQnVmZmVyU2hhcmVIYW5k
bGUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDB4RkZGRjsKK30KKwordWludDMy
X3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBCdWZmZXJzKCkKK3sKKyAgICBtX3ByaXZh
dGUtPnN3YXBCdWZmZXJzKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtRnJvbnRCdWZmZXIoKTsKK30K
KworUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1D
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0KQoreworICAgIC8vIFNpbmdsZSBidWZmZXJlZCBH
cmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisgICAgaWYgKGZsYWdz
ICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5nbGVCdWZmZXJl
ZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc1N1
cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKyAgICBzdXJmYWNlLT5tX3ByaXZhdGUgPSBuZXcgR3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZShzaGFyZUNvbnRleHQsIHNpemUsIGZsYWdzKTsKKworICAgIGlmICgh
c3VyZmFjZS0+bV9wcml2YXRlLT5mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgfHwgIXN1cmZhY2Ut
Pm1fcHJpdmF0ZS0+YmFja0J1ZmZlclNoYXJlSGFuZGxlKCkpCisgICAgICAgIHJldHVybiBQYXNz
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKKworICAgIHJldHVybiBzdXJmYWNlOworfQorCitQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9y
dChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgY29uc3QgR3JhcGhpY3NTdXJmYWNl
VG9rZW4mIHRva2VuKQoreworICAgIC8vIFNpbmdsZSBidWZmZXJlZCBHcmFwaGljc1N1cmZhY2Ug
aXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisgICAgaWYgKGZsYWdzICYgU3VwcG9ydHNDb3B5
VG9UZXh0dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5nbGVCdWZmZXJlZCkKKyAgICAgICAgcmV0
dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisgICAgUmVmUHRyPEdyYXBoaWNz
U3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc1N1cmZhY2Uoc2l6ZSwgZmxh
Z3MpKTsKKyAgICBzdXJmYWNlLT5tX3ByaXZhdGUgPSBuZXcgR3JhcGhpY3NTdXJmYWNlUHJpdmF0
ZShzaXplLCB0b2tlbik7CisKKyAgICBpZiAoIXN1cmZhY2UtPm1fcHJpdmF0ZS0+ZnJvbnRCdWZm
ZXJTaGFyZUhhbmRsZSgpIHx8ICFzdXJmYWNlLT5tX3ByaXZhdGUtPmJhY2tCdWZmZXJTaGFyZUhh
bmRsZSgpKQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7CisK
KyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworY2hhciogR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bUxvY2soY29uc3QgSW50UmVjdCYgcmVjdCwgaW50KiBvdXRwdXRTdHJpZGUsIExvY2tPcHRpb25z
IGxvY2tPcHRpb25zKQoreworICAgIC8vIEdyYXBoaWNzU3VyZmFjZSBpcyBjdXJyZW50bHkgb25s
eSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSB0aGlzIGxvY2tp
bmcgbWVjaGFuaXNtLgorICAgIHJldHVybiAwOworfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1VbmxvY2soKQoreworICAgIC8vIEdyYXBoaWNzU3VyZmFjZSBpcyBjdXJyZW50bHkg
b25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSB0aGlzIGxv
Y2tpbmcgbWVjaGFuaXNtLgorfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1EZXN0
cm95KCkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBkZWxldGUgbV9wcml2YXRlOwor
ICAgIG1fcHJpdmF0ZSA9IDA7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggM2E5NDg5ZjA2YTk0
NWE1NDA1MDQ3YWJlYzJiNTVmYzkxMDkwNjVmOS4uNzBkNDlkNDFmZTBlMWM1OGI5YjM0ZjI5Njgz
ODhlZDI2N2VjMzM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC03MTcsMjQgKzcxNyw0MCBAQCBib29sIEFyZ3VtZW50
Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBHcgogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogewogI2lmIE9TKERBUldJTikKLSAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRva2VuLmZyb250QnVmZmVySGFuZGxlKSk7
Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b2tlbi5iYWNrQnVm
ZmVySGFuZGxlKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHRva2VuLmZyb250QnVmZmVySGFuZGxl
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYK
KyNpZiBPUyhXSU5ET1dTKQorICAgIHVpbnQ2NF90IGZyb250QnVmZmVyID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGUoZnJvbnRCdWZmZXIpOworICAgIHVpbnQ2NF90IGJhY2tCdWZmZXIgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKGJhY2tCdWZmZXIpOwogI2VuZGlmCiAjaWYgT1MoTElOVVgpCi0gICAgZW5jb2Rlci0+
ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpOwor
ICAgIGVuY29kZXItPmVuY29kZSh0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CiAjZW5kaWYKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4mIHRva2VuKQogewogI2lmIE9TKERBUldJTikKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
dG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKFdJTkRPV1MpCisgICAgdWludDY0X3QgZnJvbnRCdWZm
ZXJIYW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZnJvbnRCdWZmZXJIYW5kbGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9r
ZW4uYmFja0J1ZmZlckhhbmRsZSkpCisgICAgdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUgPSByZWlu
dGVycHJldF9jYXN0PEdyYXBoaWNzU3VyZmFjZVRva2VuOjpCdWZmZXJIYW5kbGU+KGZyb250QnVm
ZmVySGFuZGxlKTsKKyAgICB1aW50NjRfdCBiYWNrQnVmZmVySGFuZGxlOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGJhY2tCdWZmZXJIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgdG9rZW4uYmFja0J1ZmZlckhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NTdXJm
YWNlVG9rZW46OkJ1ZmZlckhhbmRsZT4oYmFja0J1ZmZlckhhbmRsZSk7CiAjZW5kaWYKICNpZiBP
UyhMSU5VWCkKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZl
ckhhbmRsZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodG9rZW4uZnJvbnRCdWZmZXJIYW5k
bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMmYzNGQ0
ZGRkNTFkODhhYTkxZWZjMDJiMzhjM2Q5NjVlYWQyYzA0Li42ZDE0MWExNmRhNjkyMjhlY2UyZDRi
NTg0Yzc4YjI3ZjM3ODg5NGRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMjMgIFplbm8gQWxiaXNzZXIg
IDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEdyYXBoaWNzU3VyZmFjZSBm
b3IgV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoKKyAgICAgICAgICAgICAg
ICBBY3RpdmF0ZSBHcmFwaGljc1N1cmZhY2Ugb24gd2luZG93cyBpbiBjYXNlIG9wZW5nbGVzMiAo
QU5HTEUpCisgICAgICAgICAgICAgICAgaXMgYXZhaWxhYmxlIGluIFFUX0NPTkZJRy4KKwogMjAx
Mi0xMC0yNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1dLMl0gW0dUS10gVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkgaXMgbm90IGJlaW5nIHJ1bgpk
aWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCBkN2YwMzAxZDZi
ZmRlMTRiNzYxNzFiZTBjOGU3OWRhNmY4MDg3ZDJlLi5iYzI4NWEyOGVjNTZhZjIyNTJkMDFiODVj
MmJiZGMxNmZlY2JiY2MyIDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgpAQCAtMTI3LDYgKzEyNyw3IEBAIGRlZmluZVRlc3QoZGV0ZWN0RmVhdHVyZXMpIHsKICAg
ICAjIEdyYXBoaWNzU3VyZmFjZSByZXF1aXJlcyBHcmFwaGljc0NvbnRleHQzRCBhbmQgaGVuY2Ug
dXNlXzNkX2dyYXBoaWNzCiAgICAgdXNlPygzZF9ncmFwaGljcykgewogICAgICAgICBtYWM6IFdF
QktJVF9DT05GSUcgKz0gdXNlX2dyYXBoaWNzX3N1cmZhY2UKKyAgICAgICAgd2luMzI6Y29udGFp
bnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9ncmFwaGljc19z
dXJmYWNlCiAgICAgICAgIGxpbnV4LSo6Y29udGFpbnMoV0VCS0lUX0NPTkZJRywgaGF2ZV9nbHgp
OmNvbnRhaW5zKFdFQktJVF9DT05GSUcsIGhhdmVfeGNvbXBvc2l0ZSk6Y29udGFpbnMoV0VCS0lU
X0NPTkZJRywgaGF2ZV94cmVuZGVyKTogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nfc3Vy
ZmFjZQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170374</attachid>
            <date>2012-10-24 05:30:49 -0700</date>
            <delta_ts>2012-10-25 01:13:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98147-20121024142924.patch</filename>
            <type>text/plain</type>
            <size>30053</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIyYWYzZGU5ZjBlY2Fm
NmVmZmQ0MGQ0NDRjM2YzZjI2MzUyOTYwOC4uMTkzNzgyNWY4NDAyZTNkYzAwYjhhZmUyYTlkN2U4
NDJjOWQ5YzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTEwLTIzICBaZW5v
IEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBHcmFwaGlj
c1N1cmZhY2UgZm9yIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODE0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgICAgIEluY2x1ZGUgR3JhcGhpY3NT
dXJmYWNlV2luLmNwcCBpbiBTT1VSQ0VTIG9uIFdpbmRvd3MuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgICAgICBBZGQgdHlw
ZWRlZiBmb3IgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2Ugb24gV2luZG93cy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oOgorICAgICAg
ICAgICAgQWRkIHR5cGVkZWYgZm9yIEJ1ZmZlckhhbmRsZSBvbiBXaW5kb3dzLgorICAgICAgICAo
R3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgICAgIFRoZSBH
cmFwaGljc1N1cmZhY2UgaW1wbGVtZW50YXRpb24gb24gV2luZG93cyByZWxpZXMgb24gdGhlCisg
ICAgICAgICAgICBhdmFpbGFiaWxpdHkgb2YgQU5HTEUgYW5kIHRoZSBFR0xfQU5HTEVfcXVlcnlf
c3VyZmFjZV9wb2ludGVyIGV4dGVuc2lvbi4KKyAgICAgICAgICAgIEZvciBRdCB0aGlzIHJlcXVp
cmVtZW50cyBhcmUgaW1wbGljaXRseSBzYXRpc2ZpZWQsIHdoZW4gUXQgaXMgYnVpbHQKKyAgICAg
ICAgICAgIG9uIFdpbmRvd3MgYW5kIFFUX0NPTkZJRyBjb250YWlucyBPcGVuR0xFUzIuCisgICAg
ICAgICAgICBUaGUgR3JhcGhpY3NTdXJmYWNlIHRoZW4gcmVuZGVycyBhIGdpdmVuIHRleHR1cmUg
b250byBhbiBvZmZzY3JlZW4KKyAgICAgICAgICAgIHBpeGVsIGJ1ZmZlciBzdXJmYWNlLCBxdWVy
aWVzIHRoZSBzdXJmYWNlIHBvaW50ZXIgdXNpbmcgdGhlCisgICAgICAgICAgICBFR0xfQU5HTEVf
cXVlcnlfc3VyZmFjZV9wb2ludGVyIGV4dGVuc2lvbiwgYW5kIHRyYW5zbWl0cyB0aGUgcmVjZWl2
ZWQKKyAgICAgICAgICAgIHN1cmZhY2UgcG9pbnRlciAoc2hhcmUgaGFuZGxlKSBvdmVyIElQQy4K
KyAgICAgICAgICAgIE9uIHRoZSBVSVByb2Nlc3Mgc2lkZSwgdGhlIHN1cmZhY2UgcG9pbnRlciBj
YW4gdGhlbiBiZSByZXNvbHZlZAorICAgICAgICAgICAgdXNpbmcgZWdsQ3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Omxv
YWRTaGFkZXIpOgorICAgICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgc2hhZGVycyBuZWVkZWQgZm9y
IGRyYXdpbmcgb250byB0aGUgR3JhcGhpY3NTdXJmYWNlLgorICAgICAgICAoR3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgICAgIEluIGNhc2Ugb2YgdGhlIGluc3Rh
bmNlIGJlaW5nIG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUsCisgICAgICAgICAgICBjcmVhdGUgYW4g
RUdMQ29udGV4dCB0aGF0IHNoYXJlcyB0aGUgdGV4dHVyZSBvYmplY3RzIHdpdGggdGhlIHByb3Zp
ZGVkCisgICAgICAgICAgICBzaGFyZSBjb250ZXh0LiBBbHNvIGNyZWF0ZSB0d28gcGl4ZWwgYnVm
ZmVyIHN1cmZhY2VzLCBvbmUgYXMgZnJvbnQtIGFuZAorICAgICAgICAgICAgb25lIGFzIGJhY2ti
dWZmZXIuCisgICAgICAgICAgICBRdWVyeSB0aGUgc3VyZmFjZSBwb2ludGVycyBmb3IgdGhlIHBp
eGVsIGJ1ZmZlciBzdXJmYWNlcyBhbmQgaW5pdGlhbGl6ZQorICAgICAgICAgICAgdGhlIEdyYXBo
aWNzU3VyZmFjZVRva2VuIHRoYXQgY2FuIGJlIHBhc3NlZCBvdmVyIElQQyBsYXRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6On5HcmFwaGljc1N1cmZhY2VQcml2
YXRlKToKKyAgICAgICAgICAgIFJlbGVhc2UgYWxsIGFxdWlyZWQgcmVzb3VyY2VzIGFuZCBkZXN0
cm95IHRoZSBwaXhlbCBidWZmZXIgc3VyZmFjZXMuCisgICAgICAgICAgICBBbHNvIGNsb3NlIHRo
ZSBFR0wtRGlzcGxheSBjb25uZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Y29weUZyb21UZXh0dXJlKToKKyAgICAgICAgICAgIE1ha2UgdGhlIGJlbG9u
Z2luZyBjb250ZXh0IGN1cnJlbnQgb24gdGhlIGJhY2sgYnVmZmVyIHN1cmZhY2UKKyAgICAgICAg
ICAgIGFuZCB1c2UgZHJhd1RleHR1cmUoKSB0byBkcmF3IHRoZSBwcm92aWRlZCB0ZXh0dXJlIG9u
dG8gdGhlIEdyYXBoaWNzU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGU6Om1ha2VDdXJyZW50KToKKyAgICAgICAgICAgIFNhdmUgdGhlIHByZXZpb3VzbHkg
Y3VycmVudCBjb250ZXh0LCB0aGVuIG1ha2UgdGhlIGNvbnRleHQgYmVsb25naW5nCisgICAgICAg
ICAgICB0byB0aGUgR3JhcGhpY3NTdXJmYWNlIGN1cnJlbnQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25lQ3VycmVudCk6CisgICAgICAgICAgICBSZXN0b3Jl
IHRoZSBjb250ZXh0IHRoYXQgd2FzIGN1cnJlbnQgYmVmb3JlIGNhbGxpbmcgbWFrZUN1cnJlbnQo
KS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgICAgIFN3YXAgZnJvbnQgYW5kIGJhY2sgYnVmZmVyIHN1cmZhY2VzIGFuZCBo
YW5kbGVzLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6dG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZnJvbnRCdWZmZXJU
ZXh0dXJlSUQpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBjYWxs
ZWQgZnJvbSB0aGUgVUlQcm9jZXNzIHNpZGUuCisgICAgICAgICAgICBJZiBubyBmcm9udCBidWZm
ZXIgc3VyZmFjZSBoYXMgYmVlbiBjcmVhdGVkIGJlZm9yZSBmb3IgdGhlIGN1cnJlbnQKKyAgICAg
ICAgICAgIGZyb250IGJ1ZmZlciBoYW5kbGUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQuCisgICAgICAg
ICAgICBUaGVuIGVnbEJpbmRUZXhJbWFnZSB3aWxsIGJlIHVzZWQgdG8gYWN0dWFsbHkgYmluZCB0
aGUgY3VycmVudAorICAgICAgICAgICAgZnJvbnQgYnVmZmVyIHN1cmZhY2UgdG8gYSB0ZXh0dXJl
IGFzIGEgc291cmNlIGZvciBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6aW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpiYWNrQnVmZmVyU2hhcmVI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6cmVsZWFz
ZUZyb250QnVmZmVyVGV4dHVyZSk6CisgICAgICAgICAgICBGcmVlIHRoZSByZXNvdXJjZXMgcmVs
YXRlZCB0byB0aGUgZnJvbnQgYnVmZmVyIHN1cmZhY2UuCisgICAgICAgICAgICBPbiB0aGUgVUlQ
cm9jZXNzIHNpZGUgd2UgbmV2ZXIgYWN0dWFsbHkgYmluZCB0aGUgYmFjayBidWZmZXIuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjppbml0aWFsaXplU2hhZGVyUHJv
Z3JhbSk6CisgICAgICAgICAgICBJbml0aWFsaXplIGFuZCBsaW5rIHRoZSBzaGFkZXIgcHJvZ3Jh
bXMgbmVjZXNzYXJ5IGZvciBkcmF3aW5nCisgICAgICAgICAgICBvbnRvIHRoZSBHcmFwaGljc1N1
cmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVT
dXJmYWNlRnJvbVNoYXJlSGFuZGxlKToKKyAgICAgICAgICAgIENyZWF0ZXMgYSBzaW5nbGUgcGl4
ZWwgYnVmZmVyIHN1cmZhY2UgZnJvbSBhIHNoYXJlIEhhbmRsZS4KKyAgICAgICAgICAgIFRoaXMg
ZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb24gdGhlIFVJUHJvY2VzcyBzaWRlLAorICAgICAgICAg
ICAgZm9yIHRoZSBmcm9udCBidWZmZXIgaGFuZGxlLCB3aGVuZXZlciB0aGUgYnVmZmVycyBoYXZl
IGJlZW4gc3dhcHBlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmRyYXdUZXh0dXJlKToKKyAgICAgICAgICAgIFRoZSBXZWJQcm9jZXNzIHVzZXMgdGhpcyBmdW5j
dGlvbiB0byBkcmF3IGEgZ2l2ZW4KKyAgICAgICAgICAgIHRleHR1cmUgb250byB0aGUgR3JhcGhp
Y3NTdXJmYWNlJ3MgYmFjayBidWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtRXhwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1HZXRUZXh0dXJlSUQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybUNvcHlUb0dMVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICAgICBV
c2VzIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoKSB0byBkcmF3IHRoZSBmcm9udCBidWZm
ZXIgdGV4dHVyZQorICAgICAgICAgICAgdG8gdGhlIFRleHR1cmVNYXBwZXIgb24gdGhlIFVJUHJv
Y2VzcyBzaWRlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZy
b250QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1T
d2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVVubG9jayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSk6CisKIDIwMTIt
MDktMjcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBMaXN0SGFz
aFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGE1ZmU4M2UyYzNlNDcyMTUxNTZmOTFjMjhjZmZiZjc2NzY0N2E2
MzQuLmFmYWJjYWVmZTc3OGI1MDI5YmMyZDMzOGMwZGQ5NTJkN2E4OTg4NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0yMyAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0
Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlIGZvciBXaW5kb3dzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxNDcKKwor
ICAgICAgICBBZGQgZW5jb2RlIGFuZCBkZWNvZGUgaW1wbGVtZW50YXRpb24gZm9yIEdyYXBoaWNz
U3VyZmFjZVRva2VuIG9uIFdpbmRvd3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUp
OgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorCiAyMDEyLTEwLTI0ICBZYWVsIEFoYXJv
biAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW0FDXSBCbGFj
ayBzY3JlZW4gaW4gd2ViIGluc3BlY3RvciB3aW5kb3cgd2l0aCBBQyBvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggZjJjNGQ2ZDg1MmY1Y2U1YjVlOWM1ZDM4MzQwMmFhMGVjZGM1OWIyYy4uNDdiZjUxYmQ1NDc5
NmEyMGYwYTUyN2UzZjQ4ZGM4NzliNmMxMDYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00MDYyLDYgKzQw
NjIsOSBAQCB1c2U/KEdSQVBISUNTX1NVUkZBQ0UpIHsKICAgICAgICAgU09VUkNFUyArPSBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAogICAgICAg
ICBJTkNMVURFUEFUSCArPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvSGVhZGVycwogICAgIH0KKyAgICB3aW4zMiB7CisgICAgICAgIFNPVVJDRVMg
Kz0gcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHAK
KyAgICB9CiAgICAgaGF2ZT8oWENPTVBPU0lURSkgewogICAgICAgICBTT1VSQ0VTICs9IHBsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFw
aGljc1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5oCmluZGV4IDEzYWMzMzA1MTQ2ZGNmODlmMmJlYTlkY2MyMWEyNzk1
MGQ1MzI3MjcuLjU2MDJjZjUyMTcxMTI5ZTRkZWIwMzYxMTc3MzI4YTQ3ZjQ5NWZiMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5oCkBAIC0zNSwxMCArMzUsMTUgQEAKIHR5cGVkZWYgc3RydWN0IF9f
SU9TdXJmYWNlKiBJT1N1cmZhY2VSZWY7CiB0eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdy
YXBoaWNzU3VyZmFjZTsKICNlbmRpZgorCiAjaWYgT1MoTElOVVgpCiB0eXBlZGVmIHVpbnQzMl90
IFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlOwogI2VuZGlmCiAKKyNpZiBPUyhXSU5ET1dTKQordHlw
ZWRlZiBIQU5ETEUgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2U7CisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBCaXRtYXBUZXh0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFj
ZVRva2VuLmgKaW5kZXggNDUzNDJmMTQxODNjYjJkZmYxMmMyNjg0NjU2YzNkNDg5MGE5NzU2Ni4u
NzU5OTdkYTQ3ZDE2YWMxMzM1YWQxYTY3MjgzMWZmMzNmNDA5NTBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9r
ZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFw
aGljc1N1cmZhY2VUb2tlbi5oCkBAIC0zMyw3ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbiB7CiAKLXR5cGVkZWYgdWludDMyX3QgQnVm
ZmVySGFuZGxlOworI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCisgICAgdHlwZWRlZiB1aW50
MzJfdCBCdWZmZXJIYW5kbGU7CisjZW5kaWYKKyNpZiBPUyhXSU5ET1dTKQorICAgIHR5cGVkZWYg
SEFORExFIEJ1ZmZlckhhbmRsZTsKKyNlbmRpZgogCiAjaWYgSEFWRShHTFgpCiAgICAgR3JhcGhp
Y3NTdXJmYWNlVG9rZW4odWludDMyX3Qgd2luZG93SUQgPSAwKQpAQCAtNTIsNyArNTcsNyBAQCB0
eXBlZGVmIHVpbnQzMl90IEJ1ZmZlckhhbmRsZTsKIAogI2VuZGlmCiAKLSNpZiBPUyhEQVJXSU4p
CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQogICAgIEdyYXBoaWNzU3VyZmFjZVRva2Vu
KEJ1ZmZlckhhbmRsZSBmcm9udEJ1ZmZlciA9IDAsIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVyID0g
MCkKICAgICAgICAgOiBmcm9udEJ1ZmZlckhhbmRsZShmcm9udEJ1ZmZlcikKICAgICAgICAgLCBi
YWNrQnVmZmVySGFuZGxlKGJhY2tCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZh
Y2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5YmViZDJmZmVlYTJlYThhNzA2Njg2YWQxZmE1YjJiOGNj
MWZlOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDQ5MiBAQAor
LyoKKworIENvcHlyaWdodCAoQykgMjAxMiBaZW5vIEFsYmlzc2VyIDx6ZW5vQHdlYmtpdC5vcmc+
CisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc1N1cmZhY2UuaCIKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorCisjZGVmaW5lIEVHTF9FR0xFWFRfUFJPVE9UWVBFUyAv
LyBUaGlzIG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgaW5jbHVkaW5nIGVnbC5oIGFuZCBlZ2xleHQu
aC4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFPcGVu
R0xDb250ZXh0PgorI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgU1RSSU5HSUZZKC4uLikgI19f
VkFfQVJHU19fCisKK3N0YXRpYyBHTHVpbnQgbG9hZFNoYWRlcihHTGVudW0gdHlwZSwgY29uc3Qg
R0xjaGFyICpzaGFkZXJTcmMpCit7CisgICAgR0x1aW50IHNoYWRlcjsKKyAgICBHTGludCBjb21w
aWxlZDsKKworICAgIHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKHR5cGUpOworICAgIGlmICghc2hh
ZGVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwg
JnNoYWRlclNyYywgMCk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xHZXRT
aGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICgh
Y29tcGlsZWQpIHsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiBzaGFkZXI7Cit9CisKK3N0cnVjdCBHcmFwaGljc1N1
cmZhY2VQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0
IEludFNpemUmIHNpemUsIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKQorICAgICAgICA6IG1f
dG9rZW4odG9rZW4pCisgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKKyAgICAgICAgLCBt
X2RldGFjaGVkUmVhZFN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2RldGFjaGVkRHJhd1N1cmZhY2Uo
MCkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2VnbERpc3BsYXkoMCkKKyAg
ICAgICAgLCBtX2VnbENvbnRleHQoMCkKKyAgICAgICAgLCBtX2VnbENvbmZpZygwKQorICAgICAg
ICAsIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlKDApCisgICAgICAgICwgbV9lZ2xCYWNrQnVmZmVy
U3VyZmFjZSgwKQorICAgICAgICAsIG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUodG9r
ZW4uZnJvbnRCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxl
KHRva2VuLmZyb250QnVmZmVySGFuZGxlKQorICAgICAgICAsIG1fYmFja0J1ZmZlclNoYXJlSGFu
ZGxlKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1
cmUoMCkKKyAgICAgICAgLCBtX3NoYWRlclByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIGluaXRp
YWxpemVTaGFkZXJQcm9ncmFtKCk7CisgICAgfQorCisKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2
YXRlKGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplLCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdzKQorICAgICAgICA6IG1f
ZGV0YWNoZWRDb250ZXh0KDApCisgICAgICAgICwgbV9kZXRhY2hlZFJlYWRTdXJmYWNlKDApCisg
ICAgICAgICwgbV9kZXRhY2hlZERyYXdTdXJmYWNlKDApCisgICAgICAgICwgbV9zaXplKHNpemUp
CisgICAgICAgICwgbV9lZ2xEaXNwbGF5KDApCisgICAgICAgICwgbV9lZ2xDb250ZXh0KDApCisg
ICAgICAgICwgbV9lZ2xDb25maWcoMCkKKyAgICAgICAgLCBtX2VnbEZyb250QnVmZmVyU3VyZmFj
ZSgwKQorICAgICAgICAsIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2lu
aXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlKDApCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNo
YXJlSGFuZGxlKDApCisgICAgICAgICwgbV9iYWNrQnVmZmVyU2hhcmVIYW5kbGUoMCkKKyAgICAg
ICAgLCBtX2Zyb250QnVmZmVyVGV4dHVyZSgwKQorICAgICAgICAsIG1fc2hhZGVyUHJvZ3JhbSgw
KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKTsKKworICAgICAgICBz
dGF0aWMgUEZORUdMUVVFUllTVVJGQUNFUE9JTlRFUkFOR0xFUFJPQyBlZ2xRdWVyeVN1cmZhY2VQ
b2ludGVyQU5HTEUgPSAwOworICAgICAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdM
RSkgeworICAgICAgICAgICAgZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5FR0xRVUVSWVNVUkZBQ0VQT0lOVEVSQU5HTEVQUk9DPihlZ2xHZXRQcm9jQWRk
cmVzcygiZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFIikpOworICAgICAgICAgICAgaWYgKCFl
Z2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFtX2VnbERpc3BsYXkgfHwgIW1fZWdsQ29udGV4dCB8fCAh
bV9lZ2xDb25maWcpIHsKKyAgICAgICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldEN1cnJlbnRE
aXNwbGF5KCk7CisKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgICAgIFFQbGF0Zm9ybU5hdGl2
ZUludGVyZmFjZSogbmF0aXZlSW50ZXJmYWNlID0gUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5h
dGl2ZUludGVyZmFjZSgpOworICAgICAgICAgICAgbV9lZ2xDb25maWcgPSBzdGF0aWNfY2FzdDxF
R0xDb25maWc+KG5hdGl2ZUludGVyZmFjZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRl
QXJyYXlMaXRlcmFsKCJlZ2xDb25maWciKSwgc2hhcmVDb250ZXh0KSk7CisgICAgICAgICAgICBF
R0xDb250ZXh0IGVnbFNoYXJlQ29udGV4dCA9IHN0YXRpY19jYXN0PEVHTENvbnRleHQ+KG5hdGl2
ZUludGVyZmFjZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRlcmFsKCJl
Z2xDb250ZXh0IiksIHNoYXJlQ29udGV4dCkpOworI2VuZGlmCisgICAgICAgICAgICBFR0xpbnQg
Y29udGV4dEF0dHJpYnV0ZXNbXSA9IHsgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVH
TF9OT05FIH07CisgICAgICAgICAgICBtX2VnbENvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1f
ZWdsRGlzcGxheSwgbV9lZ2xDb25maWcsIGVnbFNoYXJlQ29udGV4dCwgY29udGV4dEF0dHJpYnV0
ZXMpOworICAgICAgICB9CisKKyAgICAgICAgRUdMaW50IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAg
ICAgICAgIEVHTF9XSURUSCwgc2l6ZS53aWR0aCgpLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwg
c2l6ZS5oZWlnaHQoKSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRV
UkVfUkdCLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xfVEVYVFVSRV8yRCwK
KyAgICAgICAgICAgIEVHTF9OT05FCisgICAgICAgIH07CisKKyAgICAgICAgbV9lZ2xGcm9udEJ1
ZmZlclN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShtX2VnbERpc3BsYXksIG1fZWds
Q29uZmlnLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSA9IGVn
bENyZWF0ZVBidWZmZXJTdXJmYWNlKG1fZWdsRGlzcGxheSwgbV9lZ2xDb25maWcsIGF0dHJpYnV0
ZXMpOworICAgICAgICBpZiAobV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UgPT0gRUdMX05PX1NVUkZB
Q0UgfHwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUobV9lZ2xE
aXNwbGF5LCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSwgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJF
X0hBTkRMRV9BTkdMRSwgJm1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk7CisgICAgICAgIGVnbFF1
ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShtX2VnbERpc3BsYXksIG1fZWdsQmFja0J1ZmZlclN1cmZh
Y2UsIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsICZtX2JhY2tCdWZmZXJT
aGFyZUhhbmRsZSk7CisKKyAgICAgICAgbV9pbml0aWFsRnJvbnRCdWZmZXJTaGFyZUhhbmRsZSA9
IG1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZTsKKworICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NT
dXJmYWNlVG9rZW4obV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlLCBtX2JhY2tCdWZmZXJTaGFyZUhh
bmRsZSk7CisgICAgfQorCisgICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQorICAgIHsKKyAg
ICAgICAgcmVsZWFzZUZyb250QnVmZmVyVGV4dHVyZSgpOworCisgICAgICAgIGlmIChtX2VnbEJh
Y2tCdWZmZXJTdXJmYWNlKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNw
bGF5LCBtX2VnbEJhY2tCdWZmZXJTdXJmYWNlKTsKKworICAgICAgICBpZiAobV9zaGFkZXJQcm9n
cmFtKQorICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisgICAg
ICAgIG1fc2hhZGVyUHJvZ3JhbSA9IDA7CisKKyAgICAgICAgaWYgKG1fZWdsRGlzcGxheSAmJiBt
X2VnbENvbnRleHQpCisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2VnbERpc3BsYXks
IG1fZWdsQ29udGV4dCk7CisgICAgfQorCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKKyAgICB7CisgICAgICAgIGlm
ICghbWFrZUN1cnJlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJl
KTsKKyAgICAgICAgZ2xGaW5pc2goKTsKKyAgICAgICAgZG9uZUN1cnJlbnQoKTsKKyAgICB9CisK
KyAgICBib29sIG1ha2VDdXJyZW50KCkKKyAgICB7CisgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0
ID0gZWdsR2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgbV9kZXRhY2hlZFJlYWRTdXJmYWNl
ID0gZWdsR2V0Q3VycmVudFN1cmZhY2UoRUdMX1JFQUQpOworICAgICAgICBtX2RldGFjaGVkRHJh
d1N1cmZhY2UgPSBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xfRFJBVyk7CisKKyAgICAgICAgcmV0
dXJuIGVnbE1ha2VDdXJyZW50KG1fZWdsRGlzcGxheSwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSwg
bV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSwgbV9lZ2xDb250ZXh0KTsKKyAgICB9CisKKyAgICBib29s
IGRvbmVDdXJyZW50KCkKKyAgICB7CisgICAgICAgIGlmICghbV9kZXRhY2hlZENvbnRleHQgfHwg
IW1fZGV0YWNoZWREcmF3U3VyZmFjZSB8fCAhbV9kZXRhY2hlZFJlYWRTdXJmYWNlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGJvb2wgc3VjY2VzcyA9IGVnbE1ha2VDdXJy
ZW50KG1fZWdsRGlzcGxheSwgbV9kZXRhY2hlZERyYXdTdXJmYWNlLCBtX2RldGFjaGVkUmVhZFN1
cmZhY2UsIG1fZGV0YWNoZWRDb250ZXh0KTsKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSAw
OworICAgICAgICBtX2RldGFjaGVkUmVhZFN1cmZhY2UgPSAwOworICAgICAgICBtX2RldGFjaGVk
RHJhd1N1cmZhY2UgPSAwOworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBQ
bGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBzd2FwQnVmZmVycygpCisgICAgeworICAgICAgICBpZiAo
bV9mcm9udEJ1ZmZlclRleHR1cmUpCisgICAgICAgICAgICByZWxlYXNlRnJvbnRCdWZmZXJUZXh0
dXJlKCk7CisgICAgICAgIHN0ZDo6c3dhcChtX2VnbEZyb250QnVmZmVyU3VyZmFjZSwgbV9lZ2xC
YWNrQnVmZmVyU3VyZmFjZSk7CisgICAgICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyU2hhcmVI
YW5kbGUsIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlKTsKKworICAgICAgICByZXR1cm4gbV9mcm9u
dEJ1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRv
a2VuKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworICAg
IHVpbnQzMl90IGZyb250QnVmZmVyVGV4dHVyZUlEKCkKKyAgICB7CisgICAgICAgIGlmICghbV9l
Z2xGcm9udEJ1ZmZlclN1cmZhY2UpIHsKKyAgICAgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJm
YWNlID0gY3JlYXRlU3VyZmFjZUZyb21TaGFyZUhhbmRsZShtX3NpemUsIG1fZnJvbnRCdWZmZXJT
aGFyZUhhbmRsZSk7CisKKyAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fZnJvbnRCdWZm
ZXJUZXh0dXJlKTsKKyAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Cisg
ICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fZnJvbnRCdWZmZXJUZXh0
dXJlKTsKKyAgICAgICAgICAgIGVnbEJpbmRUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWdsRnJv
bnRCdWZmZXJTdXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworCisgICAgICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAg
ICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdM
X0NMQU1QX1RPX0VER0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRCdWZm
ZXJUZXh0dXJlOworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIGluaXRpYWxG
cm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lu
aXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhp
Y3NTdXJmYWNlIGZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdy
YXBoaWNzU3VyZmFjZSBiYWNrQnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHZvaWQgcmVs
ZWFzZUZyb250QnVmZmVyVGV4dHVyZSgpCisgICAgeworICAgICAgICBpZiAobV9mcm9udEJ1ZmZl
clRleHR1cmUpIHsKKyAgICAgICAgICAgIGVnbFJlbGVhc2VUZXhJbWFnZShtX2VnbERpc3BsYXks
IG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworICAgICAgICAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmbV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlclRleHR1cmUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZWds
RnJvbnRCdWZmZXJTdXJmYWNlKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xE
aXNwbGF5LCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSk7CisgICAgICAgIG1fZWdsRnJvbnRCdWZm
ZXJTdXJmYWNlID0gMDsKKyAgICB9CisKKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6
ZVNoYWRlclByb2dyYW0oKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2hhZGVyUHJvZ3JhbSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBHTGNoYXIgdlNoYWRlclN0cltdID0KKyAgICAg
ICAgICAgIFNUUklOR0lGWSgKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjMiB2
ZXJ0ZXg7CisgICAgICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzIgdGV4dHVyZUNvb3Jk
aW5hdGVzOworICAgICAgICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB0ZXh0dXJlQ29vcmRz
OworICAgICAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZlcnRleCwgMC4wLCAxLjApOwor
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlQ29vcmRzID0gdGV4dHVyZUNvb3JkaW5hdGVzOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisKKyAgICAgICAgR0xjaGFyIGZTaGFk
ZXJTdHJbXSA9CisgICAgICAgICAgICBTVFJJTkdJRlkoCisgICAgICAgICAgICAgICAgdmFyeWlu
ZyBoaWdocCB2ZWMyIHRleHR1cmVDb29yZHM7CisgICAgICAgICAgICAgICAgdW5pZm9ybSBzYW1w
bGVyMkQgdGV4dHVyZTsKKyAgICAgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGhpZ2hwIHZlYzMgY29sb3IgPSB0ZXh0dXJl
MkQodGV4dHVyZSwgdGV4dHVyZUNvb3JkcykucmdiOworICAgICAgICAgICAgICAgICAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KGNsYW1wKGNvbG9yLCAwLjAsIDEuMCksIDEuMCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgKTsKKworICAgICAgICBHTHVpbnQgdmVydGV4U2hhZGVyOwor
ICAgICAgICBHTHVpbnQgZnJhZ21lbnRTaGFkZXI7CisgICAgICAgIEdMaW50IGxpbmtlZDsKKwor
ICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZTaGFk
ZXJTdHIpOworICAgICAgICBmcmFnbWVudFNoYWRlciA9IGxvYWRTaGFkZXIoR0xfRlJBR01FTlRf
U0hBREVSLCBmU2hhZGVyU3RyKTsKKyAgICAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIgfHwgIWZyYWdt
ZW50U2hhZGVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fc2hhZGVyUHJvZ3Jh
bSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBpZiAoIW1fc2hhZGVyUHJvZ3JhbSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBnbEF0dGFjaFNoYWRlcihtX3NoYWRlclByb2dy
YW0sIHZlcnRleFNoYWRlcik7CisgICAgICAgIGdsQXR0YWNoU2hhZGVyKG1fc2hhZGVyUHJvZ3Jh
bSwgZnJhZ21lbnRTaGFkZXIpOworCisgICAgICAgIGdsTGlua1Byb2dyYW0obV9zaGFkZXJQcm9n
cmFtKTsKKyAgICAgICAgZ2xHZXRQcm9ncmFtaXYobV9zaGFkZXJQcm9ncmFtLCBHTF9MSU5LX1NU
QVRVUywgJmxpbmtlZCk7CisgICAgICAgIGlmICghbGlua2VkKSB7CisgICAgICAgICAgICBnbERl
bGV0ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKTsKKyAgICAgICAgICAgIG1fc2hhZGVyUHJvZ3Jh
bSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBtX3ZlcnRleEF0dHIgPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInZlcnRleCIpOworICAgICAgICBtX3RleHR1cmVDb29y
ZGluYXRlc0F0dHIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInRleHR1
cmVDb29yZGluYXRlcyIpOworICAgICAgICBtX3RleHR1cmVVbmlmb3JtID0gZ2xHZXRBdHRyaWJM
b2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJ0ZXh0dXJlIik7CisKKyAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsK
KyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKKyAgICB9CisKKyAgICBFR0xTdXJmYWNlIGNyZWF0ZVN1cmZhY2VGcm9tU2hhcmVIYW5kbGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgSEFORExFIHNoYXJlSGFuZGxlKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX2VnbERpc3BsYXkgIHx8ICFtX2VnbENvbmZpZykgeworICAgICAgICAgICAgbV9lZ2xE
aXNwbGF5ID0gZWdsR2V0Q3VycmVudERpc3BsYXkoKTsKKworI2lmIFBMQVRGT1JNKFFUKQorICAg
ICAgICAgICAgUVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlKiBuYXRpdmVJbnRlcmZhY2UgPSBRR3Vp
QXBwbGljYXRpb246OnBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlKCk7CisgICAgICAgICAgICBtX2Vn
bENvbmZpZyA9IHN0YXRpY19jYXN0PEVHTENvbmZpZz4obmF0aXZlSW50ZXJmYWNlLT5uYXRpdmVS
ZXNvdXJjZUZvckNvbnRleHQoUUJ5dGVBcnJheUxpdGVyYWwoImVnbENvbmZpZyIpLCBRT3BlbkdM
Q29udGV4dDo6Y3VycmVudENvbnRleHQoKSkpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAg
ICBFR0xpbnQgYXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgRUdMX1dJRFRILCBzaXplLndp
ZHRoKCksCisgICAgICAgICAgICBFR0xfSEVJR0hULCBzaXplLmhlaWdodCgpLAorICAgICAgICAg
ICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9SR0IsCisgICAgICAgICAgICBFR0xf
VEVYVFVSRV9UQVJHRVQsIEVHTF9URVhUVVJFXzJELAorICAgICAgICAgICAgRUdMX05PTkUKKyAg
ICAgICAgfTsKKworICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVy
RnJvbUNsaWVudEJ1ZmZlcihtX2VnbERpc3BsYXksIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9I
QU5ETEVfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPihzaGFyZUhhbmRs
ZSksIG1fZWdsQ29uZmlnLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgQVNTRVJUKHN1cmZhY2UpOwor
CisgICAgICAgIHJldHVybiBzdXJmYWNlOworICAgIH0KKworICAgIHZvaWQgZHJhd1RleHR1cmUo
dWludDMyX3QgdGV4dHVyZSkKKyAgICB7CisgICAgICAgIGdsVXNlUHJvZ3JhbShtX3NoYWRlclBy
b2dyYW0pOworCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworCisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBf
VE9fRURHRSk7CisKKyAgICAgICAgR0xmbG9hdCBhZlZlcnRpY2VzW10gPSB7CisgICAgICAgICAg
ICAtMSwgLTEsCisgICAgICAgICAgICAgMSwgLTEsCisgICAgICAgICAgICAtMSwgIDEsCisgICAg
ICAgICAgICAgMSwgIDEKKyAgICAgICAgfTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KG1fdmVydGV4QXR0ciwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBhZlZlcnRpY2VzKTsKKwor
ICAgICAgICBHTGZsb2F0IGFmdGV4dHVyZUNvb3JkaW5hdGVzW10gPSB7CisgICAgICAgICAgICAw
LCAxLAorICAgICAgICAgICAgMSwgMSwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICAx
LCAwCisgICAgICAgIH07CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtX3RleHR1cmVD
b29yZGluYXRlc0F0dHIsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgYWZ0ZXh0dXJlQ29vcmRp
bmF0ZXMpOworCisgICAgICAgIGdsVW5pZm9ybTFpKG1fdGV4dHVyZVVuaWZvcm0sIDApOworCisg
ICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV92ZXJ0ZXhBdHRyKTsKKyAgICAgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3RleHR1cmVDb29yZGluYXRlc0F0dHIpOworCisg
ICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9TVFJJUCwgMCwgNCk7CisKKyAgICAgICAg
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobV92ZXJ0ZXhBdHRyKTsKKyAgICAgICAgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkobV90ZXh0dXJlQ29vcmRpbmF0ZXNBdHRyKTsKKworICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBHcmFwaGljc1N1cmZhY2VUb2tlbiBtX3Rva2VuOworICAgIEVHTENvbnRleHQgbV9kZXRhY2hl
ZENvbnRleHQ7CisgICAgRUdMU3VyZmFjZSBtX2RldGFjaGVkUmVhZFN1cmZhY2U7CisgICAgRUdM
U3VyZmFjZSBtX2RldGFjaGVkRHJhd1N1cmZhY2U7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAg
RUdMRGlzcGxheSBtX2VnbERpc3BsYXk7CisgICAgRUdMQ29udGV4dCBtX2VnbENvbnRleHQ7Cisg
ICAgRUdMQ29uZmlnIG1fZWdsQ29uZmlnOworICAgIEVHTFN1cmZhY2UgbV9lZ2xGcm9udEJ1ZmZl
clN1cmZhY2U7CisgICAgRUdMU3VyZmFjZSBtX2VnbEJhY2tCdWZmZXJTdXJmYWNlOworICAgIFBs
YXRmb3JtR3JhcGhpY3NTdXJmYWNlIG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGU7Cisg
ICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlOworICAg
IFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlOworICAgIEdM
dWludCBtX2Zyb250QnVmZmVyVGV4dHVyZTsKKyAgICBHTGludCBtX3NoYWRlclByb2dyYW07CisK
KyAgICBHTHVpbnQgbV92ZXJ0ZXhBdHRyOworICAgIEdMdWludCBtX3RleHR1cmVDb29yZGluYXRl
c0F0dHI7CisgICAgR0x1aW50IG1fdGV4dHVyZVVuaWZvcm07Cit9OworCitHcmFwaGljc1N1cmZh
Y2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT50b2tlbigpOworfQorCit1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtR2V0VGV4dHVyZUlEKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5mcm9udEJ1ZmZlclRl
eHR1cmVJRCgpOworfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5VG9HTFRl
eHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKK3sKKyAgICAvLyBDdXJyZW50bHkgbm90IGlt
cGxlbWVudGVkLgorfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5RnJvbVRl
eHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sKKyAg
ICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKK30KKwor
dm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKQoreworICAgIEdMdWludCBmcm9udEJ1ZmZlclRleHR1cmUgPSBwbGF0Zm9y
bUdldFRleHR1cmVJRCgpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFu
c2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwg
bV9zaXplKSwgdGFyZ2V0UmVjdCkpOworICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+
KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShmcm9udEJ1ZmZlclRleHR1cmUsIDAsIG1fc2l6
ZSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOworfQorCit1
aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdAorewor
ICAgIGlmIChtX3ByaXZhdGUtPmluaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgPT0gbV9w
cml2YXRlLT5mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IGlmIChtX3ByaXZhdGUtPmluaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgPT0gbV9wcml2
YXRlLT5iYWNrQnVmZmVyU2hhcmVIYW5kbGUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0
dXJuIDB4RkZGRjsKK30KKwordWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBC
dWZmZXJzKCkKK3sKKyAgICBtX3ByaXZhdGUtPnN3YXBCdWZmZXJzKCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtRnJvbnRCdWZmZXIoKTsKK30KKworUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0KQorewor
ICAgIC8vIFNpbmdsZSBidWZmZXJlZCBHcmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5IG5vdCBz
dXBwb3J0ZWQuCisgICAgaWYgKGZsYWdzICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdz
ICYgU3VwcG9ydHNTaW5nbGVCdWZmZXJlZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPigpOworCisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9
IGFkb3B0UmVmKG5ldyBHcmFwaGljc1N1cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKyAgICBzdXJmYWNl
LT5tX3ByaXZhdGUgPSBuZXcgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShzaGFyZUNvbnRleHQsIHNp
emUsIGZsYWdzKTsKKworICAgIGlmICghc3VyZmFjZS0+bV9wcml2YXRlLT5mcm9udEJ1ZmZlclNo
YXJlSGFuZGxlKCkgfHwgIXN1cmZhY2UtPm1fcHJpdmF0ZS0+YmFja0J1ZmZlclNoYXJlSGFuZGxl
KCkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKKworICAg
IHJldHVybiBzdXJmYWNlOworfQorCitQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFn
cywgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQoreworICAgIC8vIFNpbmdsZSBi
dWZmZXJlZCBHcmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisgICAg
aWYgKGZsYWdzICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5n
bGVCdWZmZXJlZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigp
OworCisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBH
cmFwaGljc1N1cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKyAgICBzdXJmYWNlLT5tX3ByaXZhdGUgPSBu
ZXcgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShzaXplLCB0b2tlbik7CisKKyAgICBpZiAoIXN1cmZh
Y2UtPm1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSgpIHx8ICFzdXJmYWNlLT5tX3By
aXZhdGUtPmJhY2tCdWZmZXJTaGFyZUhhbmRsZSgpKQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxHcmFwaGljc1N1cmZhY2U+KCk7CisKKyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworY2hhciog
R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUxvY2soY29uc3QgSW50UmVjdCYgcmVjdCwgaW50KiBv
dXRwdXRTdHJpZGUsIExvY2tPcHRpb25zIGxvY2tPcHRpb25zKQoreworICAgIC8vIEdyYXBoaWNz
U3VyZmFjZSBpcyBjdXJyZW50bHkgb25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9l
cyBub3QgcmVxdWlyZSB0aGlzIGxvY2tpbmcgbWVjaGFuaXNtLgorICAgIHJldHVybiAwOworfQor
Cit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1VbmxvY2soKQoreworICAgIC8vIEdyYXBo
aWNzU3VyZmFjZSBpcyBjdXJyZW50bHkgb25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2gg
ZG9lcyBub3QgcmVxdWlyZSB0aGlzIGxvY2tpbmcgbWVjaGFuaXNtLgorfQorCit2b2lkIEdyYXBo
aWNzU3VyZmFjZTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRlOwor
ICAgIG1fcHJpdmF0ZSA9IDA7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggM2E5NDg5ZjA2YTk0
NWE1NDA1MDQ3YWJlYzJiNTVmYzkxMDkwNjVmOS4uNzBkNDlkNDFmZTBlMWM1OGI5YjM0ZjI5Njgz
ODhlZDI2N2VjMzM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC03MTcsMjQgKzcxNyw0MCBAQCBib29sIEFyZ3VtZW50
Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBHcgogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogewogI2lmIE9TKERBUldJTikKLSAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRva2VuLmZyb250QnVmZmVySGFuZGxlKSk7
Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b2tlbi5iYWNrQnVm
ZmVySGFuZGxlKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHRva2VuLmZyb250QnVmZmVySGFuZGxl
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYK
KyNpZiBPUyhXSU5ET1dTKQorICAgIHVpbnQ2NF90IGZyb250QnVmZmVyID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGUoZnJvbnRCdWZmZXIpOworICAgIHVpbnQ2NF90IGJhY2tCdWZmZXIgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKGJhY2tCdWZmZXIpOwogI2VuZGlmCiAjaWYgT1MoTElOVVgpCi0gICAgZW5jb2Rlci0+
ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpOwor
ICAgIGVuY29kZXItPmVuY29kZSh0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CiAjZW5kaWYKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4mIHRva2VuKQogewogI2lmIE9TKERBUldJTikKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
dG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKFdJTkRPV1MpCisgICAgdWludDY0X3QgZnJvbnRCdWZm
ZXJIYW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZnJvbnRCdWZmZXJIYW5kbGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9r
ZW4uYmFja0J1ZmZlckhhbmRsZSkpCisgICAgdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUgPSByZWlu
dGVycHJldF9jYXN0PEdyYXBoaWNzU3VyZmFjZVRva2VuOjpCdWZmZXJIYW5kbGU+KGZyb250QnVm
ZmVySGFuZGxlKTsKKyAgICB1aW50NjRfdCBiYWNrQnVmZmVySGFuZGxlOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGJhY2tCdWZmZXJIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgdG9rZW4uYmFja0J1ZmZlckhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NTdXJm
YWNlVG9rZW46OkJ1ZmZlckhhbmRsZT4oYmFja0J1ZmZlckhhbmRsZSk7CiAjZW5kaWYKICNpZiBP
UyhMSU5VWCkKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZl
ckhhbmRsZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodG9rZW4uZnJvbnRCdWZmZXJIYW5k
bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMmYzNGQ0
ZGRkNTFkODhhYTkxZWZjMDJiMzhjM2Q5NjVlYWQyYzA0Li42ZDE0MWExNmRhNjkyMjhlY2UyZDRi
NTg0Yzc4YjI3ZjM3ODg5NGRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMjMgIFplbm8gQWxiaXNzZXIg
IDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEdyYXBoaWNzU3VyZmFjZSBm
b3IgV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoKKyAgICAgICAgICAgICAg
ICBBY3RpdmF0ZSBHcmFwaGljc1N1cmZhY2Ugb24gd2luZG93cyBpbiBjYXNlIG9wZW5nbGVzMiAo
QU5HTEUpCisgICAgICAgICAgICAgICAgaXMgYXZhaWxhYmxlIGluIFFUX0NPTkZJRy4KKwogMjAx
Mi0xMC0yNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1dLMl0gW0dUS10gVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkgaXMgbm90IGJlaW5nIHJ1bgpk
aWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCBkN2YwMzAxZDZi
ZmRlMTRiNzYxNzFiZTBjOGU3OWRhNmY4MDg3ZDJlLi5iYzI4NWEyOGVjNTZhZjIyNTJkMDFiODVj
MmJiZGMxNmZlY2JiY2MyIDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgpAQCAtMTI3LDYgKzEyNyw3IEBAIGRlZmluZVRlc3QoZGV0ZWN0RmVhdHVyZXMpIHsKICAg
ICAjIEdyYXBoaWNzU3VyZmFjZSByZXF1aXJlcyBHcmFwaGljc0NvbnRleHQzRCBhbmQgaGVuY2Ug
dXNlXzNkX2dyYXBoaWNzCiAgICAgdXNlPygzZF9ncmFwaGljcykgewogICAgICAgICBtYWM6IFdF
QktJVF9DT05GSUcgKz0gdXNlX2dyYXBoaWNzX3N1cmZhY2UKKyAgICAgICAgd2luMzI6Y29udGFp
bnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9ncmFwaGljc19z
dXJmYWNlCiAgICAgICAgIGxpbnV4LSo6Y29udGFpbnMoV0VCS0lUX0NPTkZJRywgaGF2ZV9nbHgp
OmNvbnRhaW5zKFdFQktJVF9DT05GSUcsIGhhdmVfeGNvbXBvc2l0ZSk6Y29udGFpbnMoV0VCS0lU
X0NPTkZJRywgaGF2ZV94cmVuZGVyKTogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nfc3Vy
ZmFjZQogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>