<?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>23415</bug_id>
          
          <creation_ts>2009-01-18 22:56:42 -0800</creation_ts>
          <short_desc>Remove FramePrivate</short_desc>
          <delta_ts>2009-01-18 23:15:40 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106234</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-01-18 22:56:42 -0800</bug_when>
    <thetext>FramePrivate is hold over from a different time.  Removing it will remove an indirection though the d pointer for some minor speedups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106235</commentid>
    <comment_count>1</comment_count>
      <attachid>26839</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-01-18 23:00:11 -0800</bug_when>
    <thetext>Created attachment 26839
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106236</commentid>
    <comment_count>2</comment_count>
      <attachid>26839</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-01-18 23:13:01 -0800</bug_when>
    <thetext>Comment on attachment 26839
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106237</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-01-18 23:15:40 -0800</bug_when>
    <thetext>Landed in r40024.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26839</attachid>
            <date>2009-01-18 23:00:11 -0800</date>
            <delta_ts>2009-01-18 23:13:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>FramePrivateRemoval.diff</filename>
            <type>text/plain</type>
            <size>53658</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDAyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTEyIEBACisyMDA5LTAxLTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTUKKyAgICAgICAg
UmVtb3ZlIEZyYW1lUHJpdmF0ZQorCisgICAgICAgIE1pbm9yIFBMVCBzcGVlZHVwLgorCisgICAg
ICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6fkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjpsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjplZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OnNlbGVjdGlvbkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRTZWxl
Y3Rpb25HcmFudWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0NhcmV0Q29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6YW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjptYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRNYXJr
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRDYXJldFZpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmNsZWFyQ2FyZXRSZWN0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNhcmV0QmxpbmtUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpwYWlu
dENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpwYWludERyYWdDYXJldCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6em9vbUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aXNab29tRmFjdG9yVGV4dE9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNob3Vs
ZEFwcGx5VGV4dFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNob3VsZEFwcGx5UGFn
ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFpvb21GYWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpzZXRKU1N0YXR1c0JhclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldEpTRGVm
YXVsdFN0YXR1c0JhclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmpzU3RhdHVzQmFy
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6anNEZWZhdWx0U3RhdHVzQmFyVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0TmVlZHNSZWFwcGx5U3R5bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpuZWVkc1JlYXBwbHlTdHlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnJlYXBwbHlTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzQ29u
dGVudEVkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp1cGRhdGVTZWN1cmVLZXli
b2FyZEVudHJ5SWZBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnR5cGluZ1N0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRUeXBpbmdTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6Y2xlYXJUeXBpbmdTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpz
ZWxlY3Rpb25Db21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjphcHBseUVk
aXRpbmdTdHlsZVRvQm9keUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlbW92
ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
a2VlcEFsaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjYW5jZWxBbGxLZWVwQWxpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmNsZWFyRE9NV2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpvd25lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om93
bmVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzRGlzY29ubmVjdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRJc0Rpc2Nvbm5lY3RlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6ZXhjbHVkZUZyb21UZXh0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjpzZXRFeGNsdWRlRnJvbVRleHRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9u
VGV4dFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppc0ZyYW1lU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpjdXJyZW50Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6Zm9yY2VMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNlbmRTY3JvbGxFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Y2xlYXJUaW1lcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnN0eWxlRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OmluVmlld1NvdXJjZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldElu
Vmlld1NvdXJjZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1hcmtBbGxNYXRjaGVz
Rm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0TWFya2VkVGV4dE1hdGNo
ZXNBcmVIaWdobGlnaHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6dHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpkb21XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmNsZWFyRm9ybWVyRE9N
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpwYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpldmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnBhZ2VE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvY3VtZW50QXRQb2ludCk6CisgICAgICAg
ICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVQcml2YXRlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuaDoKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0Zy
YW1lQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OmltYWdlRnJvbVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OnNlbGVjdGlvbkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzbmFwc2hvdERy
YWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpzZXRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9xdC9GcmFt
ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRVc2VyU3R5bGVTaGVldCk6CisgICAg
ICAgICogcGFnZS93aW4vRnJhbWVDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
bm9kZUltYWdlKToKKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5jcHA6CisKIDIwMDktMDEt
MTggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVp
bGQgZml4IGZvciAhRU5BQkxFKFZJREVPKSBmb2xsb3dpbmcgcjQwMDE2LiAKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAJKHJldmlzaW9uIDQwMDAxKQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzksNiArNDc5LDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMTRmcmFtZUZvcldp
ZGdldEVQS05TXwogX19aTjdXZWJDb3JlNUZyYW1lMTVzZW5kU2Nyb2xsRXZlbnRFdgogX19aTjdX
ZWJDb3JlNUZyYW1lMTZhZGp1c3RQYWdlSGVpZ2h0RVBmZmZmCiBfX1pON1dlYkNvcmU1RnJhbWUx
N3NldElzRGlzY29ubmVjdGVkRWIKK19fWk43V2ViQ29yZTVGcmFtZTE5c2V0SW5WaWV3U291cmNl
TW9kZUViCiBfX1pON1dlYkNvcmU1RnJhbWUyMHNldFNlbGVjdGlvbkZyb21Ob25lRXYKIF9fWk43
V2ViQ29yZTVGcmFtZTIxbWFya0FsbE1hdGNoZXNGb3JUZXh0RVJLTlNfNlN0cmluZ0ViagogX19a
TjdXZWJDb3JlNUZyYW1lMjN2aXNpYmxlUG9zaXRpb25Gb3JQb2ludEVSS05TXzhJbnRQb2ludEUK
QEAgLTgyNyw3ICs4MjgsNiBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTZpblZpZXdTb3VyY2VNb2Rl
RXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUxN2ZpcnN0UmVjdEZvclJhbmdlRVBOU181UmFuZ2VFCiBf
X1pOSzdXZWJDb3JlNUZyYW1lMThkb2N1bWVudFR5cGVTdHJpbmdFdgogX19aTks3V2ViQ29yZTVG
cmFtZTE4c2VsZWN0aW9uVGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBF
RUViCi1fX1pOSzdXZWJDb3JlNUZyYW1lMTlzZXRJblZpZXdTb3VyY2VNb2RlRWIKIF9fWk5LN1dl
YkNvcmU1RnJhbWUyMHNlbGVjdGlvbkdyYW51bGFyaXR5RXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUy
NWJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2xFdgogX19aTks3V2ViQ29yZTVGcmFtZTMwYXBwbHlF
ZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50RXYKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gNDAwMDEpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjk2LDEwICsyMjk2LDYgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxGcmFt
ZVByaXZhdGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcRnJhbWVUcmVlLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNDAwMDEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQ3LDcgKzg0Nyw2IEBACiAJCTY1QUE2QkIxMEQ5NzRB
MDAwMDA1NDFBRSAvKiBET01TVkdBbHRHbHlwaEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBQTZCQUUwRDk3NEEwMDAwMDU0
MUFFIC8qIERPTVNWR0FsdEdseXBoRWxlbWVudEludGVybmFsLmggKi87IH07CiAJCTY1QkYwMjJF
MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3Bw
ICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0
MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTY1QkYwMjMwMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjJCMDk3NDgx
NjMwMEM0MzE5NiAvKiBGcmFtZVByaXZhdGUuaCAqLzsgfTsKIAkJNjVCRjAyNDUwOTc0ODE5MDAw
QzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVCRjAyM0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovOyB9
OwogCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMg
LyogY29uZmlnLmggKi87IH07CiAJCTY1Q0JGRUY5MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZp
ZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVD
QkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi87IH07CkBAIC01NzQ5LDcg
KzU3NDgsNiBAQAogCQk2NUFBNkJBRTBEOTc0QTAwMDAwNTQxQUUgLyogRE9NU1ZHQWx0R2x5cGhF
bGVtZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZH
QWx0R2x5cGhFbGVtZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NjVCRjAyMkIwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7
IH07CiAJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lVmlldy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDA0OSw3ICsxMDA0Nyw2IEBACiAJCQkJNjVCRjAyMjkwOTc0
ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLywKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCAqLywKIAkJCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVM
b2FkUmVxdWVzdC5oICovLAotCQkJCTY1QkYwMjJCMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZVBy
aXZhdGUuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNTM1
MCw3ICsxNTM0Nyw2IEBACiAJCQkJNjU2RDM3M0MwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzczRTBBREJBNURFMDBBNDU1NEQgLyogRnJh
bWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjc3QTM4MEFERDc5MjUwMEVB
NEI4MSAvKiBGcmFtZUxvYWRlclR5cGVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk2NUJGMDIzMDA5
NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUEy
MTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NUNCRkVGQTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDMyRTg0NzBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQwMDAxKQorKysgV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJGcmFtZVByaXZhdGUuaCIKICNp
bmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MQW5jaG9yRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA0MDAwMSkKKysrIFdlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVQcml2
YXRlLmgiCiAKICNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkJlZm9y
ZVVubG9hZEV2ZW50LmgiCkBAIC0xMTAsOCArMTA5LDMyIEBAIHN0YXRpYyBpbmxpbmUgRnJhbWUq
IHBhcmVudEZyb21Pd25lckVsZW0KIH0KIAogRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlckNsaWVudCogZnJhbWVM
b2FkZXJDbGllbnQpIAotICAgIDogZChuZXcgRnJhbWVQcml2YXRlKHBhZ2UsIHBhcmVudEZyb21P
d25lckVsZW1lbnQob3duZXJFbGVtZW50KSwgdGhpcywgb3duZXJFbGVtZW50LCBmcmFtZUxvYWRl
ckNsaWVudCkpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fdHJlZU5vZGUodGhpcywgcGFy
ZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpKQorICAgICwgbV9sb2FkZXIodGhpcywg
ZnJhbWVMb2FkZXJDbGllbnQpCisgICAgLCBtX293bmVyRWxlbWVudChvd25lckVsZW1lbnQpCisg
ICAgLCBtX3NjcmlwdCh0aGlzKQorICAgICwgbV9zZWxlY3Rpb25HcmFudWxhcml0eShDaGFyYWN0
ZXJHcmFudWxhcml0eSkKKyAgICAsIG1fc2VsZWN0aW9uQ29udHJvbGxlcih0aGlzKQorICAgICwg
bV9jYXJldEJsaW5rVGltZXIodGhpcywgJkZyYW1lOjpjYXJldEJsaW5rVGltZXJGaXJlZCkKKyAg
ICAsIG1fZWRpdG9yKHRoaXMpCisgICAgLCBtX2V2ZW50SGFuZGxlcih0aGlzKQorICAgICwgbV9h
bmltYXRpb25Db250cm9sbGVyKHRoaXMpCisgICAgLCBtX2xpZmVTdXBwb3J0VGltZXIodGhpcywg
JkZyYW1lOjpsaWZlU3VwcG9ydFRpbWVyRmlyZWQpCisgICAgLCBtX2NhcmV0VmlzaWJsZShmYWxz
ZSkKKyAgICAsIG1fY2FyZXRQYWludCh0cnVlKQorICAgICwgbV9oaWdobGlnaHRUZXh0TWF0Y2hl
cyhmYWxzZSkKKyAgICAsIG1faW5WaWV3U291cmNlTW9kZShmYWxzZSkKKyAgICAsIG1fbmVlZHNS
ZWFwcGx5U3R5bGVzKGZhbHNlKQorICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChmYWxzZSkKKyAgICAs
IG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNlKQorI2lmIEZSQU1FX0xPQURTX1VTRVJfU1RZ
TEVTSEVFVAorICAgICwgbV91c2VyU3R5bGVTaGVldExvYWRlcigwKQorI2VuZGlmCiB7CisgICAg
RnJhbWUqIHBhcmVudCA9IHBhcmVudEZyb21Pd25lckVsZW1lbnQob3duZXJFbGVtZW50KTsKKyAg
ICBtX3pvb21GYWN0b3IgPSBwYXJlbnQgPyBwYXJlbnQtPm1fem9vbUZhY3RvciA6IDEuMGY7CisK
ICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBR
dWFsaWZpZWROYW1lOjppbml0KCk7CkBAIC0xNTAsNTIgKzE3Myw0OSBAQCBGcmFtZTo6fkZyYW1l
KCkKICAgICAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSBkb2luZyBhbGwgdGhpcyB3
b3JrIGluc2lkZSB0aGUgZGVzdHJ1Y3RvcgogCi0gICAgQVNTRVJUKCFkLT5tX2xpZmVTdXBwb3J0
VGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX2xpZmVTdXBwb3J0VGltZXIuaXNBY3Rp
dmUoKSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJhbWVDb3VudGVyLmRlY3JlbWVudCgpOwog
I2VuZGlmCiAKLSAgICBpZiAoZC0+bV9zY3JpcHQuaGF2ZVdpbmRvd1NoZWxsKCkpCi0gICAgICAg
IGQtPm1fc2NyaXB0LndpbmRvd1NoZWxsKCktPmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIGlmICht
X3NjcmlwdC5oYXZlV2luZG93U2hlbGwoKSkKKyAgICAgICAgbV9zY3JpcHQud2luZG93U2hlbGwo
KS0+ZGlzY29ubmVjdEZyYW1lKCk7CiAKICAgICBkaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CiAg
ICAgCi0gICAgaWYgKGQtPm1fZG9tV2luZG93KQotICAgICAgICBkLT5tX2RvbVdpbmRvdy0+ZGlz
Y29ubmVjdEZyYW1lKCk7CisgICAgaWYgKG1fZG9tV2luZG93KQorICAgICAgICBtX2RvbVdpbmRv
dy0+ZGlzY29ubmVjdEZyYW1lKCk7CiAKLSAgICBIYXNoU2V0PERPTVdpbmRvdyo+OjppdGVyYXRv
ciBlbmQgPSBkLT5tX2xpdmVGb3JtZXJXaW5kb3dzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxE
T01XaW5kb3cqPjo6aXRlcmF0b3IgaXQgPSBkLT5tX2xpdmVGb3JtZXJXaW5kb3dzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICBIYXNoU2V0PERPTVdpbmRvdyo+OjppdGVyYXRvciBlbmQg
PSBtX2xpdmVGb3JtZXJXaW5kb3dzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxET01XaW5kb3cq
Pjo6aXRlcmF0b3IgaXQgPSBtX2xpdmVGb3JtZXJXaW5kb3dzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKICAgICAgICAgKCppdCktPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgICAgICAgICAgCi0g
ICAgaWYgKGQtPm1fdmlldykgewotICAgICAgICBkLT5tX3ZpZXctPmhpZGUoKTsKLSAgICAgICAg
ZC0+bV92aWV3LT5jbGVhckZyYW1lKCk7CisgICAgaWYgKG1fdmlldykgeworICAgICAgICBtX3Zp
ZXctPmhpZGUoKTsKKyAgICAgICAgbV92aWV3LT5jbGVhckZyYW1lKCk7CiAgICAgfQogCi0gICAg
QVNTRVJUKCFkLT5tX2xpZmVTdXBwb3J0VGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFt
X2xpZmVTdXBwb3J0VGltZXIuaXNBY3RpdmUoKSk7CiAKICNpZiBGUkFNRV9MT0FEU19VU0VSX1NU
WUxFU0hFRVQKLSAgICBkZWxldGUgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlcjsKKyAgICBkZWxl
dGUgbV91c2VyU3R5bGVTaGVldExvYWRlcjsKICNlbmRpZgotCi0gICAgZGVsZXRlIGQ7Ci0gICAg
ZCA9IDA7CiB9CiAKIHZvaWQgRnJhbWU6OmluaXQoKQogewotICAgIGQtPm1fbG9hZGVyLmluaXQo
KTsKKyAgICBtX2xvYWRlci5pbml0KCk7CiB9CiAKIEZyYW1lTG9hZGVyKiBGcmFtZTo6bG9hZGVy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gJmQtPm1fbG9hZGVyOworICAgIHJldHVybiAmbV9sb2Fk
ZXI7CiB9CiAKIEZyYW1lVmlldyogRnJhbWU6OnZpZXcoKSBjb25zdAogewotICAgIHJldHVybiBk
LT5tX3ZpZXcuZ2V0KCk7CisgICAgcmV0dXJuIG1fdmlldy5nZXQoKTsKIH0KIAogdm9pZCBGcmFt
ZTo6c2V0VmlldyhGcmFtZVZpZXcqIHZpZXcpCkBAIC0yMDMsMTUgKzIyMywxNSBAQCB2b2lkIEZy
YW1lOjpzZXRWaWV3KEZyYW1lVmlldyogdmlldykKICAgICAvLyBEZXRhY2ggdGhlIGRvY3VtZW50
IG5vdywgc28gYW55IG9uVW5sb2FkIGhhbmRsZXJzIGdldCBydW4gLSBpZgogICAgIC8vIHdlIHdh
aXQgdW50aWwgdGhlIHZpZXcgaXMgZGVzdHJveWVkLCB0aGVuIHRoaW5ncyB3b24ndCBiZQogICAg
IC8vIGhvb2tlZCB1cCBlbm91Z2ggZm9yIHNvbWUgSmF2YVNjcmlwdCBjYWxscyB0byB3b3JrLgot
ICAgIGlmICghdmlldyAmJiBkLT5tX2RvYyAmJiBkLT5tX2RvYy0+YXR0YWNoZWQoKSAmJiAhZC0+
bV9kb2MtPmluUGFnZUNhY2hlKCkpIHsKKyAgICBpZiAoIXZpZXcgJiYgbV9kb2MgJiYgbV9kb2Mt
PmF0dGFjaGVkKCkgJiYgIW1fZG9jLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBkb24ndCBjYWxsIHdpbGxSZW1vdmUgaGVyZS4gV2h5IGlzIHRoYXQgT0s/Ci0gICAgICAg
IGQtPm1fZG9jLT5kZXRhY2goKTsKLSAgICAgICAgaWYgKGQtPm1fdmlldykKLSAgICAgICAgICAg
IGQtPm1fdmlldy0+dW5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgICAgIG1fZG9jLT5kZXRhY2go
KTsKKyAgICAgICAgaWYgKG1fdmlldykKKyAgICAgICAgICAgIG1fdmlldy0+dW5zY2hlZHVsZVJl
bGF5b3V0KCk7CiAgICAgfQogICAgIGV2ZW50SGFuZGxlcigpLT5jbGVhcigpOwogCi0gICAgZC0+
bV92aWV3ID0gdmlldzsKKyAgICBtX3ZpZXcgPSB2aWV3OwogCiAgICAgLy8gT25seSBvbmUgZm9y
bSBzdWJtaXNzaW9uIGlzIGFsbG93ZWQgcGVyIHZpZXcgb2YgYSBwYXJ0LgogICAgIC8vIFNpbmNl
IHRoaXMgcGFydCBtYXkgYmUgZ2V0dGluZyByZXVzZWQgYXMgYSByZXN1bHQgb2YgYmVpbmcKQEAg
LTIyMSwzNSArMjQxLDM1IEBAIHZvaWQgRnJhbWU6OnNldFZpZXcoRnJhbWVWaWV3KiB2aWV3KQog
CiBTY3JpcHRDb250cm9sbGVyKiBGcmFtZTo6c2NyaXB0KCkKIHsKLSAgICByZXR1cm4gJmQtPm1f
c2NyaXB0OworICAgIHJldHVybiAmbV9zY3JpcHQ7CiB9CiAKIERvY3VtZW50KiBGcmFtZTo6ZG9j
dW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBkLT5tX2RvYy5nZXQoKTsKKyAgICByZXR1cm4g
bV9kb2MuZ2V0KCk7CiB9CiAKIHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9j
dW1lbnQ+IG5ld0RvYykKIHsKLSAgICBpZiAoZC0+bV9kb2MgJiYgZC0+bV9kb2MtPmF0dGFjaGVk
KCkgJiYgIWQtPm1fZG9jLT5pblBhZ2VDYWNoZSgpKSB7CisgICAgaWYgKG1fZG9jICYmIG1fZG9j
LT5hdHRhY2hlZCgpICYmICFtX2RvYy0+aW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAvLyBGSVhN
RTogV2UgZG9uJ3QgY2FsbCB3aWxsUmVtb3ZlIGhlcmUuIFdoeSBpcyB0aGF0IE9LPwotICAgICAg
ICBkLT5tX2RvYy0+ZGV0YWNoKCk7CisgICAgICAgIG1fZG9jLT5kZXRhY2goKTsKICAgICB9CiAK
LSAgICBkLT5tX2RvYyA9IG5ld0RvYzsKLSAgICBpZiAoZC0+bV9kb2MgJiYgc2VsZWN0aW9uKCkt
PmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5
KGQtPm1fZG9jLT51c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKKyAgICBtX2Rv
YyA9IG5ld0RvYzsKKyAgICBpZiAobV9kb2MgJiYgc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFj
dGl2ZSgpKQorICAgICAgICBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5KG1fZG9jLT51c2VTZWN1
cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpKTsKICAgICAgICAgCi0gICAgaWYgKGQtPm1fZG9j
ICYmICFkLT5tX2RvYy0+YXR0YWNoZWQoKSkKLSAgICAgICAgZC0+bV9kb2MtPmF0dGFjaCgpOwor
ICAgIGlmIChtX2RvYyAmJiAhbV9kb2MtPmF0dGFjaGVkKCkpCisgICAgICAgIG1fZG9jLT5hdHRh
Y2goKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkICdkb2N1bWVudCcgcHJvcGVydHksIHdo
aWNoIGlzIG5vdyBzdGFsZS4KLSAgICBkLT5tX3NjcmlwdC51cGRhdGVEb2N1bWVudCgpOworICAg
IG1fc2NyaXB0LnVwZGF0ZURvY3VtZW50KCk7CiB9CiAKIFNldHRpbmdzKiBGcmFtZTo6c2V0dGlu
Z3MoKSBjb25zdAogewotICAgIHJldHVybiBkLT5tX3BhZ2UgPyBkLT5tX3BhZ2UtPnNldHRpbmdz
KCkgOiAwOworICAgIHJldHVybiBtX3BhZ2UgPyBtX3BhZ2UtPnNldHRpbmdzKCkgOiAwOwogfQog
CiBTdHJpbmcgRnJhbWU6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CkBAIC0yOTksMzMgKzMxOSwzMyBA
QCBJbnRSZWN0IEZyYW1lOjpmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSogCiAKIFNlbGVjdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjpzZWxlY3Rpb24oKSBjb25zdAogewotICAgIHJldHVybiAmZC0+bV9z
ZWxlY3Rpb25Db250cm9sbGVyOworICAgIHJldHVybiAmbV9zZWxlY3Rpb25Db250cm9sbGVyOwog
fQogCiBFZGl0b3IqIEZyYW1lOjplZGl0b3IoKSBjb25zdAogewotICAgIHJldHVybiAmZC0+bV9l
ZGl0b3I7CisgICAgcmV0dXJuICZtX2VkaXRvcjsKIH0KIAogVGV4dEdyYW51bGFyaXR5IEZyYW1l
OjpzZWxlY3Rpb25HcmFudWxhcml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPm1fc2VsZWN0
aW9uR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIG1fc2VsZWN0aW9uR3JhbnVsYXJpdHk7CiB9CiAK
LXZvaWQgRnJhbWU6OnNldFNlbGVjdGlvbkdyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSkgY29uc3QKK3ZvaWQgRnJhbWU6OnNldFNlbGVjdGlvbkdyYW51bGFyaXR5KFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBkLT5tX3NlbGVjdGlvbkdyYW51bGFyaXR5
ID0gZ3JhbnVsYXJpdHk7CisgICAgbV9zZWxlY3Rpb25HcmFudWxhcml0eSA9IGdyYW51bGFyaXR5
OwogfQogCiBTZWxlY3Rpb25Db250cm9sbGVyKiBGcmFtZTo6ZHJhZ0NhcmV0Q29udHJvbGxlcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPm1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpOwor
ICAgIHJldHVybiBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKTsKIH0KIAogCiBBbmltYXRp
b25Db250cm9sbGVyKiBGcmFtZTo6YW5pbWF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gJmQt
Pm1fYW5pbWF0aW9uQ29udHJvbGxlcjsKKyAgICByZXR1cm4gJm1fYW5pbWF0aW9uQ29udHJvbGxl
cjsKIH0KIAogc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykKQEAgLTQ4Miw3ICs1MDIsNyBAQCBTdHJpbmcg
RnJhbWU6Om1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoCiAKIGNvbnN0IFNlbGVjdGlvbiYgRnJh
bWU6Om1hcmsoKSBjb25zdAogewotICAgIHJldHVybiBkLT5tX21hcms7CisgICAgcmV0dXJuIG1f
bWFyazsKIH0KIAogdm9pZCBGcmFtZTo6c2V0TWFyayhjb25zdCBTZWxlY3Rpb24mIHMpCkBAIC00
OTIsNyArNTEyLDcgQEAgdm9pZCBGcmFtZTo6c2V0TWFyayhjb25zdCBTZWxlY3Rpb24mIHMpCiAg
ICAgQVNTRVJUKCFzLnN0YXJ0KCkubm9kZSgpIHx8IHMuc3RhcnQoKS5ub2RlKCktPmRvY3VtZW50
KCkgPT0gZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKCFzLmVuZCgpLm5vZGUoKSB8fCBzLmVuZCgp
Lm5vZGUoKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCgpKTsKIAotICAgIGQtPm1fbWFyayA9IHM7
CisgICAgbV9tYXJrID0gczsKIH0KIAogdm9pZCBGcmFtZTo6bm90aWZ5UmVuZGVyZXJPZlNlbGVj
dGlvbkNoYW5nZShib29sIHVzZXJUcmlnZ2VyZWQpCkBAIC01MTQsMTggKzUzNCwxOCBAQCB2b2lk
IEZyYW1lOjppbnZhbGlkYXRlU2VsZWN0aW9uKCkKIAogdm9pZCBGcmFtZTo6c2V0Q2FyZXRWaXNp
YmxlKGJvb2wgZmxhZykKIHsKLSAgICBpZiAoZC0+bV9jYXJldFZpc2libGUgPT0gZmxhZykKKyAg
ICBpZiAobV9jYXJldFZpc2libGUgPT0gZmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIGNsZWFy
Q2FyZXRSZWN0SWZOZWVkZWQoKTsKLSAgICBkLT5tX2NhcmV0VmlzaWJsZSA9IGZsYWc7CisgICAg
bV9jYXJldFZpc2libGUgPSBmbGFnOwogICAgIHNlbGVjdGlvbkxheW91dENoYW5nZWQoKTsKIH0K
IAogdm9pZCBGcmFtZTo6Y2xlYXJDYXJldFJlY3RJZk5lZWRlZCgpCiB7CiAjaWYgRU5BQkxFKFRF
WFRfQ0FSRVQpCi0gICAgaWYgKGQtPm1fY2FyZXRQYWludCkgewotICAgICAgICBkLT5tX2NhcmV0
UGFpbnQgPSBmYWxzZTsKKyAgICBpZiAobV9jYXJldFBhaW50KSB7CisgICAgICAgIG1fY2FyZXRQ
YWludCA9IGZhbHNlOwogICAgICAgICBzZWxlY3Rpb24oKS0+aW52YWxpZGF0ZUNhcmV0UmVjdCgp
OwogICAgIH0KICNlbmRpZgpAQCAtNTc2LDIyICs1OTYsMjIgQEAgdm9pZCBGcmFtZTo6c2VsZWN0
aW9uTGF5b3V0Q2hhbmdlZCgpCiAgICAgYm9vbCBjYXJldFJlY3RDaGFuZ2VkID0gc2VsZWN0aW9u
KCktPnJlY29tcHV0ZUNhcmV0UmVjdCgpOwogCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAg
Ym9vbCBzaG91bGRCbGluayA9IGQtPm1fY2FyZXRWaXNpYmxlCisgICAgYm9vbCBzaG91bGRCbGlu
ayA9IG1fY2FyZXRWaXNpYmxlCiAgICAgICAgICYmIHNlbGVjdGlvbigpLT5pc0NhcmV0KCkgJiYg
c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCk7CiAKICAgICAvLyBJZiB0aGUgY2FyZXQg
bW92ZWQsIHN0b3AgdGhlIGJsaW5rIHRpbWVyIHNvIHdlIGNhbiByZXN0YXJ0IHdpdGggYQogICAg
IC8vIGJsYWNrIGNhcmV0IGluIHRoZSBuZXcgbG9jYXRpb24uCiAgICAgaWYgKGNhcmV0UmVjdENo
YW5nZWQgfHwgIXNob3VsZEJsaW5rKQotICAgICAgICBkLT5tX2NhcmV0QmxpbmtUaW1lci5zdG9w
KCk7CisgICAgICAgIG1fY2FyZXRCbGlua1RpbWVyLnN0b3AoKTsKIAogICAgIC8vIFN0YXJ0IGJs
aW5raW5nIHdpdGggYSBibGFjayBjYXJldC4gQmUgc3VyZSBub3QgdG8gcmVzdGFydCBpZiB3ZSdy
ZQogICAgIC8vIGFscmVhZHkgYmxpbmtpbmcgaW4gdGhlIHJpZ2h0IGxvY2F0aW9uLgotICAgIGlm
IChzaG91bGRCbGluayAmJiAhZC0+bV9jYXJldEJsaW5rVGltZXIuaXNBY3RpdmUoKSkgeworICAg
IGlmIChzaG91bGRCbGluayAmJiAhbV9jYXJldEJsaW5rVGltZXIuaXNBY3RpdmUoKSkgewogICAg
ICAgICBpZiAoZG91YmxlIGJsaW5rSW50ZXJ2YWwgPSB0aGVtZSgpLT5jYXJldEJsaW5rSW50ZXJ2
YWwoKSkKLSAgICAgICAgICAgIGQtPm1fY2FyZXRCbGlua1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGJs
aW5rSW50ZXJ2YWwpOworICAgICAgICAgICAgbV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRp
bmcoYmxpbmtJbnRlcnZhbCk7CiAKLSAgICAgICAgaWYgKCFkLT5tX2NhcmV0UGFpbnQpIHsKLSAg
ICAgICAgICAgIGQtPm1fY2FyZXRQYWludCA9IHRydWU7CisgICAgICAgIGlmICghbV9jYXJldFBh
aW50KSB7CisgICAgICAgICAgICBtX2NhcmV0UGFpbnQgPSB0cnVlOwogICAgICAgICAgICAgc2Vs
ZWN0aW9uKCktPmludmFsaWRhdGVDYXJldFJlY3QoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTYz
MywxMiArNjUzLDEyIEBAIHZvaWQgRnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQoKQogdm9p
ZCBGcmFtZTo6Y2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8RnJhbWU+KikKIHsKICNpZiBFTkFC
TEUoVEVYVF9DQVJFVCkKLSAgICBBU1NFUlQoZC0+bV9jYXJldFZpc2libGUpOworICAgIEFTU0VS
VChtX2NhcmV0VmlzaWJsZSk7CiAgICAgQVNTRVJUKHNlbGVjdGlvbigpLT5pc0NhcmV0KCkpOwot
ICAgIGJvb2wgY2FyZXRQYWludCA9IGQtPm1fY2FyZXRQYWludDsKKyAgICBib29sIGNhcmV0UGFp
bnQgPSBtX2NhcmV0UGFpbnQ7CiAgICAgaWYgKHNlbGVjdGlvbigpLT5pc0NhcmV0QmxpbmtpbmdT
dXNwZW5kZWQoKSAmJiBjYXJldFBhaW50KQogICAgICAgICByZXR1cm47Ci0gICAgZC0+bV9jYXJl
dFBhaW50ID0gIWNhcmV0UGFpbnQ7CisgICAgbV9jYXJldFBhaW50ID0gIWNhcmV0UGFpbnQ7CiAg
ICAgc2VsZWN0aW9uKCktPmludmFsaWRhdGVDYXJldFJlY3QoKTsKICNlbmRpZgogfQpAQCAtNjQ2
LDcgKzY2Niw3IEBAIHZvaWQgRnJhbWU6OmNhcmV0QmxpbmtUaW1lckZpcmVkKFRpbWVyPEYKIHZv
aWQgRnJhbWU6OnBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0KiBwLCBpbnQgdHgsIGludCB0eSwg
Y29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQp
Ci0gICAgaWYgKGQtPm1fY2FyZXRQYWludCAmJiBkLT5tX2NhcmV0VmlzaWJsZSkKKyAgICBpZiAo
bV9jYXJldFBhaW50ICYmIG1fY2FyZXRWaXNpYmxlKQogICAgICAgICBzZWxlY3Rpb24oKS0+cGFp
bnRDYXJldChwLCB0eCwgdHksIGNsaXBSZWN0KTsKICNlbmRpZgogfQpAQCAtNjU0LDcgKzY3NCw3
IEBAIHZvaWQgRnJhbWU6OnBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0KiAKIHZvaWQgRnJhbWU6
OnBhaW50RHJhZ0NhcmV0KEdyYXBoaWNzQ29udGV4dCogcCwgaW50IHR4LCBpbnQgdHksIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KSBjb25zdAogewogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAg
IFNlbGVjdGlvbkNvbnRyb2xsZXIqIGRyYWdDYXJldENvbnRyb2xsZXIgPSBkLT5tX3BhZ2UtPmRy
YWdDYXJldENvbnRyb2xsZXIoKTsKKyAgICBTZWxlY3Rpb25Db250cm9sbGVyKiBkcmFnQ2FyZXRD
b250cm9sbGVyID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCk7CiAgICAgQVNTRVJUKGRy
YWdDYXJldENvbnRyb2xsZXItPnNlbGVjdGlvbigpLmlzQ2FyZXQoKSk7CiAgICAgaWYgKGRyYWdD
YXJldENvbnRyb2xsZXItPnNlbGVjdGlvbigpLnN0YXJ0KCkubm9kZSgpLT5kb2N1bWVudCgpLT5m
cmFtZSgpID09IHRoaXMpCiAgICAgICAgIGRyYWdDYXJldENvbnRyb2xsZXItPnBhaW50Q2FyZXQo
cCwgdHgsIHR5LCBjbGlwUmVjdCk7CkBAIC02NjMsMjAgKzY4MywyMCBAQCB2b2lkIEZyYW1lOjpw
YWludERyYWdDYXJldChHcmFwaGljc0NvbnRlCiAKIGZsb2F0IEZyYW1lOjp6b29tRmFjdG9yKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZC0+bV96b29tRmFjdG9yOworICAgIHJldHVybiBtX3pvb21G
YWN0b3I7CiB9CiAKIGJvb2wgRnJhbWU6OmlzWm9vbUZhY3RvclRleHRPbmx5KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZC0+bV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCk7CisgICAg
cmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpOwogfQogCiBib29sIEZy
YW1lOjpzaG91bGRBcHBseVRleHRab29tKCkgY29uc3QKIHsKLSAgICBpZiAoZC0+bV96b29tRmFj
dG9yID09IDEuMGYgfHwgIWlzWm9vbUZhY3RvclRleHRPbmx5KCkpCisgICAgaWYgKG1fem9vbUZh
Y3RvciA9PSAxLjBmIHx8ICFpc1pvb21GYWN0b3JUZXh0T25seSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAoZC0+bV9kb2MgJiYgZC0+bV9kb2MtPmlz
U1ZHRG9jdW1lbnQoKSkKKyAgICBpZiAobV9kb2MgJiYgbV9kb2MtPmlzU1ZHRG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CkBAIC02ODQs
MTAgKzcwNCwxMCBAQCBib29sIEZyYW1lOjpzaG91bGRBcHBseVRleHRab29tKCkgY29uc3QKIAog
Ym9vbCBGcmFtZTo6c2hvdWxkQXBwbHlQYWdlWm9vbSgpIGNvbnN0CiB7Ci0gICAgaWYgKGQtPm1f
em9vbUZhY3RvciA9PSAxLjBmIHx8IGlzWm9vbUZhY3RvclRleHRPbmx5KCkpCisgICAgaWYgKG1f
em9vbUZhY3RvciA9PSAxLjBmIHx8IGlzWm9vbUZhY3RvclRleHRPbmx5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNpZiBFTkFCTEUoU1ZHKQotICAgIGlmIChkLT5tX2RvYyAmJiBkLT5tX2Rv
Yy0+aXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChtX2RvYyAmJiBtX2RvYy0+aXNTVkdEb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTY5NSw0NCArNzE1LDQ0IEBAIGJvb2wgRnJhbWU6OnNob3VsZEFwcGx5UGFnZVpvb20oKSBjb25z
dAogCiB2b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNlbnQsIGJvb2wgaXNUZXh0
T25seSkKIHsgIAotICAgIGlmIChkLT5tX3pvb21GYWN0b3IgPT0gcGVyY2VudCAmJiBpc1pvb21G
YWN0b3JUZXh0T25seSgpID09IGlzVGV4dE9ubHkpCisgICAgaWYgKG1fem9vbUZhY3RvciA9PSBw
ZXJjZW50ICYmIGlzWm9vbUZhY3RvclRleHRPbmx5KCkgPT0gaXNUZXh0T25seSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICAvLyBTVkcgZG9lc24ndCBjYXJlIGlmIHRo
ZSB6b29tIGZhY3RvciBpcyB0ZXh0IG9ubHkuICBJdCB3aWxsIGFsd2F5cyBhcHBseSBhIAogICAg
IC8vIHpvb20gdG8gdGhlIHdob2xlIFNWRy4KLSAgICBpZiAoZC0+bV9kb2MgJiYgZC0+bV9kb2Mt
PmlzU1ZHRG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoIXN0YXRpY19jYXN0PFNWR0RvY3VtZW50
Kj4oZC0+bV9kb2MuZ2V0KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKQorICAgIGlmIChtX2RvYyAm
JiBtX2RvYy0+aXNTVkdEb2N1bWVudCgpKSB7CisgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8U1ZH
RG9jdW1lbnQqPihtX2RvYy5nZXQoKSktPnpvb21BbmRQYW5FbmFibGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGQtPm1fem9vbUZhY3RvciA9IHBlcmNlbnQ7Ci0gICAgICAgIGQt
Pm1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbXNUZXh0T25seSh0cnVlKTsgLy8gV2UgZG8gdGhp
cyB0byBhdm9pZCBkb2luZyBhbnkgc2NhbGluZyBvZiBDU1MgcGl4ZWxzLCBzaW5jZSB0aGUgU1ZH
IGhhcyBpdHMgb3duIG5vdGlvbiBvZiB6b29tLgotICAgICAgICBpZiAoZC0+bV9kb2MtPnJlbmRl
cmVyKCkpCi0gICAgICAgICAgICBkLT5tX2RvYy0+cmVuZGVyZXIoKS0+cmVwYWludCgpOworICAg
ICAgICBtX3pvb21GYWN0b3IgPSBwZXJjZW50OworICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkt
PnNldFpvb21zVGV4dE9ubHkodHJ1ZSk7IC8vIFdlIGRvIHRoaXMgdG8gYXZvaWQgZG9pbmcgYW55
IHNjYWxpbmcgb2YgQ1NTIHBpeGVscywgc2luY2UgdGhlIFNWRyBoYXMgaXRzIG93biBub3Rpb24g
b2Ygem9vbS4KKyAgICAgICAgaWYgKG1fZG9jLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgbV9k
b2MtPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgogCi0gICAgZC0+bV96b29tRmFjdG9yID0gcGVyY2VudDsKLSAgICBkLT5tX3BhZ2UtPnNldHRp
bmdzKCktPnNldFpvb21zVGV4dE9ubHkoaXNUZXh0T25seSk7CisgICAgbV96b29tRmFjdG9yID0g
cGVyY2VudDsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21zVGV4dE9ubHkoaXNUZXh0
T25seSk7CiAKLSAgICBpZiAoZC0+bV9kb2MpCi0gICAgICAgIGQtPm1fZG9jLT5yZWNhbGNTdHls
ZShOb2RlOjpGb3JjZSk7CisgICAgaWYgKG1fZG9jKQorICAgICAgICBtX2RvYy0+cmVjYWxjU3R5
bGUoTm9kZTo6Rm9yY2UpOwogCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAg
ICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IoZC0+bV96b29tRmFjdG9yLCBpc1RleHRPbmx5KTsK
KyAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29tRmFjdG9yLCBpc1RleHRPbmx5KTsK
IAotICAgIGlmIChkLT5tX2RvYyAmJiBkLT5tX2RvYy0+cmVuZGVyZXIoKSAmJiBkLT5tX2RvYy0+
cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3KCktPmRpZEZpcnN0TGF5b3V0KCkpCisg
ICAgaWYgKG1fZG9jICYmIG1fZG9jLT5yZW5kZXJlcigpICYmIG1fZG9jLT5yZW5kZXJlcigpLT5u
ZWVkc0xheW91dCgpICYmIHZpZXcoKS0+ZGlkRmlyc3RMYXlvdXQoKSkKICAgICAgICAgdmlldygp
LT5sYXlvdXQoKTsKIH0KIAogdm9pZCBGcmFtZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywg
ZmxvYXQgbWluUGFnZVdpZHRoLCBmbG9hdCBtYXhQYWdlV2lkdGgsIGJvb2wgYWRqdXN0Vmlld1Np
emUpCiB7Ci0gICAgaWYgKCFkLT5tX2RvYykKKyAgICBpZiAoIW1fZG9jKQogICAgICAgICByZXR1
cm47CiAKLSAgICBkLT5tX2RvYy0+c2V0UHJpbnRpbmcocHJpbnRpbmcpOworICAgIG1fZG9jLT5z
ZXRQcmludGluZyhwcmludGluZyk7CiAgICAgdmlldygpLT5zZXRNZWRpYVR5cGUocHJpbnRpbmcg
PyAicHJpbnQiIDogInNjcmVlbiIpOwotICAgIGQtPm1fZG9jLT51cGRhdGVTdHlsZVNlbGVjdG9y
KCk7CisgICAgbV9kb2MtPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKICAgICBmb3JjZUxheW91dFdp
dGhQYWdlV2lkdGhSYW5nZShtaW5QYWdlV2lkdGgsIG1heFBhZ2VXaWR0aCwgYWRqdXN0Vmlld1Np
emUpOwogCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKQEAgLTc0MSwzNCArNzYx
LDM0IEBAIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGYKIAogdm9pZCBG
cmFtZTo6c2V0SlNTdGF0dXNCYXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBkLT5t
X2tqc1N0YXR1c0JhclRleHQgPSB0ZXh0OwotICAgIGlmIChkLT5tX3BhZ2UpCi0gICAgICAgIGQt
Pm1fcGFnZS0+Y2hyb21lKCktPnNldFN0YXR1c2JhclRleHQodGhpcywgZC0+bV9ranNTdGF0dXNC
YXJUZXh0KTsKKyAgICBtX2tqc1N0YXR1c0JhclRleHQgPSB0ZXh0OworICAgIGlmIChtX3BhZ2Up
CisgICAgICAgIG1fcGFnZS0+Y2hyb21lKCktPnNldFN0YXR1c2JhclRleHQodGhpcywgbV9ranNT
dGF0dXNCYXJUZXh0KTsKIH0KIAogdm9pZCBGcmFtZTo6c2V0SlNEZWZhdWx0U3RhdHVzQmFyVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgZC0+bV9ranNEZWZhdWx0U3RhdHVzQmFyVGV4
dCA9IHRleHQ7Ci0gICAgaWYgKGQtPm1fcGFnZSkKLSAgICAgICAgZC0+bV9wYWdlLT5jaHJvbWUo
KS0+c2V0U3RhdHVzYmFyVGV4dCh0aGlzLCBkLT5tX2tqc0RlZmF1bHRTdGF0dXNCYXJUZXh0KTsK
KyAgICBtX2tqc0RlZmF1bHRTdGF0dXNCYXJUZXh0ID0gdGV4dDsKKyAgICBpZiAobV9wYWdlKQor
ICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJUZXh0KHRoaXMsIG1fa2pzRGVm
YXVsdFN0YXR1c0JhclRleHQpOwogfQogCiBTdHJpbmcgRnJhbWU6OmpzU3RhdHVzQmFyVGV4dCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPm1fa2pzU3RhdHVzQmFyVGV4dDsKKyAgICByZXR1cm4g
bV9ranNTdGF0dXNCYXJUZXh0OwogfQogCiBTdHJpbmcgRnJhbWU6OmpzRGVmYXVsdFN0YXR1c0Jh
clRleHQoKSBjb25zdAogewotICAgcmV0dXJuIGQtPm1fa2pzRGVmYXVsdFN0YXR1c0JhclRleHQ7
CisgICByZXR1cm4gbV9ranNEZWZhdWx0U3RhdHVzQmFyVGV4dDsKIH0KIAogdm9pZCBGcmFtZTo6
c2V0TmVlZHNSZWFwcGx5U3R5bGVzKCkKIHsKLSAgICBpZiAoZC0+bV9uZWVkc1JlYXBwbHlTdHls
ZXMpCisgICAgaWYgKG1fbmVlZHNSZWFwcGx5U3R5bGVzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkLT5tX25lZWRzUmVhcHBseVN0eWxlcyA9IHRydWU7CisgICAgbV9uZWVkc1JlYXBwbHlTdHls
ZXMgPSB0cnVlOwogCiAgICAgLy8gRnJhbWVWaWV3J3MgImxheW91dCIgdGltZXIgaW5jbHVkZXMg
cmVhcHBseVN0eWxlcywgc28gZGVzcGl0ZSBpdHMKICAgICAvLyBuYW1lLCBpdCdzIHdoYXQgd2Ug
d2FudCB0byBjYWxsIGhlcmUuCkBAIC03NzgsMjEgKzc5OCwyMSBAQCB2b2lkIEZyYW1lOjpzZXRO
ZWVkc1JlYXBwbHlTdHlsZXMoKQogCiBib29sIEZyYW1lOjpuZWVkc1JlYXBwbHlTdHlsZXMoKSBj
b25zdAogewotICAgIHJldHVybiBkLT5tX25lZWRzUmVhcHBseVN0eWxlczsKKyAgICByZXR1cm4g
bV9uZWVkc1JlYXBwbHlTdHlsZXM7CiB9CiAKIHZvaWQgRnJhbWU6OnJlYXBwbHlTdHlsZXMoKQog
ewotICAgIGQtPm1fbmVlZHNSZWFwcGx5U3R5bGVzID0gZmFsc2U7CisgICAgbV9uZWVkc1JlYXBw
bHlTdHlsZXMgPSBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbGwgZG9lc24ndCByZWFs
bHkgbWFrZSBzZW5zZSBpbiBhIG1ldGhvZCBjYWxsZWQKICAgICAvLyAicmVhcHBseVN0eWxlcyIu
IFdlIHNob3VsZCBwcm9iYWJseSBldmVudHVhbGx5IG1vdmUgaXQgaW50byBpdHMgb3duCiAgICAg
Ly8gbWV0aG9kLgotICAgIGlmIChkLT5tX2RvYykKLSAgICAgICAgZC0+bV9kb2MtPmRvY0xvYWRl
cigpLT5zZXRBdXRvTG9hZEltYWdlcyhkLT5tX3BhZ2UgJiYgZC0+bV9wYWdlLT5zZXR0aW5ncygp
LT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgaWYgKG1fZG9jKQorICAgICAgICBt
X2RvYy0+ZG9jTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKG1fcGFnZSAmJiBtX3BhZ2UtPnNl
dHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKICAgICAgICAgCiAjaWYgRlJB
TUVfTE9BRFNfVVNFUl9TVFlMRVNIRUVUCi0gICAgY29uc3QgS1VSTCB1c2VyU3R5bGVTaGVldExv
Y2F0aW9uID0gZC0+bV9wYWdlID8gZC0+bV9wYWdlLT5zZXR0aW5ncygpLT51c2VyU3R5bGVTaGVl
dExvY2F0aW9uKCkgOiBLVVJMKCk7CisgICAgY29uc3QgS1VSTCB1c2VyU3R5bGVTaGVldExvY2F0
aW9uID0gbV9wYWdlID8gbV9wYWdlLT5zZXR0aW5ncygpLT51c2VyU3R5bGVTaGVldExvY2F0aW9u
KCkgOiBLVVJMKCk7CiAgICAgaWYgKCF1c2VyU3R5bGVTaGVldExvY2F0aW9uLmlzRW1wdHkoKSkK
ICAgICAgICAgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1c2VyU3R5bGVTaGVldExvY2F0aW9u
KTsKICAgICBlbHNlCkBAIC04MDMsOCArODIzLDggQEAgdm9pZCBGcmFtZTo6cmVhcHBseVN0eWxl
cygpCiAgICAgLy8gVGhlIGRvY3VtZW50IGF1dG9tYXRpY2FsbHkgZG9lcyB0aGlzIGFzIHJlcXVp
cmVkIHdoZW4geW91IHNldCB0aGUgc3R5bGUgc2hlZXQuCiAgICAgLy8gQnV0IHdlIGhhZCBwcm9i
bGVtcyB3aGVuIHRoaXMgY29kZSB3YXMgcmVtb3ZlZC4gRGV0YWlscyBhcmUgaW4KICAgICAvLyA8
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3OT4uCi0gICAgaWYgKGQt
Pm1fZG9jKQotICAgICAgICBkLT5tX2RvYy0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOworICAgIGlm
IChtX2RvYykKKyAgICAgICAgbV9kb2MtPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKIH0KIAogYm9v
bCBGcmFtZTo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvbiYgbmV3U2VsZWN0
aW9uKSBjb25zdApAQCAtODI1LDExICs4NDUsMTEgQEAgYm9vbCBGcmFtZTo6c2hvdWxkRGVsZXRl
U2VsZWN0aW9uKGNvbnN0IAogCiBib29sIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0
IAogewotICAgIGlmIChkLT5tX2VkaXRvci5jbGllbnRJc0VkaXRhYmxlKCkpCisgICAgaWYgKG1f
ZWRpdG9yLmNsaWVudElzRWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KCFkLT5tX2RvYykKKyAgICBpZiAoIW1fZG9jKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIGQtPm1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKKyAgICByZXR1cm4gbV9kb2MtPmluRGVz
aWduTW9kZSgpOwogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykKQEAgLTg0MywyMiArODYzLDIyIEBA
IHZvaWQgRnJhbWU6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm8KIHZvaWQgRnJhbWU6OnVw
ZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpCiB7CiAgICAgaWYgKHNlbGVjdGlvbigp
LT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eShkLT5tX2RvYy0+dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSk7CisgICAgICAg
IHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnkobV9kb2MtPnVzZVNlY3VyZUtleWJvYXJkRW50cnlX
aGVuQWN0aXZlKCkpOwogfQogCiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqRnJhbWU6OnR5
cGluZ1N0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+bV90eXBpbmdTdHlsZS5nZXQoKTsK
KyAgICByZXR1cm4gbV90eXBpbmdTdHlsZS5nZXQoKTsKIH0KIAogdm9pZCBGcmFtZTo6c2V0VHlw
aW5nU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKnN0eWxlKQogewotICAgIGQtPm1f
dHlwaW5nU3R5bGUgPSBzdHlsZTsKKyAgICBtX3R5cGluZ1N0eWxlID0gc3R5bGU7CiB9CiAKIHZv
aWQgRnJhbWU6OmNsZWFyVHlwaW5nU3R5bGUoKQogewotICAgIGQtPm1fdHlwaW5nU3R5bGUgPSAw
OworICAgIG1fdHlwaW5nU3R5bGUgPSAwOwogfQogCiB2b2lkIEZyYW1lOjpjb21wdXRlQW5kU2V0
VHlwaW5nU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbikKQEAgLTkwMSw3ICs5MjEsNyBAQCB2b2lkIEZyYW1lOjpjb21wdXRlQW5kU2V0VHlw
aW5nU3R5bGUoQ1NTCiAgICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3Jl
YXRlKGRvY3VtZW50KCksIGJsb2NrU3R5bGUuZ2V0KCksIGVkaXRpbmdBY3Rpb24pKTsKICAgICAK
ICAgICAvLyBTZXQgdGhlIHJlbWFpbmluZyBzdHlsZSBhcyB0aGUgdHlwaW5nIHN0eWxlLgotICAg
IGQtPm1fdHlwaW5nU3R5bGUgPSBtdXRhYmxlU3R5bGUucmVsZWFzZSgpOworICAgIG1fdHlwaW5n
U3R5bGUgPSBtdXRhYmxlU3R5bGUucmVsZWFzZSgpOwogfQogCiBTdHJpbmcgRnJhbWU6OnNlbGVj
dGlvblN0YXJ0U3R5bGVQcm9wZXJ0eVZhbHVlKGludCBzdHlsZVByb3BlcnR5SUQpIGNvbnN0CkBA
IC05NDIsMTEgKzk2MiwxMSBAQCBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bj4gCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHN0eWxlRWxlbWVudCA9IGVsZW07CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAKLSAgICBpZiAoZC0+bV90eXBpbmdTdHlsZSkgeworICAgIGlmICht
X3R5cGluZ1N0eWxlKSB7CiAgICAgICAgIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0
ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgInNwYW4iLCBlYyk7CiAgICAgICAgIEFTU0VS
VChlYyA9PSAwKTsKIAotICAgICAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0
dHIsIGQtPm1fdHlwaW5nU3R5bGUtPmNzc1RleHQoKS5pbXBsKCksIGVjKTsKKyAgICAgICAgc3R5
bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBtX3R5cGluZ1N0eWxlLT5jc3NUZXh0
KCkuaW1wbCgpLCBlYyk7CiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAgCiAgICAg
ICAgIHN0eWxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS0+Y3JlYXRlRWRpdGluZ1Rl
eHROb2RlKCIiKSwgZWMpOwpAQCAtMTAxMiwxMCArMTAzMiwxMCBAQCB2b2lkIEZyYW1lOjp0ZXh0
RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtCiAKIHZvaWQgRnJhbWU6OmFwcGx5RWRpdGluZ1N0eWxl
VG9Cb2R5RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFkLT5tX2RvYykKKyAgICBpZiAoIW1f
ZG9jKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIFJlZlB0cjxOb2RlTGlzdD4gbGlz
dCA9IGQtPm1fZG9jLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpOworICAgIFJlZlB0cjxO
b2RlTGlzdD4gbGlzdCA9IG1fZG9jLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpOwogICAg
IHVuc2lnbmVkIGxlbiA9IGxpc3QtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW47IGkrKykgewogICAgICAgICBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obGlzdC0+aXRlbShpKSkpOyAgICAKQEAgLTEwMjQsMTAgKzEwNDQs
MTAgQEAgdm9pZCBGcmFtZTo6YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZQogCiB2b2lkIEZy
YW1lOjpyZW1vdmVFZGl0aW5nU3R5bGVGcm9tQm9keUVsZW1lbnQoKSBjb25zdAogewotICAgIGlm
ICghZC0+bV9kb2MpCisgICAgaWYgKCFtX2RvYykKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICBSZWZQdHI8Tm9kZUxpc3Q+IGxpc3QgPSBkLT5tX2RvYy0+Z2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKTsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGxpc3QgPSBtX2RvYy0+Z2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKTsKICAgICB1bnNpZ25lZCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgcmVtb3Zl
RWRpdGluZ1N0eWxlRnJvbUVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGxpc3QtPml0ZW0o
aSkpKTsgICAgCkBAIC0xMDY1LDEzICsxMDg1LDEzIEBAIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4m
IGtlZXBBbGl2ZVNldCgpCiAKIHZvaWQgRnJhbWU6OmtlZXBBbGl2ZSgpCiB7Ci0gICAgaWYgKGQt
Pm1fbGlmZVN1cHBvcnRUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmIChtX2xpZmVTdXBwb3J0VGlt
ZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogI2lmbmRlZiBOREVCVUcKICAgICBrZWVw
QWxpdmVTZXQoKS5hZGQodGhpcyk7CiAjZW5kaWYKICAgICByZWYoKTsKLSAgICBkLT5tX2xpZmVT
dXBwb3J0VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fbGlmZVN1cHBvcnRUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xMDgwLDcgKzExMDAsNyBAQCB2
b2lkIEZyYW1lOjpjYW5jZWxBbGxLZWVwQWxpdmUoKQogICAgIEhhc2hTZXQ8RnJhbWUqPjo6aXRl
cmF0b3IgZW5kID0ga2VlcEFsaXZlU2V0KCkuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEZyYW1l
Kj46Oml0ZXJhdG9yIGl0ID0ga2VlcEFsaXZlU2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9ICppdDsKLSAgICAgICAgZnJhbWUtPmQtPm1fbGlm
ZVN1cHBvcnRUaW1lci5zdG9wKCk7CisgICAgICAgIGZyYW1lLT5tX2xpZmVTdXBwb3J0VGltZXIu
c3RvcCgpOwogICAgICAgICBmcmFtZS0+ZGVyZWYoKTsKICAgICB9CiAgICAga2VlcEFsaXZlU2V0
KCkuY2xlYXIoKTsKQEAgLTEwOTcsMTEgKzExMTcsMTEgQEAgdm9pZCBGcmFtZTo6bGlmZVN1cHBv
cnRUaW1lckZpcmVkKFRpbWVyPAogCiB2b2lkIEZyYW1lOjpjbGVhckRPTVdpbmRvdygpCiB7Ci0g
ICAgaWYgKGQtPm1fZG9tV2luZG93KSB7Ci0gICAgICAgIGQtPm1fbGl2ZUZvcm1lcldpbmRvd3Mu
YWRkKGQtPm1fZG9tV2luZG93LmdldCgpKTsKLSAgICAgICAgZC0+bV9kb21XaW5kb3ctPmNsZWFy
KCk7CisgICAgaWYgKG1fZG9tV2luZG93KSB7CisgICAgICAgIG1fbGl2ZUZvcm1lcldpbmRvd3Mu
YWRkKG1fZG9tV2luZG93LmdldCgpKTsKKyAgICAgICAgbV9kb21XaW5kb3ctPmNsZWFyKCk7CiAg
ICAgfQotICAgIGQtPm1fZG9tV2luZG93ID0gMDsKKyAgICBtX2RvbVdpbmRvdyA9IDA7CiB9CiAK
IFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdApAQCAtMTExOCwxMiAr
MTEzOCwxMiBAQCBSZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uCiAKIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogRnJhbWU6Om93bmVyRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGQtPm1fb3duZXJFbGVtZW50OworICAgIHJldHVybiBtX293bmVyRWxlbWVudDsKIH0K
IAogUmVuZGVyUGFydCogRnJhbWU6Om93bmVyUmVuZGVyZXIoKSBjb25zdAogewotICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gZC0+bV9vd25lckVsZW1lbnQ7CisgICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKICAg
ICBpZiAoIW93bmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCk7CkBAIC0xMTMxLDcgKzExNTEsNyBA
QCBSZW5kZXJQYXJ0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVy
biAwOwogICAgIC8vIEZJWE1FOiBJZiA8b2JqZWN0PiBpcyBldmVyIGZpeGVkIHRvIGRpc2Fzc29j
aWF0ZSBpdHNlbGYgZnJvbSBmcmFtZXMKICAgICAvLyB0aGF0IGl0IGhhcyBzdGFydGVkIGJ1dCBj
YW5jZWxlZCwgdGhlbiB0aGlzIGNhbiB0dXJuIGludG8gYW4gQVNTRVJUCi0gICAgLy8gc2luY2Ug
ZC0+bV9vd25lckVsZW1lbnQgd291bGQgYmUgMCB3aGVuIHRoZSBsb2FkIGlzIGNhbmNlbGVkLgor
ICAgIC8vIHNpbmNlIG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIDAgd2hlbiB0aGUgbG9hZCBpcyBj
YW5jZWxlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1ODUKICAgICBpZiAoIW9iamVjdC0+aXNSZW5kZXJQYXJ0KCkpCiAgICAgICAgIHJldHVybiAw
OwpAQCAtMTE0MCwyOSArMTE2MCwyOSBAQCBSZW5kZXJQYXJ0KiBGcmFtZTo6b3duZXJSZW5kZXJl
cigpIGNvbnN0CiAKIGJvb2wgRnJhbWU6OmlzRGlzY29ubmVjdGVkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZC0+bV9pc0Rpc2Nvbm5lY3RlZDsKKyAgICByZXR1cm4gbV9pc0Rpc2Nvbm5lY3RlZDsK
IH0KIAogdm9pZCBGcmFtZTo6c2V0SXNEaXNjb25uZWN0ZWQoYm9vbCBpc0Rpc2Nvbm5lY3RlZCkK
IHsKLSAgICBkLT5tX2lzRGlzY29ubmVjdGVkID0gaXNEaXNjb25uZWN0ZWQ7CisgICAgbV9pc0Rp
c2Nvbm5lY3RlZCA9IGlzRGlzY29ubmVjdGVkOwogfQogCiBib29sIEZyYW1lOjpleGNsdWRlRnJv
bVRleHRTZWFyY2goKSBjb25zdAogewotICAgIHJldHVybiBkLT5tX2V4Y2x1ZGVGcm9tVGV4dFNl
YXJjaDsKKyAgICByZXR1cm4gbV9leGNsdWRlRnJvbVRleHRTZWFyY2g7CiB9CiAKIHZvaWQgRnJh
bWU6OnNldEV4Y2x1ZGVGcm9tVGV4dFNlYXJjaChib29sIGV4Y2x1ZGUpCiB7Ci0gICAgZC0+bV9l
eGNsdWRlRnJvbVRleHRTZWFyY2ggPSBleGNsdWRlOworICAgIG1fZXhjbHVkZUZyb21UZXh0U2Vh
cmNoID0gZXhjbHVkZTsKIH0KIAogLy8gcmV0dXJucyBGbG9hdFJlY3QgYmVjYXVzZSBnb2luZyB0
aHJvdWdoIEludFJlY3Qgd291bGQgdHJ1bmNhdGUgYW55IGZsb2F0cwogRmxvYXRSZWN0IEZyYW1l
OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAg
ICBSZW5kZXJWaWV3KiByb290ID0gY29udGVudFJlbmRlcmVyKCk7Ci0gICAgRnJhbWVWaWV3KiB2
aWV3ID0gZC0+bV92aWV3LmdldCgpOworICAgIEZyYW1lVmlldyogdmlldyA9IG1fdmlldy5nZXQo
KTsKICAgICBpZiAoIXJvb3QgfHwgIXZpZXcpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAg
ICAgCkBAIC0xMTgyLDcgKzEyMDIsNyBAQCB2b2lkIEZyYW1lOjpzZWxlY3Rpb25UZXh0UmVjdHMo
VmVjdG9yPEZsCiAgICAgc2VsZWN0ZWRSYW5nZS0+YWRkTGluZUJveFJlY3RzKGludFJlY3RzLCB0
cnVlKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBpbnRSZWN0cy5zaXplKCk7Ci0gICAgRmxvYXRS
ZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGQtPm1fdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7
CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fdmlldy0+dmlzaWJsZUNvbnRl
bnRSZWN0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAg
ICAgaWYgKGNsaXBUb1Zpc2libGVDb250ZW50KQogICAgICAgICAgICAgcmVjdHMuYXBwZW5kKGlu
dGVyc2VjdGlvbihpbnRSZWN0c1tpXSwgdmlzaWJsZUNvbnRlbnRSZWN0KSk7CkBAIC0xMTkzLDcg
KzEyMTMsNyBAQCB2b2lkIEZyYW1lOjpzZWxlY3Rpb25UZXh0UmVjdHMoVmVjdG9yPEZsCiAKIGJv
b2wgRnJhbWU6OmlzRnJhbWVTZXQoKSBjb25zdAogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGQtPm1fZG9jLmdldCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9jLmdldCgpOwog
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSAqYm9keSA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVu
dCo+KGRvY3VtZW50KS0+Ym9keSgpOwpAQCAtMTIyMiw3ICsxMjQyLDcgQEAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCAqc2NhbkZvckZvcm0oTm9kZQogSFRNTEZvcm1FbGVtZW50ICpGcmFtZTo6Y3Vy
cmVudEZvcm0oKSBjb25zdAogewogICAgIC8vIHN0YXJ0IGxvb2tpbmcgZWl0aGVyIGF0IHRoZSBh
Y3RpdmUgKGZpcnN0IHJlc3BvbmRlcikgbm9kZSwgb3Igd2hlcmUgdGhlIHNlbGVjdGlvbiBpcwot
ICAgIE5vZGUgKnN0YXJ0ID0gZC0+bV9kb2MgPyBkLT5tX2RvYy0+Zm9jdXNlZE5vZGUoKSA6IDA7
CisgICAgTm9kZSAqc3RhcnQgPSBtX2RvYyA/IG1fZG9jLT5mb2N1c2VkTm9kZSgpIDogMDsKICAg
ICBpZiAoIXN0YXJ0KQogICAgICAgICBzdGFydCA9IHNlbGVjdGlvbigpLT5zdGFydCgpLm5vZGUo
KTsKICAgICAKQEAgLTEzMTYsNyArMTMzNiw3IEBAIEZyYW1lKiBGcmFtZTo6ZnJhbWVGb3JXaWRn
ZXQoY29uc3QgV2lkZ2UKIAogdm9pZCBGcmFtZTo6Zm9yY2VMYXlvdXQoYm9vbCBhbGxvd1N1YnRy
ZWUpCiB7Ci0gICAgRnJhbWVWaWV3ICp2ID0gZC0+bV92aWV3LmdldCgpOworICAgIEZyYW1lVmll
dyAqdiA9IG1fdmlldy5nZXQoKTsKICAgICBpZiAodikgewogICAgICAgICB2LT5sYXlvdXQoYWxs
b3dTdWJ0cmVlKTsKICAgICAgICAgLy8gV2UgY2Fubm90IHVuc2NoZWR1bGUgYSBwZW5kaW5nIHJl
bGF5b3V0LCBzaW5jZSB0aGUgZm9yY2UgY2FuIGJlIGNhbGxlZCB3aXRoCkBAIC0xMzY1LDcgKzEz
ODUsNyBAQCB2b2lkIEZyYW1lOjpzZW5kUmVzaXplRXZlbnQoKQogCiB2b2lkIEZyYW1lOjpzZW5k
U2Nyb2xsRXZlbnQoKQogewotICAgIEZyYW1lVmlldyogdiA9IGQtPm1fdmlldy5nZXQoKTsKKyAg
ICBGcmFtZVZpZXcqIHYgPSBtX3ZpZXcuZ2V0KCk7CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1
cm47CiAgICAgdi0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIodHJ1ZSk7CkBAIC0xMzkwLDcgKzE0MTAs
NyBAQCB2b2lkIEZyYW1lOjpjbGVhclRpbWVycyhGcmFtZVZpZXcgKnZpZXcsCiAKIHZvaWQgRnJh
bWU6OmNsZWFyVGltZXJzKCkKIHsKLSAgICBjbGVhclRpbWVycyhkLT5tX3ZpZXcuZ2V0KCksIGRv
Y3VtZW50KCkpOworICAgIGNsZWFyVGltZXJzKG1fdmlldy5nZXQoKSwgZG9jdW1lbnQoKSk7CiB9
CiAKIFJlbmRlclN0eWxlICpGcmFtZTo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydChOb2RlICombm9k
ZVRvUmVtb3ZlKSBjb25zdApAQCAtMTQwOSwxNCArMTQyOSwxNCBAQCBSZW5kZXJTdHlsZSAqRnJh
bWU6OnN0eWxlRm9yU2VsZWN0aW9uU3RhCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
MDsKICAgICAKLSAgICBpZiAoIWQtPm1fdHlwaW5nU3R5bGUpCisgICAgaWYgKCFtX3R5cGluZ1N0
eWxlKQogICAgICAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKICAgICAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50
ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAic3BhbiIs
IGVjKTsKICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgCi0gICAgU3RyaW5nIHN0eWxlVGV4dCA9
IGQtPm1fdHlwaW5nU3R5bGUtPmNzc1RleHQoKSArICIgZGlzcGxheTogaW5saW5lIjsKKyAgICBT
dHJpbmcgc3R5bGVUZXh0ID0gbV90eXBpbmdTdHlsZS0+Y3NzVGV4dCgpICsgIiBkaXNwbGF5OiBp
bmxpbmUiOwogICAgIHN0eWxlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgc3R5bGVU
ZXh0LmltcGwoKSwgZWMpOwogICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAKQEAgLTE0NDcsMTIg
KzE0NjcsMTIgQEAgdm9pZCBGcmFtZTo6c2V0U2VsZWN0aW9uRnJvbU5vbmUoKQogCiBib29sIEZy
YW1lOjppblZpZXdTb3VyY2VNb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+bV9pblZpZXdT
b3VyY2VNb2RlOworICAgIHJldHVybiBtX2luVmlld1NvdXJjZU1vZGU7CiB9CiAKLXZvaWQgRnJh
bWU6OnNldEluVmlld1NvdXJjZU1vZGUoYm9vbCBtb2RlKSBjb25zdAordm9pZCBGcmFtZTo6c2V0
SW5WaWV3U291cmNlTW9kZShib29sIG1vZGUpCiB7Ci0gICAgZC0+bV9pblZpZXdTb3VyY2VNb2Rl
ID0gbW9kZTsKKyAgICBtX2luVmlld1NvdXJjZU1vZGUgPSBtb2RlOwogfQogCiBVQ2hhciBGcmFt
ZTo6YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpIGNvbnN0CkBAIC0xNTk5LDEzICsxNjE5LDEz
IEBAIHVuc2lnbmVkIEZyYW1lOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQoY28KICAgICAvLyBEbyBh
ICJmYWtlIiBwYWludCBpbiBvcmRlciB0byBleGVjdXRlIHRoZSBjb2RlIHRoYXQgY29tcHV0ZXMg
dGhlIHJlbmRlcmVkIHJlY3QgZm9yIAogICAgIC8vIGVhY2ggdGV4dCBtYXRjaC4KICAgICBEb2N1
bWVudCogZG9jID0gZG9jdW1lbnQoKTsKLSAgICBpZiAoZG9jICYmIGQtPm1fdmlldyAmJiBjb250
ZW50UmVuZGVyZXIoKSkgeworICAgIGlmIChkb2MgJiYgbV92aWV3ICYmIGNvbnRlbnRSZW5kZXJl
cigpKSB7CiAgICAgICAgIGRvYy0+dXBkYXRlTGF5b3V0KCk7IC8vIEVuc3VyZSBsYXlvdXQgaXMg
dXAgdG8gZGF0ZS4KLSAgICAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IGQtPm1fdmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KCk7CisgICAgICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSBtX3ZpZXct
PnZpc2libGVDb250ZW50UmVjdCgpOwogICAgICAgICBpZiAoIXZpc2libGVSZWN0LmlzRW1wdHko
KSkgewogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoKFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0KikwKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0UGFpbnRpbmdEaXNhYmxlZCh0
cnVlKTsKLSAgICAgICAgICAgIGQtPm1fdmlldy0+cGFpbnRDb250ZW50cygmY29udGV4dCwgdmlz
aWJsZVJlY3QpOworICAgICAgICAgICAgbV92aWV3LT5wYWludENvbnRlbnRzKCZjb250ZXh0LCB2
aXNpYmxlUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xNjE0LDUzICsxNjM0LDUz
IEBAIHVuc2lnbmVkIEZyYW1lOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQoY28KIAogYm9vbCBGcmFt
ZTo6bWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGQtPm1faGlnaGxpZ2h0VGV4dE1hdGNoZXM7CisgICAgcmV0dXJuIG1faGlnaGxpZ2h0VGV4dE1h
dGNoZXM7CiB9CiAKIHZvaWQgRnJhbWU6OnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQoYm9vbCBmbGFnKQogewotICAgIGlmIChmbGFnID09IGQtPm1faGlnaGxpZ2h0VGV4dE1hdGNo
ZXMgfHwgIWRvY3VtZW50KCkpCisgICAgaWYgKGZsYWcgPT0gbV9oaWdobGlnaHRUZXh0TWF0Y2hl
cyB8fCAhZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGQtPm1faGlnaGxp
Z2h0VGV4dE1hdGNoZXMgPSBmbGFnOworICAgIG1faGlnaGxpZ2h0VGV4dE1hdGNoZXMgPSBmbGFn
OwogICAgIGRvY3VtZW50KCktPnJlcGFpbnRNYXJrZXJzKERvY3VtZW50TWFya2VyOjpUZXh0TWF0
Y2gpOwogfQogCiBGcmFtZVRyZWUqIEZyYW1lOjp0cmVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
JmQtPm1fdHJlZU5vZGU7CisgICAgcmV0dXJuICZtX3RyZWVOb2RlOwogfQogCiB2b2lkIEZyYW1l
OjpzZXRET01XaW5kb3coRE9NV2luZG93KiBkb21XaW5kb3cpCiB7Ci0gICAgaWYgKGQtPm1fZG9t
V2luZG93KSB7Ci0gICAgICAgIGQtPm1fbGl2ZUZvcm1lcldpbmRvd3MuYWRkKGQtPm1fZG9tV2lu
ZG93LmdldCgpKTsKLSAgICAgICAgZC0+bV9kb21XaW5kb3ctPmNsZWFyKCk7CisgICAgaWYgKG1f
ZG9tV2luZG93KSB7CisgICAgICAgIG1fbGl2ZUZvcm1lcldpbmRvd3MuYWRkKG1fZG9tV2luZG93
LmdldCgpKTsKKyAgICAgICAgbV9kb21XaW5kb3ctPmNsZWFyKCk7CiAgICAgfQotICAgIGQtPm1f
ZG9tV2luZG93ID0gZG9tV2luZG93OworICAgIG1fZG9tV2luZG93ID0gZG9tV2luZG93OwogfQog
CiBET01XaW5kb3cqIEZyYW1lOjpkb21XaW5kb3coKSBjb25zdAogewotICAgIGlmICghZC0+bV9k
b21XaW5kb3cpCi0gICAgICAgIGQtPm1fZG9tV2luZG93ID0gRE9NV2luZG93OjpjcmVhdGUoY29u
c3RfY2FzdDxGcmFtZSo+KHRoaXMpKTsKKyAgICBpZiAoIW1fZG9tV2luZG93KQorICAgICAgICBt
X2RvbVdpbmRvdyA9IERPTVdpbmRvdzo6Y3JlYXRlKGNvbnN0X2Nhc3Q8RnJhbWUqPih0aGlzKSk7
CiAKLSAgICByZXR1cm4gZC0+bV9kb21XaW5kb3cuZ2V0KCk7CisgICAgcmV0dXJuIG1fZG9tV2lu
ZG93LmdldCgpOwogfQogCiB2b2lkIEZyYW1lOjpjbGVhckZvcm1lckRPTVdpbmRvdyhET01XaW5k
b3cqIHdpbmRvdykKIHsKLSAgICBkLT5tX2xpdmVGb3JtZXJXaW5kb3dzLnJlbW92ZSh3aW5kb3cp
OyAgICAKKyAgICBtX2xpdmVGb3JtZXJXaW5kb3dzLnJlbW92ZSh3aW5kb3cpOyAgICAKIH0KIAog
UGFnZSogRnJhbWU6OnBhZ2UoKSBjb25zdAogewotICAgIHJldHVybiBkLT5tX3BhZ2U7CisgICAg
cmV0dXJuIG1fcGFnZTsKIH0KIAogRXZlbnRIYW5kbGVyKiBGcmFtZTo6ZXZlbnRIYW5kbGVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gJmQtPm1fZXZlbnRIYW5kbGVyOworICAgIHJldHVybiAmbV9l
dmVudEhhbmRsZXI7CiB9CiAKIHZvaWQgRnJhbWU6OnBhZ2VEZXN0cm95ZWQoKQpAQCAtMTY4Miwx
OSArMTcwMiwxOSBAQCB2b2lkIEZyYW1lOjpwYWdlRGVzdHJveWVkKCkKICAgICBzY3JpcHQoKS0+
Y2xlYXJTY3JpcHRPYmplY3RzKCk7CiAgICAgc2NyaXB0KCktPnVwZGF0ZVBsYXRmb3JtU2NyaXB0
T2JqZWN0cygpOwogCi0gICAgZC0+bV9wYWdlID0gMDsKKyAgICBtX3BhZ2UgPSAwOwogfQogCiB2
b2lkIEZyYW1lOjpkaXNjb25uZWN0T3duZXJFbGVtZW50KCkKIHsKLSAgICBpZiAoZC0+bV9vd25l
ckVsZW1lbnQpIHsKKyAgICBpZiAobV9vd25lckVsZW1lbnQpIHsKICAgICAgICAgaWYgKERvY3Vt
ZW50KiBkb2MgPSBkb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jLT5jbGVhckFYT2JqZWN0Q2Fj
aGUoKTsKLSAgICAgICAgZC0+bV9vd25lckVsZW1lbnQtPm1fY29udGVudEZyYW1lID0gMDsKLSAg
ICAgICAgaWYgKGQtPm1fcGFnZSkKLSAgICAgICAgICAgIGQtPm1fcGFnZS0+ZGVjcmVtZW50RnJh
bWVDb3VudCgpOworICAgICAgICBtX293bmVyRWxlbWVudC0+bV9jb250ZW50RnJhbWUgPSAwOwor
ICAgICAgICBpZiAobV9wYWdlKQorICAgICAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNv
dW50KCk7CiAgICAgfQotICAgIGQtPm1fb3duZXJFbGVtZW50ID0gMDsKKyAgICBtX293bmVyRWxl
bWVudCA9IDA7CiB9CiAKIFN0cmluZyBGcmFtZTo6ZG9jdW1lbnRUeXBlU3RyaW5nKCkgY29uc3QK
QEAgLTE4NDMsMzcgKzE4NjMsNSBAQCBEb2N1bWVudCogRnJhbWU6OmRvY3VtZW50QXRQb2ludChj
b25zdCBJCiAgICAgICAgIHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChwdCwgZmFsc2UpOwogICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyByZXN1bHQu
aW5uZXJOb2RlKCktPmRvY3VtZW50KCkgOiAwOwogfQotICAgIAotRnJhbWVQcml2YXRlOjpGcmFt
ZVByaXZhdGUoUGFnZSogcGFnZSwgRnJhbWUqIHBhcmVudCwgRnJhbWUqIHRoaXNGcmFtZSwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBGcmFtZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpCi0gICAgOiBtX3BhZ2Uo
cGFnZSkKLSAgICAsIG1fdHJlZU5vZGUodGhpc0ZyYW1lLCBwYXJlbnQpCi0gICAgLCBtX2xvYWRl
cih0aGlzRnJhbWUsIGZyYW1lTG9hZGVyQ2xpZW50KQotICAgICwgbV9vd25lckVsZW1lbnQob3du
ZXJFbGVtZW50KQotICAgICwgbV9zY3JpcHQodGhpc0ZyYW1lKQotICAgICwgbV96b29tRmFjdG9y
KHBhcmVudCA/IHBhcmVudC0+ZC0+bV96b29tRmFjdG9yIDogMS4wZikKLSAgICAsIG1fc2VsZWN0
aW9uR3JhbnVsYXJpdHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgLCBtX3NlbGVjdGlvbkNv
bnRyb2xsZXIodGhpc0ZyYW1lKQotICAgICwgbV9jYXJldEJsaW5rVGltZXIodGhpc0ZyYW1lLCAm
RnJhbWU6OmNhcmV0QmxpbmtUaW1lckZpcmVkKQotICAgICwgbV9lZGl0b3IodGhpc0ZyYW1lKQot
ICAgICwgbV9ldmVudEhhbmRsZXIodGhpc0ZyYW1lKQotICAgICwgbV9hbmltYXRpb25Db250cm9s
bGVyKHRoaXNGcmFtZSkKLSAgICAsIG1fbGlmZVN1cHBvcnRUaW1lcih0aGlzRnJhbWUsICZGcmFt
ZTo6bGlmZVN1cHBvcnRUaW1lckZpcmVkKQotICAgICwgbV9jYXJldFZpc2libGUoZmFsc2UpCi0g
ICAgLCBtX2NhcmV0UGFpbnQodHJ1ZSkKLSAgICAsIG1faGlnaGxpZ2h0VGV4dE1hdGNoZXMoZmFs
c2UpCi0gICAgLCBtX2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCi0gICAgLCBtX25lZWRzUmVhcHBs
eVN0eWxlcyhmYWxzZSkKLSAgICAsIG1faXNEaXNjb25uZWN0ZWQoZmFsc2UpCi0gICAgLCBtX2V4
Y2x1ZGVGcm9tVGV4dFNlYXJjaChmYWxzZSkKLSNpZiBGUkFNRV9MT0FEU19VU0VSX1NUWUxFU0hF
RVQKLSAgICAsIG1fdXNlclN0eWxlU2hlZXRMb2FkZXIoMCkKLSNlbmRpZgotewotfQotCi1GcmFt
ZVByaXZhdGU6On5GcmFtZVByaXZhdGUoKQotewotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RnJhbWUuaAkocmV2aXNpb24gNDAwMDEpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDIzIEBACiAjaWZuZGVmIEZyYW1lX2gKICNkZWZpbmUgRnJh
bWVfaAogCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgogI2luY2x1ZGUgIkVkaXRBY3Rpb24uaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNp
bmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1
ZGUgIkZyYW1lVHJlZS5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9u
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIgogCisjaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgIkZyYW1lV2luLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1B
QykKICNpZm5kZWYgX19PQkpDX18KIGNsYXNzIE5TQXJyYXk7CkBAIC02NCw2ICs3NiwxMCBAQCBj
bGFzcyBTZWxlY3Rpb247CiBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyOwogY2xhc3MgV2lkZ2V0
OwogCisjaWYgRlJBTUVfTE9BRFNfVVNFUl9TVFlMRVNIRUVUCisgICAgY2xhc3MgVXNlclN0eWxl
U2hlZXRMb2FkZXI7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRpbWVy
OwogCiBjbGFzcyBGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZyYW1lPiB7CkBAIC0xMTAsOCAr
MTI2LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZyYW1lKFBhZ2UqLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwotCi0gICAgRnJhbWVQcml2YXRlKiBk
OwogICAgIAogLy8gPT09IHVuZGVjaWRlZCwgd291bGQgbGlrZSB0byBjb25zaWRlciBtb3Zpbmcg
dG8gYW5vdGhlciBjbGFzcwogCkBAIC0xMjgsNyArMTQyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgZmxvYXQgbWluUGFnZVdpZHRoLCBmbG9hdCBtYXhQ
YWdlV2lkdGgsIGJvb2wgYWRqdXN0Vmlld1NpemUpOwogCiAgICAgYm9vbCBpblZpZXdTb3VyY2VN
b2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJblZpZXdTb3VyY2VNb2RlKGJvb2wgPSB0cnVlKSBj
b25zdDsKKyAgICB2b2lkIHNldEluVmlld1NvdXJjZU1vZGUoYm9vbCA9IHRydWUpOwogCiAgICAg
dm9pZCBrZWVwQWxpdmUoKTsgLy8gVXNlZCB0byBrZWVwIHRoZSBmcmFtZSBhbGl2ZSB3aGVuIHJ1
bm5pbmcgYSBzY3JpcHQgdGhhdCBtaWdodCBkZXN0cm95IGl0LgogI2lmbmRlZiBOREVCVUcKQEAg
LTIzOCw3ICsyNTIsNyBAQCBwdWJsaWM6CiAKIHB1YmxpYzoKICAgICBUZXh0R3JhbnVsYXJpdHkg
c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlbGVjdGlvbkdyYW51
bGFyaXR5KFRleHRHcmFudWxhcml0eSkgY29uc3Q7CisgICAgdm9pZCBzZXRTZWxlY3Rpb25HcmFu
dWxhcml0eShUZXh0R3JhbnVsYXJpdHkpOwogCiAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rp
b24oY29uc3QgU2VsZWN0aW9uJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGREZWxldGVTZWxlY3Rp
b24oY29uc3QgU2VsZWN0aW9uJikgY29uc3Q7CkBAIC0zMjEsNiArMzM1LDUxIEBAIHB1YmxpYzoK
IAogI2VuZGlmCiAKK3ByaXZhdGU6CisgICAgUGFnZSogbV9wYWdlOworICAgIG11dGFibGUgRnJh
bWVUcmVlIG1fdHJlZU5vZGU7CisgICAgbXV0YWJsZSBGcmFtZUxvYWRlciBtX2xvYWRlcjsKKwor
ICAgIG11dGFibGUgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5kb3c7CisgICAgSGFzaFNldDxE
T01XaW5kb3cqPiBtX2xpdmVGb3JtZXJXaW5kb3dzOworCisgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBtX293bmVyRWxlbWVudDsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX3ZpZXc7CisgICAg
UmVmUHRyPERvY3VtZW50PiBtX2RvYzsKKworICAgIFNjcmlwdENvbnRyb2xsZXIgbV9zY3JpcHQ7
CisKKyAgICBTdHJpbmcgbV9ranNTdGF0dXNCYXJUZXh0OworICAgIFN0cmluZyBtX2tqc0RlZmF1
bHRTdGF0dXNCYXJUZXh0OworCisgICAgZmxvYXQgbV96b29tRmFjdG9yOworCisgICAgVGV4dEdy
YW51bGFyaXR5IG1fc2VsZWN0aW9uR3JhbnVsYXJpdHk7CisKKyAgICBtdXRhYmxlIFNlbGVjdGlv
bkNvbnRyb2xsZXIgbV9zZWxlY3Rpb25Db250cm9sbGVyOworICAgIG11dGFibGUgU2VsZWN0aW9u
IG1fbWFyazsKKyAgICBUaW1lcjxGcmFtZT4gbV9jYXJldEJsaW5rVGltZXI7CisgICAgbXV0YWJs
ZSBFZGl0b3IgbV9lZGl0b3I7CisgICAgbXV0YWJsZSBFdmVudEhhbmRsZXIgbV9ldmVudEhhbmRs
ZXI7CisgICAgbXV0YWJsZSBBbmltYXRpb25Db250cm9sbGVyIG1fYW5pbWF0aW9uQ29udHJvbGxl
cjsKKworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV90eXBpbmdTdHls
ZTsKKworICAgIFRpbWVyPEZyYW1lPiBtX2xpZmVTdXBwb3J0VGltZXI7CisKKyAgICBib29sIG1f
Y2FyZXRWaXNpYmxlOworICAgIGJvb2wgbV9jYXJldFBhaW50OworICAgIAorICAgIGJvb2wgbV9o
aWdobGlnaHRUZXh0TWF0Y2hlczsKKyAgICBib29sIG1faW5WaWV3U291cmNlTW9kZTsKKyAgICBi
b29sIG1fbmVlZHNSZWFwcGx5U3R5bGVzOworICAgIGJvb2wgbV9pc0Rpc2Nvbm5lY3RlZDsKKyAg
ICBib29sIG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoOworCisjaWYgRlJBTUVfTE9BRFNfVVNFUl9T
VFlMRVNIRUVUCisgICAgVXNlclN0eWxlU2hlZXRMb2FkZXIqIG1fdXNlclN0eWxlU2hlZXRMb2Fk
ZXI7CisjZW5kaWYKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVBy
aXZhdGUuaAkocmV2aXNpb24gNDAwMDEpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOTkgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAxOTk4LCAx
OTk5IFRvcmJlbiBXZWlzIDx3ZWlzQGtkZS5vcmc+Ci0gKiAgICAgICAgICAgICAgICAgICAgIDE5
OTktMjAwMSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgotICogICAgICAgICAgICAgICAgICAg
ICAxOTk5LTIwMDEgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+Ci0gKiAgICAgICAg
ICAgICAgICAgICAgIDIwMDAtMjAwMSBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4K
LSAqICAgICAgICAgICAgICAgICAgICAgMjAwMC0yMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBr
ZGUub3JnPgotICogICAgICAgICAgICAgICAgICAgICAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpIDwx
U3RlaW5AZ214LmRlPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBG
cmFtZVByaXZhdGVfaAotI2RlZmluZSBGcmFtZVByaXZhdGVfaAotCi0jaW5jbHVkZSAiQW5pbWF0
aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkVkaXRvci5oIgotI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVUcmVlLmgi
Ci0jaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCi0j
aW5jbHVkZSAiU3RyaW5nSGFzaC5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLQot
I2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJGcmFtZVdpbi5oIgotI2VuZGlmCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotI2lmIEZSQU1FX0xPQURTX1VTRVJfU1RZTEVTSEVFVAotICAgIGNs
YXNzIFVzZXJTdHlsZVNoZWV0TG9hZGVyOwotI2VuZGlmCi0gICAgCi0gICAgY2xhc3MgRnJhbWVQ
cml2YXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEZyYW1lUHJpdmF0ZShQYWdlKiwgRnJhbWUq
IHBhcmVudCwgRnJhbWUqIHRoaXNGcmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVM
b2FkZXJDbGllbnQqKTsKLSAgICAgICAgfkZyYW1lUHJpdmF0ZSgpOwotCi0gICAgICAgIFBhZ2Uq
IG1fcGFnZTsKLSAgICAgICAgRnJhbWVUcmVlIG1fdHJlZU5vZGU7Ci0gICAgICAgIEZyYW1lTG9h
ZGVyIG1fbG9hZGVyOwotICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2RvbVdpbmRvdzsKLSAg
ICAgICAgSGFzaFNldDxET01XaW5kb3cqPiBtX2xpdmVGb3JtZXJXaW5kb3dzOwotCi0gICAgICAg
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogbV9vd25lckVsZW1lbnQ7Ci0gICAgICAgIFJlZlB0cjxG
cmFtZVZpZXc+IG1fdmlldzsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKLQotICAg
ICAgICBTY3JpcHRDb250cm9sbGVyIG1fc2NyaXB0OwotCi0gICAgICAgIFN0cmluZyBtX2tqc1N0
YXR1c0JhclRleHQ7Ci0gICAgICAgIFN0cmluZyBtX2tqc0RlZmF1bHRTdGF0dXNCYXJUZXh0Owot
Ci0gICAgICAgIGZsb2F0IG1fem9vbUZhY3RvcjsKLQotICAgICAgICBUZXh0R3JhbnVsYXJpdHkg
bV9zZWxlY3Rpb25HcmFudWxhcml0eTsKLQotICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIG1f
c2VsZWN0aW9uQ29udHJvbGxlcjsKLSAgICAgICAgU2VsZWN0aW9uIG1fbWFyazsKLSAgICAgICAg
VGltZXI8RnJhbWU+IG1fY2FyZXRCbGlua1RpbWVyOwotICAgICAgICBFZGl0b3IgbV9lZGl0b3I7
Ci0gICAgICAgIEV2ZW50SGFuZGxlciBtX2V2ZW50SGFuZGxlcjsKLSAgICAgICAgQW5pbWF0aW9u
Q29udHJvbGxlciBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7Ci0KLSAgICAgICAgUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtX3R5cGluZ1N0eWxlOwotCi0gICAgICAgIFRpbWVyPEZy
YW1lPiBtX2xpZmVTdXBwb3J0VGltZXI7Ci0KLSAgICAgICAgYm9vbCBtX2NhcmV0VmlzaWJsZTsK
LSAgICAgICAgYm9vbCBtX2NhcmV0UGFpbnQ7Ci0gICAgICAgIAotICAgICAgICBib29sIG1faGln
aGxpZ2h0VGV4dE1hdGNoZXM7Ci0gICAgICAgIGJvb2wgbV9pblZpZXdTb3VyY2VNb2RlOwotICAg
ICAgICBib29sIG1fbmVlZHNSZWFwcGx5U3R5bGVzOwotICAgICAgICBib29sIG1faXNEaXNjb25u
ZWN0ZWQ7Ci0gICAgICAgIGJvb2wgbV9leGNsdWRlRnJvbVRleHRTZWFyY2g7Ci0KLSNpZiBGUkFN
RV9MT0FEU19VU0VSX1NUWUxFU0hFRVQKLSAgICAgICAgVXNlclN0eWxlU2hlZXRMb2FkZXIqIG1f
dXNlclN0eWxlU2hlZXRMb2FkZXI7Ci0jZW5kaWYKLSAgICB9OwotfQotCi0jZW5kaWYKSW5kZXg6
IFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJh
bWVUcmVlLmgJKHJldmlzaW9uIDQwMDAxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSwxMCArMjEsMTEgQEAKICNkZWZpbmUgRnJhbWVUcmVlX2gKIAog
I2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEZyYW1lOworCiAgICAgY2xhc3MgRnJhbWVUcmVlIDog
Tm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRnJhbWVUcmVlKEZyYW1lKiB0aGlz
RnJhbWUsIEZyYW1lKiBwYXJlbnRGcmFtZSkgCkluZGV4OiBXZWJDb3JlL3BhZ2UvY2hyb21pdW0v
RnJhbWVDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Zy
YW1lQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA0MDAwMSkKKysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1
bS9GcmFtZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJG
cmFtZVByaXZhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCShyZXZpc2lvbiA0MDAwMSkKKysrIFdlYkNv
cmUvcGFnZS9tYWMvRnJhbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAK
ICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgogI2ltcG9ydCAiRXZlbnQuaCIKICNpbXBvcnQgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVByaXZhdGUuaCIKICNpbXBvcnQgIkZy
YW1lVmlldy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJIVE1MTmFt
ZXMuaCIKQEAgLTI3MCw3ICsyNjksNyBAQCBOU1N0cmluZyogRnJhbWU6Om1hdGNoTGFiZWxzQWdh
aW5zdEVsZW1lCiAKIE5TSW1hZ2UqIEZyYW1lOjppbWFnZUZyb21SZWN0KE5TUmVjdCByZWN0KSBj
b25zdAogewotICAgIE5TVmlldyogdmlldyA9IGQtPm1fdmlldy0+ZG9jdW1lbnRWaWV3KCk7Cisg
ICAgTlNWaWV3KiB2aWV3ID0gbV92aWV3LT5kb2N1bWVudFZpZXcoKTsKICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKCFbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRyYXdTaW5nbGVSZWN0OildKQpAQCAtMzE1LDEwICszMTQsMTAgQEAgTlNJbWFn
ZSogRnJhbWU6OmltYWdlRnJvbVJlY3QoTlNSZWN0IHJlYwogCiBOU0ltYWdlKiBGcmFtZTo6c2Vs
ZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCkgY29uc3QKIHsKLSAgICBkLT5tX3ZpZXct
PnNldFBhaW50UmVzdHJpY3Rpb24oZm9yY2VCbGFja1RleHQgPyBQYWludFJlc3RyaWN0aW9uU2Vs
ZWN0aW9uT25seUJsYWNrVGV4dCA6IFBhaW50UmVzdHJpY3Rpb25TZWxlY3Rpb25Pbmx5KTsKLSAg
ICBkLT5tX2RvYy0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV92aWV3LT5zZXRQYWludFJlc3RyaWN0
aW9uKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRSZXN0cmljdGlvblNlbGVjdGlvbk9ubHlCbGFja1Rl
eHQgOiBQYWludFJlc3RyaWN0aW9uU2VsZWN0aW9uT25seSk7CisgICAgbV9kb2MtPnVwZGF0ZUxh
eW91dCgpOwogICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3Qoc2VsZWN0aW9uQm91
bmRzKCkpOwotICAgIGQtPm1fdmlldy0+c2V0UGFpbnRSZXN0cmljdGlvbihQYWludFJlc3RyaWN0
aW9uTm9uZSk7CisgICAgbV92aWV3LT5zZXRQYWludFJlc3RyaWN0aW9uKFBhaW50UmVzdHJpY3Rp
b25Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMjksMTYgKzMyOCwxNiBAQCBO
U0ltYWdlKiBGcmFtZTo6c25hcHNob3REcmFnSW1hZ2UoTm9kZSogCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgCiAgICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsgICAgLy8gbWFy
ayBkcmFnZ2VkIG5vZGVzIChzbyB0aGV5IHBpY2sgdXAgdGhlIHJpZ2h0IENTUykKLSAgICBkLT5t
X2RvYy0+dXBkYXRlTGF5b3V0KCk7ICAgICAgICAvLyBmb3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVl
ZGVkIHNpbmNlIGNoYW5naW5nIHRoZSBkcmFnIHN0YXRlIG1pZ2h0CisgICAgbV9kb2MtPnVwZGF0
ZUxheW91dCgpOyAgICAgICAgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYyAtIG5lZWRlZCBzaW5jZSBj
aGFuZ2luZyB0aGUgZHJhZyBzdGF0ZSBtaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGltcGx5IG5ldyBzdHlsZXMsIHBsdXMgSlMgY291bGQgaGF2ZSBjaGFu
Z2VkIG90aGVyIHRoaW5ncwogICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OwogICAgIE5TUmVjdCBw
YWludGluZ1JlY3QgPSByZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOwog
Ci0gICAgZC0+bV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAgICAgICAgICAgICAgLy8gaW52
b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCisgICAgbV92aWV3LT5zZXROb2RlVG9E
cmF3KG5vZGUpOyAgICAgICAgICAgICAgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2lu
ZyBtb2RlCiAgICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChwYWludGluZ1JlY3Qp
OwogICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgIGQtPm1fZG9jLT51
cGRhdGVMYXlvdXQoKTsKLSAgICBkLT5tX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7CisgICAgbV9k
b2MtPnVwZGF0ZUxheW91dCgpOworICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKIAogICAg
IGlmIChlbGVtZW50UmVjdCkKICAgICAgICAgKmVsZW1lbnRSZWN0ID0gdG9wTGV2ZWxSZWN0OwpA
QCAtMzUzLDE0ICszNTIsMTQgQEAgTlNJbWFnZSogRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2Rl
KSBjbwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBkLT5t
X2RvYy0+dXBkYXRlTGF5b3V0KCk7IC8vIGZvcmNlcyBzdHlsZSByZWNhbGMKKyAgICBtX2RvYy0+
dXBkYXRlTGF5b3V0KCk7IC8vIGZvcmNlcyBzdHlsZSByZWNhbGMKIAogICAgIEludFJlY3QgdG9w
TGV2ZWxSZWN0OwogICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSByZW5kZXJlci0+cGFpbnRpbmdS
b290UmVjdCh0b3BMZXZlbFJlY3QpOwogCi0gICAgZC0+bV92aWV3LT5zZXROb2RlVG9EcmF3KG5v
ZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKKyAgICBtX3ZpZXct
PnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcg
bW9kZQogICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QocGFpbnRpbmdSZWN0KTsK
LSAgICBkLT5tX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7CisgICAgbV92aWV3LT5zZXROb2RlVG9E
cmF3KDApOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUzNywxOCArNTM2LDE4IEBAIERy
YWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW8KIAogdm9pZCBGcmFtZTo6c2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgZGVsZXRlIGQt
Pm1fdXNlclN0eWxlU2hlZXRMb2FkZXI7Ci0gICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlciA9
IDA7Ci0gICAgaWYgKGQtPm1fZG9jICYmIGQtPm1fZG9jLT5kb2NMb2FkZXIoKSkKLSAgICAgICAg
ZC0+bV91c2VyU3R5bGVTaGVldExvYWRlciA9IG5ldyBVc2VyU3R5bGVTaGVldExvYWRlcihkLT5t
X2RvYywgdXJsLnN0cmluZygpKTsKKyAgICBkZWxldGUgbV91c2VyU3R5bGVTaGVldExvYWRlcjsK
KyAgICBtX3VzZXJTdHlsZVNoZWV0TG9hZGVyID0gMDsKKyAgICBpZiAobV9kb2MgJiYgbV9kb2Mt
PmRvY0xvYWRlcigpKQorICAgICAgICBtX3VzZXJTdHlsZVNoZWV0TG9hZGVyID0gbmV3IFVzZXJT
dHlsZVNoZWV0TG9hZGVyKG1fZG9jLCB1cmwuc3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lOjpz
ZXRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXQpCiB7Ci0gICAgZGVsZXRl
IGQtPm1fdXNlclN0eWxlU2hlZXRMb2FkZXI7Ci0gICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRl
ciA9IDA7Ci0gICAgaWYgKGQtPm1fZG9jKQotICAgICAgICBkLT5tX2RvYy0+c2V0VXNlclN0eWxl
U2hlZXQoc3R5bGVTaGVldCk7CisgICAgZGVsZXRlIG1fdXNlclN0eWxlU2hlZXRMb2FkZXI7Cisg
ICAgbV91c2VyU3R5bGVTaGVldExvYWRlciA9IDA7CisgICAgaWYgKG1fZG9jKQorICAgICAgICBt
X2RvYy0+c2V0VXNlclN0eWxlU2hlZXQoc3R5bGVTaGVldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9xdC9GcmFtZVF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvcXQvRnJhbWVRdC5jcHAJKHJldmlzaW9uIDQwMDAxKQorKysgV2ViQ29y
ZS9wYWdlL3F0L0ZyYW1lUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1l
UHJpdmF0ZS5oIgorCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRMb2FkZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzUsMTggKzM1LDE4IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJh
Z0ltYWdlRm9yU2VsZWN0aW8KIAogdm9pZCBGcmFtZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgZGVsZXRlIGQtPm1fdXNlclN0eWxlU2hlZXRMb2Fk
ZXI7Ci0gICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlciA9IDA7Ci0gICAgaWYgKGQtPm1fZG9j
ICYmIGQtPm1fZG9jLT5kb2NMb2FkZXIoKSkKLSAgICAgICAgZC0+bV91c2VyU3R5bGVTaGVldExv
YWRlciA9IG5ldyBVc2VyU3R5bGVTaGVldExvYWRlcihkLT5tX2RvYywgdXJsLnN0cmluZygpKTsK
KyAgICBkZWxldGUgbV91c2VyU3R5bGVTaGVldExvYWRlcjsKKyAgICBtX3VzZXJTdHlsZVNoZWV0
TG9hZGVyID0gMDsKKyAgICBpZiAobV9kb2MgJiYgbV9kb2MtPmRvY0xvYWRlcigpKQorICAgICAg
ICBtX3VzZXJTdHlsZVNoZWV0TG9hZGVyID0gbmV3IFVzZXJTdHlsZVNoZWV0TG9hZGVyKG1fZG9j
LCB1cmwuc3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lOjpzZXRVc2VyU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIHN0eWxlU2hlZXQpCiB7Ci0gICAgZGVsZXRlIGQtPm1fdXNlclN0eWxlU2hlZXRM
b2FkZXI7Ci0gICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlciA9IDA7Ci0gICAgaWYgKGQtPm1f
ZG9jKQotICAgICAgICBkLT5tX2RvYy0+c2V0VXNlclN0eWxlU2hlZXQoc3R5bGVTaGVldCk7Cisg
ICAgZGVsZXRlIG1fdXNlclN0eWxlU2hlZXRMb2FkZXI7CisgICAgbV91c2VyU3R5bGVTaGVldExv
YWRlciA9IDA7CisgICAgaWYgKG1fZG9jKQorICAgICAgICBtX2RvYy0+c2V0VXNlclN0eWxlU2hl
ZXQoc3R5bGVTaGVldCk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAkocmV2
aXNpb24gNDAwMDEpCisrKyBXZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLSNpbmNs
dWRlICJGcmFtZVByaXZhdGUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTAxLDkgKzEwMCw5
IEBAIEhCSVRNQVAgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKSBjb24KIAogICAgIGRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dCgpOwogCi0gICAgZC0+bV92aWV3LT5zZXROb2RlVG9EcmF3KG5v
ZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKKyAgICBtX3ZpZXct
PnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcg
bW9kZQogICAgIEhCSVRNQVAgcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1Jl
Y3QpOwotICAgIGQtPm1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKKyAgICBtX3ZpZXctPnNldE5v
ZGVUb0RyYXcoMCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdp
bi5jcHAJKHJldmlzaW9uIDQwMDAxKQorKysgV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRnJhbWVQcml2YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAK
</data>
<flag name="review"
          id="12825"
          type_id="1"
          status="+"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>