<?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>225440</bug_id>
          
          <creation_ts>2021-05-06 02:05:33 -0700</creation_ts>
          <short_desc>Replace raw pointers in SVGElementRareData and SVGDocumentExtensions with WeakHashMap and WeakPtr</short_desc>
          <delta_ts>2021-05-06 03:36: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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225390</see_also>
          <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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1757308</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-06 02:05:33 -0700</bug_when>
    <thetext>As a follow up to https://trac.webkit.org/r277013, replace the remaining raw pointers
of elements in SVGDocumentExtensions and SVGElementRareData with WeakHashMap and WeakPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757314</commentid>
    <comment_count>1</comment_count>
      <attachid>427862</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-06 02:24:36 -0700</bug_when>
    <thetext>Created attachment 427862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757330</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-06 03:35:15 -0700</bug_when>
    <thetext>Committed r277078 (237381@main): &lt;https://commits.webkit.org/237381@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427862.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757331</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-06 03:36:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/77600361&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427862</attachid>
            <date>2021-05-06 02:24:36 -0700</date>
            <delta_ts>2021-05-06 03:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225440-20210506022436.patch</filename>
            <type>text/plain</type>
            <size>45580</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5ZDEyNDY2NTYyNDFh
MTM2ZGYzNzJjYjQxZjMyZGViNWY0MzYwNy4uMzBmZjJhN2E2NGFiNTU5N2EyN2I2ZDEzY2I3ZDJh
YjIyMWNiNmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wNS0wNiAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIHJhdyBwb2lu
dGVycyBpbiBTVkdFbGVtZW50UmFyZURhdGEgYW5kIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyB3aXRo
IFdlYWtIYXNoTWFwIGFuZCBXZWFrUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlZCB0aGUgcmVtYWluaW5nIHVzZSBvZiByYXcgcG9pbnRl
cnMgdG8gRWxlbWVudCBpbiBTVkdFbGVtZW50UmFyZURhdGEgYW5kIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucworICAgICAgICB3aXRoIFdlYWtIYXNoU2V0IGFuZCBXZWFrUHRyLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWxzbyByZXBsYWNlcyBTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1fZWxlbWVudERl
cGVuZGVuY2llcyB3aXRoIGEgbmV3IFdlYWtIYXNoTWFwCisgICAgICAgIGluIFNWR0VsZW1lbnRS
YXJlRGF0YSBmb3IgY2xhcmlmeSAmIHNpbXBsaWNpdHkgd2l0aCBhIG5ldyB0ZXJtaW5vbG9neS4g
V2hlbiBhIFNWRyBlbGVtZW50IEEgcmVmZXJzCisgICAgICAgIHRvIGFub3RoZXIgZWxlbWVudCBC
IHZpYSBocmVmLCBBJ3MgU1ZHRWxlbWVudFJhcmVEYXRhOjptX3JlZmVyZW5jZVRhcmdldCBpcyBz
ZXQgdG8gQiwgYW5kIEEgaXMgYWRkZWQKKyAgICAgICAgdG8gQidzIFNWR0VsZW1lbnRSYXJlRGF0
YTo6bV9yZWZlcmVuY2luZ0VsZW1lbnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0
aGVyZSBzaG91bGQgYmUgbm8gb2JzZXJ2YWJsZSBiZWhhdmlvciBkaWZmZXJlbmNlcy4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJjZSk6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzRWxlbWVudFdpdGhQZW5kaW5nUmVzb3Vy
Y2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6aXNQ
ZW5kaW5nUmVzb3VyY2UgY29uc3QpOiBEaXJlY3RseSBjaGVjayB0aGUgZXhpc3RlbmNlIG9mCisg
ICAgICAgIHRoZSBpZCBpbiBtX3BlbmRpbmdSZXNvdXJjZXMgaW5zdGVhZCBvZiBjYWxsaW5nIGlz
SWRPZlBlbmRpbmdSZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlUGVuZGluZ1Jlc291cmNlKTogTW92ZWQg
dG8gdGhlIGhlYWRlciB0byBiZSBpbmxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKTogRGVsZXRlZC4g
VGhlIGNvZGUgaXMKKyAgICAgICAgaW5saW5lZCBpbiByZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdS
ZXNvdXJjZXMgaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6bWFya1BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6dGFrZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWxNYXApOiBSZW5hbWVkCisgICAgICAgIGZyb20gcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5n
UmVzb3VyY2VzRm9yUmVtb3ZhbE1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkRWxlbWVudFRvUmVidWlsZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50VG9SZWJ1aWxkKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZl
cmVuY2luZ1RhcmdldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdldFJlZmVyZW5j
ZXNGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6Y2xlYXJUYXJnZXREZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxFbGVt
ZW50UmVmZXJlbmNlc0ZvclRhcmdldCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZW1vdmVQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBNb3ZlZCB0aGUgbW9zdCBv
ZiBsb2dpYyBpbiBTVkdEb2N1bWVudEV4dGVuc2lvbnMncworICAgICAgICBjbGVhclRhcmdldERl
cGVuZGVuY2llcyBhbmQgcmVtb3ZlQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQgaGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omluc3RhbmNlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRSZWZlcmVuY2luZ0VsZW1lbnQpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZVJlZmVyZW5jaW5nRWxl
bWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlRWxlbWVu
dFJlZmVyZW5jZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2V0Q29y
cmVzcG9uZGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZW1vdmVFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNyZWF0ZUFuaW1hdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Ro
c0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVJ
bnN0YW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aGFzUmVs
YXRpdmVMZW5ndGhzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudFJh
cmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6OmFkZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6cmVtb3ZlSW5zdGFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjppbnN0YW5jZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjphZGRSZWZlcmVuY2lu
Z0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpyZW1vdmVS
ZWZlcmVuY2luZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRh
OjpyZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnRSYXJlRGF0YTo6dGFrZVJlZmVyZW5jaW5nRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudFJhcmVEYXRhOjpyZWZlcmVuY2VUYXJnZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpzZXRSZWZlcmVuY2VUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpjb3JyZXNwb25kaW5nRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6OnNldENvcnJlc3BvbmRpbmdFbGVtZW50
KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFy
ZURhdGE6OiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpjbGVhclJlc291cmNl
UmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6YnVpbGRQ
ZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2Vz
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aEVsZW1lbnQ6OmludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcyk6CisgICAgICAgICog
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0
aEVsZW1lbnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRQYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFs
aWRhdGVEZXBlbmRlbnRTaGFkb3dUcmVlcyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y2xlYXJS
ZXNvdXJjZVJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmJ1
aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVBbmltYXRvcjo6
YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlQW5pbWF0b3I6OnJlbW92ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFByb3BlcnR5Q2hh
bmdlKToKKwogMjAyMS0wNS0wNSAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW01TRV1bR1N0cmVhbWVyXSBXZWJLaXRNZWRpYVNyYyByZXdvcmsgdjIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5j
cHAKaW5kZXggN2Y3YTg1MjE4NjFhZjg0MmMyNWYxYmNiMzZlZTczMWM4OTIxYjhiMC4uOGFjYmIz
MjczODU3NDEwNThjOTAxZWIyNjZkM2VjNTViZjUwM2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKQEAgLTE2OCwyMSArMTY4
LDE4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVw
ZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJlbmRlCiAKICAgICBpZiAoIWlzPFNWR0VsZW1lbnQ+
KHJlbmRlcmVyLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvKiBkZXBlbmRl
bmNpZXMgPSByZW5kZXJlci5kb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5zZXRPZkVs
ZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQoZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnJlbmRlcmVyLmVs
ZW1lbnQoKSkpOwotICAgIGlmICghZGVwZW5kZW5jaWVzKQotICAgICAgICByZXR1cm47CiAKLSAg
ICBmb3IgKGF1dG8qIGVsZW1lbnQgOiAqZGVwZW5kZW5jaWVzKSB7CisgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnJlbmRlcmVyLmVsZW1lbnQoKSkucmVmZXJl
bmNpbmdFbGVtZW50cygpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQt
PnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIGFsbG93IGN5Y2xlcyBpbiBTVkdEb2N1
bWVudEV4dGVuc2lvbnMgcmVmZXJlbmNlIHNldHMgaW4gb3JkZXIgdG8gYXZvaWQgZXhwZW5zaXZl
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2UgZ3JhcGggYWRqdXN0bWVudHMgb24gY2hhbmdlcywg
c28gd2UgbmVlZCB0byBicmVhayBwb3NzaWJsZSBjeWNsZXMgaGVyZS4KLSAgICAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNWR0VsZW1lbnQqPj4gaW52YWxpZGF0aW5nRGVw
ZW5kZW5jaWVzOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpbnZhbGlkYXRpbmdEZXBlbmRl
bmNpZXMuZ2V0KCkuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpKSB7CisgICAgICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4+IGludmFsaWRhdGluZ0Rl
cGVuZGVuY2llczsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaW52YWxpZGF0aW5nRGVwZW5k
ZW5jaWVzLmdldCgpLmFkZChlbGVtZW50LmdldCgpKS5pc05ld0VudHJ5KSkgewogICAgICAgICAg
ICAgICAgIC8vIFJlZmVyZW5jZSBjeWNsZTogd2UgYXJlIGluIHByb2Nlc3Mgb2YgaW52YWxpZGF0
aW5nIHRoaXMgZGVwZW5kYW50LgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIsIG5lZWRzTGF5b3V0KTsKLSAgICAgICAg
ICAgIGludmFsaWRhdGluZ0RlcGVuZGVuY2llcy5nZXQoKS5yZW1vdmUoZWxlbWVudCk7CisgICAg
ICAgICAgICBpbnZhbGlkYXRpbmdEZXBlbmRlbmNpZXMuZ2V0KCkucmVtb3ZlKGVsZW1lbnQuZ2V0
KCkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAppbmRleCAyZGIw
NTUxZWExY2MxNDA2OWYyMjQwMGE4NWI3YThjMmVmMWFjOTAyLi5kOTc4OWQxOWE2YzFkZjJjZGNm
MzNlN2E0M2Q2NTIyMjk2OWU4MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcApAQCAtMTk5LDE1
ICsxOTksMTUgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNv
dXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpQZW5kaW5nRWxlbWVudHM+IGNsaWVudHMgPSBleHRlbnNpb25z
LnJlbW92ZVBlbmRpbmdSZXNvdXJjZShtX2lkKTsKKyAgICBhdXRvIGVsZW1lbnRzID0gY29weVRv
VmVjdG9yT2Y8UmVmPEVsZW1lbnQ+PihleHRlbnNpb25zLnJlbW92ZVBlbmRpbmdSZXNvdXJjZSht
X2lkKSk7CiAKICAgICAvLyBDYWNoZSB1cyB3aXRoIHRoZSBuZXcgaWQuCiAgICAgZXh0ZW5zaW9u
cy5hZGRSZXNvdXJjZShtX2lkLCAqdGhpcyk7CiAKICAgICAvLyBVcGRhdGUgY2FjaGVkIHJlc291
cmNlcyBvZiBwZW5kaW5nIGNsaWVudHMuCi0gICAgZm9yIChhdXRvKiBjbGllbnQgOiAqY2xpZW50
cykgeworICAgIGZvciAoYXV0byYgY2xpZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgQVNTRVJU
KGNsaWVudC0+aGFzUGVuZGluZ1Jlc291cmNlcygpKTsKLSAgICAgICAgZXh0ZW5zaW9ucy5jbGVh
ckhhc1BlbmRpbmdSZXNvdXJjZXNJZlBvc3NpYmxlKCpjbGllbnQpOworICAgICAgICBleHRlbnNp
b25zLmNsZWFySGFzUGVuZGluZ1Jlc291cmNlc0lmUG9zc2libGUoY2xpZW50KTsKICAgICAgICAg
YXV0byogcmVuZGVyZXIgPSBjbGllbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcmVuZGVy
ZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGI3NDUyMzhlOTc2YTAzNGMxYmU2M2Q1YjZiMDhm
ZTY4ZGRmYzQ1ZmMuLjBhMmRiMWYyYzVlYmViYzVkN2RiMWRhMGE5YmE0OTk2ZDE1NDVlM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAt
MjU4LDcgKzI1OCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0
c1RvVGFyZ2V0KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gLi4uZXhjZXB0IGluIGNhc2Ug
d2hlcmUgd2UgaGF2ZSBhZGRpdGlvbmFsIGluc3RhbmNlcyBpbiA8dXNlPiB0cmVlcy4KLSAgICBm
b3IgKGF1dG8qIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzKCkpIHsKKyAgICBm
b3IgKGF1dG8mIGluc3RhbmNlIDogY29weVRvVmVjdG9yT2Y8UmVmPFNWR0VsZW1lbnQ+Pih0YXJn
ZXRFbGVtZW50LT5pbnN0YW5jZXMoKSkpIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFu
c2Zvcm0gPSBpbnN0YW5jZS0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CiAgICAgICAgIGlmICgh
dHJhbnNmb3JtIHx8ICp0cmFuc2Zvcm0gPT0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmNwcAppbmRleCA1NWI1ZDVhY2YzMjQyZWFiNjU3MTliMjRmMDc5YzRjNjgzNTc3
ZmFmLi42YTFhZmZiNzU3YjYzNDUyOWNmNjY4OWE4NzNhMDVkNzFiNjljNzkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMTU5LDEwICsxNTks
OCBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0
IEF0b21TdHJpbmcmIGlkLCBFbGVtZW50JiBlbAogICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChp
ZCwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7Ci0gICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
cGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IHsgfSk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQoZWxlbWVudCk7CiAKICAgICBlbGVtZW50LnNldEhh
c1BlbmRpbmdSZXNvdXJjZXMoKTsKIH0KQEAgLTE3OSwyMCArMTc3LDIxIEBAIGJvb2wgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjppc0VsZW1lbnRXaXRoUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50JiBl
bGVtZW50KSBjb25zCiB7CiAgICAgLy8gVGhpcyBhbGdvcml0aG0gdGFrZXMgdGltZSBwcm9wb3J0
aW9uYWwgdG8gdGhlIG51bWJlciBvZiBwZW5kaW5nIHJlc291cmNlcyBhbmQgbmVlZCBub3QuCiAg
ICAgLy8gSWYgcGVyZm9ybWFuY2UgYmVjb21lcyBhbiBpc3N1ZSB3ZSBjYW4ga2VlcCBhIGNvdW50
ZWQgc2V0IG9mIGVsZW1lbnRzIGFuZCBhbnN3ZXIgdGhlIHF1ZXN0aW9uIGVmZmljaWVudGx5Lgot
ICAgIGZvciAoYXV0byYgZWxlbWVudHMgOiBtX3BlbmRpbmdSZXNvdXJjZXMudmFsdWVzKCkpIHsK
LSAgICAgICAgQVNTRVJUKGVsZW1lbnRzKTsKLSAgICAgICAgaWYgKGVsZW1lbnRzLT5jb250YWlu
cygmZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBXVEY6OmFueU9mKG1fcGVuZGluZ1Jlc291cmNlcy52YWx1ZXMo
KSwgWyZdIChhdXRvJiBlbGVtZW50cykgeworICAgICAgICByZXR1cm4gZWxlbWVudHMuY29udGFp
bnMoZWxlbWVudCk7CisgICAgfSk7CiB9CiAKIGJvb2wgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpp
c1BlbmRpbmdSZXNvdXJjZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBpZCkg
Y29uc3QKIHsKLSAgICBpZiAoIWlzSWRPZlBlbmRpbmdSZXNvdXJjZShpZCkpCisgICAgaWYgKGlk
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpdCA9IG1fcGVu
ZGluZ1Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBpZiAoaXQgPT0gbV9wZW5kaW5nUmVzb3VyY2Vz
LmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9wZW5kaW5nUmVz
b3VyY2VzLmdldChpZCktPmNvbnRhaW5zKCZlbGVtZW50KTsKKyAgICByZXR1cm4gaXQtPnZhbHVl
LmNvbnRhaW5zKGVsZW1lbnQpOwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6Y2xl
YXJIYXNQZW5kaW5nUmVzb3VyY2VzSWZQb3NzaWJsZShFbGVtZW50JiBlbGVtZW50KQpAQCAtMjA3
LDEyICsyMDYsOSBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZy
b21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFtX3BlbmRpbmdS
ZXNvdXJjZXMuaXNFbXB0eSgpICYmIGVsZW1lbnQuaGFzUGVuZGluZ1Jlc291cmNlcygpKSB7CiAg
ICAgICAgIFZlY3RvcjxBdG9tU3RyaW5nPiB0b0JlUmVtb3ZlZDsKICAgICAgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IG1fcGVuZGluZ1Jlc291cmNlcykgewotICAgICAgICAgICAgUGVuZGluZ0Vs
ZW1lbnRzKiBlbGVtZW50cyA9IHJlc291cmNlLnZhbHVlLmdldCgpOwotICAgICAgICAgICAgQVNT
RVJUKGVsZW1lbnRzKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudHMtPmlzRW1wdHkoKSk7
Ci0KLSAgICAgICAgICAgIGVsZW1lbnRzLT5yZW1vdmUoJmVsZW1lbnQpOwotICAgICAgICAgICAg
aWYgKGVsZW1lbnRzLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBhdXRvJiBlbGVtZW50cyA9IHJl
c291cmNlLnZhbHVlOworICAgICAgICAgICAgZWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpOworICAg
ICAgICAgICAgaWYgKGVsZW1lbnRzLmNvbXB1dGVzRW1wdHkoKSkKICAgICAgICAgICAgICAgICB0
b0JlUmVtb3ZlZC5hcHBlbmQocmVzb3VyY2Uua2V5KTsKICAgICAgICAgfQogCkBAIC0yMjcsMzMg
KzIyMywxOCBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21Q
ZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFtX3BlbmRpbmdSZXNv
dXJjZXNGb3JSZW1vdmFsLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
dG9CZVJlbW92ZWQ7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBtX3BlbmRpbmdSZXNv
dXJjZXNGb3JSZW1vdmFsKSB7Ci0gICAgICAgICAgICBQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRz
ID0gcmVzb3VyY2UudmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICBBU1NFUlQoZWxlbWVudHMpOwot
ICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50cy0+aXNFbXB0eSgpKTsKLQotICAgICAgICAgICAg
ZWxlbWVudHMtPnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudHMtPmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGF1dG8mIGVsZW1lbnRzID0gcmVzb3VyY2UudmFsdWU7Cisg
ICAgICAgICAgICBlbGVtZW50cy5yZW1vdmUoZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoZWxl
bWVudHMuY29tcHV0ZXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVu
ZChyZXNvdXJjZS5rZXkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gV2UgdXNlIHRoZSByZW1v
dmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSBpdCBkZWFs
cyB3aXRoIHNldCBsaWZldGltZSBjb3JyZWN0bHkuCiAgICAgICAgIGZvciAoYXV0byYgcmVzb3Vy
Y2UgOiB0b0JlUmVtb3ZlZCkKLSAgICAgICAgICAgIHJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJl
bW92YWwocmVzb3VyY2UpOworICAgICAgICAgICAgbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3Zh
bC5yZW1vdmUocmVzb3VyY2UpOwogICAgIH0KIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6UGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJl
bW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCkKLXsKLSAgICBBU1NFUlQo
bV9wZW5kaW5nUmVzb3VyY2VzLmNvbnRhaW5zKGlkKSk7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1Jl
c291cmNlcy50YWtlKGlkKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6UGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRp
bmdSZXNvdXJjZUZvclJlbW92YWwoY29uc3QgQXRvbVN0cmluZyYgaWQpCi17Ci0gICAgQVNTRVJU
KG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuY29udGFpbnMoaWQpKTsKLSAgICByZXR1cm4g
bV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC50YWtlKGlkKTsKLX0KLQogdm9pZCBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9t
U3RyaW5nJiBpZCkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQpAQCAtMjYxLDU4ICsyNDIsNDEg
QEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVt
b3ZhbChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nUmVzb3Vy
Y2VzRm9yUmVtb3ZhbC5jb250YWlucyhpZCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBlbmRp
bmdFbGVtZW50cz4gZXhpc3RpbmcgPSBtX3BlbmRpbmdSZXNvdXJjZXMudGFrZShpZCk7Ci0gICAg
aWYgKGV4aXN0aW5nICYmICFleGlzdGluZy0+aXNFbXB0eSgpKQorICAgIGF1dG8gZXhpc3Rpbmcg
PSBtX3BlbmRpbmdSZXNvdXJjZXMudGFrZShpZCk7CisgICAgaWYgKCFleGlzdGluZy5jb21wdXRl
c0VtcHR5KCkpCiAgICAgICAgIG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuYWRkKGlkLCBX
VEZNb3ZlKGV4aXN0aW5nKSk7CiB9CiAKLVJlZlB0cjxFbGVtZW50PiBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWxNYXAoY29u
c3QgQXRvbVN0cmluZyYgaWQpCitSZWZQdHI8RWxlbWVudD4gU1ZHRG9jdW1lbnRFeHRlbnNpb25z
Ojp0YWtlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChjb25zdCBBdG9t
U3RyaW5nJiBpZCkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBQZW5kaW5nRWxlbWVudHMqIHJlc291cmNl
U2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5nZXQoaWQpOwotICAgIGlmICghcmVz
b3VyY2VTZXQgfHwgcmVzb3VyY2VTZXQtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgYXV0byBpdCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuZmluZChpZCk7CisgICAg
aWYgKGl0ID09IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuZW5kKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBmaXJzdEVsZW1lbnQgPSByZXNvdXJjZVNldC0+YmVn
aW4oKTsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9ICpmaXJzdEVsZW1lbnQ7CisgICAg
YXV0byYgcmVzb3VyY2VTZXQgPSBpdC0+dmFsdWU7CisgICAgYXV0byBmaXJzdEVsZW1lbnQgPSBt
YWtlUmVmUHRyKHJlc291cmNlU2V0LmJlZ2luKCkuZ2V0KCkpOworICAgIGlmICghZmlyc3RFbGVt
ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc291cmNlU2V0LT5yZW1vdmUo
Zmlyc3RFbGVtZW50KTsKKyAgICByZXNvdXJjZVNldC5yZW1vdmUoKmZpcnN0RWxlbWVudCk7CiAK
LSAgICBpZiAocmVzb3VyY2VTZXQtPmlzRW1wdHkoKSkKLSAgICAgICAgcmVtb3ZlUGVuZGluZ1Jl
c291cmNlRm9yUmVtb3ZhbChpZCk7CisgICAgaWYgKHJlc291cmNlU2V0LmNvbXB1dGVzRW1wdHko
KSkKKyAgICAgICAgbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5yZW1vdmUoaWQpOwogCi0g
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgcmV0dXJuIGZpcnN0RWxlbWVudDsKIH0KIAotSGFzaFNl
dDxTVkdFbGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVy
ZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jZWRFbGVtZW50KSBjb25zdAordm9pZCBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRUb1JlYnVpbGQoU1ZHRWxlbWVudCYgZWxl
bWVudCkKIHsKLSAgICByZXR1cm4gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmdldCgmcmVmZXJlbmNl
ZEVsZW1lbnQpOworICAgIG1fcmVidWlsZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKIH0KIAot
dm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldChT
VkdFbGVtZW50JiByZWZlcmVuY2luZ0VsZW1lbnQsIFNWR0VsZW1lbnQmIHJlZmVyZW5jZWRFbGVt
ZW50KQordm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRUb1JlYnVpbGQo
U1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVu
ZGVuY2llcy5lbnN1cmUoJnJlZmVyZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0g
ewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjpp
bml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7Ci0g
ICAgfSk7Ci0gICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwotfQotCi12b2lkIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6cmVtb3ZlQWxsVGFyZ2V0UmVmZXJlbmNlc0ZvckVsZW1lbnQoU1ZHRWxl
bWVudCYgcmVmZXJlbmNpbmdFbGVtZW50KQotewotICAgIFZlY3RvcjxTVkdFbGVtZW50Kj4gdG9C
ZVJlbW92ZWQ7Ci0KLSAgICBmb3IgKGF1dG8mIGRlcGVuZGVuY3kgOiBtX2VsZW1lbnREZXBlbmRl
bmNpZXMpIHsKLSAgICAgICAgYXV0byYgcmVmZXJlbmNpbmdFbGVtZW50cyA9ICpkZXBlbmRlbmN5
LnZhbHVlOwotICAgICAgICByZWZlcmVuY2luZ0VsZW1lbnRzLnJlbW92ZSgmcmVmZXJlbmNpbmdF
bGVtZW50KTsKLSAgICAgICAgaWYgKHJlZmVyZW5jaW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgdG9CZVJlbW92ZWQuYXBwZW5kKGRlcGVuZGVuY3kua2V5KTsKLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiB0b0JlUmVtb3ZlZCkKLSAgICAgICAgbV9lbGVtZW50RGVw
ZW5kZW5jaWVzLnJlbW92ZShlbGVtZW50KTsKKyAgICBtX3JlYnVpbGRFbGVtZW50cy5yZW1vdmVG
aXJzdChlbGVtZW50KTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlYnVpbGRF
bGVtZW50cygpCkBAIC0zMjQsMzggKzI4OCwxOCBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6cmVidWlsZEVsZW1lbnRzKCkKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmNsZWFy
VGFyZ2V0RGVwZW5kZW5jaWVzKFNWR0VsZW1lbnQmIHJlZmVyZW5jZWRFbGVtZW50KQogewotICAg
IGF1dG8qIHJlZmVyZW5jaW5nRWxlbWVudHMgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZ2V0KCZy
ZWZlcmVuY2VkRWxlbWVudCk7Ci0gICAgaWYgKCFyZWZlcmVuY2luZ0VsZW1lbnRzKQotICAgICAg
ICByZXR1cm47Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDogKnJlZmVyZW5jaW5nRWxlbWVudHMp
IHsKLSAgICAgICAgbV9yZWJ1aWxkRWxlbWVudHMuYXBwZW5kKCplbGVtZW50KTsKKyAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiByZWZlcmVuY2VkRWxlbWVudC5yZWZlcmVuY2luZ0VsZW1lbnRzKCkp
IHsKKyAgICAgICAgbV9yZWJ1aWxkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQuZ2V0KCkpOwogICAg
ICAgICBlbGVtZW50LT5jYWxsQ2xlYXJUYXJnZXQoKTsKICAgICB9CiB9CiAKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQoU1ZH
RWxlbWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7Ci0gICAgYXV0byBpdCA9IG1fZWxlbWVudERl
cGVuZGVuY2llcy5maW5kKCZyZWZlcmVuY2VkRWxlbWVudCk7Ci0gICAgaWYgKGl0ID09IG1fZWxl
bWVudERlcGVuZGVuY2llcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChpdC0+
a2V5ID09ICZyZWZlcmVuY2VkRWxlbWVudCk7Ci0KLSAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiog
cmVmZXJlbmNpbmdFbGVtZW50cyA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICBWZWN0b3I8U1ZHRWxl
bWVudCo+IGVsZW1lbnRzVG9SZWJ1aWxkOwotICAgIGVsZW1lbnRzVG9SZWJ1aWxkLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocmVmZXJlbmNpbmdFbGVtZW50cy0+c2l6ZSgpKTsKLSAgICBmb3IgKGF1
dG8qIGVsZW1lbnQgOiAqcmVmZXJlbmNpbmdFbGVtZW50cykKLSAgICAgICAgZWxlbWVudHNUb1Jl
YnVpbGQudW5jaGVja2VkQXBwZW5kKGVsZW1lbnQpOwotCi0gICAgZm9yIChhdXRvKiBlbGVtZW50
IDogZWxlbWVudHNUb1JlYnVpbGQpCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogcmVmZXJlbmNl
ZEVsZW1lbnQucmVmZXJlbmNpbmdFbGVtZW50cygpKQogICAgICAgICBlbGVtZW50LT5zdmdBdHRy
aWJ1dGVDaGFuZ2VkKFNWR05hbWVzOjpocmVmQXR0cik7CiB9CiAKLXZvaWQgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjpyZW1vdmVBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldChTVkdFbGVtZW50
JiByZWZlcmVuY2VkRWxlbWVudCkKLXsKLSAgICBtX2VsZW1lbnREZXBlbmRlbmNpZXMucmVtb3Zl
KCZyZWZlcmVuY2VkRWxlbWVudCk7Ci0gICAgbV9yZWJ1aWxkRWxlbWVudHMucmVtb3ZlRmlyc3Qo
cmVmZXJlbmNlZEVsZW1lbnQpOwotfQotCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVn
aXN0ZXJTVkdGb250RmFjZUVsZW1lbnQoU1ZHRm9udEZhY2VFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIG1fc3ZnRm9udEZhY2VFbGVtZW50cy5hZGQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKaW5kZXggOTgxZmJmN2I5ODU4MTc0OWFkMmFhZTI5
ZjUyZjFiYTU0NGI4MmU0My4uZGRlZWU4YTMzM2VmNTA2ODMxMTlkOGNkM2NkZmFkMWFjMTJjMmJk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaApAQCAtMzks
NyArMzksNiBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdEb2N1bWVudEV4dGVuc2lvbnMpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhhc2hTZXQ8RWxl
bWVudCo+IFBlbmRpbmdFbGVtZW50czsKICAgICBleHBsaWNpdCBTVkdEb2N1bWVudEV4dGVuc2lv
bnMoRG9jdW1lbnQmKTsKICAgICB+U1ZHRG9jdW1lbnRFeHRlbnNpb25zKCk7CiAgICAgCkBAIC02
NSwxNCArNjQsMTEgQEAgcHVibGljOgogCiAgICAgU1ZHUmVzb3VyY2VzQ2FjaGUmIHJlc291cmNl
c0NhY2hlKCkgeyByZXR1cm4gKm1fcmVzb3VyY2VzQ2FjaGU7IH0KIAotICAgIEhhc2hTZXQ8U1ZH
RWxlbWVudCo+KiBzZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCYgcmVm
ZXJlbmNlZEVsZW1lbnQpIGNvbnN0OwotICAgIHZvaWQgYWRkRWxlbWVudFJlZmVyZW5jaW5nVGFy
Z2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVudCYgcmVmZXJlbmNl
ZEVsZW1lbnQpOwotICAgIHZvaWQgcmVtb3ZlQWxsVGFyZ2V0UmVmZXJlbmNlc0ZvckVsZW1lbnQo
U1ZHRWxlbWVudCYpOwotICAgIHZvaWQgcmVidWlsZEFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFy
Z2V0KFNWR0VsZW1lbnQmKTsKLSAgICB2b2lkIHJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9y
VGFyZ2V0KFNWR0VsZW1lbnQmKTsKLQotICAgIHZvaWQgY2xlYXJUYXJnZXREZXBlbmRlbmNpZXMo
U1ZHRWxlbWVudCYpOworICAgIHZvaWQgYWRkRWxlbWVudFRvUmVidWlsZChTVkdFbGVtZW50Jik7
CisgICAgdm9pZCByZW1vdmVFbGVtZW50VG9SZWJ1aWxkKFNWR0VsZW1lbnQmKTsKICAgICB2b2lk
IHJlYnVpbGRFbGVtZW50cygpOworICAgIHZvaWQgY2xlYXJUYXJnZXREZXBlbmRlbmNpZXMoU1ZH
RWxlbWVudCYpOworICAgIHZvaWQgcmVidWlsZEFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0
KFNWR0VsZW1lbnQmKTsKIAogICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR0ZvbnRGYWNlRWxlbWVu
dD4mIHN2Z0ZvbnRGYWNlRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX3N2Z0ZvbnRGYWNlRWxl
bWVudHM7IH0KICAgICB2b2lkIHJlZ2lzdGVyU1ZHRm9udEZhY2VFbGVtZW50KFNWR0ZvbnRGYWNl
RWxlbWVudCYpOwpAQCAtODMsOSArNzksOCBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PFNW
R1NWR0VsZW1lbnQ+IG1fdGltZUNvbnRhaW5lcnM7IC8vIEZvciBTVkcgMS4yIHN1cHBvcnQgdGhp
cyB3aWxsIG5lZWQgdG8gYmUgbWFkZSBtb3JlIGdlbmVyYWwuCiAgICAgV2Vha0hhc2hTZXQ8U1ZH
Rm9udEZhY2VFbGVtZW50PiBtX3N2Z0ZvbnRGYWNlRWxlbWVudHM7CiAgICAgSGFzaE1hcDxBdG9t
U3RyaW5nLCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcio+IG1fcmVzb3VyY2VzOwotICAgIEhh
c2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFbGVtZW50cz4+IG1fcGVu
ZGluZ1Jlc291cmNlczsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcuCi0gICAgSGFzaE1h
cDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0VsZW1lbnRzPj4gbV9wZW5kaW5n
UmVzb3VyY2VzRm9yUmVtb3ZhbDsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcgYW5kIHNj
aGVkdWxlZCBmb3IgcmVtb3ZhbC4KLSAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBzdGQ6OnVuaXF1
ZV9wdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4+PiBtX2VsZW1lbnREZXBlbmRlbmNpZXM7CisgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBXZWFrSGFzaFNldDxFbGVtZW50Pj4gbV9wZW5kaW5nUmVzb3Vy
Y2VzOyAvLyBSZXNvdXJjZXMgdGhhdCBhcmUgcGVuZGluZy4KKyAgICBIYXNoTWFwPEF0b21TdHJp
bmcsIFdlYWtIYXNoU2V0PEVsZW1lbnQ+PiBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsOyAv
LyBSZXNvdXJjZXMgdGhhdCBhcmUgcGVuZGluZyBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsLgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdSZXNvdXJjZXNDYWNoZT4gbV9yZXNvdXJjZXNDYWNoZTsK
IAogICAgIFZlY3RvcjxSZWY8U1ZHRWxlbWVudD4+IG1fcmVidWlsZEVsZW1lbnRzOwpAQCAtMTAx
LDE1ICs5NiwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BlbmRpbmdSZXNvdXJjZShFbGVtZW50
JiwgY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJIYXNQZW5kaW5n
UmVzb3VyY2VzSWZQb3NzaWJsZShFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVFbGVtZW50RnJv
bVBlbmRpbmdSZXNvdXJjZXMoRWxlbWVudCYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5n
RWxlbWVudHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7Cisg
ICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21T
dHJpbmcmIGlkKSB7IHJldHVybiBtX3BlbmRpbmdSZXNvdXJjZXMudGFrZShpZCk7IH0KIAogICAg
IC8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3Igc2NoZWR1bGluZyBh
IHBlbmRpbmcgcmVzb3VyY2UgdG8gYmUgcmVtb3ZlZC4KICAgICB2b2lkIG1hcmtQZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+
IHJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWxNYXAoY29uc3QgQXRv
bVN0cmluZyYpOworICAgIFJlZlB0cjxFbGVtZW50PiB0YWtlRWxlbWVudEZyb21QZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbE1hcChjb25zdCBBdG9tU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBpc0VsZW1lbnRXaXRoUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50JikgY29uc3Q7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9y
UmVtb3ZhbChjb25zdCBBdG9tU3RyaW5nJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggNWMyZGYyZThkOTU4YjliNGRjNmQ2MGFm
ZjQxZTdjZTZkMTMyY2ZmNi4uZWZmNDQzYzQwNmY2MGM3MGIwY2EwYWYwMjgzNGFhOWIzMDY2NzUx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTY5LDEzICsxNjksMTMgQEAgU1ZH
RWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIENvbnN0cnUKIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKIHsKICAgICBp
ZiAobV9zdmdSYXJlRGF0YSkgewotICAgICAgICBmb3IgKFNWR0VsZW1lbnQqIGluc3RhbmNlIDog
bV9zdmdSYXJlRGF0YS0+aW5zdGFuY2VzKCkpCi0gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdmdS
YXJlRGF0YS0+c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQobnVsbHB0cik7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jaW5nRWxlbWVudHMoKS5jb21wdXRlc0Vt
cHR5KCkpOworICAgICAgICBmb3IgKFNWR0VsZW1lbnQmIGluc3RhbmNlIDogY29weVRvVmVjdG9y
T2Y8UmVmPFNWR0VsZW1lbnQ+PihpbnN0YW5jZXMoKSkpCisgICAgICAgICAgICBpbnN0YW5jZS5t
X3N2Z1JhcmVEYXRhLT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpOwog
ICAgICAgICBtX3N2Z1JhcmVEYXRhID0gbnVsbHB0cjsKICAgICB9Ci0gICAgZG9jdW1lbnQoKS5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCkucmVidWlsZEFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0
KCp0aGlzKTsKLSAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVBbGxF
bGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldCgqdGhpcyk7CisgICAgZG9jdW1lbnQoKS5hY2Nlc3NT
VkdFeHRlbnNpb25zKCkucmVtb3ZlRWxlbWVudFRvUmVidWlsZCgqdGhpcyk7CiB9CiAKIHZvaWQg
U1ZHRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQpAQCAtMjQw
LDEzICsyNDAsMjAgQEAgdm9pZCBTVkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJy
b3IoU1ZHUGFyc2luZ0Vycm9yIGVycm9yLCBjb25zdCBRdWFsaWYKIHZvaWQgU1ZHRWxlbWVudDo6
cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29u
bmVjdGVkRnJvbURvY3VtZW50KQotICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1h
dGlvbihmYWxzZSwgdGhpcyk7CisgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0
aW9uKGZhbHNlLCAqdGhpcyk7CiAKICAgICBTdHlsZWRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIAogICAgIGlmIChyZW1v
dmFsVHlwZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQpIHsKLSAgICAgICAgZG9jdW1lbnQoKS5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCkuY2xlYXJUYXJnZXREZXBlbmRlbmNpZXMoKnRoaXMpOwotICAg
ICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVBbGxFbGVtZW50UmVm
ZXJlbmNlc0ZvclRhcmdldCgqdGhpcyk7CisgICAgICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBkb2N1
bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKKyAgICAgICAgaWYgKG1fc3ZnUmFyZURhdGEp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fc3ZnUmFyZURhdGEtPnRha2VS
ZWZlcmVuY2luZ0VsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFkZEVs
ZW1lbnRUb1JlYnVpbGQoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgbWFrZVJlZihlbGVtZW50
KS0+Y2xlYXJUYXJnZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jaW5nRWxlbWVudHMoKS5jb21wdXRlc0VtcHR5KCkp
OworICAgICAgICB9CisgICAgICAgIGV4dGVuc2lvbnMucmVtb3ZlRWxlbWVudFRvUmVidWlsZCgq
dGhpcyk7CiAgICAgfQogICAgIGludmFsaWRhdGVJbnN0YW5jZXMoKTsKIApAQCAtMjgyLDEwICsy
ODksMTAgQEAgU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6dmlld3BvcnRFbGVtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAKLWNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudCo+JiBT
VkdFbGVtZW50OjppbnN0YW5jZXMoKSBjb25zdAorY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVu
dD4mIFNWR0VsZW1lbnQ6Omluc3RhbmNlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N2Z1JhcmVE
YXRhKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNWR0VsZW1lbnQq
Pj4gZW1wdHlJbnN0YW5jZXM7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFz
aFNldDxTVkdFbGVtZW50Pj4gZW1wdHlJbnN0YW5jZXM7CiAgICAgICAgIHJldHVybiBlbXB0eUlu
c3RhbmNlczsKICAgICB9CiAgICAgcmV0dXJuIG1fc3ZnUmFyZURhdGEtPmluc3RhbmNlcygpOwpA
QCAtMzAwLDYgKzMwNywzNSBAQCBPcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0VsZW1lbnQ6OmdldEJv
dW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitWZWN0b3I8
UmVmPFNWR0VsZW1lbnQ+PiBTVkdFbGVtZW50OjpyZWZlcmVuY2luZ0VsZW1lbnRzKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0
dXJuIGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50Pj4obV9zdmdSYXJlRGF0YS0+cmVmZXJl
bmNpbmdFbGVtZW50cygpKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjphZGRSZWZlcmVuY2luZ0Vs
ZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBlbnN1cmVTVkdSYXJlRGF0YSgpLmFk
ZFJlZmVyZW5jaW5nRWxlbWVudChlbGVtZW50KTsKKyAgICBhdXRvJiByYXJlRGF0YU9mUmVmZXJl
bmNpbmdFbGVtZW50ID0gZWxlbWVudC5lbnN1cmVTVkdSYXJlRGF0YSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKCFyYXJlRGF0YU9mUmVmZXJlbmNpbmdFbGVtZW50LnJlZmVyZW5jZVRhcmdldCgpKTsK
KyAgICByYXJlRGF0YU9mUmVmZXJlbmNpbmdFbGVtZW50LnNldFJlZmVyZW5jZVRhcmdldChtYWtl
V2Vha1B0cigqdGhpcykpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZVJlZmVyZW5jaW5n
RWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQoreworICAgIGVuc3VyZVNWR1JhcmVEYXRhKCku
cmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KGVsZW1lbnQpOworICAgIGVsZW1lbnQuZW5zdXJlU1ZH
UmFyZURhdGEoKS5zZXRSZWZlcmVuY2VUYXJnZXQobnVsbHB0cik7Cit9CisKK3ZvaWQgU1ZHRWxl
bWVudDo6cmVtb3ZlRWxlbWVudFJlZmVyZW5jZSgpCit7CisgICAgaWYgKCFtX3N2Z1JhcmVEYXRh
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRy
KG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jZVRhcmdldCgpKSkKKyAgICAgICAgZGVzdGluYXRpb24t
PnJlbW92ZVJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7Cit9CisKIFNWR0VsZW1lbnQqIFNWR0Vs
ZW1lbnQ6OmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdmdS
YXJlRGF0YSA/IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgOiBudWxscHRy
OwpAQCAtMzIyLDEyICszNTgsMTIgQEAgdm9pZCBTVkdFbGVtZW50OjpzZXRDb3JyZXNwb25kaW5n
RWxlbWVudChTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCkKIHsKICAgICBpZiAobV9z
dmdSYXJlRGF0YSkgewogICAgICAgICBpZiAoYXV0byBvbGRDb3JyZXNwb25kaW5nRWxlbWVudCA9
IG1ha2VSZWZQdHIobV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpCi0gICAg
ICAgICAgICBvbGRDb3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+aW5zdGFuY2Vz
KCkucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgb2xkQ29ycmVzcG9uZGluZ0VsZW1lbnQtPm1f
c3ZnUmFyZURhdGEtPnJlbW92ZUluc3RhbmNlKCp0aGlzKTsKICAgICB9CiAgICAgaWYgKG1fc3Zn
UmFyZURhdGEgfHwgY29ycmVzcG9uZGluZ0VsZW1lbnQpCiAgICAgICAgIGVuc3VyZVNWR1JhcmVE
YXRhKCkuc2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQoY29ycmVzcG9uZGluZ0VsZW1lbnQpOwogICAg
IGlmIChjb3JyZXNwb25kaW5nRWxlbWVudCkKLSAgICAgICAgY29ycmVzcG9uZGluZ0VsZW1lbnQt
PmVuc3VyZVNWR1JhcmVEYXRhKCkuaW5zdGFuY2VzKCkuYWRkKHRoaXMpOworICAgICAgICBjb3Jy
ZXNwb25kaW5nRWxlbWVudC0+ZW5zdXJlU1ZHUmFyZURhdGEoKS5hZGRJbnN0YW5jZSgqdGhpcyk7
CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0zNzIsNyArNDA4LDcgQEAgYm9v
bCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXIKIAogICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lciB0byBhbGwg
c2hhZG93IHRyZWUgRE9NIGVsZW1lbnQgaW5zdGFuY2VzCiAgICAgQVNTRVJUKCFpbnN0YW5jZVVw
ZGF0ZXNCbG9ja2VkKCkpOwotICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiBpbnN0YW5jZXMoKSkg
eworICAgIGZvciAoYXV0byYgaW5zdGFuY2UgOiBjb3B5VG9WZWN0b3JPZjxSZWY8U1ZHRWxlbWVu
dD4+KGluc3RhbmNlcygpKSkgewogICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRp
bmdFbGVtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgIEFTU0VSVChpbnN0YW5jZS0+aXNJblVzZXJB
Z2VudFNoYWRvd1RyZWUoKSk7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gaW5zdGFuY2UtPk5vZGU6
OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIG9wdGlvbnMp
OwpAQCAtNDAwLDcgKzQzNiw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImCiAKICAgICAvLyBS
ZW1vdmUgZXZlbnQgbGlzdGVuZXIgZnJvbSBhbGwgc2hhZG93IHRyZWUgRE9NIGVsZW1lbnQgaW5z
dGFuY2VzCiAgICAgQVNTRVJUKCFpbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpOwotICAgIGZvciAo
YXV0byYgaW5zdGFuY2UgOiBpbnN0YW5jZXMoKSkgeworICAgIGZvciAoYXV0byYgaW5zdGFuY2Ug
OiBjb3B5VG9WZWN0b3JPZjxSZWY8U1ZHRWxlbWVudD4+KGluc3RhbmNlcygpKSkgewogICAgICAg
ICBBU1NFUlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7CiAgICAg
ICAgIEFTU0VSVChpbnN0YW5jZS0+aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CiAKQEAgLTU3
NCw3ICs2MTAsNyBAQCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IFNWR0VsZW1lbnQ6OmNy
ZWF0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dAogICAgIGF1dG8gYW5pbWF0b3Ig
PSBwcm9wZXJ0eVJlZ2lzdHJ5KCkuY3JlYXRlQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIGlmICgh
YW5pbWF0b3IpCiAgICAgICAgIHJldHVybiBhbmltYXRvcjsKLSAgICBmb3IgKGF1dG8qIGluc3Rh
bmNlIDogaW5zdGFuY2VzKCkpCisgICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IGNvcHlUb1ZlY3Rv
ck9mPFJlZjxTVkdFbGVtZW50Pj4oaW5zdGFuY2VzKCkpKQogICAgICAgICBpbnN0YW5jZS0+cHJv
cGVydHlSZWdpc3RyeSgpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYXR0cmlidXRlTmFtZSwgKmFu
aW1hdG9yKTsKICAgICByZXR1cm4gYW5pbWF0b3I7CiB9CkBAIC04NTksNyArODk1LDcgQEAgdm9p
ZCBTVkdFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpCiAgICAgZXh0ZW5z
aW9ucy5tYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwocmVzb3VyY2VJZCk7CiAKICAgICAv
LyBSZWJ1aWxkIHBlbmRpbmcgcmVzb3VyY2VzIGZvciBlYWNoIGNsaWVudCBvZiBhIHBlbmRpbmcg
cmVzb3VyY2UgdGhhdCBpcyBiZWluZyByZW1vdmVkLgotICAgIHdoaWxlIChhdXRvIGNsaWVudEVs
ZW1lbnQgPSBleHRlbnNpb25zLnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWxNYXAocmVzb3VyY2VJZCkpIHsKKyAgICB3aGlsZSAoYXV0byBjbGllbnRFbGVtZW50ID0g
ZXh0ZW5zaW9ucy50YWtlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChy
ZXNvdXJjZUlkKSkgewogICAgICAgICBBU1NFUlQoY2xpZW50RWxlbWVudC0+aGFzUGVuZGluZ1Jl
c291cmNlcygpKTsKICAgICAgICAgaWYgKGNsaWVudEVsZW1lbnQtPmhhc1BlbmRpbmdSZXNvdXJj
ZXMoKSkgewogICAgICAgICAgICAgY2xpZW50RWxlbWVudC0+YnVpbGRQZW5kaW5nUmVzb3VyY2Uo
KTsKQEAgLTkwMiw3ICs5MzgsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHRWxlbWVudDo6bG9jYWxD
b29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZQogICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oKTsKIH0KIAotdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2
ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCog
ZWxlbWVudCkKK3ZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRp
b24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAg
Ly8gSWYgd2UncmUgbm90IHlldCBpbiBhIGRvY3VtZW50LCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUg
Y2FsbGVkIGFnYWluIGZyb20gaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoKS4gRG8gbm90aGluZyBub3cu
CiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQpAQCAtOTE1LDE4ICs5NTEsMTYgQEAgdm9pZCBTVkdF
bGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZl
TGVuZ3RocywgU1ZHRWwKICAgICBpZiAoaGFzUmVsYXRpdmVMZW5ndGhzKQogICAgICAgICBtX2Vs
ZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Rocy5hZGQoZWxlbWVudCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGlmICghbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMuY29udGFpbnMoZWxlbWVudCkp
IHsKLSAgICAgICAgICAgIC8vIFdlIHdlcmUgbmV2ZXIgcmVnaXN0ZXJlZC4gRG8gbm90aGluZy4K
KyAgICAgICAgYm9vbCBuZXZlclJlZ2lzdGVyZWQgPSAhbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxl
bmd0aHMuY29udGFpbnMoZWxlbWVudCk7CisgICAgICAgIGlmIChuZXZlclJlZ2lzdGVyZWQpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJl
bGF0aXZlTGVuZ3Rocy5yZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKGlzPFNWR0dy
YXBoaWNzRWxlbWVudD4oKmVsZW1lbnQpKSB7Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJl
ZlB0cihwYXJlbnROb2RlKCkpOwotICAgICAgICBpZiAoaXM8U1ZHRWxlbWVudD4ocGFyZW50KSkK
LSAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnQpLnVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhpcyk7CisgICAgaWYgKGlz
PFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFyZW50
ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOyBpczxTVkdFbGVtZW50PihwYXJlbnQpKQorICAg
ICAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCkudXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhzLCAqdGhpcyk7CiAgICAgfQogfQogCkBA
IC05NDAsOSArOTc0LDcgQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKCkK
ICAgICBpZiAoaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvJiBpbnN0YW5jZXMgPSB0aGlzLT5pbnN0YW5jZXMoKTsKLSAgICB3aGlsZSAoIWluc3Rh
bmNlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBpbnN0YW5jZSA9IG1ha2VSZWZQdHIoKmlu
c3RhbmNlcy5iZWdpbigpKTsKKyAgICBmb3IgKGF1dG8mIGluc3RhbmNlIDogY29weVRvVmVjdG9y
T2Y8UmVmPFNWR0VsZW1lbnQ+PihpbnN0YW5jZXMoKSkpIHsKICAgICAgICAgaWYgKGF1dG8gdXNl
RWxlbWVudCA9IGluc3RhbmNlLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKQogICAgICAgICAg
ICAgdXNlRWxlbWVudC0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICAgICAgaW5zdGFuY2Ut
PnNldENvcnJlc3BvbmRpbmdFbGVtZW50KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
aW5kZXggYTZhNDY5MmVlYjcyNWFmMGFhZjgyMTcyYjgwNjQyYmI4Y2I1NDFjNC4uOWM0ZGJhNzY3
YWQ3YzNjMzY1NTgwM2MwMTNmMzJmMGJjYTE1N2U3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgeyByZXR1cm4g
IW1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgeyByZXR1cm4gIW1fZWxlbWVudHNXaXRoUmVsYXRpdmVM
ZW5ndGhzLmNvbXB1dGVzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdS
ZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaW5zdGFu
Y2VVcGRhdGVzQmxvY2tlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5zdGFuY2VVcGRhdGVzQmxv
Y2tlZChib29sKTsKQEAgLTg5LDEwICs4OSwxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
VGhlIGluc3RhbmNlcyBvZiBhbiBlbGVtZW50IGFyZSBjbG9uZXMgbWFkZSBpbiBzaGFkb3cgdHJl
ZXMgdG8gaW1wbGVtZW50IDx1c2U+LgotICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudCo+JiBp
bnN0YW5jZXMoKSBjb25zdDsKKyAgICBjb25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50PiYgaW5z
dGFuY2VzKCkgY29uc3Q7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94
KCkgY29uc3Q7CiAKKyAgICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiByZWZlcmVuY2luZ0VsZW1l
bnRzKCkgY29uc3Q7CisgICAgdm9pZCBhZGRSZWZlcmVuY2luZ0VsZW1lbnQoU1ZHRWxlbWVudCYp
OworICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KFNWR0VsZW1lbnQmKTsKKyAgICB2
b2lkIHJlbW92ZUVsZW1lbnRSZWZlcmVuY2UoKTsKKwogICAgIFNWR0VsZW1lbnQqIGNvcnJlc3Bv
bmRpbmdFbGVtZW50KCkgY29uc3Q7CiAgICAgUmVmUHRyPFNWR1VzZUVsZW1lbnQ+IGNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50KCkgY29uc3Q7CiAKQEAgLTE2OSw4ICsxNzQsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbigpIHsgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpLCB0aGlzKTsgfQotICAgIHZvaWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsZW1lbnQqKTsKKyAgICB2b2lk
IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCkgeyB1cGRhdGVSZWxhdGl2ZUxlbmd0
aHNJbmZvcm1hdGlvbihzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCksICp0aGlzKTsgfQorICAgIHZv
aWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0
aHMsIFNWR0VsZW1lbnQmKTsKIAogICAgIHZvaWQgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFu
Z2UpIG92ZXJyaWRlOwogCkBAIC0xODgsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTVkdFbGVtZW50UmFyZURhdGE+IG1fc3ZnUmFyZURhdGE7CiAKLSAgICBIYXNo
U2V0PFNWR0VsZW1lbnQqPiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKKyAgICBXZWFr
SGFzaFNldDxTVkdFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4gbV9wcm9wZXJ0eUFu
aW1hdG9yRmFjdG9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCmlu
ZGV4IGU0NjFjZDIyYTVhOWJhMTIxNjZkYjk0YzZmYWJhYTgzM2JjMDJmNGMuLmY3NDBkYmMwOTVj
Y2U1ZDZmNDIxNzkwNzQ5NTVmNjIxMGRhOTkzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudFJhcmVEYXRhLmgKQEAgLTQxLDE0ICs0MSwyMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+JiBpbnN0YW5jZXMoKSB7IHJldHVybiBtX2luc3Rh
bmNlczsgfQotICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudCo+JiBpbnN0YW5jZXMoKSBjb25z
dCB7IHJldHVybiBtX2luc3RhbmNlczsgfQorICAgIHZvaWQgYWRkSW5zdGFuY2UoU1ZHRWxlbWVu
dCYgZWxlbWVudCkgeyBtX2luc3RhbmNlcy5hZGQoZWxlbWVudCk7IH0KKyAgICB2b2lkIHJlbW92
ZUluc3RhbmNlKFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgbV9pbnN0YW5jZXMucmVtb3ZlKGVsZW1l
bnQpOyB9CisgICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdGFuY2VzOyB9CiAKICAgICBib29sIGluc3RhbmNlVXBkYXRlc0Js
b2NrZWQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlc1VwZGF0ZXNCbG9ja2VkOyB9CiAgICAg
dm9pZCBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJvb2wgdmFsdWUpIHsgbV9pbnN0YW5jZXNV
cGRhdGVzQmxvY2tlZCA9IHZhbHVlOyB9CiAKLSAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5n
RWxlbWVudCgpIHsgcmV0dXJuIG1fY29ycmVzcG9uZGluZ0VsZW1lbnQ7IH0KLSAgICB2b2lkIHNl
dENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KSB7
IG1fY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBjb3JyZXNwb25kaW5nRWxlbWVudDsgfQorICAgIHZv
aWQgYWRkUmVmZXJlbmNpbmdFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgbV9yZWZlcmVu
Y2luZ0VsZW1lbnRzLmFkZChlbGVtZW50KTsgfQorICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNpbmdF
bGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgbV9yZWZlcmVuY2luZ0VsZW1lbnRzLnJlbW92
ZShlbGVtZW50KTsgfQorICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+JiByZWZlcmVu
Y2luZ0VsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2luZ0VsZW1lbnRzOyB9Cisg
ICAgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4gdGFrZVJlZmVyZW5jaW5nRWxlbWVudHMoKSB7IHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKG1fcmVmZXJlbmNpbmdFbGVtZW50cywgeyB9KTsgfQorICAgIFNW
R0VsZW1lbnQqIHJlZmVyZW5jZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlVGFy
Z2V0LmdldCgpOyB9CisgICAgdm9pZCBzZXRSZWZlcmVuY2VUYXJnZXQoV2Vha1B0cjxTVkdFbGVt
ZW50PiYmIGVsZW1lbnQpIHsgbV9yZWZlcmVuY2VUYXJnZXQgPSBXVEZNb3ZlKGVsZW1lbnQpOyB9
CisKKyAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCgpIHsgcmV0dXJuIG1fY29y
cmVzcG9uZGluZ0VsZW1lbnQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVt
ZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KSB7IG1fY29ycmVzcG9uZGluZ0Vs
ZW1lbnQgPSBtYWtlV2Vha1B0cihjb3JyZXNwb25kaW5nRWxlbWVudCk7IH0KIAogICAgIE11dGFi
bGVTdHlsZVByb3BlcnRpZXMqIGFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzLmdldCgpOyB9CiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzKCkKQEAg
LTc2LDggKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzT3ZlcnJpZGVDb21wdXRl
ZFN0eWxlVXBkYXRlKCkgeyBtX25lZWRzT3ZlcnJpZGVDb21wdXRlZFN0eWxlVXBkYXRlID0gdHJ1
ZTsgfQogCiBwcml2YXRlOgotICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+IG1faW5zdGFuY2VzOwot
ICAgIFNWR0VsZW1lbnQqIG1fY29ycmVzcG9uZGluZ0VsZW1lbnQgeyBudWxscHRyIH07CisgICAg
V2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4gbV9yZWZlcmVuY2luZ0VsZW1lbnRzOworICAgIFdlYWtQ
dHI8U1ZHRWxlbWVudD4gbV9yZWZlcmVuY2VUYXJnZXQ7CisgICAgV2Vha0hhc2hTZXQ8U1ZHRWxl
bWVudD4gbV9pbnN0YW5jZXM7CisgICAgV2Vha1B0cjxTVkdFbGVtZW50PiBtX2NvcnJlc3BvbmRp
bmdFbGVtZW50OwogICAgIGJvb2wgbV9pbnN0YW5jZXNVcGRhdGVzQmxvY2tlZCA6IDE7CiAgICAg
Ym9vbCBtX3VzZU92ZXJyaWRlQ29tcHV0ZWRTdHlsZSA6IDE7CiAgICAgYm9vbCBtX25lZWRzT3Zl
cnJpZGVDb21wdXRlZFN0eWxlVXBkYXRlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IDU2NmQ1ZTE3ODE2MmM0NjkyYjM1ZTg0YzBhNTUyYTlkOWNlZjBm
N2UuLjE4Zjc4MDlmYWUwMjkyNDc0YmZmMDVmYjE0MDE3YzJkZTY2MWQzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50OjpjbGVhclJlc291cmNlUmVmZXJlbmNlcygpCiAgICAgICAgIG1fY2Fj
aGVkSW1hZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLnJlbW92ZUFsbFRhcmdldFJlZmVyZW5jZXNGb3JFbGVtZW50KCp0aGlzKTsKKyAg
ICByZW1vdmVFbGVtZW50UmVmZXJlbmNlKCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6
OnJlcXVlc3RJbWFnZVJlc291cmNlKCkKQEAgLTEwNSwxMSArMTA1LDggQEAgdm9pZCBTVkdGRUlt
YWdlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICAgICAgZG9jdW1lbnQo
KS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkUGVuZGluZ1Jlc291cmNlKHRhcmdldC5pZGVudGlm
aWVyLCAqdGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoaGFzUGVuZGluZ1Jlc291cmNlcygpKTsK
ICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXM8U1ZHRWxlbWVudD4oKnRhcmdldC5lbGVtZW50
KSkgewotICAgICAgICAvLyBSZWdpc3RlciB1cyB3aXRoIHRoZSB0YXJnZXQgaW4gdGhlIGRlcGVu
ZGVuY2llcyBtYXAuIEFueSBjaGFuZ2Ugb2YgaHJlZkVsZW1lbnQKLSAgICAgICAgLy8gdGhhdCBs
ZWFkcyB0byByZWxheW91dC9yZXBhaW50aW5nIG5vdyBpbmZvcm1zIHVzLCBzbyB3ZSBjYW4gcmVh
Y3QgdG8gaXQuCi0gICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVs
ZW1lbnRSZWZlcmVuY2luZ1RhcmdldCgqdGhpcywgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnRhcmdl
dC5lbGVtZW50KSk7Ci0gICAgfQorICAgIH0gZWxzZSBpZiAoaXM8U1ZHRWxlbWVudD4oKnRhcmdl
dC5lbGVtZW50KSkKKyAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnRhcmdldC5lbGVtZW50
KS5hZGRSZWZlcmVuY2luZ0VsZW1lbnQoKnRoaXMpOwogCiAgICAgaW52YWxpZGF0ZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAppbmRleCBjNjMzYWY1MmVkNGM1OTFk
NTk1ZjdjYjI0MzYzOTUzM2MzYWQwNDAwLi5jZjM2MTJjMTRmMDhjNWY4ZDE2YzgzNWJhMjJlMDhi
MmNjZjAzNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcApAQCAtNjUs
MTggKzY1LDE1IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgp
CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRQZW5kaW5n
UmVzb3VyY2UodGFyZ2V0LmlkZW50aWZpZXIsICp0aGlzKTsKICAgICAgICAgICAgIEFTU0VSVCho
YXNQZW5kaW5nUmVzb3VyY2VzKCkpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChpczxTVkdF
bGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKSB7Ci0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIHdpdGgg
dGhlIHRhcmdldCBpbiB0aGUgZGVwZW5kZW5jaWVzIG1hcC4gQW55IGNoYW5nZSBvZiBocmVmRWxl
bWVudAotICAgICAgICAvLyB0aGF0IGxlYWRzIHRvIHJlbGF5b3V0L3JlcGFpbnRpbmcgbm93IGlu
Zm9ybXMgdXMsIHNvIHdlIGNhbiByZWFjdCB0byBpdC4KLSAgICAgICAgZG9jdW1lbnQoKS5hY2Nl
c3NTVkdFeHRlbnNpb25zKCkuYWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KCp0aGlzLCBkb3du
Y2FzdDxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKTsKLSAgICB9CisgICAgfSBlbHNlIGlm
IChpczxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQorICAgICAgICBkb3duY2FzdDxTVkdF
bGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiAK
ICAgICB0YXJnZXRQYXRoQ2hhbmdlZCgpOwogfQogCiB2b2lkIFNWR01QYXRoRWxlbWVudDo6Y2xl
YXJSZXNvdXJjZVJlZmVyZW5jZXMoKQogewotICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLnJlbW92ZUFsbFRhcmdldFJlZmVyZW5jZXNGb3JFbGVtZW50KCp0aGlzKTsKKyAgICBy
ZW1vdmVFbGVtZW50UmVmZXJlbmNlKCk7CiB9CiAKIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9y
UmVzdWx0IFNWR01QYXRoRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlw
ZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4IGNhNTNlNWMxZDM1NTRiYzdlMzU2
YWFhNjU2MmNiYmY0NmU0NjgwMmUuLjEwNzY2MTliZWExMDc0YTE3NWZlZTZjN2IwNWM2YjVmODk1
MmQxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcApAQCAtODMsMTEgKzgz
LDkgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6aW52YWxpZGF0ZU1QYXRoRGVwZW5kZW5jaWVzKCkK
IHsKICAgICAvLyA8bXBhdGg+IGNhbiBvbmx5IHJlZmVyZW5jZSA8cGF0aD4gYnV0IHRoaXMgZGVw
ZW5kZW5jeSBpcyBub3QgaGFuZGxlZCBpbgogICAgIC8vIG1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbiBzbyB3ZSB1cGRhdGUgYW55IG1wYXRoIGRlcGVuZGVuY2llcyBt
YW51YWxseS4KLSAgICBpZiAoSGFzaFNldDxTVkdFbGVtZW50Kj4qIGRlcGVuZGVuY2llcyA9IGRv
Y3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1Rh
cmdldCgqdGhpcykpIHsKLSAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogKmRlcGVuZGVuY2ll
cykgewotICAgICAgICAgICAgaWYgKGlzPFNWR01QYXRoRWxlbWVudD4oKmVsZW1lbnQpKQotICAg
ICAgICAgICAgICAgIGRvd25jYXN0PFNWR01QYXRoRWxlbWVudD4oKmVsZW1lbnQpLnRhcmdldFBh
dGhDaGFuZ2VkKCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiByZWZlcmVu
Y2luZ0VsZW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGlzPFNWR01QYXRoRWxlbWVudD4oZWxlbWVu
dCkpCisgICAgICAgICAgICBkb3duY2FzdDxTVkdNUGF0aEVsZW1lbnQ+KGVsZW1lbnQuZ2V0KCkp
LnRhcmdldFBhdGhDaGFuZ2VkKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IGQ5ZmUxZjQ3NGRkNmMwZjdjNmYzNjQ0ZWM1YmViNWU4
NzBhZjRjMjYuLjY1ODdkZDZiMGJhZDg0ZTZhMDY0OTliMDJlZjhmYzkxNGRjZGYzNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IFNWR1RleHRQYXRoRWxlbWVudDo6flNWR1RleHRQYXRoRWxlbWVudCgpCiAKIHZvaWQgU1ZHVGV4
dFBhdGhFbGVtZW50OjpjbGVhclJlc291cmNlUmVmZXJlbmNlcygpCiB7Ci0gICAgZG9jdW1lbnQo
KS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVtb3ZlQWxsVGFyZ2V0UmVmZXJlbmNlc0ZvckVsZW1l
bnQoKnRoaXMpOworICAgIHJlbW92ZUVsZW1lbnRSZWZlcmVuY2UoKTsKIH0KIAogdm9pZCBTVkdU
ZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTQ5LDExICsxNDksOCBAQCB2b2lkIFNWR1Rl
eHRQYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICAgICAgZG9jdW1l
bnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkUGVuZGluZ1Jlc291cmNlKHRhcmdldC5pZGVu
dGlmaWVyLCAqdGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoaGFzUGVuZGluZ1Jlc291cmNlcygp
KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodGFyZ2V0LmVsZW1lbnQtPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnBhdGhUYWcpKSB7Ci0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIHdpdGggdGhlIHRh
cmdldCBpbiB0aGUgZGVwZW5kZW5jaWVzIG1hcC4gQW55IGNoYW5nZSBvZiBocmVmRWxlbWVudAot
ICAgICAgICAvLyB0aGF0IGxlYWRzIHRvIHJlbGF5b3V0L3JlcGFpbnRpbmcgbm93IGluZm9ybXMg
dXMsIHNvIHdlIGNhbiByZWFjdCB0byBpdC4KLSAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdF
eHRlbnNpb25zKCkuYWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KCp0aGlzLCBkb3duY2FzdDxT
VkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKTsKLSAgICB9CisgICAgfSBlbHNlIGlmICh0YXJn
ZXQuZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cGF0aFRhZykpCisgICAgICAgIGRvd25j
YXN0PFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkuYWRkUmVmZXJlbmNpbmdFbGVtZW50KCp0
aGlzKTsKIH0KIAogTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHVGV4dFBhdGhF
bGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUs
IENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCmluZGV4IGQxZGU0ZmRhZmZhM2I1ZTE5N2RhMWE2Njk4NGI0NDM1YTdiNDc0
Y2IuLmIyYjAyNjM1YzQwNjdhMTBjOWZmYzZiNTQ5ZDE5OThjMDNkYTgxZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKIAogdm9pZCBTVkdVc2VFbGVtZW50OjppbnZh
bGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKQogewotICAgIGZvciAoYXV0byogaW5zdGFuY2Ug
OiBpbnN0YW5jZXMoKSkgeworICAgIGZvciAoYXV0byYgaW5zdGFuY2UgOiBjb3B5VG9WZWN0b3JP
ZjxSZWY8U1ZHRWxlbWVudD4+KGluc3RhbmNlcygpKSkgewogICAgICAgICBpZiAoYXV0byBlbGVt
ZW50ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCiAgICAgICAgICAgICBl
bGVtZW50LT5pbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggZTM0YTFhZTc2ZGE0YWZk
NjA0OWRiY2E2MGI5MGZjY2Y5MjdlZWY5Zi4uNjYzMzkwNTUwMDFlNWE5YjlkZjliNzdiMjQzNzZm
NTIwYzRjMzMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBTVkdTTUlMRWxlbWVudDo6flNWR1NNSUxF
bGVtZW50KCkKIAogdm9pZCBTVkdTTUlMRWxlbWVudDo6Y2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMo
KQogewotICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZUFsbFRhcmdl
dFJlZmVyZW5jZXNGb3JFbGVtZW50KCp0aGlzKTsKKyAgICByZW1vdmVFbGVtZW50UmVmZXJlbmNl
KCk7CiB9CiAKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmNsZWFyVGFyZ2V0KCkKQEAgLTE5MSwxMyAr
MTkxLDEwIEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAg
ICAgICAgdGFyZ2V0ID0gV1RGTW92ZShyZXN1bHQuZWxlbWVudCk7CiAgICAgICAgIGlkID0gV1RG
TW92ZShyZXN1bHQuaWRlbnRpZmllcik7CiAgICAgfQotICAgIFNWR0VsZW1lbnQqIHN2Z1Rhcmdl
dCA9IGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgPyBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQu
Z2V0KCkpIDogbnVsbHB0cjsKLQotICAgIGlmIChzdmdUYXJnZXQgJiYgIXN2Z1RhcmdldC0+aXND
b25uZWN0ZWQoKSkKLSAgICAgICAgc3ZnVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBhdXRvIHN2Z1Rh
cmdldCA9IG1ha2VSZWZQdHIoaXM8U1ZHRWxlbWVudD4odGFyZ2V0KSAmJiB0YXJnZXQtPmlzQ29u
bmVjdGVkKCkgPyBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQuZ2V0KCkpIDogbnVsbHB0cik7
CiAKICAgICBpZiAoc3ZnVGFyZ2V0ICE9IHRhcmdldEVsZW1lbnQoKSkKLSAgICAgICAgc2V0VGFy
Z2V0RWxlbWVudChzdmdUYXJnZXQpOworICAgICAgICBzZXRUYXJnZXRFbGVtZW50KHN2Z1Rhcmdl
dC5nZXQoKSk7CiAKICAgICBpZiAoIXN2Z1RhcmdldCkgewogICAgICAgICAvLyBEbyBub3QgcmVn
aXN0ZXIgYXMgcGVuZGluZyBpZiB3ZSBhcmUgYWxyZWFkeSBwZW5kaW5nIHRoaXMgcmVzb3VyY2Uu
CkBAIC0yMDgsMTEgKzIwNSw4IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jl
c291cmNlKCkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFk
ZFBlbmRpbmdSZXNvdXJjZShpZCwgKnRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKGhhc1BlbmRp
bmdSZXNvdXJjZXMoKSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZWdp
c3RlciB1cyB3aXRoIHRoZSB0YXJnZXQgaW4gdGhlIGRlcGVuZGVuY2llcyBtYXAuIEFueSBjaGFu
Z2Ugb2YgaHJlZkVsZW1lbnQKLSAgICAgICAgLy8gdGhhdCBsZWFkcyB0byByZWxheW91dC9yZXBh
aW50aW5nIG5vdyBpbmZvcm1zIHVzLCBzbyB3ZSBjYW4gcmVhY3QgdG8gaXQuCi0gICAgICAgIGRv
Y3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZEVsZW1lbnRSZWZlcmVuY2luZ1Rhcmdl
dCgqdGhpcywgKnN2Z1RhcmdldCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBzdmdUYXJn
ZXQtPmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiB9CiAKIGlubGluZSBRdWFsaWZpZWRO
YW1lIFNWR1NNSUxFbGVtZW50Ojpjb25zdHJ1Y3RBdHRyaWJ1dGVOYW1lKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9y
LmNwcAppbmRleCAwNDM5NWUzYzBiMTZiNWQ2NjEwOWYyMzRlMjk0YWJmNWIyMGE1NGUxLi42NTJj
MmQwNmNmZDcxMDc2NzQzMDkyODY5YjIwODRiOTE5N2ZhMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBAIC02
OSw4ICs2OSw4IEBAIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRTdHls
ZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqIHRhcmdldEVsCiAgICAgYXBwbHlBbmltYXRlZFN0
eWxlUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwgaWQsIHZhbHVlKTsKICAgICAKICAgICAv
LyBJZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaGFzIGluc3RhbmNlcywgdXBkYXRlIHRoZW0gYXMgd2Vs
bCwgdy9vIHJlcXVpcmluZyB0aGUgPHVzZT4gdHJlZSB0byBiZSByZWJ1aWx0LgotICAgIGZvciAo
YXV0byogaW5zdGFuY2UgOiB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXMoKSkKLSAgICAgICAgYXBw
bHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoaW5zdGFuY2UsIGlkLCB2YWx1ZSk7CisgICAg
Zm9yIChhdXRvJiBpbnN0YW5jZSA6IGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50Pj4odGFy
Z2V0RWxlbWVudC0+aW5zdGFuY2VzKCkpKQorICAgICAgICBhcHBseUFuaW1hdGVkU3R5bGVQcm9w
ZXJ0eUNoYW5nZShpbnN0YW5jZS5wdHIoKSwgaWQsIHZhbHVlKTsKIH0KICAgICAKIHZvaWQgU1ZH
QXR0cmlidXRlQW5pbWF0b3I6OnJlbW92ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eShTVkdFbGVtZW50
KiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlkKQpAQCAtOTgsOCArOTgsOCBAQCB2b2lkIFNWR0F0
dHJpYnV0ZUFuaW1hdG9yOjpyZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudAogICAgIHJlbW92ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eSh0YXJnZXRFbGVt
ZW50LCBpZCk7CiAKICAgICAvLyBJZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaGFzIGluc3RhbmNlcywg
dXBkYXRlIHRoZW0gYXMgd2VsbCwgdy9vIHJlcXVpcmluZyB0aGUgPHVzZT4gdHJlZSB0byBiZSBy
ZWJ1aWx0LgotICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiB0YXJnZXRFbGVtZW50LT5pbnN0YW5j
ZXMoKSkKLSAgICAgICAgcmVtb3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KGluc3RhbmNlLCBpZCk7
CisgICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50
Pj4odGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzKCkpKQorICAgICAgICByZW1vdmVBbmltYXRlZFN0
eWxlUHJvcGVydHkoaW5zdGFuY2UucHRyKCksIGlkKTsKIH0KICAgICAKIHZvaWQgU1ZHQXR0cmli
dXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQpAQCAtMTIxLDggKzEyMSw4
IEBAIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5n
ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50CiAgICAgYXBwbHlBbmltYXRlZFByb3BlcnR5Q2hh
bmdlKHRhcmdldEVsZW1lbnQsIG1fYXR0cmlidXRlTmFtZSk7CiAKICAgICAvLyBJZiB0aGUgdGFy
Z2V0IGVsZW1lbnQgaGFzIGluc3RhbmNlcywgdXBkYXRlIHRoZW0gYXMgd2VsbCwgdy9vIHJlcXVp
cmluZyB0aGUgPHVzZT4gdHJlZSB0byBiZSByZWJ1aWx0LgotICAgIGZvciAoYXV0byogaW5zdGFu
Y2UgOiB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXMoKSkKLSAgICAgICAgYXBwbHlBbmltYXRlZFBy
b3BlcnR5Q2hhbmdlKGluc3RhbmNlLCBtX2F0dHJpYnV0ZU5hbWUpOworICAgIGZvciAoYXV0byYg
aW5zdGFuY2UgOiBjb3B5VG9WZWN0b3JPZjxSZWY8U1ZHRWxlbWVudD4+KHRhcmdldEVsZW1lbnQt
Pmluc3RhbmNlcygpKSkKKyAgICAgICAgYXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKGluc3Rh
bmNlLnB0cigpLCBtX2F0dHJpYnV0ZU5hbWUpOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>