<?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>225334</bug_id>
          
          <creation_ts>2021-05-03 16:28:47 -0700</creation_ts>
          <short_desc>[WebXR] Move WebXROpaqueFramebuffer to its own file</short_desc>
          <delta_ts>2021-05-04 10:03:15 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756357</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-03 16:28:47 -0700</bug_when>
    <thetext>[WebXR] Move WebXROpaqueFramebuffer to its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756550</commentid>
    <comment_count>1</comment_count>
      <attachid>427675</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-04 09:09:08 -0700</bug_when>
    <thetext>Created attachment 427675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756569</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-04 10:02:26 -0700</bug_when>
    <thetext>Committed r276962 (237293@main): &lt;https://commits.webkit.org/237293@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427675.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756570</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-04 10:03:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/77511960&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427675</attachid>
            <date>2021-05-04 09:09:08 -0700</date>
            <delta_ts>2021-05-04 10:02:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225334-20210505020906.patch</filename>
            <type>text/plain</type>
            <size>42119</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YTFjMmEwYWI4N2I3
ZGZmYTdlYmFmZWQxMmFmNGEyNTA5YzAyMC4uOGRhMzBiNzk5YmU4Zjk2MThhZDZkNzIxYjU5NWQ1
YTVlMjZhZWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA1LTAzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIE1vdmUgV2ViWFJP
cGFxdWVGcmFtZWJ1ZmZlciB0byBpdHMgb3duIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTMzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlciBvdXQg
b2YgV2ViWFJXZWJHTExheWVyLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1
ZUZyYW1lYnVmZmVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUldlYkdMTGF5ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJPcGFxdWVGcmFt
ZWJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZm
ZXI6OldlYlhST3BhcXVlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJPcGFx
dWVGcmFtZWJ1ZmZlcjo6fldlYlhST3BhcXVlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c3RhcnRGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjplbmRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1cEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OmhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpmcmFtZWJ1ZmZlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhST3BhcXVlRnJhbWVidWZmZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6On5XZWJYUk9wYXF1
ZUZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJh
bWVidWZmZXI6OnN0YXJ0RnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJP
cGFxdWVGcmFtZWJ1ZmZlcjo6ZW5kRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OmhhbmRsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpmcmFtZWJ1ZmZlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjp3aWR0aCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUk9wYXF1ZUZyYW1lYnVmZmVy
OjpoZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNS0wMyAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBSZW1vdmUgcmVu
YW1lZCBJREwgZmlsZXMgaW4gWGNvZGUgcHJvamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Yjk0N2Q4MjE0ZjVjZDRkZmI0MjNiYmQxNjcwYzFjNWY2OGIxMDAxMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKQEAgLTAsMCArMSwzMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQor
CisjaWYgIVVTRShBTkdMRSkKKyNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIK
KyNlbmRpZgorI2lmIFVTRShPUEVOR0xfRVMpCisjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaCIKKyNlbmRpZgorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpZiAhVVNFKEFOR0xFKQorI2lu
Y2x1ZGUgIlRlbXBvcmFyeU9wZW5HTFNldHRpbmcuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYkdM
RnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpZiBF
TkFCTEUoV0VCR0wyKQorI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKKyNlbmRp
ZgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKKyNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBHTCA9IEdyYXBoaWNzQ29u
dGV4dEdMOworCitzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcj4gV2ViWFJP
cGFxdWVGcmFtZWJ1ZmZlcjo6Y3JlYXRlKFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGhhbmRsZSwg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgQXR0cmlidXRlcyYmIGF0dHJpYnV0
ZXMsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCit7CisgICAgYXV0byBmcmFtZWJ1
ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZU9wYXF1ZShjb250ZXh0KTsKKyAgICBhdXRv
IG9wYXF1ZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyPihuZXcgV2Vi
WFJPcGFxdWVGcmFtZWJ1ZmZlcihoYW5kbGUsIFdURk1vdmUoZnJhbWVidWZmZXIpLCBjb250ZXh0
LCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgaWYgKCFvcGFxdWUt
PnNldHVwRnJhbWVidWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG9wYXF1ZTsKK30KKworV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6V2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBoYW5kbGUsIFJlZjxXZWJHTEZyYW1lYnVmZmVy
PiYmIGZyYW1lYnVmZmVyLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdHRy
aWJ1dGVzJiYgYXR0cmlidXRlcywgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKKyAg
ICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICAsIG1fZnJhbWVidWZmZXIoV1RGTW92ZShmcmFtZWJ1
ZmZlcikpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fYXR0cmlidXRlcyhXVEZN
b3ZlKGF0dHJpYnV0ZXMpKQorICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAsIG1faGVpZ2h0KGhl
aWdodCkKK3sKK30KKworV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6fldlYlhST3BhcXVlRnJhbWVi
dWZmZXIoKQoreworICAgIGlmIChhdXRvIGdsID0gbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCkpIHsKKyAgICAgICAgaWYgKG1fc3RlbmNpbEJ1ZmZlcikKKyAgICAgICAgICAgIGdsLT5kZWxl
dGVSZW5kZXJidWZmZXIobV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgaWYgKG1fZGVwdGhTdGVu
Y2lsQnVmZmVyKQorICAgICAgICAgICAgZ2wtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisgICAgICAgIGlmIChtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpCisgICAg
ICAgICAgICBnbC0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7
CisgICAgICAgIGlmIChtX3Jlc29sdmVkRkJPKQorICAgICAgICAgICAgZ2wtPmRlbGV0ZUZyYW1l
YnVmZmVyKG1fcmVzb2x2ZWRGQk8pOworICAgICAgICBtX2NvbnRleHQuZGVsZXRlRnJhbWVidWZm
ZXIobV9mcmFtZWJ1ZmZlci5wdHIoKSk7CisgICAgfQorfQorCit2b2lkIFdlYlhST3BhcXVlRnJh
bWVidWZmZXI6OnN0YXJ0RnJhbWUoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OkxheWVyRGF0YSYgZGF0YSkKK3sKKyAgICBtX29wYXF1ZVRleHR1cmUgPSBkYXRhLm9wYXF1ZVRl
eHR1cmU7CisgICAgaWYgKCFtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGF1dG8mIGdsID0gKm1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwor
CisgICAgbV9mcmFtZWJ1ZmZlci0+c2V0T3BhcXVlQWN0aXZlKHRydWUpOworCisgICAgR0NHTGlu
dCBib3VuZEZCTyB7IDAgfTsKKworICAgIGdsLmdldEludGVnZXJ2KEdMOjpGUkFNRUJVRkZFUl9C
SU5ESU5HLCBtYWtlR0NHTFNwYW4oJmJvdW5kRkJPLCAxKSk7CisgICAgYXV0byBzY29wZWRGQk9z
ID0gbWFrZVNjb3BlRXhpdChbJmdsLCBib3VuZEZCT10oKSB7CisgICAgICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIGJvdW5kRkJPKTsKKyAgICB9KTsKKworICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXItPm9iamVjdCgpKTsK
KyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNvcGFxdWUtZnJh
bWVidWZmZXIKKyAgICAvLyBUaGUgYnVmZmVycyBhdHRhY2hlZCB0byBhbiBvcGFxdWUgZnJhbWVi
dWZmZXIgTVVTVCBiZSBjbGVhcmVkIHRvIHRoZSB2YWx1ZXMgaW4gdGhlIHRhYmxlIGJlbG93IHdo
ZW4gZmlyc3QgY3JlYXRlZCwKKyAgICAvLyBvciBwcmlvciB0byB0aGUgcHJvY2Vzc2luZyBvZiBl
YWNoIFhSIGFuaW1hdGlvbiBmcmFtZS4KKyAgICBzdGQ6OmFycmF5PGNvbnN0IEdDR0xlbnVtLCAz
PiBhdHRhY2htZW50cyA9IHsgR0w6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTDo6U1RFTkNJTF9BVFRB
Q0hNRU5ULCBHTDo6REVQVEhfQVRUQUNITUVOVCB9OworICAgIGdsLmludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHTDo6RlJBTUVCVUZGRVIsIG1ha2VHQ0dMU3BhbihhdHRhY2htZW50cy5kYXRhKCksIGF0
dGFjaG1lbnRzLnNpemUoKSkpOworCisjaWYgVVNFKE9QRU5HTF9FUykKKyAgICBhdXRvJiBleHRl
bnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+KGdsLmdldEV4
dGVuc2lvbnMoKSk7CisgICAgaWYgKG1fYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgZXh0ZW5zaW9u
cy5pc0ltYWdpbmF0aW9uKCkpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy5mcmFtZWJ1ZmZlclRleHR1
cmUyRE11bHRpc2FtcGxlSU1HKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkNPTE9SX0FUVEFDSE1FTlQw
LCBHTDo6VEVYVFVSRV8yRCwgbV9vcGFxdWVUZXh0dXJlLCAwLCBtX3NhbXBsZUNvdW50KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCFtX211bHRpc2FtcGxlQ29s
b3JCdWZmZXIpCisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMOjpGUkFNRUJVRkZF
UiwgR0w6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTDo6VEVYVFVSRV8yRCwgbV9vcGFxdWVUZXh0dXJl
LCAwKTsKK30KKwordm9pZCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjplbmRGcmFtZSgpCit7Cisg
ICAgbV9mcmFtZWJ1ZmZlci0+c2V0T3BhcXVlQWN0aXZlKGZhbHNlKTsKKworICAgIGlmICghbV9j
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBn
bCA9ICptX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKKworICAgIGlmIChtX211bHRpc2Ft
cGxlQ29sb3JCdWZmZXIpIHsKKyNpZiAhVVNFKEFOR0xFKQorICAgICAgICAvLyBGSVhNRTogVGhl
c2UgbWF5IGJlIG5lZWRlZCB3aGVuIHVzaW5nIEFOR0xFLCBidXQgaXQgZGlkbid0IGNvbXBpbGUg
aW4gdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24uCisgICAgICAgIFRlbXBvcmFyeU9wZW5HTFNl
dHRpbmcgc2NvcGVkU2Npc3NvcihHTDo6U0NJU1NPUl9URVNULCAwKTsKKyAgICAgICAgVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZyBzY29wZWREaXRoZXIoR0w6OkRJVEhFUiwgMCk7CisgICAgICAgIFRl
bXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkRGVwdGgoR0w6OkRFUFRIX1RFU1QsIDApOworICAg
ICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZFN0ZW5jaWwoR0w6OlNURU5DSUxfVEVT
VCwgMCk7CisjZW5kaWYKKworICAgICAgICBHQ0dMaW50IGJvdW5kUmVhZEZCTyB7IDAgfTsKKyAg
ICAgICAgR0NHTGludCBib3VuZERyYXdGQk8geyAwIH07CisgICAgICAgIGdsLmdldEludGVnZXJ2
KEdMOjpSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcsIG1ha2VHQ0dMU3BhbigmYm91bmRSZWFkRkJP
LCAxKSk7CisgICAgICAgIGdsLmdldEludGVnZXJ2KEdMOjpEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJ
TkcsIG1ha2VHQ0dMU3BhbigmYm91bmREcmF3RkJPLCAxKSk7CisKKyAgICAgICAgYXV0byBzY29w
ZWRGQk9zID0gbWFrZVNjb3BlRXhpdChbJmdsLCBib3VuZFJlYWRGQk8sIGJvdW5kRHJhd0ZCT10o
KSB7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OlJFQURfRlJBTUVCVUZGRVIs
IGJvdW5kUmVhZEZCTyk7CisgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OkRSQVdf
RlJBTUVCVUZGRVIsIGJvdW5kRHJhd0ZCTyk7CisgICAgICAgIH0pOworCisgICAgICAgIGdsLmJp
bmRGcmFtZWJ1ZmZlcihHTDo6RFJBV19GUkFNRUJVRkZFUiwgbV9yZXNvbHZlZEZCTyk7CisgICAg
ICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHTDo6VEVYVFVSRV8yRCwgbV9vcGFxdWVUZXh0dXJlLCAwKTsKKworICAgICAg
ICAvLyBSZXNvbHZlIG11bHRpc2FtcGxlIGZyYW1lYnVmZmVyCisgICAgICAgIGdsLmJpbmRGcmFt
ZWJ1ZmZlcihHTDo6UkVBRF9GUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlci0+b2JqZWN0KCkpOwor
ICAgICAgICBnbC5ibGl0RnJhbWVidWZmZXIoMCwgMCwgbV93aWR0aCwgbV9oZWlnaHQsIDAsIDAs
IG1fd2lkdGgsIG1faGVpZ2h0LCBHTDo6Q09MT1JfQlVGRkVSX0JJVCwgR0w6OkxJTkVBUik7Cisg
ICAgfQorICAgIAorICAgIGdsLmZsdXNoKCk7Cit9CisKK2Jvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2NvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIGdsID0gKm1fY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOworCisgICAgLy8gQmluZCBjdXJyZW50IEZCT3Mgd2hl
biBleGl0aW5nIHRoZSBmdW5jdGlvbgorICAgIEdDR0xpbnQgYm91bmRGQk8geyAwIH07CisgICAg
R0NHTGludCBib3VuZFJlbmRlcmJ1ZmZlciB7IDAgfTsKKyAgICBnbC5nZXRJbnRlZ2VydihHTDo6
RlJBTUVCVUZGRVJfQklORElORywgbWFrZUdDR0xTcGFuKCZib3VuZEZCTywgMSkpOworICAgIGds
LmdldEludGVnZXJ2KEdMOjpSRU5ERVJCVUZGRVJfQklORElORywgbWFrZUdDR0xTcGFuKCZib3Vu
ZFJlbmRlcmJ1ZmZlciwgMSkpOworICAgIGF1dG8gc2NvcGVkRkJPID0gbWFrZVNjb3BlRXhpdChb
JmdsLCBib3VuZEZCTywgYm91bmRSZW5kZXJidWZmZXJdKCkgeworICAgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBib3VuZEZCTyk7CisgICAgICAgIGdsLmJpbmRSZW5k
ZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZFUiwgYm91bmRSZW5kZXJidWZmZXIpOworICAgIH0pOwor
CisgICAgLy8gU2V0IHVwIGNvbG9yLCBkZXB0aCBhbmQgc3RlbmNpbCBmb3JtYXRzCisgICAgYm9v
bCB1c2VEZXB0aFN0ZW5jaWwgPSBtX2F0dHJpYnV0ZXMuc3RlbmNpbCB8fCBtX2F0dHJpYnV0ZXMu
ZGVwdGg7CisgICAgYXV0byBjb2xvckZvcm1hdCA9IG1fYXR0cmlidXRlcy5hbHBoYSA/IEdyYXBo
aWNzQ29udGV4dEdMOjpSR0JBOCA6IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I4OworI2lmIFVTRShP
UEVOR0xfRVMpCisgICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGJvb2wgc3VwcG9ydHNQ
YWNrZWREZXB0aFN0ZW5jaWwgPSB1c2VEZXB0aFN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0
cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYXV0byBkZXB0aEZvcm1hdCA9
IHN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6
REVQVEhfQ09NUE9ORU5UMTY7CisgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxf
SU5ERVg4OworI2VsaWYgVVNFKEFOR0xFKQorICAgIC8vIEZJWE1FOiBUaGVzZSB2YWx1ZXMgd2Vy
ZSBjaG9zZW4ganVzdCB0byBnZXQgdGhpcyB0byBjb21waWxlIHN1Y2Nlc3NmdWxseS4KKyAgICAv
LyBNYWtlIHN1cmUgdGhleSBhcmUgY29ycmVjdC4KKyAgICBib29sIHN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID0gZmFsc2U7CisgICAgYXV0byBkZXB0aEZvcm1hdCA9IHN1cHBvcnRzUGFja2Vk
RGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5U
OworICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKKyNlbHNlCisg
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBib29sIHN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID0gdXNlRGVwdGhTdGVuY2lsICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBzdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDsKKyAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7
CisjZW5kaWYKKworICAgIC8vIFNldCB1cCByZWNvbW1lbmRlZCBzYW1wbGVzIGZvciBXZWJYUi4K
KyAgICAvLyBGSVhNRTogY2hlY2sgaWYgd2UgY2FuIGdldCByZWNvbW1lbmRlZCB2YWx1ZXMgZnJv
bSBlYWNoIGRldmljZSBwbGF0Zm9ybS4KKyAgICBpZiAobV9hdHRyaWJ1dGVzLmFudGlhbGlhcykg
eworICAgICAgICBHQ0dMaW50IG1heFNhbXBsZUNvdW50OworI2lmIFVTRShBTkdMRSkKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgaXMgbm90IGNvcnJlY3QuCisgICAgICAgIG1heFNh
bXBsZUNvdW50ID0gMDsKKyNlbHNlCisgICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNH
TDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyNlbmRp
ZgorICAgICAgICAvLyBVc2luZyBtb3JlIHRoYW4gNCBzYW1wbGVzIG1pZ2h0IGJlIG92ZXJoZWFk
LgorICAgICAgICBtX3NhbXBsZUNvdW50ID0gc3RkOjptaW4oNCwgbWF4U2FtcGxlQ291bnQpOwor
ICAgIH0KKworI2lmIFVTRShPUEVOR0xfRVMpCisgICAgLy8gVXNlIG11bHRpc2FtcGxlZF9yZW5k
ZXJfdG9fdGV4dHVyZSBleHRlbnNpb24gaWYgYXZhaWxhYmxlLgorICAgIGlmIChtX2F0dHJpYnV0
ZXMuYW50aWFsaWFzICYmIGV4dGVuc2lvbnMuaXNJbWFnaW5hdGlvbigpKSB7CisgICAgICAgIC8v
IGZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcgaXMgc2V0IHVwIGluIHN0YXJ0RnJh
bWUgY2FsbC4KKyAgICAgICAgaWYgKCF1c2VEZXB0aFN0ZW5jaWwpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihHTDo6RlJBTUVC
VUZGRVIsIG1fZnJhbWVidWZmZXItPm9iamVjdCgpKTsKKyAgICAgICAgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgaWYgKHN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsKSB7CisgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdMOjpS
RU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIGV4dGVuc2lv
bnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0w6OlJFTkRFUkJVRkZFUiwg
bV9zYW1wbGVDb3VudCwgZGVwdGhGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICAgICAg
ICAgIGlmIChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQs
IEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIGlm
IChtX2F0dHJpYnV0ZXMuZGVwdGgpCisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6REVQVEhfQVRUQUNITUVOVCwgR0w6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKG1fYXR0cmlidXRlcy5zdGVuY2lsKSB7CisgICAgICAgICAgICAgICAgbV9zdGVu
Y2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZ2wu
YmluZFJlbmRlcmJ1ZmZlcihHTDo6UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOworICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0w6OlJFTkRFUkJVRkZFUiwgbV9zYW1wbGVDb3VudCwgc3RlbmNpbEZvcm1hdCwgbV93aWR0
aCwgbV9oZWlnaHQpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMOjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxfQVRUQUNITUVOVCwgR0w6OlJFTkRFUkJVRkZF
UiwgbV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX2F0
dHJpYnV0ZXMuZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdM
OjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBl
eHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMOjpSRU5ERVJC
VUZGRVIsIG1fc2FtcGxlQ291bnQsIGRlcHRoRm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7Cisg
ICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVS
LCBHTDo6REVQVEhfQVRUQUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbmRpZiAvLyBVU0UoT1BFTkdMX0VTKQorCisgICAgaWYgKG1fYXR0cmlidXRlcy5h
bnRpYWxpYXMgJiYgbV9jb250ZXh0LmlzV2ViR0wyKCkpIHsKKyAgICAgICAgLy8gVXNlIGFuIGV4
dHJhIEZCTyBmb3IgbXVsdGlzYW1wbGUgaWYgbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJl
IGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgIG1fcmVzb2x2ZWRGQk8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworICAgICAgICBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIgPSBnbC5jcmVhdGVS
ZW5kZXJidWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKEdMOjpGUkFNRUJVRkZF
UiwgbV9mcmFtZWJ1ZmZlci0+b2JqZWN0KCkpOworICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KEdMOjpSRU5ERVJCVUZGRVIsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgIGds
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTDo6UkVOREVSQlVGRkVSLCBtX3NhbXBs
ZUNvdW50LCBjb2xvckZvcm1hdCwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgICAgICBnbC5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIEdMOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR0w6OlJFTkRFUkJVRkZFUiwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAg
aWYgKHVzZURlcHRoU3RlbmNpbCkgeworICAgICAgICAgICAgbV9kZXB0aFN0ZW5jaWxCdWZmZXIg
PSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0c1BhY2tl
ZERlcHRoU3RlbmNpbCkgeworICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6
OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgIGds
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTDo6UkVOREVSQlVGRkVSLCBtX3NhbXBs
ZUNvdW50LCBkZXB0aEZvcm1hdCwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgICAgICAgICAgICAg
IGlmIChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkKKyAgICAgICAgICAgICAgICAgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRBQ0hNRU5U
LCBHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgaWYgKG1fYXR0cmlidXRlcy5kZXB0aCkKKyAgICAgICAgICAgICAgICAgICAgZ2wuZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6REVQVEhfQVRUQUNITUVOVCwg
R0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9zdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7
CisgICAgICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZF
UiwgbV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdMOjpSRU5ERVJCVUZGRVIsIG1fc2FtcGxlQ291bnQsIHN0ZW5j
aWxGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZ2wuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRBQ0hN
RU5ULCBHTDo6UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlcHRoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0
ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUoR0w6OlJFTkRFUkJVRkZFUiwgbV9zYW1wbGVDb3VudCwgZGVwdGhGb3JtYXQs
IG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6REVQVEhfQVRUQUNITUVOVCwgR0w6OlJF
TkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTDo6RlJBTUVCVUZGRVIpID09IEdMOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKKyAg
ICB9CisgICAgaWYgKHVzZURlcHRoU3RlbmNpbCkgeworICAgICAgICBnbC5iaW5kRnJhbWVidWZm
ZXIoR0w6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyLT5vYmplY3QoKSk7CisgICAgICAgIG1f
ZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgICAgIGlm
IChzdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCkgeworICAgICAgICAgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAg
ICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKEdMOjpSRU5ERVJCVUZGRVIsIGRlcHRoRm9ybWF0
LCBtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5j
aWwpCisgICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1F
QlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlcHRoKQorICAg
ICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwg
R0w6OkRFUFRIX0FUVEFDSE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuc3Rl
bmNpbCkgeworICAgICAgICAgICAgICAgIG1fc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6OlJFTkRF
UkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlKEdMOjpSRU5ERVJCVUZGRVIsIHN0ZW5jaWxGb3JtYXQsIG1fd2lkdGgsIG1faGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTDo6RlJB
TUVCVUZGRVIsIEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fc3Rl
bmNpbEJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVz
LmRlcHRoKSB7CisgICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihHTDo6UkVOREVS
QlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZ2wucmVuZGVy
YnVmZmVyU3RvcmFnZShHTDo6UkVOREVSQlVGRkVSLCBkZXB0aEZvcm1hdCwgbV93aWR0aCwgbV9o
ZWlnaHQpOworICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpG
UkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhST3BhcXVlRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJPcGFxdWVGcmFtZWJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZGRhM2QzYzFhMGExYTZlZDljODQ5
ZDcxZWVmZmEyMTljOGRhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuaApAQCAtMCwwICsxLDg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJH
cmFwaGljc1R5cGVzR0wuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisjaW5jbHVkZSAiV2Vi
WFJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJbnRTaXplOworY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKK2NsYXNzIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U7CitzdHJ1Y3QgWFJXZWJHTExheWVySW5pdDsKKworY2xhc3MgV2Vi
WFJPcGFxdWVGcmFtZWJ1ZmZlciB7CitwdWJsaWM6CisgICAgc3RydWN0IEF0dHJpYnV0ZXMgewor
ICAgICAgICBib29sIGFscGhhIHsgdHJ1ZSB9OworICAgICAgICBib29sIGFudGlhbGlhcyB7IHRy
dWUgfTsKKyAgICAgICAgYm9vbCBkZXB0aCB7IHRydWUgfTsKKyAgICAgICAgYm9vbCBzdGVuY2ls
IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJYUk9w
YXF1ZUZyYW1lYnVmZmVyPiBjcmVhdGUoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUsIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmLCBBdHRyaWJ1dGVzJiYsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJf
dCBoZWlnaHQpOworICAgIH5XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyKCk7CisKKyAgICBQbGF0Zm9y
bVhSOjpMYXllckhhbmRsZSBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZTsgfQorICAg
IGNvbnN0IFdlYkdMRnJhbWVidWZmZXImIGZyYW1lYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZWJ1ZmZlci5nZXQoKTsgfQorICAgIHVpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aDsgfQorICAgIHVpbnQzMl90IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0
OyB9CisKKyAgICB2b2lkIHN0YXJ0RnJhbWUoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OkxheWVyRGF0YSYpOworICAgIHZvaWQgZW5kRnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyKFBsYXRmb3JtWFI6OkxheWVySGFuZGxlLCBSZWY8V2Vi
R0xGcmFtZWJ1ZmZlcj4mJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEF0dHJpYnV0ZXMm
JiwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7CisKKyAgICBib29sIHNldHVwRnJh
bWVidWZmZXIoKTsKKworICAgIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIG1faGFuZGxlOworICAg
IFJlZjxXZWJHTEZyYW1lYnVmZmVyPiBtX2ZyYW1lYnVmZmVyOworICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICBBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKKyAg
ICB1aW50MzJfdCBtX3dpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9Owor
ICAgIFBsYXRmb3JtR0xPYmplY3QgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CisgICAgUGxh
dGZvcm1HTE9iamVjdCBtX3N0ZW5jaWxCdWZmZXIgeyAwIH07CisgICAgUGxhdGZvcm1HTE9iamVj
dCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIgeyAwIH07CisgICAgUGxhdGZvcm1HTE9iamVjdCBt
X3Jlc29sdmVkRkJPIHsgMCB9OworICAgIEdDR0xpbnQgbV9zYW1wbGVDb3VudCB7IDAgfTsKKyAg
ICBQbGF0Zm9ybUdMT2JqZWN0IG1fb3BhcXVlVGV4dHVyZSB7IDAgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA2Mjc1NDE1ZGMw
YWJmNGJhMGQ1ZTU1ZGYzN2Q2ZGRlYmI0ZWY2NGFhLi4zZWMxYjUyZmQ2MDkyMzEyNjgyZDdlMDQ3
YzA4YWRkYzczY2QzMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yOCwxMiArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdFQlhS
KQogCi0jaWYgIVVTRShBTkdMRSkKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
aCIKLSNlbmRpZgotI2lmIFVTRShPUEVOR0xfRVMpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuaCIKLSNlbmRpZgogI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0wuaCIKICNlbmRpZgpAQCAtNTAsNiArNDQsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNs
dWRlICJXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiV2ViWFJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3cG9ydC5oIgpAQCAt
NTksOCArNTQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIEdMID0gR3JhcGhp
Y3NDb250ZXh0R0w7Ci0KIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUldlYkdMTGF5
ZXIpOwogCiAvLyBBcmJpdHJhcnkgdmFsdWUgZm9yIG1pbmltdW0gZnJhbWVidWZmZXIgc2NhbGlu
Zy4KQEAgLTM0NywyNjAgKzM0MCw2IEBAIHZvaWQgV2ViWFJXZWJHTExheWVyOjpjb21wdXRlVmll
d3BvcnRzKCkKICAgICBtX3ZpZXdwb3J0c0RpcnR5ID0gZmFsc2U7CiB9CiAKLS8vIFdlYlhST3Bh
cXVlRnJhbWVidWZmZXIKLQotc3RkOjp1bmlxdWVfcHRyPFdlYlhST3BhcXVlRnJhbWVidWZmZXI+
IFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OmNyZWF0ZShQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBo
YW5kbGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQsIEF0dHJpYnV0ZXMmJiBh
dHRyaWJ1dGVzLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQotewotICAgIGF1dG8g
ZnJhbWVidWZmZXIgPSBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGVPcGFxdWUoY29udGV4dCk7Ci0g
ICAgYXV0byBvcGFxdWUgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcj4o
bmV3IFdlYlhST3BhcXVlRnJhbWVidWZmZXIoaGFuZGxlLCBXVEZNb3ZlKGZyYW1lYnVmZmVyKSwg
Y29udGV4dCwgV1RGTW92ZShhdHRyaWJ1dGVzKSwgd2lkdGgsIGhlaWdodCkpOwotICAgIGlmICgh
b3BhcXVlLT5zZXR1cEZyYW1lYnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBvcGFxdWU7Ci19Ci0KLVdlYlhST3BhcXVlRnJhbWVidWZmZXI6OldlYlhST3BhcXVl
RnJhbWVidWZmZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgaGFuZGxlLCBSZWY8V2ViR0xGcmFt
ZWJ1ZmZlcj4mJiBmcmFtZWJ1ZmZlciwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCwgQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln
aHQpCi0gICAgOiBtX2hhbmRsZShoYW5kbGUpCi0gICAgLCBtX2ZyYW1lYnVmZmVyKFdURk1vdmUo
ZnJhbWVidWZmZXIpKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2F0dHJpYnV0
ZXMoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAsIG1fd2lkdGgod2lkdGgpCi0gICAgLCBtX2hl
aWdodChoZWlnaHQpCi17Ci19Ci0KLVdlYlhST3BhcXVlRnJhbWVidWZmZXI6On5XZWJYUk9wYXF1
ZUZyYW1lYnVmZmVyKCkKLXsKLSAgICBpZiAoYXV0byBnbCA9IG1fY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpKSB7Ci0gICAgICAgIGlmIChtX3N0ZW5jaWxCdWZmZXIpCi0gICAgICAgICAgICBn
bC0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIGlmIChtX2Rl
cHRoU3RlbmNpbEJ1ZmZlcikKLSAgICAgICAgICAgIGdsLT5kZWxldGVSZW5kZXJidWZmZXIobV9k
ZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICBpZiAobV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVy
KQotICAgICAgICAgICAgZ2wtPmRlbGV0ZVJlbmRlcmJ1ZmZlcihtX211bHRpc2FtcGxlQ29sb3JC
dWZmZXIpOwotICAgICAgICBpZiAobV9yZXNvbHZlZEZCTykKLSAgICAgICAgICAgIGdsLT5kZWxl
dGVGcmFtZWJ1ZmZlcihtX3Jlc29sdmVkRkJPKTsKLSAgICAgICAgbV9jb250ZXh0LmRlbGV0ZUZy
YW1lYnVmZmVyKG1fZnJhbWVidWZmZXIucHRyKCkpOwotICAgIH0KLX0KLQotdm9pZCBXZWJYUk9w
YXF1ZUZyYW1lYnVmZmVyOjpzdGFydEZyYW1lKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpMYXllckRhdGEmIGRhdGEpCi17Ci0gICAgbV9vcGFxdWVUZXh0dXJlID0gZGF0YS5v
cGFxdWVUZXh0dXJlOwotICAgIGlmICghbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBhdXRvJiBnbCA9ICptX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKTsKLQotICAgIG1fZnJhbWVidWZmZXItPnNldE9wYXF1ZUFjdGl2ZSh0cnVlKTsKLQotICAg
IEdDR0xpbnQgYm91bmRGQk8geyAwIH07Ci0KLSAgICBnbC5nZXRJbnRlZ2VydihHTDo6RlJBTUVC
VUZGRVJfQklORElORywgbWFrZUdDR0xTcGFuKCZib3VuZEZCTywgMSkpOwotICAgIGF1dG8gc2Nv
cGVkRkJPcyA9IG1ha2VTY29wZUV4aXQoWyZnbCwgYm91bmRGQk9dKCkgewotICAgICAgICBnbC5i
aW5kRnJhbWVidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBib3VuZEZCTyk7Ci0gICAgfSk7Ci0KLSAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyLT5vYmpl
Y3QoKSk7Ci0gICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jb3Bh
cXVlLWZyYW1lYnVmZmVyCi0gICAgLy8gVGhlIGJ1ZmZlcnMgYXR0YWNoZWQgdG8gYW4gb3BhcXVl
IGZyYW1lYnVmZmVyIE1VU1QgYmUgY2xlYXJlZCB0byB0aGUgdmFsdWVzIGluIHRoZSB0YWJsZSBi
ZWxvdyB3aGVuIGZpcnN0IGNyZWF0ZWQsCi0gICAgLy8gb3IgcHJpb3IgdG8gdGhlIHByb2Nlc3Np
bmcgb2YgZWFjaCBYUiBhbmltYXRpb24gZnJhbWUuCi0gICAgc3RkOjphcnJheTxjb25zdCBHQ0dM
ZW51bSwgMz4gYXR0YWNobWVudHMgPSB7IEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR0w6OlNURU5D
SUxfQVRUQUNITUVOVCwgR0w6OkRFUFRIX0FUVEFDSE1FTlQgfTsKLSAgICBnbC5pbnZhbGlkYXRl
RnJhbWVidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBtYWtlR0NHTFNwYW4oYXR0YWNobWVudHMuZGF0
YSgpLCBhdHRhY2htZW50cy5zaXplKCkpKTsKLQotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgYXV0
byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMRVMmPihn
bC5nZXRFeHRlbnNpb25zKCkpOwotICAgIGlmIChtX2F0dHJpYnV0ZXMuYW50aWFsaWFzICYmIGV4
dGVuc2lvbnMuaXNJbWFnaW5hdGlvbigpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMuZnJhbWVidWZm
ZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyhHTDo6RlJBTUVCVUZGRVIsIEdMOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR0w6OlRFWFRVUkVfMkQsIG1fb3BhcXVlVGV4dHVyZSwgMCwgbV9zYW1wbGVDb3Vu
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbV9tdWx0aXNh
bXBsZUNvbG9yQnVmZmVyKQotICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChHTDo6RlJB
TUVCVUZGRVIsIEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR0w6OlRFWFRVUkVfMkQsIG1fb3BhcXVl
VGV4dHVyZSwgMCk7Ci19Ci0KLXZvaWQgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6ZW5kRnJhbWUo
KQotewotICAgIG1fZnJhbWVidWZmZXItPnNldE9wYXF1ZUFjdGl2ZShmYWxzZSk7Ci0KLSAgICBp
ZiAoIW1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
YXV0byYgZ2wgPSAqbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7Ci0KLSAgICBpZiAobV9t
dWx0aXNhbXBsZUNvbG9yQnVmZmVyKSB7Ci0jaWYgIVVTRShBTkdMRSkKLSAgICAgICAgLy8gRklY
TUU6IFRoZXNlIG1heSBiZSBuZWVkZWQgd2hlbiB1c2luZyBBTkdMRSwgYnV0IGl0IGRpZG4ndCBj
b21waWxlIGluIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uLgotICAgICAgICBUZW1wb3JhcnlP
cGVuR0xTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0w6OlNDSVNTT1JfVEVTVCwgMCk7Ci0gICAgICAg
IFRlbXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkRGl0aGVyKEdMOjpESVRIRVIsIDApOwotICAg
ICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZERlcHRoKEdMOjpERVBUSF9URVNULCAw
KTsKLSAgICAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWRTdGVuY2lsKEdMOjpTVEVO
Q0lMX1RFU1QsIDApOwotI2VuZGlmCi0KLSAgICAgICAgR0NHTGludCBib3VuZFJlYWRGQk8geyAw
IH07Ci0gICAgICAgIEdDR0xpbnQgYm91bmREcmF3RkJPIHsgMCB9OwotICAgICAgICBnbC5nZXRJ
bnRlZ2VydihHTDo6UkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HLCBtYWtlR0NHTFNwYW4oJmJvdW5k
UmVhZEZCTywgMSkpOwotICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6RFJBV19GUkFNRUJVRkZF
Ul9CSU5ESU5HLCBtYWtlR0NHTFNwYW4oJmJvdW5kRHJhd0ZCTywgMSkpOwotCi0gICAgICAgIGF1
dG8gc2NvcGVkRkJPcyA9IG1ha2VTY29wZUV4aXQoWyZnbCwgYm91bmRSZWFkRkJPLCBib3VuZERy
YXdGQk9dKCkgewotICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKEdMOjpSRUFEX0ZSQU1F
QlVGRkVSLCBib3VuZFJlYWRGQk8pOwotICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKEdM
OjpEUkFXX0ZSQU1FQlVGRkVSLCBib3VuZERyYXdGQk8pOwotICAgICAgICB9KTsKLQotICAgICAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6OkRSQVdfRlJBTUVCVUZGRVIsIG1fcmVzb2x2ZWRGQk8p
OwotICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChHTDo6RlJBTUVCVUZGRVIsIEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR0w6OlRFWFRVUkVfMkQsIG1fb3BhcXVlVGV4dHVyZSwgMCk7Ci0K
LSAgICAgICAgLy8gUmVzb2x2ZSBtdWx0aXNhbXBsZSBmcmFtZWJ1ZmZlcgotICAgICAgICBnbC5i
aW5kRnJhbWVidWZmZXIoR0w6OlJFQURfRlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXItPm9iamVj
dCgpKTsKLSAgICAgICAgZ2wuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIG1fd2lkdGgsIG1faGVpZ2h0
LCAwLCAwLCBtX3dpZHRoLCBtX2hlaWdodCwgR0w6OkNPTE9SX0JVRkZFUl9CSVQsIEdMOjpMSU5F
QVIpOwotICAgIH0KLSAgICAKLSAgICBnbC5mbHVzaCgpOwotfQotCi1ib29sIFdlYlhST3BhcXVl
RnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIoKQotewotICAgIGlmICghbV9jb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvJiBnbCA9
ICptX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKLQotICAgIC8vIEJpbmQgY3VycmVudCBG
Qk9zIHdoZW4gZXhpdGluZyB0aGUgZnVuY3Rpb24KLSAgICBHQ0dMaW50IGJvdW5kRkJPIHsgMCB9
OwotICAgIEdDR0xpbnQgYm91bmRSZW5kZXJidWZmZXIgeyAwIH07Ci0gICAgZ2wuZ2V0SW50ZWdl
cnYoR0w6OkZSQU1FQlVGRkVSX0JJTkRJTkcsIG1ha2VHQ0dMU3BhbigmYm91bmRGQk8sIDEpKTsK
LSAgICBnbC5nZXRJbnRlZ2VydihHTDo6UkVOREVSQlVGRkVSX0JJTkRJTkcsIG1ha2VHQ0dMU3Bh
bigmYm91bmRSZW5kZXJidWZmZXIsIDEpKTsKLSAgICBhdXRvIHNjb3BlZEZCTyA9IG1ha2VTY29w
ZUV4aXQoWyZnbCwgYm91bmRGQk8sIGJvdW5kUmVuZGVyYnVmZmVyXSgpIHsKLSAgICAgICAgZ2wu
YmluZEZyYW1lYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgYm91bmRGQk8pOwotICAgICAgICBnbC5i
aW5kUmVuZGVyYnVmZmVyKEdMOjpSRU5ERVJCVUZGRVIsIGJvdW5kUmVuZGVyYnVmZmVyKTsKLSAg
ICB9KTsKLQotICAgIC8vIFNldCB1cCBjb2xvciwgZGVwdGggYW5kIHN0ZW5jaWwgZm9ybWF0cwot
ICAgIGJvb2wgdXNlRGVwdGhTdGVuY2lsID0gbV9hdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgbV9hdHRy
aWJ1dGVzLmRlcHRoOwotICAgIGF1dG8gY29sb3JGb3JtYXQgPSBtX2F0dHJpYnV0ZXMuYWxwaGEg
PyBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTggOiBHcmFwaGljc0NvbnRleHRHTDo6UkdCODsKLSNp
ZiBVU0UoT1BFTkdMX0VTKQotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0
PEV4dGVuc2lvbnNHTE9wZW5HTEVTJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKLSAgICBib29sIHN1
cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gdXNlRGVwdGhTdGVuY2lsICYmIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwotICAgIGF1dG8gZGVwdGhG
b3JtYXQgPSBzdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4
IDogR0w6OkRFUFRIX0NPTVBPTkVOVDE2OwotICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpT
VEVOQ0lMX0lOREVYODsKLSNlbGlmIFVTRShBTkdMRSkKLSAgICAvLyBGSVhNRTogVGhlc2UgdmFs
dWVzIHdlcmUgY2hvc2VuIGp1c3QgdG8gZ2V0IHRoaXMgdG8gY29tcGlsZSBzdWNjZXNzZnVsbHku
Ci0gICAgLy8gTWFrZSBzdXJlIHRoZXkgYXJlIGNvcnJlY3QuCi0gICAgYm9vbCBzdXBwb3J0c1Bh
Y2tlZERlcHRoU3RlbmNpbCA9IGZhbHNlOwotICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBzdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDsKLSAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRFWDg7Ci0j
ZWxzZQotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiY+KGdsLmdldEV4dGVuc2lvbnMoKSk7Ci0gICAgYm9vbCBzdXBwb3J0c1Bh
Y2tlZERlcHRoU3RlbmNpbCA9IHVzZURlcHRoU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKLSAgICBhdXRvIGRlcHRoRm9ybWF0ID0g
c3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpE
RVBUSF9DT01QT05FTlQ7Ci0gICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09N
UE9ORU5UOwotI2VuZGlmCi0KLSAgICAvLyBTZXQgdXAgcmVjb21tZW5kZWQgc2FtcGxlcyBmb3Ig
V2ViWFIuCi0gICAgLy8gRklYTUU6IGNoZWNrIGlmIHdlIGNhbiBnZXQgcmVjb21tZW5kZWQgdmFs
dWVzIGZyb20gZWFjaCBkZXZpY2UgcGxhdGZvcm0uCi0gICAgaWYgKG1fYXR0cmlidXRlcy5hbnRp
YWxpYXMpIHsKLSAgICAgICAgR0NHTGludCBtYXhTYW1wbGVDb3VudDsKLSNpZiBVU0UoQU5HTEUp
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IGlzIG5vdCBjb3JyZWN0LgotICAgICAg
ICBtYXhTYW1wbGVDb3VudCA9IDA7Ci0jZWxzZQotICAgICAgICBnbC5nZXRJbnRlZ2VydihFeHRl
bnNpb25zR0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAxKSk7
Ci0jZW5kaWYKLSAgICAgICAgLy8gVXNpbmcgbW9yZSB0aGFuIDQgc2FtcGxlcyBtaWdodCBiZSBv
dmVyaGVhZC4KLSAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1heFNhbXBsZUNv
dW50KTsKLSAgICB9Ci0KLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgIC8vIFVzZSBtdWx0aXNhbXBs
ZWRfcmVuZGVyX3RvX3RleHR1cmUgZXh0ZW5zaW9uIGlmIGF2YWlsYWJsZS4KLSAgICBpZiAobV9h
dHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBleHRlbnNpb25zLmlzSW1hZ2luYXRpb24oKSkgewotICAg
ICAgICAvLyBmcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HIGlzIHNldCB1cCBpbiBz
dGFydEZyYW1lIGNhbGwuCi0gICAgICAgIGlmICghdXNlRGVwdGhTdGVuY2lsKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0w6
OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVmZmVyLT5vYmplY3QoKSk7Ci0gICAgICAgIG1fZGVwdGhT
dGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci0gICAgICAgIGlmIChzdXBw
b3J0c1BhY2tlZERlcHRoU3RlbmNpbCkgewotICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZl
cihHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICBl
eHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMOjpSRU5ERVJC
VUZGRVIsIG1fc2FtcGxlQ291bnQsIGRlcHRoRm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7Ci0g
ICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpCi0gICAgICAgICAgICAgICAgZ2wu
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRB
Q0hNRU5ULCBHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzLmRlcHRoKQotICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQsIEdM
OjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkgewotICAgICAgICAgICAgICAg
IG1fc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgICAgICAgICAg
ICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMOjpSRU5ERVJCVUZGRVIsIG1fc2FtcGxlQ291bnQsIHN0ZW5jaWxGb3JtYXQs
IG1fd2lkdGgsIG1faGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTDo6RlJBTUVCVUZGRVIsIEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdMOjpSRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAobV9hdHRyaWJ1dGVzLmRlcHRoKSB7Ci0gICAgICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTDo6
UkVOREVSQlVGRkVSLCBtX3NhbXBsZUNvdW50LCBkZXB0aEZvcm1hdCwgbV93aWR0aCwgbV9oZWln
aHQpOwotICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFN
RUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0jZW5kaWYgLy8gVVNFKE9QRU5HTF9FUykKLQotICAgIGlmIChtX2F0dHJp
YnV0ZXMuYW50aWFsaWFzICYmIG1fY29udGV4dC5pc1dlYkdMMigpKSB7Ci0gICAgICAgIC8vIFVz
ZSBhbiBleHRyYSBGQk8gZm9yIG11bHRpc2FtcGxlIGlmIG11bHRpc2FtcGxlZF9yZW5kZXJfdG9f
dGV4dHVyZSBpcyBub3Qgc3VwcG9ydGVkLgotICAgICAgICBtX3Jlc29sdmVkRkJPID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKTsKLSAgICAgICAgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyID0gZ2wu
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci0gICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihHTDo6RlJB
TUVCVUZGRVIsIG1fZnJhbWVidWZmZXItPm9iamVjdCgpKTsKLSAgICAgICAgZ2wuYmluZFJlbmRl
cmJ1ZmZlcihHTDo6UkVOREVSQlVGRkVSLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwotICAg
ICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0w6OlJFTkRFUkJVRkZFUiwg
bV9zYW1wbGVDb3VudCwgY29sb3JGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0KTsKLSAgICAgICAg
Z2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0w6OkZSQU1FQlVGRkVSLCBHTDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdMOjpSRU5ERVJCVUZGRVIsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0g
ICAgICAgIGlmICh1c2VEZXB0aFN0ZW5jaWwpIHsKLSAgICAgICAgICAgIG1fZGVwdGhTdGVuY2ls
QnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci0gICAgICAgICAgICBpZiAoc3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwpIHsKLSAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAg
ICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0w6OlJFTkRFUkJVRkZFUiwg
bV9zYW1wbGVDb3VudCwgZGVwdGhGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0KTsKLSAgICAgICAg
ICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpCi0gICAgICAgICAgICAgICAgICAgIGds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxfQVRU
QUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAg
ICAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVwdGgpCi0gICAgICAgICAgICAgICAgICAgIGds
LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFD
SE1FTlQsIEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5zdGVuY2lsKSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpOwotICAgICAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdMOjpSRU5E
RVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIGdsLnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTDo6UkVOREVSQlVGRkVSLCBtX3NhbXBsZUNvdW50
LCBzdGVuY2lsRm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAg
IGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxf
QVRUQUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXB0aCkgewotICAg
ICAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdMOjpSRU5ERVJCVUZGRVIsIG1f
ZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdMOjpSRU5ERVJCVUZGRVIsIG1fc2FtcGxlQ291bnQsIGRlcHRo
Rm9ybWF0LCBtX3dpZHRoLCBtX2hlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgIGdsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgR0w6OkRFUFRIX0FUVEFDSE1FTlQs
IEdMOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoR0w6OkZSQU1FQlVGRkVSKSA9PSBHTDo6RlJBTUVCVUZGRVJfQ09NUExF
VEU7Ci0gICAgfQotICAgIGlmICh1c2VEZXB0aFN0ZW5jaWwpIHsKLSAgICAgICAgZ2wuYmluZEZy
YW1lYnVmZmVyKEdMOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlci0+b2JqZWN0KCkpOwotICAg
ICAgICBtX2RlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAg
ICAgICBpZiAoc3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwpIHsKLSAgICAgICAgICAgIGdsLmJp
bmRSZW5kZXJidWZmZXIoR0w6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwot
ICAgICAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShHTDo6UkVOREVSQlVGRkVSLCBkZXB0
aEZvcm1hdCwgbV93aWR0aCwgbV9oZWlnaHQpOwotICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRl
cy5zdGVuY2lsKQotICAgICAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
OjpGUkFNRUJVRkZFUiwgR0w6OlNURU5DSUxfQVRUQUNITUVOVCwgR0w6OlJFTkRFUkJVRkZFUiwg
bV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5kZXB0
aCkKLSAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTDo6RlJBTUVC
VUZGRVIsIEdMOjpERVBUSF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV9hdHRyaWJ1
dGVzLnN0ZW5jaWwpIHsKLSAgICAgICAgICAgICAgICBtX3N0ZW5jaWxCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKLSAgICAgICAgICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdM
OjpSRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShHTDo6UkVOREVSQlVGRkVSLCBzdGVuY2lsRm9ybWF0LCBtX3dpZHRo
LCBtX2hlaWdodCk7Ci0gICAgICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0w6OkZSQU1FQlVGRkVSLCBHTDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVS
LCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fYXR0
cmlidXRlcy5kZXB0aCkgewotICAgICAgICAgICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0w6
OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgICAgIGds
LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0w6OlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIG1fd2lk
dGgsIG1faGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTDo6RlJBTUVCVUZGRVIsIEdMOjpERVBUSF9BVFRBQ0hNRU5ULCBHTDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmgKaW5kZXggNjkwYzI4YTgyZThiYzI2NzZkZjZiMDYzNjliYWM2YjMyNThl
ODU2My4uYmEzMDUyYzlkODAwYzcyZDFjMWI5YWYzOWVkNDNlM2RiZjBmNjE2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCkBAIC0xMTcsNDUg
KzExNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3ZpZXdwb3J0c0RpcnR5IHsgdHJ1ZSB9Owog
fTsKIAotY2xhc3MgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0
IEF0dHJpYnV0ZXMgewotICAgICAgICBib29sIGFscGhhIHsgdHJ1ZSB9OwotICAgICAgICBib29s
IGFudGlhbGlhcyB7IHRydWUgfTsKLSAgICAgICAgYm9vbCBkZXB0aCB7IHRydWUgfTsKLSAgICAg
ICAgYm9vbCBzdGVuY2lsIHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyPiBjcmVhdGUoUGxhdGZvcm1YUjo6TGF5ZXJI
YW5kbGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBBdHRyaWJ1dGVzJiYsIHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpOwotICAgIH5XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyKCk7
Ci0KLSAgICBQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBt
X2hhbmRsZTsgfQotICAgIGNvbnN0IFdlYkdMRnJhbWVidWZmZXImIGZyYW1lYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZWJ1ZmZlci5nZXQoKTsgfQotICAgIHVpbnQzMl90IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIHVpbnQzMl90IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0OyB9Ci0KLSAgICB2b2lkIHN0YXJ0RnJhbWUoY29uc3QgUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YSYpOwotICAgIHZvaWQgZW5kRnJhbWUoKTsK
LQotcHJpdmF0ZToKLSAgICBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyKFBsYXRmb3JtWFI6OkxheWVy
SGFuZGxlLCBSZWY8V2ViR0xGcmFtZWJ1ZmZlcj4mJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYsIEF0dHJpYnV0ZXMmJiwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7Ci0KLSAg
ICBib29sIHNldHVwRnJhbWVidWZmZXIoKTsKLQotICAgIFBsYXRmb3JtWFI6OkxheWVySGFuZGxl
IG1faGFuZGxlOwotICAgIFJlZjxXZWJHTEZyYW1lYnVmZmVyPiBtX2ZyYW1lYnVmZmVyOwotICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIG1fY29udGV4dDsKLSAgICBBdHRyaWJ1dGVzIG1f
YXR0cmlidXRlczsKLSAgICB1aW50MzJfdCBtX3dpZHRoIHsgMCB9OwotICAgIHVpbnQzMl90IG1f
aGVpZ2h0IHsgMCB9OwotICAgIFBsYXRmb3JtR0xPYmplY3QgbV9kZXB0aFN0ZW5jaWxCdWZmZXIg
eyAwIH07Ci0gICAgUGxhdGZvcm1HTE9iamVjdCBtX3N0ZW5jaWxCdWZmZXIgeyAwIH07Ci0gICAg
UGxhdGZvcm1HTE9iamVjdCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIgeyAwIH07Ci0gICAgUGxh
dGZvcm1HTE9iamVjdCBtX3Jlc29sdmVkRkJPIHsgMCB9OwotICAgIEdDR0xpbnQgbV9zYW1wbGVD
b3VudCB7IDAgfTsKLSAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fb3BhcXVlVGV4dHVyZSB7IDAgfTsK
LX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggZjllMTJlZDgxOTJjOTgwYTM2NDdlZjRhNWE3ZTM2YmE0OTEwODNh
Ni4uZDA5N2EzOWYzMGI3OGE1NDhlYWUwNzEyOTY4NGRmZTFkZDUxOTU1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTQzMSw2ICs0MzEsNyBAQCBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3Bw
IEBuby11bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwIEBuby11
bmlmeQogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwIEBuby11bmlmeQogTW9kdWxl
cy93ZWJ4ci9XZWJYUkxheWVyLmNwcCBAbm8tdW5pZnkKK01vZHVsZXMvd2VieHIvV2ViWFJPcGFx
dWVGcmFtZWJ1ZmZlci5jcHAgQG5vLXVuaWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAg
QG5vLXVuaWZ5CiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIEBuby11bmlm
eQogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjNi
MDBiNDczY2JhNjg0YTU5NzZlNDliY2Q5N2VkMjA2MzhmZWYwLi4yN2E4N2U4NjE3ODg4MmJjNTg0
NzM1NDhlNGRlNjFiNzgxYmE1ZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDIsNiArOTQyLDggQEAKIAkJMzE0ODc3RTYx
RkFBQjAyNTAwQzA1NzU5IC8qIEpTT2Zmc2NyZWVuQ2FudmFzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQ4NzdFNDFGQUFCMDIyMDBDMDU3NTkgLyog
SlNPZmZzY3JlZW5DYW52YXMuaCAqLzsgfTsKIAkJMzE0QkUzQTExQjMwRjZCNzAwMTQxOTgyIC8q
IENTU05hbWVkSW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE0QkUzQTAxQjMwRjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMx
NEJFM0E3MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNEJFM0E1MUIzMTAz
RkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKKwkJMzE0RjE2
OUUyNjQwQkMzQjAwNjYzRUNFIC8qIFdlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0RjE2OUIyNjQwQjY3RTAw
NjYzRUNFIC8qIFdlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwICovOyB9OworCQkzMTRGMTY5RjI2
NDBCQzQxMDA2NjNFQ0UgLyogV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0RjE2OUQyNjQwQjY3RTAwNjYzRUNF
IC8qIFdlYlhST3BhcXVlRnJhbWVidWZmZXIuaCAqLzsgfTsKIAkJMzE2NDdGQUIyNTE2MThFMjAw
MTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjQ3RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xT
b2Z0TGlua0NvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMzE2RENCMjAxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZE
Q0IxQTFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlvbnMuaCAqLzsgfTsK
IAkJMzE2RENCMjIxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkRD
QjFDMUU3OENBNTUwMDFCNUY4NyAvKiBKU1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmggKi87
IH07CkBAIC03NDU5LDYgKzc0NjEsOCBAQAogCQkzMTRCRTNBMjFCMzBGNkQxMDAxNDE5ODIgLyog
Q1NTTmFtZWRJbWFnZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU05hbWVkSW1hZ2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxNEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0QkUzQTUxQjMxMDNG
QjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzE0RjE2OUIyNjQwQjY3RTAwNjYzRUNFIC8qIFdlYlhST3BhcXVl
RnJhbWVidWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViWFJPcGFxdWVGcmFtZWJ1ZmZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNEYxNjlEMjY0MEI2N0UwMDY2
M0VDRSAvKiBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlhST3Bh
cXVlRnJhbWVidWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1NTc0Q0My
MThGNjZEMDAwRDg4RjY2IC8qIFBvaW50ZXJFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludGVyRXZlbnRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtD
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBPcGVuR0xTb2Z0TGlua0NvY29hLmg7IHBhdGggPSAuLi8u
Li8uLi9QQUwvcGFsL2NvY29hL09wZW5HTFNvZnRMaW5rQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5r
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBPcGVuR0xTb2Z0TGlua0NvY29hLm1tOyBw
YXRoID0gLi4vLi4vLi4vUEFML3BhbC9jb2NvYS9PcGVuR0xTb2Z0TGlua0NvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkwMTUsNiArMjkwMTksOCBAQAogCQkJCUUxMkZE
QUZCMjRBMEZEMUMwMDcwMjM2RSAvKiBXZWJYUkxheWVyLmNwcCAqLywKIAkJCQlFMTJGREFGRDI0
QTBGRDFFMDA3MDIzNkUgLyogV2ViWFJMYXllci5oICovLAogCQkJCUUxMkZEQUZFMjRBMEZEMUYw
MDcwMjM2RSAvKiBXZWJYUkxheWVyLmlkbCAqLywKKwkJCQkzMTRGMTY5QjI2NDBCNjdFMDA2NjNF
Q0UgLyogV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAgKi8sCisJCQkJMzE0RjE2OUQyNjQwQjY3
RTAwNjYzRUNFIC8qIFdlYlhST3BhcXVlRnJhbWVidWZmZXIuaCAqLywKIAkJCQlFMUVFOEFFNTI0
MTJCMTcwMDBFNzk0RDYgLyogV2ViWFJQb3NlLmNwcCAqLywKIAkJCQlFMUVFOEFFMTI0MTJCMTcw
MDBFNzk0RDYgLyogV2ViWFJQb3NlLmggKi8sCiAJCQkJRTE5NDkwQTEyNDM0RjE2ODAwNDE2QTk5
IC8qIFdlYlhSUG9zZS5pZGwgKi8sCkBAIC0zNTc4NSw2ICszNTc5MSw3IEBACiAJCQkJRTFFRThC
ODYyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2VBcnJheS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTFFNTE2MzgyNjFFMUEwNjAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTEyRkRCMDAyNEEwRkQyMDAwNzAyMzZFIC8qIFdlYlhSTGF5ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxNEYxNjlGMjY0MEJDNDEwMDY2M0VDRSAvKiBXZWJYUk9w
YXF1ZUZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI4ODI0MTMxOTFGMDBF
Nzk0RDYgLyogV2ViWFJQb3NlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEJBNjI0MTMxOTYz
MDBFNzk0RDYgLyogV2ViWFJSZWZlcmVuY2VTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFF
RThCODEyNDEzMTkxRjAwRTc5NEQ2IC8qIFdlYlhSUmVuZGVyU3RhdGUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzcxMDUsNiArMzcxMTIsNyBAQAogCQkJCUUxRUU4QjhDMjQxMzE5MUYwMEU3OTRENiAv
KiBXZWJYUklucHV0U291cmNlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTFFNTE2Mzky
NjFFMUEwNjAwRTY5RjI1IC8qIFdlYlhSSW5wdXRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMTJGREFGRjI0QTBGRDIwMDA3MDIzNkUgLyogV2ViWFJMYXllci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzMTRGMTY5RTI2NDBCQzNCMDA2NjNFQ0UgLyogV2ViWFJPcGFxdWVGcmFtZWJ1ZmZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEI4QjI0MTMxOTFGMDBFNzk0RDYgLyogV2Vi
WFJQb3NlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4QjdGMjQxMzE5MUYwMEU3OTRENiAv
KiBXZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4QjdDMjQx
MzE5MUYwMEU3OTRENiAvKiBXZWJYUlJlbmRlclN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>