<?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>121229</bug_id>
          
          <creation_ts>2013-09-12 08:37:58 -0700</creation_ts>
          <short_desc>[Qt] Remove support for QXmlStream</short_desc>
          <delta_ts>2013-09-13 07:33:33 -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>XML</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>928304</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-09-12 08:37:58 -0700</bug_when>
    <thetext>Qt used to use its own XML parser implementation, since Qt5 we have recommended using the libxml2 implementation instead. To avoid having two implementation, where one is more or less deprecated we should remove the QXmlStream implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928305</commentid>
    <comment_count>1</comment_count>
      <attachid>211432</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-09-12 08:40:35 -0700</bug_when>
    <thetext>Created attachment 211432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928827</commentid>
    <comment_count>2</comment_count>
      <attachid>211432</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-09-13 07:33:29 -0700</bug_when>
    <thetext>Comment on attachment 211432
Patch

Clearing flags on attachment: 211432

Committed r155697: &lt;http://trac.webkit.org/changeset/155697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928828</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-09-13 07:33:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211432</attachid>
            <date>2013-09-12 08:40:35 -0700</date>
            <delta_ts>2013-09-13 07:33:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121229-20130912174033.patch</filename>
            <type>text/plain</type>
            <size>34276</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM1MWZkNGM5NjllYzRlNGFjMWE0OGYx
MmEwNDhhZjY2OGVkNTExZjMuLjQ2Njg5OWJlNTNmZDJkZDhkYWEzOTE1NGUwNjIwMzZjZTUyNmYy
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMTIgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9y
IFFYbWxTdHJlYW0gYXMgdGhlIFhNTCBwYXJzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIFVTRSBmbGFncy4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybS5oOgorCiAyMDEzLTA5LTEyICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWls
LnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBob21lLWJyZXdlZCBudWxs
cHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYTYzZGIzODUwOWFhMWJjZDE4NzVlYzRhNTNhY2IzYzliNDRmMzIz
MS4uYzFkYWY2MDcyMmMwOTZhNThjZTdlNzc5ZThkODZkZDUwNzQxZmQzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDEzLTA5LTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxh
bi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBRWG1sU3Ry
ZWFtIGFzIHRoZSBYTUwgcGFyc2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIxMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgYWxsIHRoZSAjaWZk
ZWYgcmVsYXRlZCB0byBpdC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5wcmk6CisgICAgICAgICogZG9tL1RyYW5zZm9ybVNvdXJjZS5oOgorICAgICAgICAqIHht
bC9YTUxFcnJvcnMuaDoKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZW50ZXJUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERv
Y3VtZW50UGFyc2VyOjpleGl0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2spOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
UXQuY3BwOiBSZW1vdmVkLgorCiAyMDEzLTA5LTEyICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZn
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFhNTFNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmco
KSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIGZvciBpbnZhbGlkIG5vZGUgdmFsdWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA5ZTJlNTIyOWY1ZjU0N2IwNjJlM2U1MGQ1NGM5NDNm
N2MxMWI2NmUxLi42MTMwYjAxYTg0ZjQ3ZDIzODllYjQwNzM1ZWZlZmE2MGZmZjA3ZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wOS0xMiAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAg
ICBSZW1vdmUgc3VwcG9ydCBmb3IgUVhtbFN0cmVhbSBhcyB0aGUgWE1MIHBhcnNlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTIyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgVVNFIGZs
YWdzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW46
CisKIDIwMTMtMDktMTEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBHZW5lcmF0ZSBtb3JlIEhUTUwgdHlwZSBjaGVja3MgYW5kIGNhc3RpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCmluZGV4IDE1M2U1YzA0ZWI1NGYyNWZlYWVkMGUwMDkxZTMwYmZjYTE2ZWI4YzQuLjg4
N2ZiOGFhYmZmNGQ0Njc3ODBjODhlYmIwMmIwNWY5YWFhMTY3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAt
ODg2LDE1ICs4ODYsNiBAQAogI2VuZGlmCiAjZW5kaWYKIAotLyogVXNlIHRoZSBRWG1sU3RyZWFt
UmVhZGVyIGltcGxlbWVudGF0aW9uIGZvciBYTUxEb2N1bWVudFBhcnNlciAqLwotLyogVXNlIHRo
ZSBRWG1sUXVlcnkgaW1wbGVtZW50YXRpb24gZm9yIFhTTFRQcm9jZXNzb3IgKi8KLSNpZiBQTEFU
Rk9STShRVCkKLSNpZiAhVVNFKExJQlhNTDIpCi0jZGVmaW5lIFdURl9VU0VfUVhNTFNUUkVBTSAx
Ci0jZGVmaW5lIFdURl9VU0VfUVhNTFFVRVJZIDEKLSNlbmRpZgotI2VuZGlmCi0KIC8qIEFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nICovCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKFFUKSB8fCAoUExBVEZPUk0oV0lOKSAmJiAhVVNFKFdJTkdESSkgJiYgIVBM
QVRGT1JNKFdJTl9DQUlSTykpCiAjZGVmaW5lIFdURl9VU0VfQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggZTdmOWFhZWE5MWVjMDE3ZmFjZTgxNjdlMjJmMjJlOTQ4YmI2
NGZkNy4uY2M4ZTQ1Zjk1YzlmYjk5ZGYwZDRkNTFlMTY4YmYyNDBiZTM3NDgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0yOTUzLDggKzI5NTMsNiBAQCB1c2U/KExJQlhNTDIpIHsKICAgICBTT1VSQ0VTICs9
IFwKICAgICAgICAgICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBc
CiAgICAgICAgICAgICB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwCi19IGVs
c2UgewotICAgIFNPVVJDRVMgKz0geG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAog
fQogCiBlbmFibGU/KFNNT09USF9TQ1JPTExJTkcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggYTdhMTE4
MjJkOWE5MTVhNzU1ZWE4NmY1NWViNmE4Mzk3OGNmNzJmNS4uN2FmNjBlOWY3MmM1MmE0YjAwMTcz
YzA2OWMyMmMzNTI1NjdlOTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTExNCw4ICsxMTQsMTAgQEAg
dXNlPyhMSUJYTUwyKSB7CiAgICAgbWFjIHsKICAgICAgICAgSU5DTFVERVBBVEggKz0gL3Vzci9p
bmNsdWRlL2xpYnhtbDIKICAgICAgICAgTElCUyArPSAtbHhtbDIKLSAgICB9IGVsc2UgeworICAg
IH0gZWxzZTohY29udGFpbnMoUVRfQ09ORklHLCBuby1wa2ctY29uZmlnKSB7CiAgICAgICAgIFBL
R0NPTkZJRyArPSBsaWJ4bWwtMi4wCisgICAgfSBlbHNlIHsKKyAgICAgICAgTElCUyArPSAtbHht
bDIKICAgICB9CiB9CiAKQEAgLTEyMyw4ICsxMjUsMTAgQEAgZW5hYmxlPyhYU0xUKSB7CiAgICAg
bWFjIHsKICAgICAgICAgSU5DTFVERVBBVEggKz0gL3Vzci9pbmNsdWRlL2xpYnhzbHQKICAgICAg
ICAgTElCUyArPSAtbHhzbHQKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZTohY29udGFpbnMoUVRf
Q09ORklHLCBuby1wa2ctY29uZmlnKSB7CiAgICAgICAgIFBLR0NPTkZJRyArPSBsaWJ4c2x0Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgTElCUyArPSAtbHhzbHQKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmFuc2Zvcm1Tb3VyY2UuaAppbmRleCBkMGIwMjczNWFkMGVmYmI1ODk4MDAxNjkwMDRh
ZGZjNjdkZmNiNDU5Li43OGRiNDRlMTQ1NzE4ODRmNTI1MTA0MjhkZmJiYjAxNjMzNzVlMjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmb3JtU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJjZS5oCkBAIC0yOSwxMSArMjksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoUVhNTFFVRVJZKQotICAgIHR5cGVkZWYgU3Ry
aW5nIFBsYXRmb3JtVHJhbnNmb3JtU291cmNlOwotI2Vsc2UKICAgICB0eXBlZGVmIHZvaWQqIFBs
YXRmb3JtVHJhbnNmb3JtU291cmNlOwotI2VuZGlmCiAKICAgICBjbGFzcyBUcmFuc2Zvcm1Tb3Vy
Y2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmFuc2Zvcm1Tb3VyY2UpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxF
cnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAppbmRleCBkNGU0OGIzZTQ0
OTY2M2ZhMWZjZjBjZGE2NDEwYzkyYmE0OTE1YzliLi4wMDMyZTg0MjY1N2NhMDQ4Yjg3NjZhNTg4
ODA1MDIzYWU4ZDMyNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3Jz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBAIC0zMiw5ICszMiw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRQb3NpdGlvbi5oPgogCi0jaWYgIVVTRShRWE1MU1RSRUFNKQogI2luY2x1ZGUgPGxpYnht
bC9wYXJzZXIuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldC5oCmluZGV4IDRiMTBjMWY0MTljNzMxNTA5ZjNkMDc3MWY5ZjczZjIwNTZj
NzkyYmUuLmQzNDZhYWY2YTM1N2RkNDUwNGJmMDkyNjUwOWM3ZDU4NjJmMTQ3NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXQuaApAQCAtMjgsMTAgKzI4LDggQEAKICNpbmNsdWRlICJQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCiAKLSNpZiAhVVNF
KFFYTUxRVUVSWSkKICNpbmNsdWRlIDxsaWJ4bWwvcGFyc2VyLmg+CiAjaW5jbHVkZSA8bGlieHNs
dC90cmFuc2Zvcm0uaD4KLSNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApA
QCAtNDIsMTIgKzQwLDEwIEBAIGNsYXNzIFhTTEltcG9ydFJ1bGU7CiAgICAgCiBjbGFzcyBYU0xT
dHlsZVNoZWV0IEZJTkFMIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgotI2lmICFVU0Uo
UVhNTFFVRVJZKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShY
U0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNv
bnN0IEtVUkwmIGZpbmFsVVJMKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBY
U0xTdHlsZVNoZWV0KHBhcmVudEltcG9ydCwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKSk7CiAgICAg
fQotI2VuZGlmCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlKFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVS
TCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMLCBmYWxz
ZSkpOwpAQCAtODEsMTMgKzc3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgWFNMU3R5bGVTaGVl
dCogcGFyZW50U3R5bGVTaGVldCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcGFyZW50U3R5
bGVTaGVldDsgfQogICAgIHZvaWQgc2V0UGFyZW50U3R5bGVTaGVldChYU0xTdHlsZVNoZWV0KiBw
YXJlbnQpOwogCi0jaWYgVVNFKFFYTUxRVUVSWSkKLSAgICBTdHJpbmcgc2hlZXRTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3NoZWV0U3RyaW5nOyB9Ci0jZWxzZQogICAgIHhtbERvY1B0ciBkb2N1
bWVudCgpOwogICAgIHhzbHRTdHlsZXNoZWV0UHRyIGNvbXBpbGVTdHlsZVNoZWV0KCk7CiAgICAg
eG1sRG9jUHRyIGxvY2F0ZVN0eWxlc2hlZXRTdWJSZXNvdXJjZSh4bWxEb2NQdHIgcGFyZW50RG9j
LCBjb25zdCB4bWxDaGFyKiB1cmkpOwotI2VuZGlmCiAKICAgICB2b2lkIGNsZWFyRG9jdW1lbnRz
KCk7CiAKQEAgLTEwOSw5ICsxMDEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgWFNMU3R5
bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25z
dCBLVVJMJiBmaW5hbFVSTCwgYm9vbCBlbWJlZGRlZCk7Ci0jaWYgIVVTRShRWE1MUVVFUlkpCiAg
ICAgWFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKTsKLSNlbmRpZgogICAgIAogICAg
IE5vZGUqIG1fb3duZXJOb2RlOwogICAgIFN0cmluZyBtX29yaWdpbmFsVVJMOwpAQCAtMTIzLDEy
ICsxMTMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9lbWJlZGRlZDsKICAgICBib29sIG1fcHJv
Y2Vzc2VkOwogCi0jaWYgVVNFKFFYTUxRVUVSWSkKLSAgICBTdHJpbmcgbV9zaGVldFN0cmluZzsK
LSNlbHNlCiAgICAgeG1sRG9jUHRyIG1fc3R5bGVzaGVldERvYzsKICAgICBib29sIG1fc3R5bGVz
aGVldERvY1Rha2VuOwotI2VuZGlmCiAgICAgCiAgICAgWFNMU3R5bGVTaGVldCogbV9wYXJlbnRT
dHlsZVNoZWV0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCmluZGV4IDgxZjRhNmEy
NjAxMzYzZmZkNWQwNWM5YjBkZTRhN2E0MjNjYmE5NDcuLjhmNzI2MzQ5ZGYxMDYxZDA0ZjJlMTRm
Y2VlNmJlYzUwZmUxM2QyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaApAQCAtMzAs
MTAgKzMwLDggQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAotI2lmICFVU0UoUVhNTFFVRVJZKQogI2luY2x1ZGUgPGxpYnhtbC9w
YXJzZXJJbnRlcm5hbHMuaD4KICNpbmNsdWRlIDxsaWJ4c2x0L2RvY3VtZW50cy5oPgotI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsMTMgKzY0LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVzZXQoKTsKIAotI2lmICFVU0UoUVhNTFFVRVJZKQogICAgIHN0YXRpYyB2b2lk
IHBhcnNlRXJyb3JGdW5jKHZvaWQqIHVzZXJEYXRhLCB4bWxFcnJvciopOwogICAgIHN0YXRpYyB2
b2lkIGdlbmVyaWNFcnJvckZ1bmModm9pZCogdXNlckRhdGEsIGNvbnN0IGNoYXIqIG1zZywgLi4u
KTsKICAgICAKICAgICAvLyBPbmx5IGZvciBsaWJYU0xUIGNhbGxiYWNrcwogICAgIFhTTFN0eWxl
U2hlZXQqIHhzbFN0eWxlc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlc2hlZXQuZ2V0KCk7
IH0KLSNlbmRpZgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXJhbWV0
ZXJNYXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggMGVkNjdiMzk0ZTVhMDg1MzU3NGE1NTU5ZmIxY2Y5Njc0N2UxOGE3YS4uOGEw
MjViZjNiODY2MTk4NDAyNDhkMTg4ZTM5ODA0YWUzZjI3NTJjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE0NSwyMCArMTQ1LDE2
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIG0sIFRlCiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVu
dGVyVGV4dCgpCiB7Ci0jaWYgIVVTRShRWE1MU1RSRUFNKQogICAgIEFTU0VSVChtX2J1ZmZlcmVk
VGV4dC5zaXplKCkgPT0gMCk7Ci0jZW5kaWYKICAgICBBU1NFUlQoIW1fbGVhZlRleHROb2RlKTsK
ICAgICBtX2xlYWZUZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSgmbV9jdXJyZW50Tm9kZS0+ZG9jdW1l
bnQoKSwgIiIpOwogICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKG1fbGVhZlRl
eHROb2RlLmdldCgpKTsKIH0KIAotI2lmICFVU0UoUVhNTFNUUkVBTSkKIHN0YXRpYyBpbmxpbmUg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IHhtbENoYXIqIHN0cmluZywgc2l6ZV90IHNpemUpIAogeyAK
ICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihzdHJpbmcpLCBzaXplKTsgCiB9Ci0jZW5kaWYKIAogCiB2b2lkIFhNTERvY3VtZW50UGFyc2Vy
OjpleGl0VGV4dCgpCkBAIC0xNjksMTEgKzE2NSw5IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6
OmV4aXRUZXh0KCkKICAgICBpZiAoIW1fbGVhZlRleHROb2RlKQogICAgICAgICByZXR1cm47CiAK
LSNpZiAhVVNFKFFYTUxTVFJFQU0pCiAgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEodG9T
dHJpbmcobV9idWZmZXJlZFRleHQuZGF0YSgpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkpLCBJR05P
UkVfRVhDRVBUSU9OKTsKICAgICBWZWN0b3I8eG1sQ2hhcj4gZW1wdHk7CiAgICAgbV9idWZmZXJl
ZFRleHQuc3dhcChlbXB0eSk7Ci0jZW5kaWYKIAogICAgIGlmIChtX3ZpZXcgJiYgbV9sZWFmVGV4
dE5vZGUtPnBhcmVudE5vZGUoKSAmJiBtX2xlYWZUZXh0Tm9kZS0+cGFyZW50Tm9kZSgpLT5hdHRh
Y2hlZCgpICYmICFtX2xlYWZUZXh0Tm9kZS0+YXR0YWNoZWQoKSkKICAgICAgICAgU3R5bGU6OmF0
dGFjaFRleHRSZW5kZXJlcigqbV9sZWFmVGV4dE5vZGUpOwpAQCAtMjMyLDEwICsyMjYsNiBAQCB2
b2lkIFhNTERvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2Vy
OjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiB7Ci0jaWYgVVNFKFFYTUxTVFJFQU0pCi0gICAg
aWYgKG1fcGFyc2luZ0ZyYWdtZW50KQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKICAgICBBU1NF
UlQobV94bWxFcnJvcnMpOwogICAgIG1feG1sRXJyb3JzLT5pbnNlcnRFcnJvck1lc3NhZ2VCbG9j
aygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
CmluZGV4IDg3NmQ4NzY1Njk5NzUzZTg2MTA3ZmI5MjVhZjQ2ZWU4YjU5ZjAyZGIuLjA1ZWI4ODAw
OTllODY3NDAxNjg0ZmI2OGJhNDgyZWU2MzEyODk1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTM2LDEyICszNiw4IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAotI2lmIFVTRShRWE1MU1RSRUFNKQotI2luY2x1ZGUgPHF4bWxzdHJlYW0uaD4KLSNl
bHNlCiAjaW5jbHVkZSA8bGlieG1sL3RyZWUuaD4KICNpbmNsdWRlIDxsaWJ4bWwveG1sc3RyaW5n
Lmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw3ICs1MSw2IEBAIGNs
YXNzIEZyYW1lVmlldzsKIGNsYXNzIFBlbmRpbmdDYWxsYmFja3M7CiBjbGFzcyBUZXh0OwogCi0j
aWYgIVVTRShRWE1MU1RSRUFNKQogICAgIGNsYXNzIFhNTFBhcnNlckNvbnRleHQgOiBwdWJsaWMg
UmVmQ291bnRlZDxYTUxQYXJzZXJDb250ZXh0PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxYTUxQYXJzZXJDb250ZXh0PiBjcmVhdGVNZW1vcnlQYXJzZXIoeG1sU0FY
SGFuZGxlclB0ciwgdm9pZCogdXNlckRhdGEsIGNvbnN0IENTdHJpbmcmIGNodW5rKTsKQEAgLTcw
LDcgKzY1LDYgQEAgY2xhc3MgVGV4dDsKICAgICAgICAgfQogICAgICAgICB4bWxQYXJzZXJDdHh0
UHRyIG1fY29udGV4dDsKICAgICB9OwotI2VuZGlmCiAKICAgICBjbGFzcyBYTUxEb2N1bWVudFBh
cnNlciA6IHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNv
dXJjZUNsaWVudCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI1LDIw
ICsxMTksNiBAQCBjbGFzcyBUZXh0OwogCiAgICAgICAgIGJvb2wgYXBwZW5kRnJhZ21lbnRTb3Vy
Y2UoY29uc3QgU3RyaW5nJik7CiAKLSNpZiBVU0UoUVhNTFNUUkVBTSkKLXByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgcGFyc2UoKTsKLSAgICAgICAgdm9pZCBzdGFydERvY3VtZW50KCk7Ci0gICAgICAg
IHZvaWQgcGFyc2VTdGFydEVsZW1lbnQoKTsKLSAgICAgICAgdm9pZCBwYXJzZUVuZEVsZW1lbnQo
KTsKLSAgICAgICAgdm9pZCBwYXJzZUNoYXJhY3RlcnMoKTsKLSAgICAgICAgdm9pZCBwYXJzZVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbigpOwotICAgICAgICB2b2lkIHBhcnNlQ2RhdGEoKTsKLSAgICAg
ICAgdm9pZCBwYXJzZUNvbW1lbnQoKTsKLSAgICAgICAgdm9pZCBlbmREb2N1bWVudCgpOwotICAg
ICAgICB2b2lkIHBhcnNlRHRkKCk7Ci0gICAgICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdDsKLSNl
bHNlCiBwdWJsaWM6CiAgICAgICAgIC8vIGNhbGxiYWNrcyBmcm9tIHBhcnNlciBTQVgKICAgICAg
ICAgdm9pZCBlcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwg
dmFfbGlzdCBhcmdzKSBXVEZfQVRUUklCVVRFX1BSSU5URigzLCAwKTsKQEAgLTE1OCw3ICsxMzgs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgaW50IGRlcHRoVHJpZ2dlcmluZ0VudGl0eUV4cGFuc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGhUcmlnZ2VyaW5nRW50aXR5RXhwYW5zaW9uOyB9CiAg
ICAgICAgIHZvaWQgc2V0RGVwdGhUcmlnZ2VyaW5nRW50aXR5RXhwYW5zaW9uKGludCBkZXB0aCkg
eyBtX2RlcHRoVHJpZ2dlcmluZ0VudGl0eUV4cGFuc2lvbiA9IGRlcHRoOyB9Ci0jZW5kaWYKKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcnNlckNvbnRleHQoY29uc3Qg
Q1N0cmluZyYgY2h1bmsgPSBDU3RyaW5nKCkpOwogCkBAIC0xNzgsMTcgKzE1OCwxMyBAQCBwdWJs
aWM6CiAKICAgICAgICAgU2VnbWVudGVkU3RyaW5nIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zv
cm07CiAKLSNpZiBVU0UoUVhNTFNUUkVBTSkKLSAgICAgICAgUVhtbFN0cmVhbVJlYWRlciBtX3N0
cmVhbTsKLSAgICAgICAgYm9vbCBtX3dyb3RlVGV4dDsKLSNlbHNlCiAgICAgICAgIHhtbFBhcnNl
ckN0eHRQdHIgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dCA/IG1fY29udGV4dC0+
Y29udGV4dCgpIDogMDsgfTsKICAgICAgICAgUmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+IG1fY29u
dGV4dDsKICAgICAgICAgT3duUHRyPFBlbmRpbmdDYWxsYmFja3M+IG1fcGVuZGluZ0NhbGxiYWNr
czsKICAgICAgICAgVmVjdG9yPHhtbENoYXI+IG1fYnVmZmVyZWRUZXh0OwogICAgICAgICBpbnQg
bV9kZXB0aFRyaWdnZXJpbmdFbnRpdHlFeHBhbnNpb247CiAgICAgICAgIGJvb2wgbV9pc1BhcnNp
bmdFbnRpdHlEZWNsYXJhdGlvbjsKLSNlbmRpZgorCiAgICAgICAgIENvbnRhaW5lck5vZGUqIG1f
Y3VycmVudE5vZGU7CiAgICAgICAgIFZlY3RvcjxDb250YWluZXJOb2RlKj4gbV9jdXJyZW50Tm9k
ZVN0YWNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlclF0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ2YmJkMzFmMDBlMWYw
YThiZjJhNTkyZjUzMDYzYzI5NmYwN2Y3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDAgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLSAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgotCi0jaW5jbHVkZSAiQ0RBVEFTZWN0aW9u
LmgiCi0jaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiQ29tbWVudC5oIgotI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCi0j
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIK
LSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1
ZGUgIkhUTUxFbnRpdHlQYXJzZXIuaCIKLSNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNs
dWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgotI2luY2x1ZGUg
IlNjcmlwdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5j
bHVkZSAiVHJhbnNmb3JtU291cmNlLmgiCi0jaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgotI2luY2x1
ZGUgPFFEZWJ1Zz4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RhdGljIGlubGluZSB2b2lkIHNldEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCwg
VmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvciwgUGFyc2VyQ29udGVudFBvbGljeSBw
YXJzZXJDb250ZW50UG9saWN5KQotewotICAgIGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dl
ZChwYXJzZXJDb250ZW50UG9saWN5KSkKLSAgICAgICAgZWxlbWVudC0+c3RyaXBTY3JpcHRpbmdB
dHRyaWJ1dGVzKGF0dHJpYnV0ZVZlY3Rvcik7Ci0gICAgZWxlbWVudC0+cGFyc2VyU2V0QXR0cmli
dXRlcyhhdHRyaWJ1dGVWZWN0b3IpOwotfQotCi1jbGFzcyBFbnRpdHlSZXNvbHZlciA6IHB1Ymxp
YyBRWG1sU3RyZWFtRW50aXR5UmVzb2x2ZXIgewotICAgIHZpcnR1YWwgUVN0cmluZyByZXNvbHZl
VW5kZWNsYXJlZEVudGl0eShjb25zdCBRU3RyaW5nICZuYW1lKTsKLX07Ci0KLXN0YXRpYyBRU3Ry
aW5nIGRlY29kZU5hbWVkRW50aXR5KGNvbnN0IFFTdHJpbmcmIGVudGl0eU5hbWUpCi17Ci0gICAg
VUNoYXIgdXRmMTZEZWNvZGVkRW50aXR5WzRdOwotICAgIHNpemVfdCBudW1iZXJPZkNvZGVQb2lu
dHMgPSBkZWNvZGVOYW1lZEVudGl0eVRvVUNoYXJBcnJheShlbnRpdHlOYW1lLnRvVXRmOCgpLmNv
bnN0RGF0YSgpLCB1dGYxNkRlY29kZWRFbnRpdHkpOwotICAgIHJldHVybiBRU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPih1dGYxNkRlY29kZWRFbnRpdHkpLCBudW1iZXJPZkNv
ZGVQb2ludHMpOwotfQotCi1RU3RyaW5nIEVudGl0eVJlc29sdmVyOjpyZXNvbHZlVW5kZWNsYXJl
ZEVudGl0eShjb25zdCBRU3RyaW5nICZuYW1lKQotewotICAgIHJldHVybiBkZWNvZGVOYW1lZEVu
dGl0eShuYW1lKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
Ym9vbCBYTUxEb2N1bWVudFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYg
dmVyc2lvbikKLXsKLSAgICByZXR1cm4gdmVyc2lvbiA9PSAiMS4wIjsKLX0KLQotWE1MRG9jdW1l
bnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCi0gICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCi0g
ICAgLCBtX3ZpZXcoZnJhbWVWaWV3KQotICAgICwgbV93cm90ZVRleHQoZmFsc2UpCi0gICAgLCBt
X2N1cnJlbnROb2RlKGRvY3VtZW50KQotICAgICwgbV9zYXdFcnJvcihmYWxzZSkKLSAgICAsIG1f
c2F3Q1NTKGZhbHNlKQotICAgICwgbV9zYXdYU0xUcmFuc2Zvcm0oZmFsc2UpCi0gICAgLCBtX3Nh
d0ZpcnN0RWxlbWVudChmYWxzZSkKLSAgICAsIG1faXNYSFRNTERvY3VtZW50KGZhbHNlKQotICAg
ICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCi0gICAgLCBtX3JlcXVlc3RpbmdTY3JpcHQoZmFsc2Up
Ci0gICAgLCBtX2ZpbmlzaENhbGxlZChmYWxzZSkKLSAgICAsIG1fcGVuZGluZ1NjcmlwdCgwKQot
ICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0
aW9uKCkpCi0gICAgLCBtX3BhcnNpbmdGcmFnbWVudChmYWxzZSkKLXsKLSAgICBtX3N0cmVhbS5z
ZXRFbnRpdHlSZXNvbHZlcihuZXcgRW50aXR5UmVzb2x2ZXIpOwotfQotCi1YTUxEb2N1bWVudFBh
cnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1l
bnQqIHBhcmVudEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGlj
eSkKLSAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSwg
cGFyc2VyQ29udGVudFBvbGljeSkKLSAgICAsIG1fdmlldygwKQotICAgICwgbV93cm90ZVRleHQo
ZmFsc2UpCi0gICAgLCBtX2N1cnJlbnROb2RlKGZyYWdtZW50KQotICAgICwgbV9zYXdFcnJvcihm
YWxzZSkKLSAgICAsIG1fc2F3Q1NTKGZhbHNlKQotICAgICwgbV9zYXdYU0xUcmFuc2Zvcm0oZmFs
c2UpCi0gICAgLCBtX3Nhd0ZpcnN0RWxlbWVudChmYWxzZSkKLSAgICAsIG1faXNYSFRNTERvY3Vt
ZW50KGZhbHNlKQotICAgICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCi0gICAgLCBtX3JlcXVlc3Rp
bmdTY3JpcHQoZmFsc2UpCi0gICAgLCBtX2ZpbmlzaENhbGxlZChmYWxzZSkKLSAgICAsIG1fcGVu
ZGluZ1NjcmlwdCgwKQotICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6
YmVsb3dSYW5nZVBvc2l0aW9uKCkpCi0gICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQotewot
ICAgIGZyYWdtZW50LT5yZWYoKTsKLQotICAgIC8vIEFkZCBuYW1lc3BhY2VzIGJhc2VkIG9uIHRo
ZSBwYXJlbnQgbm9kZQotICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbVN0YWNrOwotICAgIHdoaWxl
IChwYXJlbnRFbGVtZW50KSB7Ci0gICAgICAgIGVsZW1TdGFjay5hcHBlbmQocGFyZW50RWxlbWVu
dCk7Ci0KLSAgICAgICAgTm9kZSogbiA9IHBhcmVudEVsZW1lbnQtPnBhcmVudE5vZGUoKTsKLSAg
ICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgcGFyZW50RWxlbWVudCA9IHRvRWxlbWVudChuKTsKLSAgICB9Ci0KLSAgICBpZiAo
ZWxlbVN0YWNrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUVhtbFN0cmVhbU5h
bWVzcGFjZURlY2xhcmF0aW9ucyBuYW1lc3BhY2VzOwotICAgIGZvciAoRWxlbWVudCogZWxlbWVu
dCA9IGVsZW1TdGFjay5sYXN0KCk7ICFlbGVtU3RhY2suaXNFbXB0eSgpOyBlbGVtU3RhY2sucmVt
b3ZlTGFzdCgpKSB7Ci0gICAgICAgIGVsZW1lbnQtPnN5bmNocm9uaXplQWxsQXR0cmlidXRlcygp
OwotICAgICAgICBpZiAoY29uc3QgRWxlbWVudERhdGEqIGF0dHJzID0gZWxlbWVudC0+ZWxlbWVu
dERhdGEoKSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzLT5s
ZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlJiBhdHRyID0g
YXR0cnMtPmF0dHJpYnV0ZUF0KGkpOwotICAgICAgICAgICAgICAgIGlmIChhdHRyLmxvY2FsTmFt
ZSgpID09ICJ4bWxucyIpCi0gICAgICAgICAgICAgICAgICAgIG1fZGVmYXVsdE5hbWVzcGFjZVVS
SSA9IGF0dHIudmFsdWUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyLnByZWZpeCgp
ID09ICJ4bWxucyIpCi0gICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMuYXBwZW5kKFFYbWxT
dHJlYW1OYW1lc3BhY2VEZWNsYXJhdGlvbihhdHRyLmxvY2FsTmFtZSgpLCBhdHRyLnZhbHVlKCkp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBtX3N0cmVhbS5hZGRFeHRy
YU5hbWVzcGFjZURlY2xhcmF0aW9ucyhuYW1lc3BhY2VzKTsKLSAgICBtX3N0cmVhbS5zZXRFbnRp
dHlSZXNvbHZlcihuZXcgRW50aXR5UmVzb2x2ZXIpOwotCi0gICAgLy8gSWYgdGhlIHBhcmVudCBl
bGVtZW50IGlzIG5vdCBpbiBkb2N1bWVudCB0cmVlLCB0aGVyZSBtYXkgYmUgbm8geG1sbnMgYXR0
cmlidXRlOyBqdXN0IGRlZmF1bHQgdG8gdGhlIHBhcmVudCdzIG5hbWVzcGFjZS4KLSAgICBpZiAo
bV9kZWZhdWx0TmFtZXNwYWNlVVJJLmlzTnVsbCgpICYmICFwYXJlbnRFbGVtZW50LT5pbkRvY3Vt
ZW50KCkpCi0gICAgICAgIG1fZGVmYXVsdE5hbWVzcGFjZVVSSSA9IHBhcmVudEVsZW1lbnQtPm5h
bWVzcGFjZVVSSSgpOwotfQotCi1YTUxEb2N1bWVudFBhcnNlcjo6flhNTERvY3VtZW50UGFyc2Vy
KCkKLXsKLSAgICBjbGVhckN1cnJlbnROb2RlU3RhY2soKTsKLSAgICBpZiAobV9wZW5kaW5nU2Ny
aXB0KQotICAgICAgICBtX3BlbmRpbmdTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBk
ZWxldGUgbV9zdHJlYW0uZW50aXR5UmVzb2x2ZXIoKTsKLX0KLQotdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6ZG9Xcml0ZShjb25zdCBTdHJpbmcmIHBhcnNlU3RyaW5nKQotewotICAgIG1fd3JvdGVU
ZXh0ID0gdHJ1ZTsKLQotICAgIGlmIChkb2N1bWVudCgpLT5kZWNvZGVyKCkgJiYgZG9jdW1lbnQo
KS0+ZGVjb2RlcigpLT5zYXdFcnJvcigpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBkZWNvZGVyIHNh
dyBhbiBlcnJvciwgcmVwb3J0IGl0IGFzIGZhdGFsIChzdG9wcyBwYXJzaW5nKQotICAgICAgICBo
YW5kbGVFcnJvcihYTUxFcnJvcnM6OmZhdGFsLCAiRW5jb2RpbmcgZXJyb3IiLCB0ZXh0UG9zaXRp
b24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBRU3RyaW5nIGRhdGEocGFyc2VT
dHJpbmcpOwotICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gSmF2YVNjcmlw
dCBtYXkgY2F1c2UgdGhlIHBhcnNlciB0byBkZXRhY2gsCi0gICAgICAgIC8vIGtlZXAgdGhpcyBh
bGl2ZSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGlzIGRvbmUuCi0gICAgICAgIFJlZlB0cjxYTUxEb2N1
bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgICAgICBtX3N0cmVhbS5hZGREYXRhKGRh
dGEpOwotICAgICAgICBwYXJzZSgpOwotICAgIH0KLQotICAgIHJldHVybjsKLX0KLQotdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6aW5pdGlhbGl6ZVBhcnNlckNvbnRleHQoY29uc3QgQ1N0cmluZyYp
Ci17Ci0gICAgRG9jdW1lbnRQYXJzZXI6OnN0YXJ0UGFyc2luZygpOwotICAgIG1fc2F3RXJyb3Ig
PSBmYWxzZTsKLSAgICBtX3Nhd0NTUyA9IGZhbHNlOwotICAgIG1fc2F3WFNMVHJhbnNmb3JtID0g
ZmFsc2U7Ci0gICAgbV9zYXdGaXJzdEVsZW1lbnQgPSBmYWxzZTsKLX0KLQotdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6ZG9FbmQoKQotewotICAgIGlmIChtX3N0cmVhbS5lcnJvcigpID09IFFYbWxT
dHJlYW1SZWFkZXI6OlByZW1hdHVyZUVuZE9mRG9jdW1lbnRFcnJvcgotICAgICAgICB8fCAobV93
cm90ZVRleHQgJiYgIW1fc2F3Rmlyc3RFbGVtZW50ICYmICFtX3Nhd1hTTFRyYW5zZm9ybSAmJiAh
bV9zYXdFcnJvcikpCi0gICAgICAgIGhhbmRsZUVycm9yKFhNTEVycm9yczo6ZmF0YWwsIHFQcmlu
dGFibGUobV9zdHJlYW0uZXJyb3JTdHJpbmcoKSksIHRleHRQb3NpdGlvbigpKTsKLX0KLQotT3Jk
aW5hbE51bWJlciBYTUxEb2N1bWVudFBhcnNlcjo6bGluZU51bWJlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChtX3N0cmVhbS5saW5lTnVtYmVy
KCkpOwotfQotCi1PcmRpbmFsTnVtYmVyIFhNTERvY3VtZW50UGFyc2VyOjpjb2x1bW5OdW1iZXIo
KSBjb25zdAotewotICAgIHJldHVybiBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobV9z
dHJlYW0uY29sdW1uTnVtYmVyKCkpOwotfQotCi1UZXh0UG9zaXRpb24gWE1MRG9jdW1lbnRQYXJz
ZXI6OnRleHRQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRleHRQb3NpdGlvbihsaW5l
TnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKLX0KLQotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
c3RvcFBhcnNpbmcoKQotewotICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNp
bmcoKTsKLX0KLQotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZygpCi17Ci0g
ICAgQVNTRVJUKG1fcGFyc2VyUGF1c2VkKTsKLQotICAgIG1fcGFyc2VyUGF1c2VkID0gZmFsc2U7
Ci0KLSAgICAvLyBGaXJzdCwgZXhlY3V0ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MKLSAgICBwYXJz
ZSgpOwotICAgIGlmIChtX3BhcnNlclBhdXNlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
VGhlbiwgd3JpdGUgYW55IHBlbmRpbmcgZGF0YQotICAgIFNlZ21lbnRlZFN0cmluZyByZXN0ID0g
bV9wZW5kaW5nU3JjOwotICAgIG1fcGVuZGluZ1NyYy5jbGVhcigpOwotICAgIGFwcGVuZChyZXN0
LnRvU3RyaW5nKCkuaW1wbCgpKTsKLQotICAgIC8vIEZpbmFsbHksIGlmIGZpbmlzaCgpIGhhcyBi
ZWVuIGNhbGxlZCBhbmQgYXBwZW5kKCkgZGlkbid0IHJlc3VsdAotICAgIC8vIGluIGFueSBmdXJ0
aGVyIGNhbGxiYWNrcyBiZWluZyBxdWV1ZWQsIGNhbGwgZW5kKCkKLSAgICBpZiAobV9maW5pc2hD
YWxsZWQgJiYgIW1fcGFyc2VyUGF1c2VkICYmICFtX3BlbmRpbmdTY3JpcHQpCi0gICAgICAgIGVu
ZCgpOwotfQotCi1ib29sIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmRGcmFnbWVudFNvdXJjZShj
b25zdCBTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICBBU1NFUlQoIW1fc2F3Rmlyc3RFbGVtZW50KTsK
LSAgICBhcHBlbmQoU3RyaW5nKCI8cXhtbHN0cmVhbWR1bW15ZWxlbWVudD4iKS5pbXBsKCkpOwot
ICAgIGFwcGVuZChzb3VyY2UuaW1wbCgpKTsKLSAgICBhcHBlbmQoU3RyaW5nKCI8L3F4bWxzdHJl
YW1kdW1teWVsZW1lbnQ+IikuaW1wbCgpKTsKLSAgICByZXR1cm4gIWhhc0Vycm9yKCk7Ci19Ci0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0cnVjdCBBdHRyaWJ1dGVQ
YXJzZVN0YXRlIHsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhdHRyaWJ1dGVzOwotICAg
IGJvb2wgZ290QXR0cmlidXRlczsKLX07Ci0KLXN0YXRpYyB2b2lkIGF0dHJpYnV0ZXNTdGFydEVs
ZW1lbnROc0hhbmRsZXIoQXR0cmlidXRlUGFyc2VTdGF0ZSogc3RhdGUsIGNvbnN0IFFYbWxTdHJl
YW1BdHRyaWJ1dGVzJiBhdHRycykKLXsKLSAgICBpZiAoYXR0cnMuY291bnQoKSA8PSAwKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBzdGF0ZS0+Z290QXR0cmlidXRlcyA9IHRydWU7Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGF0dHJzLmNvdW50KCk7IGkrKykgewotICAgICAgICBjb25zdCBR
WG1sU3RyZWFtQXR0cmlidXRlJiBhdHRyID0gYXR0cnNbaV07Ci0gICAgICAgIFN0cmluZyBhdHRy
TG9jYWxOYW1lID0gYXR0ci5uYW1lKCk7Ci0gICAgICAgIFN0cmluZyBhdHRyVmFsdWUgICAgID0g
YXR0ci52YWx1ZSgpOwotICAgICAgICBTdHJpbmcgYXR0clVSSSAgICAgICA9IGF0dHIubmFtZXNw
YWNlVXJpKCk7Ci0gICAgICAgIFN0cmluZyBhdHRyUU5hbWUgICAgID0gYXR0ci5xdWFsaWZpZWRO
YW1lKCk7Ci0gICAgICAgIHN0YXRlLT5hdHRyaWJ1dGVzLnNldChhdHRyUU5hbWUsIGF0dHJWYWx1
ZSk7Ci0gICAgfQotfQotCi1IYXNoTWFwPFN0cmluZywgU3RyaW5nPiBwYXJzZUF0dHJpYnV0ZXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wmIGF0dHJzT0spCi17Ci0gICAgQXR0cmlidXRlUGFy
c2VTdGF0ZSBzdGF0ZTsKLSAgICBzdGF0ZS5nb3RBdHRyaWJ1dGVzID0gZmFsc2U7Ci0KLSAgICBR
WG1sU3RyZWFtUmVhZGVyIHN0cmVhbTsKLSAgICBRU3RyaW5nIGR1bW15ID0gUVN0cmluZyhRTGF0
aW4xU3RyaW5nKCI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PjxhdHRycyAlMSAvPiIpKS5hcmcoc3Ry
aW5nKTsKLSAgICBzdHJlYW0uYWRkRGF0YShkdW1teSk7Ci0gICAgd2hpbGUgKCFzdHJlYW0uYXRF
bmQoKSkgewotICAgICAgICBzdHJlYW0ucmVhZE5leHQoKTsKLSAgICAgICAgaWYgKHN0cmVhbS5p
c1N0YXJ0RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVzU3RhcnRFbGVtZW50TnNI
YW5kbGVyKCZzdGF0ZSwgc3RyZWFtLmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgYXR0cnNPSyA9IHN0YXRlLmdvdEF0dHJpYnV0ZXM7Ci0gICAgcmV0dXJuIHN0YXRlLmF0dHJp
YnV0ZXM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHByZWZpeEZyb21RTmFtZShjb25zdCBR
U3RyaW5nJiBxTmFtZSkKLXsKLSAgICBjb25zdCBpbnQgb2Zmc2V0ID0gcU5hbWUuaW5kZXhPZihR
TGF0aW4xQ2hhcignOicpKTsKLSAgICBpZiAob2Zmc2V0IDw9IDApCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBxTmFtZS5sZWZ0KG9mZnNldCk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVOYW1lc3BhY2VBdHRyaWJ1dGVzKFZlY3RvcjxB
dHRyaWJ1dGU+JiBwcmVmaXhlZEF0dHJpYnV0ZXMsIGNvbnN0IFFYbWxTdHJlYW1OYW1lc3BhY2VE
ZWNsYXJhdGlvbnMgJm5zLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IG5zLmNvdW50KCk7ICsraSkgewotICAgICAgICBjb25zdCBRWG1sU3RyZWFtTmFtZXNw
YWNlRGVjbGFyYXRpb24gJmRlY2wgPSBuc1tpXTsKLSAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVS
SSA9IGRlY2wubmFtZXNwYWNlVXJpKCk7Ci0gICAgICAgIFN0cmluZyBuYW1lc3BhY2VRTmFtZSA9
IGRlY2wucHJlZml4KCkuaXNFbXB0eSgpID8gU3RyaW5nKCJ4bWxucyIpIDogU3RyaW5nKCJ4bWxu
czoiKTsKLSAgICAgICAgbmFtZXNwYWNlUU5hbWUuYXBwZW5kKGRlY2wucHJlZml4KCkpOwotCi0g
ICAgICAgIFF1YWxpZmllZE5hbWUgcGFyc2VkTmFtZSA9IGFueU5hbWU7Ci0gICAgICAgIGlmICgh
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGVOYW1lKHBhcnNlZE5hbWUsIFhNTE5TTmFtZXM6OnhtbG5z
TmFtZXNwYWNlVVJJLCBuYW1lc3BhY2VRTmFtZSwgZWMpKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHByZWZpeGVkQXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHBhcnNlZE5hbWUs
IG5hbWVzcGFjZVVSSSkpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZUVs
ZW1lbnRBdHRyaWJ1dGVzKFZlY3RvcjxBdHRyaWJ1dGU+JiBwcmVmaXhlZEF0dHJpYnV0ZXMsIGNv
bnN0IFFYbWxTdHJlYW1BdHRyaWJ1dGVzICZhdHRycywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRycy5jb3VudCgpOyArK2kpIHsKLSAgICAgICAgY29u
c3QgUVhtbFN0cmVhbUF0dHJpYnV0ZSAmYXR0ciA9IGF0dHJzW2ldOwotICAgICAgICBTdHJpbmcg
YXR0ckxvY2FsTmFtZSA9IGF0dHIubmFtZSgpOwotICAgICAgICBTdHJpbmcgYXR0clZhbHVlICAg
ICA9IGF0dHIudmFsdWUoKTsKLSAgICAgICAgU3RyaW5nIGF0dHJVUkkgICAgICAgPSBhdHRyLm5h
bWVzcGFjZVVyaSgpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogU3RyaW5nKGF0dHIubmFtZXNwYWNl
VXJpKCkpOwotICAgICAgICBTdHJpbmcgYXR0clFOYW1lICAgICA9IGF0dHIucXVhbGlmaWVkTmFt
ZSgpOwotCi0gICAgICAgIFF1YWxpZmllZE5hbWUgcGFyc2VkTmFtZSA9IGFueU5hbWU7Ci0gICAg
ICAgIGlmICghRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGVOYW1lKHBhcnNlZE5hbWUsIGF0dHJVUkks
IGF0dHJRTmFtZSwgZWMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHByZWZpeGVk
QXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHBhcnNlZE5hbWUsIGF0dHJWYWx1ZSkpOwotICAg
IH0KLX0KLQotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2UoKQotewotICAgIHdoaWxlICgh
aXNTdG9wcGVkKCkgJiYgIW1fcGFyc2VyUGF1c2VkICYmICFtX3N0cmVhbS5hdEVuZCgpKSB7Ci0g
ICAgICAgIG1fc3RyZWFtLnJlYWROZXh0KCk7Ci0gICAgICAgIHN3aXRjaCAobV9zdHJlYW0udG9r
ZW5UeXBlKCkpIHsKLSAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpTdGFydERvY3VtZW50
OgotICAgICAgICAgICAgc3RhcnREb2N1bWVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6RW5kRG9jdW1lbnQ6Ci0gICAgICAgICAgICBlbmRE
b2N1bWVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUVhtbFN0cmVhbVJl
YWRlcjo6U3RhcnRFbGVtZW50OgotICAgICAgICAgICAgcGFyc2VTdGFydEVsZW1lbnQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1l
bnQ6Ci0gICAgICAgICAgICBwYXJzZUVuZEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkNoYXJhY3RlcnM6IHsKLSAgICAgICAgICAg
IGlmIChtX3N0cmVhbS5pc0NEQVRBKCkpIHsKLSAgICAgICAgICAgICAgICAvL2NkYXRhCi0gICAg
ICAgICAgICAgICAgcGFyc2VDZGF0YSgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAvL2NoYXJhY3RlcnMKLSAgICAgICAgICAgICAgICBwYXJzZUNoYXJhY3RlcnMoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgUVhtbFN0cmVhbVJlYWRlcjo6Q29tbWVudDoKLSAgICAgICAgICAgIHBhcnNlQ29tbWVudCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6RFRE
OgotICAgICAgICAgICAgLy9xRGVidWcoKTw8Ii0tLS0tLS0tLS0tLS0gRFREIjsKLSAgICAgICAg
ICAgIHBhcnNlRHRkKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBRWG1sU3Ry
ZWFtUmVhZGVyOjpFbnRpdHlSZWZlcmVuY2U6IHsKLSAgICAgICAgICAgIC8vcURlYnVnKCk8PCIt
LS0tLS0tLS0tIEVOVElUWSA9ICI8PG1fc3RyZWFtLm5hbWUoKS50b1N0cmluZygpCi0gICAgICAg
ICAgICAvLyAgICAgICAgPDwiLCB0ID0gIjw8bV9zdHJlYW0udGV4dCgpLnRvU3RyaW5nKCk7Ci0g
ICAgICAgICAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBRU3Ry
aW5nIGVudGl0eSA9IG1fc3RyZWFtLm5hbWUoKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAg
IGlmICghbV9sZWFmVGV4dE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIGVudGVyVGV4dCgpOwot
ICAgICAgICAgICAgICAgIC8vIHFEZWJ1ZygpPDwiIC0tLS0tLS0gYWRkaW5nIGVudGl0eSAiPDxz
dHI7Ci0gICAgICAgICAgICAgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEoZGVjb2RlTmFt
ZWRFbnRpdHkoZW50aXR5KSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIHBhcnNlUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDogewotICAgICAg
ICAgICAgaWYgKG1fc3RyZWFtLmVycm9yKCkgIT0gUVhtbFN0cmVhbVJlYWRlcjo6UHJlbWF0dXJl
RW5kT2ZEb2N1bWVudEVycm9yKSB7Ci0gICAgICAgICAgICAgICAgWE1MRXJyb3JzOjpFcnJvclR5
cGUgdHlwZSA9IChtX3N0cmVhbS5lcnJvcigpID09IFFYbWxTdHJlYW1SZWFkZXI6Ok5vdFdlbGxG
b3JtZWRFcnJvcikgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MRXJyb3Jz
OjpmYXRhbCA6IFhNTEVycm9yczo6d2FybmluZzsKLSAgICAgICAgICAgICAgICBoYW5kbGVFcnJv
cih0eXBlLCBxUHJpbnRhYmxlKG1fc3RyZWFtLmVycm9yU3RyaW5nKCkpLCB0ZXh0UG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KCkK
LXsKLSAgICBpbml0aWFsaXplUGFyc2VyQ29udGV4dCgpOwotCi0gICAgaWYgKCFtX3BhcnNpbmdG
cmFnbWVudCkgewotICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKG1fc3RyZWFt
LmlzU3RhbmRhbG9uZURvY3VtZW50KCksIElHTk9SRV9FWENFUFRJT04pOwotCi0gICAgICAgIFFT
dHJpbmdSZWYgdmVyc2lvbiA9IG1fc3RyZWFtLmRvY3VtZW50VmVyc2lvbigpOwotICAgICAgICBp
ZiAoIXZlcnNpb24uaXNFbXB0eSgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MVmVy
c2lvbih2ZXJzaW9uLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICAgICAgUVN0cmluZ1JlZiBlbmNv
ZGluZyA9IG1fc3RyZWFtLmRvY3VtZW50RW5jb2RpbmcoKTsKLSAgICAgICAgaWYgKCFlbmNvZGlu
Zy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyhlbmNv
ZGluZyk7Ci0gICAgICAgIGRvY3VtZW50KCktPnNldEhhc1hNTERlY2xhcmF0aW9uKCF2ZXJzaW9u
LmlzRW1wdHkoKSk7Ci0gICAgfQotfQotCi12b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVN0
YXJ0RWxlbWVudCgpCi17Ci0gICAgaWYgKCFtX3Nhd0ZpcnN0RWxlbWVudCAmJiBtX3BhcnNpbmdG
cmFnbWVudCkgewotICAgICAgICAvLyBza2lwIGR1bW15IGVsZW1lbnQgZm9yIGZyYWdtZW50cwot
ICAgICAgICBtX3Nhd0ZpcnN0RWxlbWVudCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBleGl0VGV4dCgpOwotCi0gICAgU3RyaW5nIGxvY2FsTmFtZSA9IG1fc3RyZWFtLm5h
bWUoKTsKLSAgICBTdHJpbmcgdXJpICAgICAgID0gbV9zdHJlYW0ubmFtZXNwYWNlVXJpKCk7Ci0g
ICAgU3RyaW5nIHByZWZpeCAgICA9IHByZWZpeEZyb21RTmFtZShtX3N0cmVhbS5xdWFsaWZpZWRO
YW1lKCkudG9TdHJpbmcoKSk7Ci0KLSAgICBpZiAobV9wYXJzaW5nRnJhZ21lbnQgJiYgdXJpLmlz
TnVsbCgpKSB7Ci0gICAgICAgIFFfQVNTRVJUKHByZWZpeC5pc051bGwoKSk7Ci0gICAgICAgIHVy
aSA9IG1fZGVmYXVsdE5hbWVzcGFjZVVSSTsKLSAgICB9Ci0KLSAgICBRdWFsaWZpZWROYW1lIHFO
YW1lKHByZWZpeCwgbG9jYWxOYW1lLCB1cmkpOwotICAgIFJlZlB0cjxFbGVtZW50PiBuZXdFbGVt
ZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudChxTmFtZSwgdHJ1ZSk7Ci0gICAgaWYgKCFu
ZXdFbGVtZW50KSB7Ci0gICAgICAgIHN0b3BQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRmlyc3RFbGVtZW50ID0gIW1fc2F3Rmlyc3RFbGVtZW50OwotICAg
IG1fc2F3Rmlyc3RFbGVtZW50ID0gdHJ1ZTsKLQotICAgIFZlY3RvcjxBdHRyaWJ1dGU+IHByZWZp
eGVkQXR0cmlidXRlczsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBoYW5kbGVOYW1l
c3BhY2VBdHRyaWJ1dGVzKHByZWZpeGVkQXR0cmlidXRlcywgbV9zdHJlYW0ubmFtZXNwYWNlRGVj
bGFyYXRpb25zKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlcyhu
ZXdFbGVtZW50LmdldCgpLCBwcmVmaXhlZEF0dHJpYnV0ZXMsIHBhcnNlckNvbnRlbnRQb2xpY3ko
KSk7Ci0gICAgICAgIHN0b3BQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBoYW5kbGVFbGVtZW50QXR0cmlidXRlcyhwcmVmaXhlZEF0dHJpYnV0ZXMsIG1fc3RyZWFtLmF0
dHJpYnV0ZXMoKSwgZWMpOwotICAgIHNldEF0dHJpYnV0ZXMobmV3RWxlbWVudC5nZXQoKSwgcHJl
Zml4ZWRBdHRyaWJ1dGVzLCBwYXJzZXJDb250ZW50UG9saWN5KCkpOwotICAgIGlmIChlYykgewot
ICAgICAgICBzdG9wUGFyc2luZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgU2Ny
aXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudElmUG9zc2libGUobmV3
RWxlbWVudC5nZXQoKSk7Ci0gICAgaWYgKHNjcmlwdEVsZW1lbnQpCi0gICAgICAgIG1fc2NyaXB0
U3RhcnRQb3NpdGlvbiA9IHRleHRQb3NpdGlvbigpOwotCi0gICAgbV9jdXJyZW50Tm9kZS0+cGFy
c2VyQXBwZW5kQ2hpbGQobmV3RWxlbWVudC5nZXQoKSk7Ci0KLSAgICBwdXNoQ3VycmVudE5vZGUo
bmV3RWxlbWVudC5nZXQoKSk7Ci0gICAgaWYgKG1fdmlldyAmJiAhbmV3RWxlbWVudC0+YXR0YWNo
ZWQoKSkKLSAgICAgICAgU3R5bGU6OmF0dGFjaFJlbmRlclRyZWUobmV3RWxlbWVudC5nZXQoKSk7
Ci0KLSAgICBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omh0bWxUYWcpKQot
ICAgICAgICBzdGF0aWNfY2FzdDxIVE1MSHRtbEVsZW1lbnQqPihuZXdFbGVtZW50LmdldCgpKS0+
aW5zZXJ0ZWRCeVBhcnNlcigpOwotCi0gICAgaWYgKGlzRmlyc3RFbGVtZW50ICYmIGRvY3VtZW50
KCktPmZyYW1lKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLmRpc3Bh
dGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7Ci19Ci0KLXZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlRW5kRWxlbWVudCgpCi17Ci0gICAgZXhpdFRleHQoKTsKLQotICAgIFJlZlB0cjxD
b250YWluZXJOb2RlPiBuID0gbV9jdXJyZW50Tm9kZTsKLSAgICBuLT5maW5pc2hQYXJzaW5nQ2hp
bGRyZW4oKTsKLQotICAgIGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dlZChwYXJzZXJDb250
ZW50UG9saWN5KCkpICYmIG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnRJZlBv
c3NpYmxlKHRvRWxlbWVudChuLmdldCgpKSkpIHsKLSAgICAgICAgcG9wQ3VycmVudE5vZGUoKTsK
LSAgICAgICAgbi0+cmVtb3ZlKElHTk9SRV9FWENFUFRJT04pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkgfHwgIW1fdmlldykgewotICAgICAg
ICBpZiAoIW1fY3VycmVudE5vZGVTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwb3BDdXJy
ZW50Tm9kZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRWxlbWVudCogZWxlbWVu
dCA9IHRvRWxlbWVudChuLmdldCgpKTsKLQotICAgIC8vIFRoZSBlbGVtZW50J3MgcGFyZW50IG1h
eSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gZG9jdW1lbnQuCi0gICAgLy8gUGFyc2lu
ZyBjb250aW51ZXMgaW4gdGhpcyBjYXNlLCBidXQgc2NyaXB0cyBhcmVuJ3QgZXhlY3V0ZWQuCi0g
ICAgaWYgKCFlbGVtZW50LT5pbkRvY3VtZW50KCkpIHsKLSAgICAgICAgcG9wQ3VycmVudE5vZGUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVs
ZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnRJZlBvc3NpYmxlKGVsZW1lbnQpOwotICAgIGlmICghc2Ny
aXB0RWxlbWVudCkgewotICAgICAgICBwb3BDdXJyZW50Tm9kZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gZG9uJ3QgbG9hZCBleHRlcm5hbCBzY3JpcHRzIGZvciBzdGFuZGFs
b25lIGRvY3VtZW50cyAoZm9yIG5vdykKLSAgICBBU1NFUlQoIW1fcGVuZGluZ1NjcmlwdCk7Ci0g
ICAgbV9yZXF1ZXN0aW5nU2NyaXB0ID0gdHJ1ZTsKLQotICAgIGlmIChzY3JpcHRFbGVtZW50LT5w
cmVwYXJlU2NyaXB0KG1fc2NyaXB0U3RhcnRQb3NpdGlvbiwgU2NyaXB0RWxlbWVudDo6QWxsb3dM
ZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlKSkgewotICAgICAgICBpZiAoc2NyaXB0RWxlbWVudC0+
cmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQoKSkKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmV4
ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LT5zY3JpcHRDb250ZW50
KCksIGRvY3VtZW50KCktPnVybCgpLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24pKTsKLSAgICAgICAg
ZWxzZSBpZiAoc2NyaXB0RWxlbWVudC0+d2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSkgewotICAgICAg
ICAgICAgbV9wZW5kaW5nU2NyaXB0ID0gc2NyaXB0RWxlbWVudC0+Y2FjaGVkU2NyaXB0KCk7Ci0g
ICAgICAgICAgICBtX3NjcmlwdEVsZW1lbnQgPSBlbGVtZW50OwotICAgICAgICAgICAgbV9wZW5k
aW5nU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7Ci0KLSAgICAgICAgICAgIC8vIG1fcGVuZGluZ1Nj
cmlwdCB3aWxsIGJlIDAgaWYgc2NyaXB0IHdhcyBhbHJlYWR5IGxvYWRlZCBhbmQgYWRkQ2xpZW50
KCkgZXhlY3V0ZWQgaXQuCi0gICAgICAgICAgICBpZiAobV9wZW5kaW5nU2NyaXB0KQotICAgICAg
ICAgICAgICAgIHBhdXNlUGFyc2luZygpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1f
c2NyaXB0RWxlbWVudCA9IDA7Ci0gICAgfQotICAgIG1fcmVxdWVzdGluZ1NjcmlwdCA9IGZhbHNl
OwotICAgIHBvcEN1cnJlbnROb2RlKCk7Ci19Ci0KLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBh
cnNlQ2hhcmFjdGVycygpCi17Ci0gICAgaWYgKCFtX2xlYWZUZXh0Tm9kZSkKLSAgICAgICAgZW50
ZXJUZXh0KCk7Ci0gICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgp
LCBJR05PUkVfRVhDRVBUSU9OKTsKLX0KLQotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKQotewotICAgIGV4aXRUZXh0KCk7Ci0KLSAgICAvLyAjIyMg
aGFuZGxlIGV4Y2VwdGlvbnMKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBSZWZQdHI8UHJv
Y2Vzc2luZ0luc3RydWN0aW9uPiBwaSA9IGRvY3VtZW50KCktPmNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbigKLSAgICAgICAgbV9zdHJlYW0ucHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KCks
Ci0gICAgICAgIG1fc3RyZWFtLnByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoKSwgZXhjZXB0aW9u
KTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwaS0+c2V0Q3Jl
YXRlZEJ5UGFyc2VyKHRydWUpOwotCi0gICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hp
bGQocGkuZ2V0KCkpOwotCi0gICAgcGktPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwotCi0gICAg
aWYgKHBpLT5pc0NTUygpKQotICAgICAgICBtX3Nhd0NTUyA9IHRydWU7Ci19Ci0KLXZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OnBhcnNlQ2RhdGEoKQotewotICAgIGV4aXRUZXh0KCk7Ci0KLSAgICBS
ZWZQdHI8Q0RBVEFTZWN0aW9uPiBuZXdOb2RlID0gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoZG9jdW1l
bnQoKSwgbV9zdHJlYW0udGV4dCgpKTsKLQotICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVu
ZENoaWxkKG5ld05vZGUuZ2V0KCkpOwotICAgIGlmIChtX3ZpZXcgJiYgIW5ld05vZGUtPmF0dGFj
aGVkKCkpCi0gICAgICAgIFN0eWxlOjphdHRhY2hUZXh0UmVuZGVyZXIoKm5ld05vZGUpOwotfQot
Ci12b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUNvbW1lbnQoKQotewotICAgIGV4aXRUZXh0
KCk7Ci0KLSAgICBSZWZQdHI8Q29tbWVudD4gbmV3Tm9kZSA9IENvbW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpLCBtX3N0cmVhbS50ZXh0KCkpOwotCi0gICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBw
ZW5kQ2hpbGQobmV3Tm9kZS5nZXQoKSk7Ci19Ci0KLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVu
ZERvY3VtZW50KCkKLXsKLX0KLQotYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6aGFzRXJyb3IoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N0cmVhbS5oYXNFcnJvcigpOwotfQotCi12b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjpwYXJzZUR0ZCgpCi17Ci0gICAgUVN0cmluZ1JlZiBuYW1lID0gbV9zdHJl
YW0uZHRkTmFtZSgpOwotICAgIFFTdHJpbmdSZWYgcHVibGljSWQgPSBtX3N0cmVhbS5kdGRQdWJs
aWNJZCgpOwotICAgIFFTdHJpbmdSZWYgc3lzdGVtSWQgPSBtX3N0cmVhbS5kdGRTeXN0ZW1JZCgp
OwotCi0gICAgLy9xRGVidWcoKSA8PCBkdGQgPDwgbmFtZSA8PCBwdWJsaWNJZCA8PCBzeXN0ZW1J
ZDsKLSAgICBpZiAoKHB1YmxpY0lkID09IFFMYXRpbjFTdHJpbmcoIi0vL1czQy8vRFREIFhIVE1M
IDEuMCBUcmFuc2l0aW9uYWwvL0VOIikpCi0gICAgICAgIHx8IChwdWJsaWNJZCA9PSBRTGF0aW4x
U3RyaW5nKCItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIikpCi0gICAgICAgIHx8IChwdWJsaWNJ
ZCA9PSBRTGF0aW4xU3RyaW5nKCItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIpKQot
ICAgICAgICB8fCAocHVibGljSWQgPT0gUUxhdGluMVN0cmluZygiLS8vVzNDLy9EVEQgWEhUTUwg
MS4wIEZyYW1lc2V0Ly9FTiIpKQotICAgICAgICB8fCAocHVibGljSWQgPT0gUUxhdGluMVN0cmlu
ZygiLS8vVzNDLy9EVEQgWEhUTUwgQmFzaWMgMS4wLy9FTiIpKQotICAgICAgICB8fCAocHVibGlj
SWQgPT0gUUxhdGluMVN0cmluZygiLS8vVzNDLy9EVEQgWEhUTUwgMS4xIHBsdXMgTWF0aE1MIDIu
MC8vRU4iKSkKLSAgICAgICAgfHwgKHB1YmxpY0lkID09IFFMYXRpbjFTdHJpbmcoIi0vL1czQy8v
RFREIFhIVE1MIDEuMSBwbHVzIE1hdGhNTCAyLjAgcGx1cyBTVkcgMS4xLy9FTiIpKQotICAgICAg
ICB8fCAocHVibGljSWQgPT0gUUxhdGluMVN0cmluZygiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBN
b2JpbGUgMS4wLy9FTiIpKQotICAgICAgICB8fCAocHVibGljSWQgPT0gUUxhdGluMVN0cmluZygi
LS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4xLy9FTiIpKQotICAgICAgICB8fCAocHVi
bGljSWQgPT0gUUxhdGluMVN0cmluZygiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4y
Ly9FTiIpKQotICAgICAgICkKLSAgICAgICAgc2V0SXNYSFRNTERvY3VtZW50KHRydWUpOyAvLyBj
b250cm9scyBpZiB3ZSByZXBsYWNlIGVudGl0aWVzIG9yIG5vdC4KLSAgICBpZiAoIW1fcGFyc2lu
Z0ZyYWdtZW50KQotICAgICAgICBkb2N1bWVudCgpLT5wYXJzZXJBcHBlbmRDaGlsZChEb2N1bWVu
dFR5cGU6OmNyZWF0ZShkb2N1bWVudCgpLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpKTsKLQot
fQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0Fib3V0RGF0YVVzZUZlYXR1cmVzLmluIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0Fib3V0RGF0YVVzZUZlYXR1cmVzLmluCmluZGV4IDIzZjViZDE5YjBmNzRmMTQ0
ODJhMDUzMzdlYzY1MDUxMTg2NDI3ZjAuLmRkNGE1NGNkNTJmMDdkZTU4YTQ2ZmIxNjczZGFhOTI3
OTY3MTAxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4KQEAgLTgwLDggKzgwLDYg
QEAgUVRfTU9CSUxJVFlfU1lTVEVNSU5GTwogUVRfTVVMVElNRURJQQogUVVFUllfUEVSRk9STUFO
Q0VfQ09VTlRFUgogUVVJQ0tfTE9PSwotUVhNTFFVRVJZCi1RWE1MU1RSRUFNCiBSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IKIFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJ
TUVSCiBSVExfU0NST0xMQkFSCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>