<?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>140698</bug_id>
          
          <creation_ts>2015-01-20 15:23:58 -0800</creation_ts>
          <short_desc>Add and hook up APINavigationClient</short_desc>
          <delta_ts>2015-01-30 17:29:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1062913</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-20 15:23:58 -0800</bug_when>
    <thetext>Add and hook up APINavigationClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062914</commentid>
    <comment_count>1</comment_count>
      <attachid>245026</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-20 15:24:21 -0800</bug_when>
    <thetext>Created attachment 245026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062967</commentid>
    <comment_count>2</comment_count>
      <attachid>245026</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-20 18:06:24 -0800</bug_when>
    <thetext>Comment on attachment 245026
Patch

Looking good. I think we need to merge the NavigationState conditions and change the NavigationClient names to match the WKNavigationDelegate names before we land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063859</commentid>
    <comment_count>3</comment_count>
      <attachid>245271</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-23 19:12:54 -0800</bug_when>
    <thetext>Created attachment 245271
Preliminary Part 2

Started on Sam&apos;s part 2, but haven&apos;t finished yet. Here&apos;s a WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065355</commentid>
    <comment_count>4</comment_count>
      <attachid>245654</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-29 14:52:42 -0800</bug_when>
    <thetext>Created attachment 245654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065702</commentid>
    <comment_count>5</comment_count>
      <attachid>245654</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-30 16:25:50 -0800</bug_when>
    <thetext>Comment on attachment 245654
Patch

Found some things that need fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065722</commentid>
    <comment_count>6</comment_count>
      <attachid>245760</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-30 16:50:43 -0800</bug_when>
    <thetext>Created attachment 245760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065737</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-30 17:29:23 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/179430</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245026</attachid>
            <date>2015-01-20 15:24:21 -0800</date>
            <delta_ts>2015-01-29 14:52:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140698-20150120152429.patch</filename>
            <type>text/plain</type>
            <size>69026</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDgxMmIzMGE4ZDdkNDY3
MTQ2OWNiZGJjODg5YTM4NGNmNGE0N2Q5Yy4uNzRjMjJiNWNmNzNlNDdkNzllYzllYzM5NjZkODk3
NTNiMDI2ZGVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTAxLTIwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbmQgaG9v
ayB1cCBBUElOYXZpZ2F0aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDA2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBzaW5nbGUgQVBJTmF2aWdhdGlvbkNsaWVudCB0aGF0IE5h
dmlnYXRpb25TdGF0ZSBpbXBsZW1lbnRzIGFuZAorICAgICAgICBXZWJQYWdlUHJveHkgcHJlZmVy
cyBvdmVyIEFQSUxvYWRlckNsaWVudCBhbmQgQVBJUG9saWN5Q2xpZW50LiBUaGlzIGlzCisgICAg
ICAgIG9uZSBzdGVwIGluIGEgbXVsdGktc3RlcCBwbGFuIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHBv
cnQgV2ViS2l0MiBDIFNQSQorICAgICAgICBjbGllbnRzIHRvIHRoZSBNb2Rlcm4gV2ViS2l0MiBB
UEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oOgorICAgICAg
ICBGaXggYSBjb21tZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICBBUElOYXZpZ2F0aW9uQ2xpZW50IGlzIHRoZSB1bmlv
biBvZiBBUElMb2FkZXJDbGllbnQgYW5kIEFQSVBvbGljeUNsaWVudC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICBJbnN0ZWFkIG9mIGhhdmluZyBwb2xpY3kg
YW5kIGxvYWRlciBjbGllbnRzLCBOYXZpZ2F0aW9uU3RhdGUgaGFzIGEgc2luZ2xlIG5hdmlnYXRp
b24gY2xpZW50LgorICAgICAgICBBZGp1c3QgYXMgbmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0
V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgIEluc3RhbGwgdGhlIGFmb3JlbWVu
dGlvbmVkIHNpbmdsZSBuYXZpZ2F0aW9uIGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE5hdmln
YXRpb25DbGllbnQpOgorICAgICAgICBBZGQgYSBuYXZpZ2F0aW9uIGNsaWVudCBzZXR0ZXIuCisK
KyAgICAgICAgRm9yIGFsbCBwb2xpY3kgYW5kIGxvYWRlciBjbGllbnQgY2FsbHMsIGlmIHdlIGhh
dmUgYSBuYXZpZ2F0aW9uIGNsaWVudCwgdXNlIHRoYXQ7CisgICAgICAgIG90aGVyd2lzZSwgZmFs
bCBiYWNrIG9uIHRoZSBwb2xpY3kgYW5kIGxvYWRlciBjbGllbnRzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNS0wMS0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB3YXkgdG8gY29sbGVjdCBzY3JvbGxpbmcgcGVyZm9y
bWFuY2UgZGF0YSAodmlld3BvcnQgdGlsZSBjb3ZlcmFnZSkgd2l0aCBVSS1zaWRlIGNvbXBvc2l0
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApp
bmRleCBiZDA3NDQ1MzBjMmNiMWViOGIwZmVlOGJlOWQ3NzIwYjQ4ZjBkZjUyLi4zODU4ZDU1YWU3
ODRhYjEwNTEwYWNhODU4N2NiMDM1MDNjYTJiYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYpIHsgfQogCi0gICAgLy8gRklYTUU6IFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBzaG91bGQg
bm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCisgICAgLy8gRklYTUU6IFRoZXNlIGZvdXIgZnVu
Y3Rpb25zIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGlzIGNsaWVudC4KICAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBpbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNw
b25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlMTdmMmRjNWZlZmM5Nzk0NzQ0ZWQ5YWNiNTIyNzE1ZTNiYWQ4NDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGll
bnQuaApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJTmF2
aWdhdGlvbkNsaWVudF9oCisjZGVmaW5lIEFQSU5hdmlnYXRpb25DbGllbnRfaAorCisjaW5jbHVk
ZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKKyNpbmNsdWRlICJT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5j
bHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVz
cG9uc2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTsKK2NsYXNzIFF1aWNrTG9va0RvY3VtZW50RGF0YTsKK2NsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CitjbGFz
cyBXZWJGcmFtZVByb3h5OworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvdGVjdGlv
blNwYWNlOworc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOworc3RydWN0IFdlYk5hdmlnYXRp
b25EYXRhU3RvcmU7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBEaWN0aW9uYXJ5Owor
Y2xhc3MgTmF2aWdhdGlvbjsKK2NsYXNzIE9iamVjdDsKKworY2xhc3MgTmF2aWdhdGlvbkNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNsaWVudCgpIHsgfQorCisgICAg
Ly8gRnJvbSBMb2FkZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBXZWJLaXQ6
OlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6T2JqZWN0KikgeyB9CisKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lIHNpbmNlIGl0IGlzIHJlcGxhY2VkIGJ5IGRpZExheW91dC4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok9iamVj
dCopIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6T2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6T2Jq
ZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZXMsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgCisgICAgdmlydHVh
bCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90
ZWN0aW9uU3BhY2UqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hQcm9ncmVz
cyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQorCisgICAgLy8gRklYTUU6IFRoZXNlIGZvdXIg
ZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGlzIGNsaWVudC4KKyAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5y
ZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIFZlY3RvcjxSZWZQdHI8
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4pIHsgfQorICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIEFQSTo6T2JqZWN0
KikgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5
KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JikgeyB9CisKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICB2aXJ0
dWFsIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwbHVnaW5Mb2FkUG9saWN5KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGN1cnJlbnRQ
bHVnaW5Mb2FkUG9saWN5LCBBUEk6OkRpY3Rpb25hcnkqLCBXVEY6OlN0cmluZyYgLyogdW5hdmFp
bGFiaWxpdHlEZXNjcmlwdGlvbiAqLykgeyByZXR1cm4gY3VycmVudFBsdWdpbkxvYWRQb2xpY3k7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRC
bG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGlj
dGlvbmFyeSopIHsgfQorI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdl
YkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
Y29uc3QgeyByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRp
b247IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xM
b2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSBjb25z
dCB7IHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsg
fQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikgeyB9CisjZW5kaWYKKwor
ICAgIC8vIEZyb20gUG9saWN5Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAgeworICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25z
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB7CisgICAgICAgIGxp
c3RlbmVyLT51c2UoKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqKQorICAgIHsKKyAgICAgICAgbGlzdGVuZXItPnVzZSgpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQor
CisjZW5kaWYgLy8gQVBJTmF2aWdhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDgzMjA2OTUwODVlNjllNDFkODNl
ZGI5ZjYwMjVlOTJjODllOThiYjIuLjYzNDJiNWY1MjgzNDExMjk4ZDM5YWMxNmUxZmIzZTFlY2Zm
MDFiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0zNTgsOCArMzU4LDcgQEAgc3RhdGljIGludDMyX3QgZGV2aWNlT3JpZW50YXRp
b24oKQogICAgICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCk7CiAKICAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNl
dFBvbGljeUNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVQb2xpY3lDbGllbnQoKSk7Ci0g
ICAgX3BhZ2UtPnNldExvYWRlckNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkZXJD
bGllbnQoKSk7CisgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25hdmlnYXRpb25TdGF0
ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKIAogICAgIF91aURlbGVnYXRlID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwogICAgIF9wYWdlLT5zZXRVSUNs
aWVudChfdWlEZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYTY4Y2U1NjVhMTBkY2Zk
Njg5NTg1YjcwYjFkMTA3ZmZjY2FkYmM5Yi4uNmFjNzY5ZWViMThjYmQzOWUxZDMxMmJlZWFkM2Qw
MTc1ZDE5MzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaApAQCAtMzAsMTMgKzMwLDEyIEBACiAKICNpZiBXS19BUElfRU5BQkxFRAog
Ci0jaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2lt
cG9ydCAiQVBJTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJBUElQb2xpY3lDbGllbnQuaCIKKyNp
bXBvcnQgIkFQSU5hdmlnYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIlBhZ2VMb2FkU3RhdGUuaCIK
ICNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCisj
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAY2xh
c3MgV0tXZWJWaWV3OwogQHByb3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZTsKQEAgLTU3
LDggKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE5hdmlnYXRpb25TdGF0ZSYgZnJvbVdl
YlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lD
bGllbnQ+IGNyZWF0ZVBvbGljeUNsaWVudCgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okxv
YWRlckNsaWVudD4gY3JlYXRlTG9hZGVyQ2xpZW50KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TmF2aWdhdGlvbkNsaWVudD4gY3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpOwogCiAgICAgUmV0
YWluUHRyPGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gPiBuYXZpZ2F0aW9uRGVsZWdhdGUoKTsK
ICAgICB2b2lkIHNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+
KTsKQEAgLTczLDI0ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUmVjb3JkTmF2aWdh
dGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKIAogcHJpdmF0ZToKLSAgICBj
bGFzcyBQb2xpY3lDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpQb2xpY3lDbGllbnQgewotICAg
IHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgUG9saWN5Q2xpZW50KE5hdmlnYXRpb25TdGF0ZSYp
OwotICAgICAgICB+UG9saWN5Q2xpZW50KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBB
UEk6OlBvbGljeUNsaWVudAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBkZXN0aW5hdGlvbkZy
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZy
YW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJG
cmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1l
LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dN
SU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZTsKLQotICAgICAgICBOYXZpZ2F0aW9uU3RhdGUmIG1fbmF2aWdh
dGlvblN0YXRlOwotICAgIH07Ci0KLSAgICBjbGFzcyBMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpMb2FkZXJDbGllbnQgeworICAgIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4
cGxpY2l0IExvYWRlckNsaWVudChOYXZpZ2F0aW9uU3RhdGUmKTsKLSAgICAgICAgfkxvYWRlckNs
aWVudCgpOworICAgICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uQ2xpZW50KE5hdmlnYXRpb25TdGF0
ZSYpOworICAgICAgICB+TmF2aWdhdGlvbkNsaWVudCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3Zl
cnJpZGU7CkBAIC0xMTcsNiArMTAxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJQYWdlUHJveHkmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSYpIG92ZXJy
aWRlOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqIGRlc3RpbmF0aW9uRnJhbWUsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkm
IHNvdXJjZUZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFJlZjxXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBS
ZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlOworCiAgICAgICAgIE5hdmlnYXRpb25TdGF0ZSYgbV9uYXZpZ2F0aW9uU3RhdGU7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KaW5kZXggMzRmNDA5ZTUzZDZkNmI4NmVkYWUzZjYzZWI5NTIzMzg5YTEwZjkx
Mi4uYTg5MmFiYjI1OWY4NDEwM2ZiZWI1ZjNlYzAyYWIwYzEwOTEwMTY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMDIs
MTQgKzEwMiw5IEBAIE5hdmlnYXRpb25TdGF0ZSYgTmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICByZXR1cm4gKm5hdmlnYXRpb25TdGF0
ZXMoKS5nZXQoJndlYlBhZ2VQcm94eSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRl
ckNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkZXJDbGllbnQoKQorc3RkOjp1bmlx
dWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVOYXZp
Z2F0aW9uQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJDbGll
bnQ+KCp0aGlzKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiBOYXZp
Z2F0aW9uU3RhdGU6OmNyZWF0ZVBvbGljeUNsaWVudCgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UG9saWN5Q2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdGlvbkNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlPiA+IE5hdmlnYXRpb25TdGF0ZTo6bmF2aWdhdGlvbkRlbGVnYXRlKCkKQEAg
LTIxMywxNiArMjA4LDE2IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjp3aWxsUmVjb3JkTmF2aWdh
dGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiAgICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUp
IF93ZWJWaWV3Om1fd2ViVmlldyB3aWxsU25hcHNob3RCYWNrRm9yd2FyZExpc3RJdGVtOndyYXBw
ZXIoaXRlbSldOwogfQogCi1OYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6UG9saWN5Q2xp
ZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdhdGlvblN0YXRlKQorTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpOYXZpZ2F0aW9uQ2xpZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdh
dGlvblN0YXRlKQogICAgIDogbV9uYXZpZ2F0aW9uU3RhdGUobmF2aWdhdGlvblN0YXRlKQogewog
fQogCi1OYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6flBvbGljeUNsaWVudCgpCitOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6On5OYXZpZ2F0aW9uQ2xpZW50KCkKIHsKIH0K
IAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBkZXN0aW5hdGlvbkZy
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdl
YkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5
KiBkZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVz
dD4gbnNVUkxSZXF1ZXN0ID0gYWRvcHROUyh3cmFwcGVyKCpBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0
ZShyZXF1ZXN0KS5sZWFrUmVmKCkpKTsKIApAQCAtMjkxLDEyICsyODYsMTIgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihXZWJQYWdlUHJveHkKICAgICB9XTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGlj
eUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5LCBXZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFJlZjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
K3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkZyYW1lUHJveHkm
IHNvdXJjZUZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV1RG
OjpTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24od2ViUGFnZVByb3h5LCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgJnNvdXJjZUZyYW1lLCByZXF1ZXN0LCByZXF1ZXN0LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1
c2VyRGF0YSk7CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiBm
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZURlY2lzaW9uSGFuZGxlcikgewogICAgICAgICBOU1VSTCAqdXJsID0gcmVzb3Vy
Y2VSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkuVVJMOwpAQCAtMzU0LDE2ICszNDksNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShX
ZWJQYWdlUHJveHkmLCBXZWJGcgogICAgIH1dOwogfQogCi1OYXZpZ2F0aW9uU3RhdGU6OkxvYWRl
ckNsaWVudDo6TG9hZGVyQ2xpZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdhdGlvblN0YXRlKQot
ICAgIDogbV9uYXZpZ2F0aW9uU3RhdGUobmF2aWdhdGlvblN0YXRlKQotewotfQotCi1OYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6fkxvYWRlckNsaWVudCgpCi17Ci19Ci0KLXZvaWQgTmF2
aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZp
Z2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7CiAgICAgaWYgKCF3ZWJGcmFtZVBy
b3h5LmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4Myw3ICszNjksNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYlBhZ2VQcm94eQogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246
d2tOYXZpZ2F0aW9uXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0
KikKIHsKICAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDE3LDcgKzQwMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRl
RXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3LCBXCiAgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpvcmlnaW5hbEVycm9y
LmRvbWFpbiBjb2RlOm9yaWdpbmFsRXJyb3IuY29kZSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0p
OwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94
eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvciwgQVBJOjpPYmplY3QqKQogewogICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01h
aW5GcmFtZSgpKSB7CiAgICAgICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWVXaXRoRXJyb3IpCkBAIC00NDksNyArNDM1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KFdlYlAKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uLmdldCgp
IHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKLXZvaWQg
TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2Us
IFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgQVBJOjpPYmplY3QqKQogewogICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgp
KQogICAgICAgICByZXR1cm47CkBAIC00NjksNyArNDU1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgV2UKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKIH0KIAotdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQogewogICAgIGlmICghd2ViRnJhbWVQcm94
eS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CkBAIC00ODksNyArNDc1LDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUoV2ViUGFnZVByb3h5JgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDp3a05h
dmlnYXRpb25dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJG
cmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKIHsKICAgICBpZiAoIXdlYkZy
YW1lUHJveHkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA5LDcgKzQ5NSw3
IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JG
cmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlCiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOndrTmF2
aWdhdGlvbl07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXdlYkZyYW1lUHJveHku
aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTMwLDcgKzUxNiw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiBwCiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3a05hdmlnYXRpb24gd2l0
aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKIH0KIAotdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlv
blR5cGUsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKQog
ewogICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47
CkBAIC01NTAsNyArNTM2LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQcm8KICAgICBbc3RhdGlj
X2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0
ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246
d2tOYXZpZ2F0aW9uIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb246dG9XS1NhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlKG5hdmlnYXRpb25UeXBlKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRl
OjpMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKQordm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZExheW91dChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcywgQVBJ
OjpPYmplY3QqKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTYyLDcgKzU0OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxhCiAgICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyByZW5k
ZXJpbmdQcm9ncmVzc0RpZENoYW5nZTpyZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyhsYXlvdXRNaWxl
c3RvbmVzKV07CiB9CiAKLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2Uq
IHByb3RlY3Rpb25TcGFjZSkKK2Jvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2ViUHJvdGVjdGlv
blNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgaWYgKG1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTc3
LDcgKzU2Myw3IEBAIGJvb2wgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lCiAgICAgcmV0dXJuIFtzdGF0aWNf
Y2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgY2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UtPnByb3RlY3Rpb25TcGFj
ZSgpLm5zU3BhY2UoKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5Jiwg
V2ViRnJhbWVQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKQogewogI2lmICFkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC02MzQs
NyArNjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWIKICAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTp3cmFwcGVyKCphdXRoZW50aWNhdGlvbkNoYWxsZW5nZSldOwogfQogCi12
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0
OjpXZWJQYWdlUHJveHkmIHBhZ2UpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKQogewogICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdXZWJQcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAgIHJldHVybjsKQEAgLTY0Niw3ICs2MzIsNyBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2Vi
S2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3V2Vi
UHJvY2Vzc0RpZENyYXNoOm1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107CiB9CiAKLVBhc3NS
ZWZQdHI8QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6d2ViQ3J5cHRv
TWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikKK1Bhc3NSZWZQdHI8QVBJOjpEYXRhPiBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3RlcktleShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldykKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC02NjMsNyArNjQ5LDcgQEAgUGFzc1JlZlB0cjxBUEk6OkRh
dGE+IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2Vi
S2l0OjoKIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQog
ewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKQogICAg
ICAgICByZXR1cm47CkBAIC02NzUsNyArNjYxLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSgK
ICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6
ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdl
YktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQogewogICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjkwLDcgKzY3Niw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lCiAKIC8v
IEhpc3RvcnlEZWxlZ2F0ZVByaXZhdGUgc3VwcG9ydAogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgbmF2aWdhdGlv
bkRhdGFTdG9yZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5KQordm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlJiBuYXZpZ2F0aW9uRGF0YVN0b3JlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdl
YkZyYW1lUHJveHkpCiB7CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTcwNSw3ICs2OTEsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBh
ZwogICAgIFtoaXN0b3J5RGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOndyYXBwZXIoKkFQSTo6TmF2aWdhdGlv
bkRhdGE6OmNyZWF0ZShuYXZpZ2F0aW9uRGF0YVN0b3JlKSldOwogfQogCi12b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0
cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94
eSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgc291
cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYgd2ViRnJhbWVQcm94eSkKIHsKICAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzIwLDcgKzcwNiw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6
OldlYlBhZ2VQcm94CiAgICAgW2hpc3RvcnlEZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTDpbTlNVUkwgX3dl
Yl9VUkxXaXRoV1RGU3RyaW5nOnNvdXJjZVVSTF0gdG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdU
RlN0cmluZzpkZXN0aW5hdGlvblVSTF1dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGlu
YXRpb25VUkwsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSkKK3ZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Qo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2Vi
RnJhbWVQcm94eSkKIHsKICAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzM1LDcgKzcyMSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpM
b2FkZXJDbGllbnQ6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94
CiAgICAgW2hpc3RvcnlEZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RG
U3RyaW5nOnNvdXJjZVVSTF0gdG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpkZXN0
aW5hdGlvblVSTF1dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0
cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYgd2ViRnJhbWVQcm94eSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6
OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSYgd2ViRnJhbWVQcm94eSkKIHsKICAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA5YTIwM2NmZTRmMDY3ODUyYTZkMTEwM2RmY2UzMWVkOGIzNWExNDc3Li4x
NDBiY2YwNjgwMTgyNGQ2NGU5ZWI0ZGU0MjA3M2FjZTY2ZGMxMjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgorI2luY2x1ZGUgIkFQSU5hdmlnYXRp
b25DbGllbnQuaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC01MDIsNiArNTAz
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyYg
cHJlZmVyZW5jZXMpCiAgICAgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdh
dGlvbkNsaWVudD4gbmF2aWdhdGlvbkNsaWVudCkKK3sKKyAgICBtX25hdmlnYXRpb25DbGllbnQg
PSBXVEY6Om1vdmUobmF2aWdhdGlvbkNsaWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBsb2FkZXJD
bGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJDbGllbnQpIHsKQEAgLTEwNjEsNyArMTA2NywxMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiBhZGRlZCwgVmVjdG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3Zl
ZCkKIHsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlz
LCBhZGRlZCwgV1RGOjptb3ZlKHJlbW92ZWQpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgq
dGhpcywgYWRkZWQsIFdURjo6bW92ZShyZW1vdmVkKSk7CisgICAgZWxzZQorICAgICAgICBtX2xv
YWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgV1RGOjpt
b3ZlKHJlbW92ZWQpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUu
dHJhbnNhY3Rpb24oKTsKIApAQCAtMTA3MSwxMiArMTA4MCwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVk
LCBWZWN0bwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KHVpbnQ2NF90IGl0ZW1JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGlmIChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0
ZW0oaXRlbUlEKSkKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPndpbGxHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbSgqdGhpcywgaXRlbSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGl0ZW0gPSBtX3Byb2Nlc3MtPndlYkJhY2tGb3J3YXJkSXRlbShpdGVtSUQpKSB7CisgICAg
ICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgaXRlbSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0oKnRoaXMsIGl0ZW0sIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIH0KIH0KIAogYm9vbCBXZWJQYWdlUHJv
eHk6OnNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBpdGVtKQogeworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAg
ICAgIHJldHVybiBtX25hdmlnYXRpb25DbGllbnQtPnNob3VsZEtlZXBDdXJyZW50QmFja0Zvcndh
cmRMaXN0SXRlbUluTGlzdCgqdGhpcywgaXRlbSk7CiAgICAgcmV0dXJuIG1fbG9hZGVyQ2xpZW50
LT5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoKnRoaXMsIGl0ZW0p
OwogfQogCkBAIC0xNzI4LDcgKzE3NDMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVn
aW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnMKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IHBsdWdpbklu
Zm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJh
bWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdlVVJMU3RyaW5nLCBTdHJpbmcoKSwgU3RyaW5nKCkp
OwotICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBtX2xvYWRlckNsaWVudC0+cGx1Z2luTG9hZFBvbGlj
eSgqdGhpcywgc3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1Z2luTG9hZFBv
bGljeSksIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpLCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9u
KTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBwbHVnaW5Mb2FkUG9saWN5
ID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT5wbHVnaW5Mb2FkUG9saWN5KCp0aGlzLCBzdGF0aWNfY2Fz
dDxQbHVnaW5Nb2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3Jt
YXRpb24uZ2V0KCksIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pOworICAgIGVsc2UKKyAgICAg
ICAgcGx1Z2luTG9hZFBvbGljeSA9IG1fbG9hZGVyQ2xpZW50LT5wbHVnaW5Mb2FkUG9saWN5KCp0
aGlzLCBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5
KSwgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCksIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVVUkxTdHJpbmcpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlVVJMU3RyaW5nKTsKQEAgLTI1OTYsNyArMjYxNCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkU3RhcnRQcm9ncmVzcygpCiAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZFN0YXJ0UHJvZ3Jl
c3ModHJhbnNhY3Rpb24pOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsK
LSAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQcm9ncmVzcygqdGhpcyk7CisgICAgaWYgKG1f
bmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydFBy
b2dyZXNzKCp0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFy
dFByb2dyZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb2dy
ZXNzKGRvdWJsZSB2YWx1ZSkKQEAgLTI2MDUsNyArMjYyNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91YmxlIHZhbHVlKQogICAgIG1fcGFnZUxvYWRTdGF0ZS5k
aWRDaGFuZ2VQcm9ncmVzcyh0cmFuc2FjdGlvbiwgdmFsdWUpOwogCiAgICAgbV9wYWdlTG9hZFN0
YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlUHJvZ3Jl
c3MoKnRoaXMpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkQ2hhbmdlUHJvZ3Jlc3MoKnRoaXMpOworICAgIGVsc2UKKyAgICAgICAg
bV9sb2FkZXJDbGllbnQtPmRpZENoYW5nZVByb2dyZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKQEAgLTI2MTQsNyArMjYzOCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogICAgIG1fcGFnZUxvYWRTdGF0ZS5k
aWRGaW5pc2hQcm9ncmVzcyh0cmFuc2FjdGlvbik7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29t
bWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hQcm9ncmVzcygqdGhp
cyk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRGaW5pc2hQcm9ncmVzcygqdGhpcyk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkRmluaXNoUHJvZ3Jlc3MoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJv
Z3Jlc3MpCkBAIC0yNjUxLDcgKzI2NzgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAg
ICBmcmFtZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQodXJsKTsKIAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRp
b24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQo
KSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CkBAIC0yNjczLDcgKzI3MDMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKICAgICBmcmFt
ZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKICAg
ICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywg
KmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0
KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTI2OTQsNyArMjcyNywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdgogICAgIGZy
YW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29t
bWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3Is
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAq
ZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
KnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCkKQEAgLTI3NjcsNyAr
MjgwMywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgICAgICBtX3BhZ2VTY2FsZUZh
Y3RvciA9IDE7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRDb21taXRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdh
dGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDb21taXRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwg
bmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVu
dC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCks
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCkBAIC0yNzgwLDcgKzI4MTksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAg
ICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlv
bklEKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjgwMiw3
ICsyODQ0LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAgICAgZnJhbWUtPmRpZEZpbmlz
aExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9s
b2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0
aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBu
YXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50
LT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CiAKICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIG1fcGFnZUNsaWVudC5kaWRG
aW5pc2hMb2FkRm9yTWFpbkZyYW1lKCk7CkBAIC0yODI4LDcgKzI4NzMsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELAogICAgIGZyYW1lLT5kaWRGYWlsTG9hZCgpOwogCiAgICAgbV9wYWdlTG9h
ZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbExvYWRX
aXRoRXJyb3JGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRp
b24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjg1NCw3ICsyOTAy
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0
Q2hhbmdlcygpOwogCiAgICAgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5
cGUgPSBzdGF0aWNfY2FzdDxTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3BhcXVlU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbmF2
aWdhdGlvblR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKCp0
aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG5hdmlnYXRpb25UeXBlLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUs
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShuYXZpZ2F0aW9uVHlwZSk7CkBAIC0y
ODczLDcgKzI5MjQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdGl0bGUKICAgICBmcmFtZS0+ZGlk
Q2hhbmdlVGl0bGUodGl0bGUpOwogICAgIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFu
Z2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKCp0aGlz
LCB0aXRsZSwgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKCp0aGlzLCB0
aXRsZSwgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZSgqdGhpcywgdGl0bGUsICpmcmFtZSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI4ODEsNyArMjkzNSwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBVc2VyRGF0YSYgdXNlcgogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRGaXJzdExheW91dEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNl
CisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJzdExheW91dEZvckZyYW1lKCp0aGlzLCAq
ZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQpAQCAtMjg4OSw3ICsyOTQ2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zCiAg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwog
ICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIG1fcGFnZUNsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKTsKQEAgLTI4OTcsNyArMjk1NywxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTGF5b3V0KHVpbnQzMl90
IGxheW91dE1pbGVzdG9uZXMsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBtX2xv
YWRlckNsaWVudC0+ZGlkTGF5b3V0KCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVz
PihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkK
KyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRMYXlvdXQoKnRoaXMsIHN0YXRpY19jYXN0
PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRMYXlvdXQoKnRoaXMsIHN0YXRpY19jYXN0PExheW91
dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yOTA1LDcgKzI5NjgsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBVc2VyRGF0YSYKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBtX2xvYWRlckNs
aWVudC0+ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwor
ICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVs
c2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSgq
dGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCkBAIC0yOTE3LDcgKzI5ODMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2UK
ICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVuSW5zZWN1cmVDb250ZW50KHRyYW5z
YWN0aW9uKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9s
b2FkZXJDbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSgqdGhpcywgKmZy
YW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSgqdGhpcywgKmZy
YW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yOTI5LDcgKzI5OTgsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFVzZXJEYXQKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVu
SW5zZWN1cmVDb250ZW50KHRyYW5zYWN0aW9uKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lKCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQp
CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVu
dC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yOTM3LDcgKzMwMDksMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGEKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vz
cy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBt
X2xvYWRlckNsaWVudC0+ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWREZXRlY3RYU1NGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWREZXRlY3RYU1NGb3JGcmFtZSgqdGhpcywgKmZyYW1l
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQo
dWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKQEAgLTI5ODQsNyArMzA1OSwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYQogICAgIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uID0gdHJ1ZTsKICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxp
ZCA9IGZhbHNlOwogCi0gICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oKnRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdG
cmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCByZXF1ZXN0LCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3By
b2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIGZyYW1lLCBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCByZXF1ZXN0
LCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBmcmFtZSwgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgcmVx
dWVzdCwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBtX2luRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IGZhbHNlOwogCkBAIC0zMDA0LDcgKzMwODIsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBOYXZpZ2EKIAogICAgIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklE
KTsKIAotICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
KnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwg
V1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkK
KyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFt
ZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BvbGlj
eUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURjo6bW92ZShsaXN0ZW5l
ciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMwMTYsNyArMzA5
NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXNwbwogCiAgICAgUmVmPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KGxpc3RlbmVySUQpOwogCi0gICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdU
Rjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMs
ICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGOjptb3ZlKGxp
c3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNo
b3dNSU1FVHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBw
b2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKQpAQCAtMzA0NSw3ICszMTI5LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBSZXNvdXJjZUVycm9yCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0g
ICAgbV9wb2xpY3lDbGllbnQtPnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KCp0aGlzLCAqZnJhbWUs
IGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KCp0aGlzLCAqZnJhbWUsIGVy
cm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcG9saWN5Q2xpZW50LT51bmFibGVUb0lt
cGxlbWVudFBvbGljeSgqdGhpcywgKmZyYW1lLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIC8vIEZvcm1D
bGllbnQKQEAgLTMwNjgsNyArMzE1NSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgcwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9
PSB0aGlzKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YSgqdGhpcywgc3RvcmUsICpmcmFtZSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkK
KyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSgqdGhpcywgc3RvcmUsICpmcmFtZSk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVu
dC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlLCAqZnJhbWUpOwog
ICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmhpc3RvcnlDbGllbnQoKS5kaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSwgKnRoaXMsIHN0b3JlLCAq
ZnJhbWUpOwogfQogCkBAIC0zMDg0LDcgKzMxNzQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29u
c3QKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0Vf
Q0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRp
b25VUkxTdHJpbmcsICpmcmFtZSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMsIHNv
dXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7CisgICAgZWxzZQor
ICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBz
b3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOwogICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmhpc3RvcnlDbGllbnQoKS5kaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOwogfQogCkBAIC0zMTAwLDcgKzMxOTMsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTFN0cmluZywgY29uc3QKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJp
bmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAg
IG1fbG9hZGVyQ2xpZW50LT5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVS
TFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7CisgICAgaWYgKG1fbmF2aWdh
dGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsICpm
cmFtZSk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAq
ZnJhbWUpOwogICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmhpc3RvcnlDbGllbnQoKS5kaWRQ
ZXJmb3JtU2VydmVyUmVkaXJlY3QocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0aGlzLCBzb3Vy
Y2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOwogfQogCkBAIC0zMTEy
LDcgKzMyMDgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwKIAogICAgIE1FU1NBR0VfQ0hF
Q0tfVVJMKHVybCk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkVXBkYXRlSGlzdG9yeVRpdGxl
KCp0aGlzLCB0aXRsZSwgdXJsLCAqZnJhbWUpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQp
CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKCp0aGlz
LCB0aXRsZSwgdXJsLCAqZnJhbWUpOworICAgIGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQt
PmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSgqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsKICAgICBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkVXBkYXRlSGlzdG9yeVRp
dGxlKHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsK
IH0KIApAQCAtMzI5MiwxMiArMzM5MSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYgogI2lm
IEVOQUJMRShXRUJHTCkKIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChjb25z
dCBTdHJpbmcmIHVybCwgdWludDMyX3QmIGxvYWRQb2xpY3kpCiB7Ci0gICAgbG9hZFBvbGljeSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0
aGlzLCB1cmwpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBsb2FkUG9s
aWN5ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2Fk
UG9saWN5KCp0aGlzLCB1cmwpKTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRQb2xpY3kgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywg
dXJsKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwsIHVpbnQzMl90JiBsb2FkUG9saWN5KQogewotICAgIGxvYWRQb2xp
Y3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExv
YWRQb2xpY3koKnRoaXMsIHVybCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAg
ICAgIGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9uYXZpZ2F0aW9uQ2xpZW50
LT5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPnJlc29s
dmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKIApAQCAtNDQ4MCw3ICs0NTg1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKCkKIAogICAgIHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxl
U3RhdGUoKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlKCp0aGlzKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKnRoaXMpOworICAgIGVs
c2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUo
KnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxl
UHJvY2Vzc1VucmVzcG9uc2l2ZSgpCkBAIC00NDg4LDcgKzQ1OTYsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUoKQogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2xvYWRlckNsaWVudC0+
aW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZSgqdGhpcyk7CisgICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5pbnRl
cmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNwb25zaXZlKCp0aGlzKTsKKyAgICBlbHNl
CisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5pbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNz
VW5yZXNwb25zaXZlKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRC
ZWNvbWVSZXNwb25zaXZlKCkKQEAgLTQ0OTgsNyArNDYwOSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogICAgIAogICAgIHVwZGF0ZUJhY2tpbmdT
dG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlk
QmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhp
cyk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVJl
c3BvbnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNo
KCkKQEAgLTQ1MTIsNyArNDYyNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENy
YXNoKCkKIAogICAgIG5hdmlnYXRpb25TdGF0ZSgpLmNsZWFyQWxsTmF2aWdhdGlvbnMoKTsKIAot
ICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZENy
YXNoKCp0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlk
Q3Jhc2goKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0
YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCkBAIC00NzQwLDcgKzQ4NTcsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQKIAogICAgIFJlZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IHByb3Rl
Y3Rpb25TcGFjZSA9IFdlYlByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlKGNvcmVQcm90ZWN0aW9uU3Bh
Y2UpOwogCi0gICAgY2FuQXV0aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQtPmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIHByb3RlY3Rp
b25TcGFjZS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgY2Fu
QXV0aGVudGljYXRlID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlSW5GcmFtZSgqdGhpcywgKmZyYW1lLCBwcm90ZWN0aW9uU3BhY2UuZ2V0
KCkpOworICAgIGVsc2UKKyAgICAgICAgY2FuQXV0aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQt
PmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJh
bWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlE
KQpAQCAtNDc1Niw3ICs0ODc2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50NjRfdCBmcmFtZUlELCBQYXNzCiAgICAgTUVT
U0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eT4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBwcnBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
SW5GcmFtZSgqdGhpcywgKmZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7Cisg
ICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVy
Q2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAq
ZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4
cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWRE
YXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQpAQCAtNDk0MSw3ICs1MDY0LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2Uo
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHBhZ2VVUkxTdHJpbmcpCiB7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxUb0luaXRpYWxp
emVQbHVnaW4oKnRoaXMsIGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShtaW1lVHlw
ZSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpLmdldCgpKTsKKyAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxUb0luaXRp
YWxpemVQbHVnaW4oKnRoaXMsIGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShtaW1l
VHlwZSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpLmdldCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCp0aGlzLCBj
cmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkobWltZVR5cGUsIGZyYW1lVVJMU3RyaW5n
LCBwYWdlVVJMU3RyaW5nKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9j
a0luc2VjdXJlUGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpCkBAIC00OTYw
LDcgKzUwODYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5W
ZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFMKICAgICBVTlVTRURfUEFSQU0o
cmVwbGFjZW1lbnRPYnNjdXJlZCk7CiAjZW5kaWYKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRC
bG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbigqdGhpcywgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCkp
OworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oKnRoaXMsIHBsdWdpbkluZm9ybWF0aW9u
LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRCbG9ja0luc2Vj
dXJlUGx1Z2luVmVyc2lvbigqdGhpcywgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCkpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCkBAIC01MjM4LDcgKzUzNjcsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXksIGJvb2wmIHN1Y2NlZWRlZCwgVmUKIHsKICAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVy
S2V5OwogCi0gICAgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX2xvYWRlckNsaWVu
dC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KSB7CisgICAgICAgIGlmIChSZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9uYXZpZ2F0aW9u
Q2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRoaXMpKQorICAgICAgICAgICAgbWFzdGVyS2V5
ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOworICAgIH0gZWxzZSBpZiAoUmVm
UHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbG9hZGVyQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJL
ZXkoKnRoaXMpKQogICAgICAgICBtYXN0ZXJLZXkgPSBrZXlEYXRhLT5kYXRhUmVmZXJlbmNlKCku
dmVjdG9yKCk7CiAgICAgZWxzZSBpZiAoIWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkobWFz
dGVyS2V5KSkgewogICAgICAgICBzdWNjZWVkZWQgPSBmYWxzZTsKQEAgLTUyNTIsNyArNTM4NCwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgd3JhcHBlZEtleSwgYm9vbCYgc3VjYwogewogICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0
ZXJLZXk7CiAKLSAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbG9hZGVyQ2xp
ZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRoaXMpKQorICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRp
b25DbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgICAgICAgICBtYXN0ZXJL
ZXkgPSBrZXlEYXRhLT5kYXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7CisgICAgfSBlbHNlIGlmIChS
ZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9sb2FkZXJDbGllbnQtPndlYkNyeXB0b01hc3Rl
cktleSgqdGhpcykpCiAgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2Uo
KS52ZWN0b3IoKTsKICAgICBlbHNlIGlmICghZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSht
YXN0ZXJLZXkpKSB7CiAgICAgICAgIHN1Y2NlZWRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDhhMDljNmE0ODNiM2E2ODA3NTVmYzc4MmQ2NTcw
ZTJjYWNhMDA3ODYuLjg4NTQ3ZGE5NzNiNWJiY2UxZDE4YjRiODFjYjYzMzEzN2YyNmYyNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNyw2ICsxMTcsNyBA
QCBjbGFzcyBGaW5kQ2xpZW50OwogY2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIExvYWRlckNsaWVu
dDsKIGNsYXNzIE5hdmlnYXRpb247CitjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50OwogY2xhc3MgUG9s
aWN5Q2xpZW50OwogY2xhc3MgVUlDbGllbnQ7CiBjbGFzcyBVUkxSZXF1ZXN0OwpAQCAtMzE2LDYg
KzMxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pik7CiAgICAgdm9pZCBp
bml0aWFsaXplRmluZE1hdGNoZXNDbGllbnQoY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRC
YXNlKik7CiAgICAgdm9pZCBzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1D
bGllbnQ+KTsKKyAgICB2b2lkIHNldE5hdmlnYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TmF2aWdhdGlvbkNsaWVudD4pOwogICAgIHZvaWQgc2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxvYWRlckNsaWVudD4pOwogICAgIHZvaWQgc2V0UG9saWN5Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4pOwogCkBAIC0xMzczLDYgKzEzNzUsNyBA
QCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+IG1fbG9hZGVyQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OlBvbGljeUNsaWVudD4gbV9wb2xpY3lDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbV9uYXZpZ2F0aW9uQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+IG1fZm9ybUNsaWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpVSUNsaWVudD4gbV91aUNsaWVudDsKICNpZiBQTEFURk9STShFRkwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NDk5YjVkMjliNTNmOWEyZWQ5ZWZmODgxYzdmZTEzNWY0MDI0NDM0OS4uNDg4NTQ2ZWI5MDRjZGI4
NmQzYjJhNjdiMWU0ODE4OTY5MjExMTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQwLDYgKzY0MCw3IEBACiAJCTJEQzZE
OUMzMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNkQ5QzEx
OEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi87
IH07CiAJCTJEQzZEOUM0MThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJS
ZWdpc3RyeS5tbSAqLzsgfTsKIAkJMkREMTNCRDUxOEY3REFERDAwRTEzMEExIC8qIEZpbmRDb250
cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkREMTNCRDMxOEY3REFERDAwRTEzMEExIC8qIEZpbmRDb250cm9sbGVySU9TLm1tICovOyB9
OworCQkyREQ5RUIyRDFBNkYwMTI1MDBCQjEyNjcgLyogQVBJTmF2aWdhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREOUVCMkMxQTZG
MDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJMkRERTBBRkEx
ODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OEND
OTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQky
RERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBB
RjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAq
LzsgfTsKIAkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERjczMTMxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5oICovOyB9OwpAQCAtMjcyNyw2ICsyNzI4LDcgQEAKIAkJMkRDNkQ5QzExOEM0
NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzZEOUMyMThDNDRBNjEwMDQz
QkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQxM0JEMzE4RjdEQUREMDBF
MTMwQTEgLyogRmluZENvbnRyb2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBGaW5kQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9GaW5kQ29udHJv
bGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkREOUVCMkMxQTZGMDEy
NTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJTmF2aWdhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVy
dHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERF
MEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERGNzMx
MzE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjExNyw2ICs2MTE5
LDcgQEAKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50Lmgg
Ki8sCiAJCQkJN0NEM0E0ODAxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24uY3BwICov
LAogCQkJCTdDRDNBNDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggKi8sCisJ
CQkJMkREOUVCMkMxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCAqLywK
IAkJCQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuY3BwICov
LAogCQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0aW9uRGF0YS5oICov
LAogCQkJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAgKi8sCkBAIC03NTY1LDYgKzc1NjgsNyBAQAogCQkJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUw
RSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE3OTU1NzExNjI4NzdEMjAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyog
TmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkREOUVCMkQxQTZG
MDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxNEE5NTRBMTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRl
Z2llcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5l
dHdvcmtQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxM0ExNjNEMTYzMDg4RjYw
MDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245271</attachid>
            <date>2015-01-23 19:12:54 -0800</date>
            <delta_ts>2015-01-29 14:52:39 -0800</delta_ts>
            <desc>Preliminary Part 2</desc>
            <filename>prelim-part2.diff</filename>
            <type>text/plain</type>
            <size>33590</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKaW5kZXggOGUxN2YyZC4uMjNiZGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTY0LDE0ICs2NCwxNSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNsaWVudCgpIHsgfQogCiAgICAgLy8gRnJvbSBM
b2FkZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvckZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6
T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlv
biosIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBXZWJLaXQ6OlNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2
aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQ
STo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tbWl0TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2
b2lkIG5hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3Io
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIFdlYktp
dDo6U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0KikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok9iamVjdCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KIApA
QCAtODMsMTAgKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1NG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQ
STo6T2JqZWN0KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTGF5b3V0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6Ok9iamVjdCopIHsgfQog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYs
IFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydFByb2dyZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVByb2dyZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggNmFjNzY5
ZS4uOWM5ZTIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaApAQCAtNzcsMTcgKzc3LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIH5OYXZp
Z2F0aW9uQ2xpZW50KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmpl
Y3QqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFt
ZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQ
STo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1l
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRMYXlvdXQoV2ViUGFnZVByb3h5Jiwg
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAg
ICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZy
YW1lKFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2ViUHJv
dGVjdGlvblNwYWNlKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2Jq
ZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94
eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVz
c0RpZENoYW5nZShXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdl
YlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpE
YXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4
IGE4OTJhYmIuLjZjNGI5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMjE3LDYgKzIxNyw3IEBAIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6fk5hdmlnYXRpb25DbGllbnQoKQogewogfQogCisvLyBGSVgg
VEhJUyBPTkU6CiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBk
ZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4g
bnNVUkxSZXF1ZXN0ID0gYWRvcHROUyh3cmFwcGVyKCpBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShy
ZXF1ZXN0KS5sZWFrUmVmKCkpKTsKQEAgLTI4NiwxMSArMjg3LDEzIEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFdlYlBhZ2VQCiAgICAgfV07CiB9CiAKKy8vIEZJWCBUSElTIE9ORToKIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
V2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkZyYW1lUHJveHkmIHNvdXJjZUZyYW1lLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKQogewogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
d2ViUGFnZVByb3h5LCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgJnNvdXJjZUZyYW1l
LCByZXF1ZXN0LCByZXF1ZXN0LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VyRGF0YSk7CiB9CiAK
Ky8vIEZJWCBUSElTIE9ORToKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiBm
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZURlY2lzaW9uSGFuZGxlcikgewpAQCAtMzQ5LDExICszNTIsOCBAQCB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
V2ViUGFnZVByb3h5JiwgVwogICAgIH1dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1l
KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlv
bikKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjksMTEgKzM2OSw4IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdlYlBhZ2VQCiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3a05hdmlnYXRpb25d
OwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdh
dGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQ
cm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAg
aWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24pCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNDAzLDIwICs0MDAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJy
b3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKFdLV2ViVmlldyAqd2ViVmlldywg
VwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46b3Jp
Z2luYWxFcnJvci5kb21haW4gY29kZTpvcmlnaW5hbEVycm9yLmNvZGUgdXNlckluZm86dXNlcklu
Zm8uZ2V0KCldKTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdh
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikK
K3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYg
d2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2ViRnJh
bWVQcm94eS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAgICAgICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVt
cHRlciA9IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOwotICAgICAgICAvLyBGSVhNRTogR2V0
IHRoZSBtYWluIGZyYW1lJ3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBbKGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEluU3ViZnJhbWU6YWRvcHROUyhbW1dLRnJhbWVJbmZvIGFsbG9jXSBpbml0V2l0aFdlYkZy
YW1lUHJveHk6d2ViRnJhbWVQcm94eV0pLmdldCgpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVy
eUF0dGVtcHRlci5nZXQoKV07Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBi
dXQgaXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBw
YWdlIGNhY2hlLgogICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IHdrTmF2aWdhdGlvbjsKICAg
ICBpZiAobmF2aWdhdGlvbikKQEAgLTQzNSwxMSArNDIwLDI0IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoCiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbi5nZXQo
KSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCi12b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRo
RXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBB
UEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZy
YW1lKCkpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlz
IG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGJlY2F1c2UgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgcGFzc2VzIG51bGwuCisgICAgUmV0
YWluUHRyPFdLTmF2aWdhdGlvbj4gd2tOYXZpZ2F0aW9uOworICAgIGlmIChuYXZpZ2F0aW9uKQor
ICAgICAgICB3a05hdmlnYXRpb24gPSB3cmFwcGVyKCpuYXZpZ2F0aW9uKTsKKworICAgIGlmICgh
bV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZp
Z2F0aW9uRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgYXV0byBlcnJvcldpdGhSZWNvdmVy
eUF0dGVtcHRlciA9IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlv
blN0YXRlLm1fd2ViVmlldywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOworCisgICAgWyhpZCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJG
cmFtZVByb3h5OndlYkZyYW1lUHJveHldKS5nZXQoKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIuZ2V0KCldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpP
YmplY3QqKQorewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm47CiAK
QEAgLTQ1NSwxMSArNDUzLDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UKICAgICBbbmF2aWdh
dGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENvbW1p
dE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6bmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdh
dGlvbiwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFt
ZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50
TG9hZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NzUsMTEgKzQ3MCw4IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZShXZWJQYWdlUHJvCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkOndrTmF2aWdhdGlv
bl07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZp
Z2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVBy
b3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5pc2hOYXZp
Z2F0aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ5NSwxMSArNDg3LDggQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQ
YWdlUHJveHkmIHBhZ2UKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKIH0K
IAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1l
KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC01MTYsMTEgKzUwNSw4IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBh
Z2VQcm94CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3a05hdmlnYXRpb24gd2l0aEVycm9yOmVycm9y
V2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJQ
YWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBB
UEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiB3ZWJG
cmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFNhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJG
cmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0
aW9uRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC01MzYs
NyArNTIyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJQYWcKICAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246d2tOYXZpZ2F0
aW9uIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb246dG9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlKG5hdmlnYXRpb25UeXBlKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRMYXlvdXQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWls
ZXN0b25lcywgQVBJOjpPYmplY3QqKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5n
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ4LDcgKzUzNCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRMYXlvdXQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJDb3JlCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTpyZW5kZXJpbmdQcm9ncmVzc0V2ZW50
cyhsYXlvdXRNaWxlc3RvbmVzKV07CiB9CiAKLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2Vi
UHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpCitib29sIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2Vi
UHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgaWYgKG1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtNTYzLDcgKzU0OSw3IEBAIGJvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GCiAgICAgcmV0dXJu
IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UtPnByb3Rl
Y3Rpb25TcGFjZSgpLm5zU3BhY2UoKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogI2lmICFkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAg
IGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7CkBA
IC02NzgsOSArNjY0LDYgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKIAogdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJiBuYXZpZ2F0aW9uRGF0YVN0b3JlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1l
UHJveHkpCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC02OTMsOSArNjc2LDYgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2UKIAogdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkws
IGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiB3ZWJGcmFtZVByb3h5KQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1faGlzdG9y
eURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTFRv
VVJMKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwOCw5ICs2ODgsNiBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktp
dDo6V2ViUGFnZQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVBy
b3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3RGcm9tVVJMVG9VUkwpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzIzLDkgKzcwMCw2
IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRQZXJmb3JtU2Vy
dmVyUmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlCiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSkKIHsKLSAgICBpZiAoIXdlYkZyYW1lUHJv
eHkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX25hdmlnYXRp
b25TdGF0ZS5tX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFVwZGF0ZUhpc3RvcnlU
aXRsZUZvclVSTCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0MGJjZjAuLjFkYzY3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjc4LDkgKzI2NzgsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmEKICAgICBmcmFtZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQodXJs
KTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OwotICAgIGVsc2UKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChm
cmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
U3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQo
KSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CisgICAgfSBlbHNlCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogfQogCkBAIC0yNzAzLDkgKzI3MDQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGYK
ICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVy
bCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2
aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZQorICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBl
bHNlCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBt
X3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKIH0KIApAQCAtMjcyNyw5ICsyNzI5LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
CiAgICAgZnJhbWUtPmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAg
IGVsc2UKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdl
dCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6
IEdldCB0aGUgbWFpbiBmcmFtZSdzIGN1cnJlbnQgbmF2aWdhdGlvbi4KKyAgICAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJy
b3IoKnRoaXMsICpmcmFtZSwgbnVsbHB0ciwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICB9CisgICAg
fSBlbHNlCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogfQogCkBAIC0yODAzLDkgKzI4MTAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQK
ICAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSAxOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNv
bW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZENvbW1pdExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZp
Z2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNlCisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZENvbW1pdE5hdmlnYXRpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdh
dGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRDb21taXRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CiB9CiAKQEAgLTI4MTksOSArMjgyNywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQog
ICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5h
dmlnYXRpb24gPSAmbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwog
Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9u
LmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKLSAgICBlbHNlCisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewor
ICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPm5hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQoKnRoaXMsICpmcmFtZSwg
bmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCiAgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0
aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIH0KIApAQCAtMjg0NCw5ICsyODUzLDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklECiAgICAgZnJhbWUtPmRpZEZpbmlzaExvYWQoKTsKIAogICAgIG1fcGFnZUxv
YWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUoKnRoaXMsICpm
cmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZQorICAgIGlmIChtX25hdmln
YXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKGlzTWFpbkZyYW1lKQorICAgICAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZpZ2F0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIH0gZWxzZQogICAgICAgICBtX2xvYWRlckNsaWVudC0+
ZGlkRmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQpAQCAtMjg3Myw5ICsyODgzLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwKICAgICBmcmFtZS0+ZGlkRmFpbExvYWQoKTsKIAogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkK
LSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1l
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNl
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxOYXZpZ2F0
aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3By
b2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKKyAgICB9IGVsc2UKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OwogfQogCkBAIC0yOTAyLDkgKzI5MTMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdAogICAg
IG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAKICAgICBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0PFNhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlPihvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSk7Ci0gICAgaWYgKG1f
bmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwg
bmF2aWdhdGlvblR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KSB7CisgICAgICAgIGlmIChpc01haW5GcmFtZSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0
aW9uLmdldCgpLCBuYXZpZ2F0aW9uVHlwZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCiAgICAgICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKnRoaXMsICpm
cmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYg
KGlzTWFpbkZyYW1lKQpAQCAtMjk1OCw3ICsyOTcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnMKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRMYXlvdXQodWludDMyX3QgbGF5b3V0TWlsZXN0b25l
cywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkTGF5b3V0KCp0aGlzLCBzdGF0aWNf
Y2FzdDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRoaXMsIHN0
YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRMYXlvdXQoKnRoaXMsIHN0YXRpY19j
YXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KQEAgLTMx
NTUsOSArMzE2NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgcwogICAgIE1FU1NBR0VfQ0hF
Q0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKIAot
ICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlLCAqZnJhbWUpOwotICAg
IGVsc2UKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlLCAqZnJhbWUpOworICAgIH0gZWxzZQog
ICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRo
aXMsIHN0b3JlLCAqZnJhbWUpOwogICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmhpc3RvcnlD
bGllbnQoKS5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShwcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKSwgKnRoaXMsIHN0b3JlLCAqZnJhbWUpOwogfQpAQCAtMzE3NCw5ICszMTg3LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3Ry
aW5nKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAKLSAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdCgqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlv
blVSTFN0cmluZywgKmZyYW1lKTsKLSAgICBlbHNlCisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCgqdGhpcywgc291cmNlVVJM
U3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKKyAgICB9IGVsc2UKICAgICAg
ICAgbV9sb2FkZXJDbGllbnQtPmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCgqdGhpcywgc291cmNl
VVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKICAgICBwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlv
blVSTFN0cmluZywgKmZyYW1lKTsKIH0KQEAgLTMxOTMsOSArMzIwNywxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJM
U3RyaW5nLCBjb25zdAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHNvdXJjZVVSTFN0cmluZyk7CiAg
ICAgTUVTU0FHRV9DSEVDS19VUkwoZGVzdGluYXRpb25VUkxTdHJpbmcpOwogCi0gICAgaWYgKG1f
bmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJp
bmcsICpmcmFtZSk7Ci0gICAgZWxzZQorICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAg
ICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywg
ZGVzdGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7CisgICAgfSBlbHNlCiAgICAgICAgIG1fbG9h
ZGVyQ2xpZW50LT5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmlu
ZywgZGVzdGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7CiAgICAgcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkuaGlzdG9yeUNsaWVudCgpLmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKSwgKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJp
bmcsICpmcmFtZSk7CiB9CkBAIC0zMjA4LDkgKzMyMjMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IHVybCwKIAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0
aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFVwZGF0ZUhpc3RvcnlU
aXRsZSgqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsKLSAgICBlbHNlCisgICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSgqdGhpcywg
dGl0bGUsIHVybCwgKmZyYW1lKTsKKyAgICB9IGVsc2UKICAgICAgICAgbV9sb2FkZXJDbGllbnQt
PmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSgqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsKICAgICBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkVXBkYXRlSGlzdG9yeVRp
dGxlKHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsK
IH0KQEAgLTQ4NTgsNyArNDg3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh1aW50NjRfdCBmcmFtZUlECiAgICAgUmVm
UHRyPFdlYlByb3RlY3Rpb25TcGFjZT4gcHJvdGVjdGlvblNwYWNlID0gV2ViUHJvdGVjdGlvblNw
YWNlOjpjcmVhdGUoY29yZVByb3RlY3Rpb25TcGFjZSk7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9u
Q2xpZW50KQotICAgICAgICBjYW5BdXRoZW50aWNhdGUgPSBtX25hdmlnYXRpb25DbGllbnQtPmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUs
IHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7CisgICAgICAgIGNhbkF1dGhlbnRpY2F0ZSA9IG1fbmF2
aWdhdGlvbkNsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgqdGhp
cywgKmZyYW1lLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgY2Fu
QXV0aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7
CiB9CkBAIC00ODc3LDcgKzQ4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkodWludDY0X3QgZnJhbWVJRCwgUGFzcwogCiAgICAg
UmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gcHJwQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmdldCgpKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0
KCkpOwogICAgIGVsc2UKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuZ2V0KCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245654</attachid>
            <date>2015-01-29 14:52:42 -0800</date>
            <delta_ts>2015-01-30 16:50:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140698-20150129145248.patch</filename>
            <type>text/plain</type>
            <size>63932</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjMyOGU0NTU5NjcxNjAz
ZmQxMmNlMTZmYTgzNjRmYmIxZDk0Y2Q1Ny4uM2RjZjIzZmI1NjllODJjZGYxMzNhOThmZjZjY2M5
OWIxMjMwN2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTAxLTIwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbmQgaG9v
ayB1cCBBUElOYXZpZ2F0aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDA2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBzaW5nbGUgQVBJTmF2aWdhdGlvbkNsaWVudCB0aGF0IE5h
dmlnYXRpb25TdGF0ZSBpbXBsZW1lbnRzIGFuZAorICAgICAgICBXZWJQYWdlUHJveHkgcHJlZmVy
cyBvdmVyIEFQSUxvYWRlckNsaWVudCBhbmQgQVBJUG9saWN5Q2xpZW50LgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgRml4IGEgY29tbWVudC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgQVBJTmF2aWdhdGlvbkNsaWVudCBpcyB0aGUgdW5pb24gb2YgTmF2aWdhdGlvblN0
YXRlJ3Mgb3ZlcnJpZGVzIG9mIEFQSUxvYWRlckNsaWVudCBhbmQgQVBJUG9saWN5Q2xpZW50Lgor
ICAgICAgICBOYW1lcyBhcmUgYWRqdXN0ZWQgdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBNb2Rl
cm4gQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIElu
c3RlYWQgb2YgaGF2aW5nIHBvbGljeSBhbmQgbG9hZGVyIGNsaWVudHMsIE5hdmlnYXRpb25TdGF0
ZSBoYXMgYSBzaW5nbGUgbmF2aWdhdGlvbiBjbGllbnQuCisgICAgICAgIEFkanVzdCBhcyBuZWNl
c3NhcnkuCisKKyAgICAgICAgTW92ZSBhcyBtdWNoIGxvZ2ljIGFzIHBvc3NpYmxlIChpc01haW5G
cmFtZSBjaGVja3MsIGNvbnN0cnVjdGlvbiBvZiBBUEkgb2JqZWN0cykgb3V0IG9mIGhlcmUKKyAg
ICAgICAgYW5kIGludG8gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgIEluc3RhbGwgdGhlIGFmb3JlbWVudGlvbmVkIHNpbmds
ZSBuYXZpZ2F0aW9uIGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQp
OgorICAgICAgICBBZGQgYSBuYXZpZ2F0aW9uIGNsaWVudCBzZXR0ZXIuCisKKyAgICAgICAgRm9y
IGFsbCBwb2xpY3kgYW5kIGxvYWRlciBjbGllbnQgY2FsbHMsIGlmIHdlIGhhdmUgYSBuYXZpZ2F0
aW9uIGNsaWVudCwgdXNlIHRoYXQ7CisgICAgICAgIG90aGVyd2lzZSwgZmFsbCBiYWNrIG9uIHRo
ZSBwb2xpY3kgYW5kIGxvYWRlciBjbGllbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxNS0wMS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFuIHVwIC8gbW9kZXJuaXplIFBhZ2VDYWNoZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggYmQwNzQ0NTMwYzJjYjFlYjhi
MGZlZThiZTlkNzcyMGI0OGYwZGY1Mi4uMzg1OGQ1NWFlNzg0YWIxMDUxMGFjYTg1ODdjYjAzNTAz
Y2EyYmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNs
aWVudC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlUHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoUHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIAotICAgIC8vIEZJ
WE1FOiBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoaXMgY2xp
ZW50LgorICAgIC8vIEZJWE1FOiBUaGVzZSBmb3VyIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIHBh
cnQgb2YgdGhpcyBjbGllbnQuCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW50
ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDM4ZWIyNGMzMDdlNWY0
NzhhMWI2ZWQ4ZmMzMmYxM2Y1N2NiODM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSwxMTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSU5hdmlnYXRpb25DbGllbnRfaAorI2RlZmlu
ZSBBUElOYXZpZ2F0aW9uQ2xpZW50X2gKKworI2luY2x1ZGUgIkFQSURhdGEuaCIKKyNpbmNsdWRl
ICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lcy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBRdWlj
a0xvb2tEb2N1bWVudERhdGE7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3Mg
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OworY2xhc3MgV2ViRnJhbWVQcm94eTsKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKK3N0cnVjdCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YTsKK3N0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOworfQorCituYW1l
c3BhY2UgQVBJIHsKKworY2xhc3MgRGljdGlvbmFyeTsKK2NsYXNzIE5hdmlnYXRpb247CitjbGFz
cyBOYXZpZ2F0aW9uQWN0aW9uOworY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlOworY2xhc3MgT2Jq
ZWN0OworCitjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5O
YXZpZ2F0aW9uQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24q
LCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uV2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdE5hdmlnYXRp
b24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5h
dmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9u
RGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBXZWJLaXQ6OlNhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
LCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSB7IH0KKworICAgIC8vIEZJ
WE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGlzIGNsaWVudC4KKyAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9
CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktp
dDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdmlydHVhbCB2b2lk
IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29u
c3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JikgeyB9CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1
aWNrTG9va0RvY3VtZW50RGF0YSYpIHsgfQorI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJLaXQ6Oldl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQorICAg
IHsKKyAgICAgICAgbGlzdGVuZXItPnVzZSgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYsIFJlZjxXZWJL
aXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3Qq
KQorICAgIHsKKyAgICAgICAgbGlzdGVuZXItPnVzZSgpOworICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJTmF2aWdhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDZiMjMzYmNk
NGM2OWM2MmY1ZGYyOTdlNjA5NDhkNjdlMGE3ODNmNWYuLmJhMTIyNTIwMDg5YjE3YzE5OTI0ZWIy
M2UxYzIzNTQ5ZmEwODRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zNTcsOCArMzU3LDcgQEAgc3RhdGljIGludDMyX3QgZGV2
aWNlT3JpZW50YXRpb24oKQogICAgICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk7CiAKICAgICBfbmF2aWdhdGlvblN0
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7Ci0g
ICAgX3BhZ2UtPnNldFBvbGljeUNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVQb2xpY3lD
bGllbnQoKSk7Ci0gICAgX3BhZ2UtPnNldExvYWRlckNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5j
cmVhdGVMb2FkZXJDbGllbnQoKSk7CisgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25h
dmlnYXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKIAogICAgIF91aURlbGVn
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwogICAgIF9w
YWdlLT5zZXRVSUNsaWVudChfdWlEZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYTY4
Y2U1NjVhMTBkY2ZkNjg5NTg1YjcwYjFkMTA3ZmZjY2FkYmM5Yi4uNTkxYjAyN2I4NjNiZWQwOGNi
MWE5NGFlODc3ZjEzMDU1OTRmMjUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMzAsMTMgKzMwLDEyIEBACiAKICNpZiBXS19B
UElfRU5BQkxFRAogCi0jaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgotI2ltcG9ydCAiQVBJTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJBUElQb2xpY3lD
bGllbnQuaCIKKyNpbXBvcnQgIkFQSU5hdmlnYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIlBhZ2VM
b2FkU3RhdGUuaCIKICNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbXBvcnQgIldlYWtP
YmpDUHRyLmgiCisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCiBAY2xhc3MgV0tXZWJWaWV3OwogQHByb3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZTsKQEAgLTU3LDggKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE5hdmlnYXRpb25T
dGF0ZSYgZnJvbVdlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpQb2xpY3lDbGllbnQ+IGNyZWF0ZVBvbGljeUNsaWVudCgpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxvYWRlckNsaWVudD4gY3JlYXRlTG9hZGVyQ2xpZW50KCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gY3JlYXRlTmF2aWdhdGlvbkNsaWVudCgp
OwogCiAgICAgUmV0YWluUHRyPGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gPiBuYXZpZ2F0aW9u
RGVsZWdhdGUoKTsKICAgICB2b2lkIHNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+KTsKQEAgLTczLDQ5ICs3MSw0MSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxs
UmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKIAogcHJp
dmF0ZToKLSAgICBjbGFzcyBQb2xpY3lDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpQb2xpY3lD
bGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgUG9saWN5Q2xpZW50KE5hdmln
YXRpb25TdGF0ZSYpOwotICAgICAgICB+UG9saWN5Q2xpZW50KCk7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICAvLyBBUEk6OlBvbGljeUNsaWVudAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBk
ZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYkZyYW1lUHJv
eHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBi
b29sIGNhblNob3dNSU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKLQotICAgICAgICBOYXZpZ2F0aW9uU3Rh
dGUmIG1fbmF2aWdhdGlvblN0YXRlOwotICAgIH07Ci0KLSAgICBjbGFzcyBMb2FkZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpMb2FkZXJDbGllbnQgeworICAgIGNsYXNzIE5hdmlnYXRpb25D
bGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChOYXZpZ2F0aW9uU3RhdGUmKTsKLSAgICAg
ICAgfkxvYWRlckNsaWVudCgpOworICAgICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uQ2xpZW50KE5h
dmlnYXRpb25TdGF0ZSYpOworICAgICAgICB+TmF2aWdhdGlvbkNsaWVudCgpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFt
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVj
dCopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2Vi
UGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkTGF5b3V0KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5G
cmFtZShXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0
Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
SW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkRpZEZpbmlzaERvY3Vt
ZW50TG9hZChXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmln
YXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZp
Z2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmpl
Y3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJQYWdlUHJveHkm
LCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworCisg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2ViUHJvdGVj
dGlvblNwYWNlKikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3Rlcktl
eShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYsIFdlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSYpIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYlBhZ2VQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5Jikg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZy
YW1lUHJveHkmKSBvdmVycmlkZTsKKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRl
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViS2l0OjpRdWlja0xvb2tEb2N1bWVudERhdGEmKSBvdmVycmlk
ZTsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2Vi
RnJhbWVQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5Jikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJQYWdlUHJveHkmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSYpIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBkZXN0aW5hdGlvbkZyYW1lLCBBUEk6Ok5h
dmlnYXRpb25BY3Rpb24mLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkm
LCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk+JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKICAgICAgICAgTmF2aWdh
dGlvblN0YXRlJiBtX25hdmlnYXRpb25TdGF0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNmE3YTE0NDkxNjZh
Y2Q5YzRjNTU5ZTdjYjUxODE3NTNiNGQ2ZDIwZi4uMTAzOGJiMTUzMDJiZGQ0ZDg4NTEwYzIxNmFk
ZTgxMDI1ZjNlNzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMDQsMTQgKzEwNCw5IEBAIE5hdmlnYXRpb25TdGF0ZSYg
TmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkK
ICAgICByZXR1cm4gKm5hdmlnYXRpb25TdGF0ZXMoKS5nZXQoJndlYlBhZ2VQcm94eSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRlckNsaWVudD4gTmF2aWdhdGlvblN0YXRlOjpjcmVh
dGVMb2FkZXJDbGllbnQoKQorc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4g
TmF2aWdhdGlvblN0YXRlOjpjcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJDbGllbnQ+KCp0aGlzKTsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPEFQSTo6UG9saWN5Q2xpZW50PiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZVBvbGljeUNsaWVu
dCgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2xpZW50PigqdGhpcyk7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkNsaWVudD4oKnRoaXMpOwog
fQogCiBSZXRhaW5QdHI8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiA+IE5hdmlnYXRpb25TdGF0
ZTo6bmF2aWdhdGlvbkRlbGVnYXRlKCkKQEAgLTIxNSwxOSArMjEwLDE5IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjp3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mIGl0ZW0pCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUpIF93ZWJWaWV3Om1fd2ViVmlldyB3aWxsU25hcHNo
b3RCYWNrRm9yd2FyZExpc3RJdGVtOndyYXBwZXIoaXRlbSldOwogfQogCi1OYXZpZ2F0aW9uU3Rh
dGU6OlBvbGljeUNsaWVudDo6UG9saWN5Q2xpZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdhdGlv
blN0YXRlKQorTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpOYXZpZ2F0aW9uQ2xp
ZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdhdGlvblN0YXRlKQogICAgIDogbV9uYXZpZ2F0aW9u
U3RhdGUobmF2aWdhdGlvblN0YXRlKQogewogfQogCi1OYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNs
aWVudDo6flBvbGljeUNsaWVudCgpCitOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
On5OYXZpZ2F0aW9uQ2xpZW50KCkKIHsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGlj
eUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5KiBkZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBkZXN0aW5hdGlvbkZyYW1lLCBBUEk6Ok5hdmln
YXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1f
bmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcikgewotICAgICAgICBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5TKHdyYXBwZXIoKkFQSTo6
VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QpLmxlYWtSZWYoKSkpOworICAgICAgICBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5TKHdyYXBwZXIoKkFQSTo6VVJM
UmVxdWVzdDo6Y3JlYXRlKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdCgpKS5sZWFrUmVmKCkpKTsK
IAogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRnJhbWUpIHsKICAgICAgICAgICAgIGxpc3RlbmVy
LT51c2UoKTsKQEAgLTI1MywxOSArMjQ4LDYgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGlj
eUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkKICAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PEFQSTo6RnJhbWVJbmZvPiBkZXN0aW5hdGlvbkZyYW1lSW5mbzsKLSAgICBSZWZQdHI8QVBJOjpG
cmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKLQotICAgIGlmIChkZXN0aW5hdGlvbkZyYW1lKQot
ICAgICAgICBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmRl
c3RpbmF0aW9uRnJhbWUpOwotCi0gICAgaWYgKHNvdXJjZUZyYW1lID09IGRlc3RpbmF0aW9uRnJh
bWUpCi0gICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvOwotICAg
IGVsc2UgaWYgKHNvdXJjZUZyYW1lKQotICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKCpzb3VyY2VGcmFtZSk7Ci0KLSAgICBhdXRvIG5hdmlnYXRpb25BY3Rp
b24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5nZXQoKSwgcmVxdWVz
dCwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpKTsKLQogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEY6Om1vdmUobGlzdGVuZXIpOwogICAgIFJl
ZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRs
ZXI6KSk7CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdh
dGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2VyXShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kgYWN0aW9uUG9saWN5KSB7CkBAIC0yOTEsMjcgKzI3MywyMiBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eQogICAgIH1dOwogfQogCi12b2lkIE5hdmlnYXRpb25T
dGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkZyYW1lUHJveHkmIHNvdXJjZUZyYW1lLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwg
UmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQotewotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViUGFn
ZVByb3h5LCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgJnNvdXJjZUZyYW1lLCByZXF1
ZXN0LCByZXF1ZXN0LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VyRGF0YSk7Ci19Ci0KLXZvaWQg
TmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFJlZjxXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6
TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAg
ICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlRGVjaXNpb25IYW5kbGVyKSB7Ci0g
ICAgICAgIE5TVVJMICp1cmwgPSByZXNvdXJjZVJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKS5VUkw7
CisgICAgICAgIE5TVVJMICp1cmwgPSBuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9uc2UoKS5uc1VS
TFJlc3BvbnNlKCkuVVJMOwogICAgICAgICBpZiAoW3VybCBpc0ZpbGVVUkxdKSB7CiAgICAgICAg
ICAgICBCT09MIGlzRGlyZWN0b3J5ID0gTk87CiAgICAgICAgICAgICBCT09MIGV4aXN0cyA9IFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDp1cmwucGF0aCBp
c0RpcmVjdG9yeTomaXNEaXJlY3RvcnldOwogCi0gICAgICAgICAgICBpZiAoZXhpc3RzICYmICFp
c0RpcmVjdG9yeSAmJiBjYW5TaG93TUlNRVR5cGUpCisgICAgICAgICAgICBpZiAoZXhpc3RzICYm
ICFpc0RpcmVjdG9yeSAmJiBuYXZpZ2F0aW9uUmVzcG9uc2UuY2FuU2hvd01JTUVUeXBlKCkpCiAg
ICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChjYW5TaG93TUlNRVR5cGUpCisgICAgICAgIGlmIChuYXZpZ2F0
aW9uUmVzcG9uc2UuY2FuU2hvd01JTUVUeXBlKCkpCiAgICAgICAgICAgICBsaXN0ZW5lci0+dXNl
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKQEAgLTMy
Miw4ICsyOTksNiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmLCBXZWJGcgogICAgIGlmICghbmF2aWdhdGlv
bkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25z
ZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShmcmFtZSkuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcmVzb3VyY2VSZXNwb25zZSwgY2FuU2hv
d01JTUVUeXBlKTsKLQogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxv
Y2FsTGlzdGVuZXIgPSBXVEY6Om1vdmUobGlzdGVuZXIpOwogICAgIFJlZlB0cjxDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5hdmlnYXRpb25SZXNwb25z
ZSkgZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2VyXShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSByZXNwb25zZVBvbGljeSkgewpAQCAtMzQ5LDIwICszMjQsOCBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShX
ZWJQYWdlUHJveHkmLCBXZWJGcgogICAgIH1dOwogfQogCi1OYXZpZ2F0aW9uU3RhdGU6OkxvYWRl
ckNsaWVudDo6TG9hZGVyQ2xpZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdhdGlvblN0YXRlKQot
ICAgIDogbV9uYXZpZ2F0aW9uU3RhdGUobmF2aWdhdGlvblN0YXRlKQotewotfQotCi1OYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6fkxvYWRlckNsaWVudCgpCi17Ci19Ci0KLXZvaWQgTmF2
aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2ViRnJhbWVQcm94
eS5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtMzc4LDExICszNDEsOCBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYlBhZ2VQcm94eQogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246
d2tOYXZpZ2F0aW9uXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYg
d2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCop
CiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRp
b24pCiAgICAgICAgIHJldHVybjsKIApAQCAtNDEyLDIwICszNzIsOCBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKFdLV2ViVmlldyAq
d2ViVmlldywgVwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhE
b21haW46b3JpZ2luYWxFcnJvci5kb21haW4gY29kZTpvcmlnaW5hbEVycm9yLmNvZGUgdXNlcklu
Zm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNs
aWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmpl
Y3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3
ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGYWls
UHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcikKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwotICAgICAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5
QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7Ci0gICAgICAgIC8vIEZJWE1F
OiBHZXQgdGhlIG1haW4gZnJhbWUncyBjdXJyZW50IG5hdmlnYXRpb24uCi0gICAgICAgIFsoaWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJh
bWVQcm94eSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07Ci0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0
IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVs
bCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFJldGFp
blB0cjxXS05hdmlnYXRpb24+IHdrTmF2aWdhdGlvbjsKICAgICBpZiAobmF2aWdhdGlvbikKQEAg
LTQ0NCwxMSArMzkyLDI0IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQCiAgICAgW25hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbi5nZXQoKSB3aXRoRXJyb3I6ZXJyb3JXaXRo
UmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQ
STo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2Us
IFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsK
LSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3Mg
Y3VycmVudGx5IG51bGwgYmVjYXVzZSBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBwYXNzZXMgbnVsbC4KKyAgICBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiB3a05h
dmlnYXRpb247CisgICAgaWYgKG5hdmlnYXRpb24pCisgICAgICAgIHdrTmF2aWdhdGlvbiA9IHdy
YXBwZXIoKm5hdmlnYXRpb24pOworCisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGYWlsUHJvdmlzaW9uYWxM
b2FkSW5TdWJmcmFtZVdpdGhFcnJvcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBuYXZp
Z2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFt
ZVByb3h5LCBlcnJvcik7CisKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcg
bmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHkpKSB3aXRoRXJyb3I6ZXJyb3JXaXRo
UmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwg
QVBJOjpPYmplY3QqKQorewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uKQogICAgICAgICByZXR1
cm47CiAKQEAgLTQ2NCwxMSArNDI1LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNs
aWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2UKICAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZENvbW1pdE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViUGFnZVBy
b3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZy
YW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1l
bnRMb2FkKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ4NCwxMSArNDQyLDggQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUo
V2ViUGFnZVByb3h5JgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDp3a05hdmlnYXRp
b25dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVBy
b3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0
aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5
LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0
aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTUwNCwxMSArNDU5LDggQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2UKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKIH0KIAot
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHks
IEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2
aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKIHsKLSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTUyNSwxMSArNDc3LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHAK
ICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbiB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVj
b3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVy
Q2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5Jiwg
V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3Qq
KQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBu
YXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS5p
c01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TmF2aWdhdGlvbkRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTQ1LDcgKzQ5NCw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZShXZWJQYWdlUHJvCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOndrTmF2aWdhdGlvbiBkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uOnRvV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZShuYXZpZ2F0
aW9uVHlwZSldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRM
YXlvdXQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxh
eW91dE1pbGVzdG9uZXMsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcywgQVBJOjpP
YmplY3QqKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTU3LDcgKzUwNiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGll
bnQ6OmRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxhCiAgICAgW3N0
YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyByZW5kZXJp
bmdQcm9ncmVzc0RpZENoYW5nZTpyZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyhsYXlvdXRNaWxlc3Rv
bmVzKV07CiB9CiAKLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqIHBy
b3RlY3Rpb25TcGFjZSkKK2Jvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqIHBy
b3RlY3Rpb25TcGFjZSkKIHsKICAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NzIsNyArNTIxLDcg
QEAgYm9vbCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKICAgICByZXR1cm4gW3N0YXRpY19jYXN0PGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZS0+cHJvdGVjdGlvblNwYWNlKCkubnNTcGFj
ZSgpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICNp
ZiAhZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSB8fCBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgewpAQCAtNjI5LDcgKzU3OCw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUluRnJhbWUoV2ViCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3Jh
cHBlcigqYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JiBw
YWdlKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NEaWRD
cmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZENy
YXNoKQogICAgICAgICByZXR1cm47CkBAIC02NDEsNyArNTkwLDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5
JiBwYWdlKQogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXddOwogfQogCi1QYXNzUmVmUHRyPEFQSTo6RGF0YT4g
TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OndlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpCitQYXNzUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkm
KQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNjU4LDcgKzYwNyw3IEBAIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6CiB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKIHsKICAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjcwLDcgKzYxOSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoCiAgICAgW3N0YXRpY19jYXN0
PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGld
OwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1aWNrTG9va0Rv
Y3VtZW50RGF0YSYgZGF0YSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJL
aXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSYgZGF0YSkKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTY4NSwx
MSArNjM0LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUKIAogLy8gSGlzdG9yeURlbGVnYXRl
UHJpdmF0ZSBzdXBwb3J0CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3Qg
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBuYXZpZ2F0aW9uRGF0YVN0b3JlLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUmIG5hdmln
YXRpb25EYXRhU3RvcmUsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSkKIHsK
LSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKQogICAgICAgICByZXR1cm47CiAKQEAg
LTcwMCwxMSArNjQ2LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlk
TmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViS2l0OjpXZWJQYWcKICAgICBbaGlzdG9yeURl
bGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YTp3cmFwcGVyKCpBUEk6Ok5hdmlnYXRpb25EYXRhOjpjcmVhdGUobmF2
aWdhdGlvbkRhdGFTdG9yZSkpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNs
aWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29u
c3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RG
OjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1l
UHJveHkpCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMVG9VUkwpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNzE1LDExICs2NTgsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJv
eAogICAgIFtoaXN0b3J5RGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdU
RlN0cmluZzpzb3VyY2VVUkxdIHRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGVz
dGluYXRpb25VUkxdXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RG
OjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkp
CiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RGcm9tVVJMVG9VUkwpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNzMwLDExICs2NzAsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVy
Q2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveAogICAg
IFtoaXN0b3J5RGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmlu
Zzpzb3VyY2VVUkxdIHRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGVzdGluYXRp
b25VUkxdXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkVXBk
YXRlSGlzdG9yeVRpdGxlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcm
IHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdl
YkZyYW1lUHJveHkpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
VXBkYXRlSGlzdG9yeVRpdGxlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
IHdlYkZyYW1lUHJveHkpCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRVcGRhdGVIaXN0b3J5VGl0bGVGb3JVUkwpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBjMDEwZmRlZjEyMTNkZDNhMTQ2NmMyZTFiNzYyMTg2NzVjNzUxODgzLi5jYmYzMjljNzQx
ZGE1MDEzMzAyZjY5ZmEzNWY2YzUwY2MxNzYzNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzEsMTAgKzMxLDE0IEBACiAjaW5jbHVkZSAiQVBJQ29u
dGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJRm9ybUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5oIgogI2luY2x1ZGUgIkFQ
SUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIK
ICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgi
CisjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkFjdGlvbi5oIgorI2luY2x1ZGUgIkFQSU5hdmlnYXRp
b25DbGllbnQuaCIKKyNpbmNsdWRlICJBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaCIKICNpbmNsdWRl
ICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC01MDUsNiArNTA5LDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyYgcHJlZmVyZW5jZXMpCiAgICAgcHJl
ZmVyZW5jZXNEaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRp
b25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbmF2aWdhdGlv
bkNsaWVudCkKK3sKKyAgICBtX25hdmlnYXRpb25DbGllbnQgPSBXVEY6Om1vdmUobmF2aWdhdGlv
bkNsaWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRMb2FkZXJDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBsb2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFs
b2FkZXJDbGllbnQpIHsKQEAgLTI2NTcsNyArMjY2NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYQogICAgIGZyYW1lLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwogCiAgICAgbV9w
YWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChmcmFt
ZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjY3
OSw3ICsyNjkyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiAgICAgZnJhbWUtPmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwpOwogCiAgICAgbV9wYWdl
TG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwg
bmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewor
ICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlv
bigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI3MDAsNyArMjcxNywxNSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdgogICAgIGZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9h
ZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRoaXMs
ICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmln
YXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZyYW1lJ3Mg
Y3VycmVudCBuYXZpZ2F0aW9uLgorICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBudWxs
cHRyLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV9sb2Fk
ZXJDbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhpcywg
KmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQpAQCAtMjc3Myw3ICsyNzk4LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9yID0g
MTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJD
bGllbnQtPmRpZENvbW1pdExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdl
dCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChm
cmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
Q29tbWl0TmF2aWdhdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZENvbW1pdExvYWRGb3JGcmFt
ZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjc4
Niw3ICsyODE1LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiAgICAgaWYgKGZyYW1lLT5p
c01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9ICZuYXZp
Z2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdh
dGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPm5hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQoKnRoaXMsICpmcmFtZSwgbmF2aWdh
dGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdl
dCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKQEAgLTI4MDgsNyArMjg0MSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RAogICAgIGZyYW1lLT5kaWRGaW5pc2hMb2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29t
bWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUo
KnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdh
dGlvbkNsaWVudCkgeworICAgICAgICBpZiAoaXNNYWluRnJhbWUpCisgICAgICAgICAgICBtX25h
dmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdh
dGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5k
aWRGaW5pc2hMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CiAKICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIG1fcGFnZUNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yTWFpbkZyYW1lKCk7CkBAIC0yODM0LDcgKzI4NzEsMTEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELAogICAgIGZyYW1lLT5kaWRGYWlsTG9hZCgpOwogCiAgICAgbV9wYWdlTG9hZFN0
YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxOYXZp
Z2F0aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBt
X3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qg
b3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yODYwLDcgKzI5MDEsMTEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAKICAgICBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0PFNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlPihvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBuYXZpZ2F0aW9uVHlwZSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoaXNNYWluRnJhbWUp
CisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OworICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG5hdmlnYXRp
b25UeXBlLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgbV9wYWdlQ2xp
ZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUobmF2aWdhdGlvblR5cGUp
OwpAQCAtMjkwMyw3ICsyOTQ4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRMYXlvdXQodWludDMyX3QgbGF5b3V0TWlsZXN0b25lcywgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRMYXlvdXQoKnRo
aXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCBtX3By
b2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRN
aWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkTGF5b3V0KCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3Rv
bmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtMjk5MCw3ICszMDM4LDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hCiAgICAgbV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSB0cnVlOwogICAg
IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkID0gZmFsc2U7CiAKLSAg
ICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywg
ZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJl
cXVlc3QsIHJlcXVlc3QsIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBkZXN0aW5h
dGlvbkZyYW1lSW5mbzsKKyAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFt
ZUluZm87CisKKyAgICAgICAgaWYgKGZyYW1lKQorICAgICAgICAgICAgZGVzdGluYXRpb25GcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSk7CisKKyAgICAgICAgaWYgKG9y
aWdpbmF0aW5nRnJhbWUgPT0gZnJhbWUpCisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBk
ZXN0aW5hdGlvbkZyYW1lSW5mbzsKKyAgICAgICAgZWxzZSBpZiAob3JpZ2luYXRpbmdGcmFtZSkK
KyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKm9y
aWdpbmF0aW5nRnJhbWUpOworCisgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6
TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzb3VyY2VGcmFt
ZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLmdldCgpLCByZXF1ZXN0LCBvcmlnaW5h
bFJlcXVlc3QudXJsKCkpOworCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24uZ2V0
KCksIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX3Bv
bGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgZnJhbWUs
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3Qs
IHJlcXVlc3QsIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgbV9pbkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBmYWxzZTsKIApAQCAtMzAxMCw3ICszMDc0LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgTmF2aWdhCiAKICAgICBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5PiBsaXN0ZW5lciA9IGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVu
ZXJJRCk7CiAKLSAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5h
bWUsIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpIHsKKyAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Cisg
ICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKmZyYW1lKTsKKworICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24g
PSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc291
cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpKTsKKwor
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oKnRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEY6Om1vdmUobGlzdGVu
ZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKworICAgIH0gZWxzZQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMwMjIsNyArMzA5NiwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUmVzb3VyY2VSZXNwbwogCiAgICAgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4g
bGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwog
Ci0gICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJh
bWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURjo6bW92ZShsaXN0ZW5l
ciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgYXV0byBu
YXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNo
b3dNSU1FVHlwZSk7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25SZXNwb25zZS5nZXQo
KSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcG9s
aWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25z
ZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFj
dGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCkBAIC0z
MDc0LDcgKzMxNTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKICAgICBNRVNTQUdFX0NI
RUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CiAK
LSAgICBtX2xvYWRlckNsaWVudC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMs
IHN0b3JlLCAqZnJhbWUpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSgqdGhpcywgc3RvcmUsICpmcmFtZSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YSgqdGhpcywgc3RvcmUsICpmcmFtZSk7CiAgICAgcHJvY2VzcygpLnByb2Nlc3NQb29s
KCkuaGlzdG9yeUNsaWVudCgpLmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKHByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgc3RvcmUsICpmcmFtZSk7CiB9CiAKQEAgLTMwOTAsNyAr
MzE3MiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJM
KHNvdXJjZVVSTFN0cmluZyk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwoZGVzdGluYXRpb25VUkxT
dHJpbmcpOwogCi0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCgq
dGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKKyAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJh
bWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJh
bWUpOworICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAq
ZnJhbWUpOwogICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmhpc3RvcnlDbGllbnQoKS5kaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0aGlzLCBzb3Vy
Y2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOwogfQogCkBAIC0zMTA2
LDcgKzMxOTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9u
VVJMU3RyaW5nKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRQZXJmb3JtU2VydmVyUmVkaXJl
Y3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFBlcmZvcm1TZXJ2
ZXJSZWRpcmVjdCgqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywg
KmZyYW1lKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFBlcmZvcm1T
ZXJ2ZXJSZWRpcmVjdCgqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmlu
ZywgKmZyYW1lKTsKICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCku
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywg
c291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKIH0KIApAQCAt
MzExOCw3ICszMjA4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsCiAKICAgICBNRVNTQUdF
X0NIRUNLX1VSTCh1cmwpOwogCi0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFVwZGF0ZUhpc3RvcnlU
aXRsZSgqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KSB7CisgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKCp0aGlzLCB0aXRsZSwgdXJs
LCAqZnJhbWUpOworICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkVXBkYXRl
SGlzdG9yeVRpdGxlKCp0aGlzLCB0aXRsZSwgdXJsLCAqZnJhbWUpOwogICAgIHByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLmhpc3RvcnlDbGllbnQoKS5kaWRVcGRhdGVIaXN0b3J5VGl0bGUocHJvY2Vz
cygpLnByb2Nlc3NQb29sKCksICp0aGlzLCB0aXRsZSwgdXJsLCAqZnJhbWUpOwogfQogCkBAIC00
NTEzLDcgKzQ2MDcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgpCiAK
ICAgICBuYXZpZ2F0aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRpb25zKCk7CiAKLSAgICBtX2xv
YWRlckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0aGlzKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9u
Q2xpZW50KQorICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRDcmFzaCgqdGhp
cyk7CisgICAgZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0
aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNv
biByZXNldFN0YXRlUmVhc29uKQpAQCAtNDc0MCw3ICs0ODM3LDEwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh1aW50NjRf
dCBmcmFtZUlECiAKICAgICBSZWZQdHI8V2ViUHJvdGVjdGlvblNwYWNlPiBwcm90ZWN0aW9uU3Bh
Y2UgPSBXZWJQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKIAot
ICAgIGNhbkF1dGhlbnRpY2F0ZSA9IG1fbG9hZGVyQ2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSgqdGhpcywgKmZyYW1lLCBwcm90ZWN0aW9uU3BhY2Uu
Z2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIGNhbkF1dGhlbnRp
Y2F0ZSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSgqdGhpcywgKmZyYW1lLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpOworICAgIGVsc2UK
KyAgICAgICAgY2FuQXV0aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQtPmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIHByb3RlY3Rpb25T
cGFjZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtNDc1Niw3ICs0
ODU2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSh1aW50NjRfdCBmcmFtZUlELCBQYXNzCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFt
ZSk7CiAKICAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBwcnBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSgqdGhpcywg
KmZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdh
dGlvbkNsaWVudCkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Z2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRf
dCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCkBAIC01MjM4LDcgKzUzNDEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Ondy
YXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGJvb2wmIHN1Y2NlZWRlZCwg
VmUKIHsKICAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogCi0gICAgaWYgKFJlZlB0cjxB
UEk6OkRhdGE+IGtleURhdGEgPSBtX2xvYWRlckNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0
aGlzKSkKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChSZWZQdHI8
QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJL
ZXkoKnRoaXMpKQorICAgICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5j
ZSgpLnZlY3RvcigpOworICAgIH0gZWxzZSBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9
IG1fbG9hZGVyQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRoaXMpKQogICAgICAgICBtYXN0
ZXJLZXkgPSBrZXlEYXRhLT5kYXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7CiAgICAgZWxzZSBpZiAo
IWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkobWFzdGVyS2V5KSkgewogICAgICAgICBzdWNj
ZWVkZWQgPSBmYWxzZTsKQEAgLTUyNTIsNyArNTM1OCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYg
c3VjYwogewogICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7CiAKLSAgICBpZiAoUmVmUHRy
PEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbG9hZGVyQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXko
KnRoaXMpKQorICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKFJlZlB0
cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01hc3Rl
cktleSgqdGhpcykpCisgICAgICAgICAgICBtYXN0ZXJLZXkgPSBrZXlEYXRhLT5kYXRhUmVmZXJl
bmNlKCkudmVjdG9yKCk7CisgICAgfSBlbHNlIGlmIChSZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRh
ID0gbV9sb2FkZXJDbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCiAgICAgICAgIG1h
c3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKICAgICBlbHNlIGlm
ICghZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleShtYXN0ZXJLZXkpKSB7CiAgICAgICAgIHN1
Y2NlZWRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDBmMzhlYjBlMjhkZDUyOWU0NDVlNmE3Y2Q4MjQxNTljNzhmN2UxYjIuLmYzNGVlZTdmNzdl
ODAyZGU5MzJiOTM4MGQ0ZDFmMTAxYjg0OWE1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBjbGFzcyBGaW5kQ2xpZW50OwogY2xh
c3MgRm9ybUNsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKIGNsYXNzIE5hdmlnYXRpb247Citj
bGFzcyBOYXZpZ2F0aW9uQ2xpZW50OwogY2xhc3MgUG9saWN5Q2xpZW50OwogY2xhc3MgVUlDbGll
bnQ7CiBjbGFzcyBVUkxSZXF1ZXN0OwpAQCAtMzE0LDYgKzMxNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50Pik7CiAgICAgdm9pZCBpbml0aWFsaXplRmluZE1hdGNoZXNDbGll
bnQoY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKik7CiAgICAgdm9pZCBzZXRGb3Jt
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+KTsKKyAgICB2b2lkIHNldE5h
dmlnYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4pOwog
ICAgIHZvaWQgc2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRlckNsaWVu
dD4pOwogICAgIHZvaWQgc2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGlj
eUNsaWVudD4pOwogCkBAIC0xMzcxLDYgKzEzNzMsNyBAQCBwcml2YXRlOgogICAgIFBhZ2VDbGll
bnQmIG1fcGFnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+
IG1fbG9hZGVyQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4g
bV9wb2xpY3lDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVu
dD4gbV9uYXZpZ2F0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGll
bnQ+IG1fZm9ybUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4gbV91
aUNsaWVudDsKICNpZiBQTEFURk9STShFRkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmQyN2E2MmFmMGRjMTNiZWFlOTRiNWVl
YjZiZDY4MGJiZWFhNTZiZS4uNWY0N2M1ODc3ODg1MmNjODM2OWU0OGE3ZGQ0YTY5ZjA0OGY5ZWE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNjQ0LDYgKzY0NCw3IEBACiAJCTJEQzZEOUMzMThDNDRBNjEwMDQzQkFENCAvKiBX
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi87IH07CiAJCTJEQzZEOUM0MThDNDRBNjEw
MDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzZEOUMyMThDNDRBNjEwMDQz
QkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLzsgfTsKIAkJMkRE
MTNCRDUxOEY3REFERDAwRTEzMEExIC8qIEZpbmRDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREMTNCRDMxOEY3REFERDAwRTEz
MEExIC8qIEZpbmRDb250cm9sbGVySU9TLm1tICovOyB9OworCQkyREQ5RUIyRDFBNkYwMTI1MDBC
QjEyNjcgLyogQVBJTmF2aWdhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkREOUVCMkMxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5hdmln
YXRpb25DbGllbnQuaCAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRERjczMTUxOEU5NTA2
MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERjczMTMxOEU5NTA2MDAw
NEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oICovOyB9OwpAQCAt
MjczOSw2ICsyNzQwLDcgQEAKIAkJMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmll
d0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREQxM0JEMzE4RjdEQUREMDBFMTMwQTEgLyogRmluZENvbnRyb2xsZXJJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBGaW5kQ29udHJv
bGxlcklPUy5tbTsgcGF0aCA9IGlvcy9GaW5kQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkREOUVCMkMxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRp
b25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJTmF2aWdhdGlv
bkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5
MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyog
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERGNzMxMzE4RTk1MDYwMDA0RjVBNjYgLyogUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjEzNyw2ICs2MTM5LDcgQEAKIAkJCQk3Q0QzQTQ4MDFBNUQw
MkZBMDA5NjIzQjggLyogQVBJTmF2aWdhdGlvbi5jcHAgKi8sCiAJCQkJN0NEM0E0ODExQTVEMDJG
QTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24uaCAqLywKIAkJCQkyREY5RUVFQTFBNzgzNkVFMDBC
NkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oICovLAorCQkJCTJERDlFQjJDMUE2RjAxMjUw
MEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJQkNGNjlGQTExMTc2RDAx
NDAwNDcxQTUyIC8qIEFQSU5hdmlnYXRpb25EYXRhLmNwcCAqLywKIAkJCQlCQ0Y2OUZBMDExNzZE
MDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuaCAqLywKIAkJCQkyREY5RUVFRDFBNzg2
RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi8sCkBAIC03NTkwLDYgKzc1
OTMsNyBAQAogCQkJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3OTU1NzExNjI4NzdEMjAw
RkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkREOUVCMkQxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5h
dmlnYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNEE5NTRBMTZFMDE2QTQwMDY4
REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxM0ExNjNEMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245760</attachid>
            <date>2015-01-30 16:50:43 -0800</date>
            <delta_ts>2015-01-30 17:07:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140698-20150130165051.patch</filename>
            <type>text/plain</type>
            <size>64764</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjMyOGU0NTU5NjcxNjAz
ZmQxMmNlMTZmYTgzNjRmYmIxZDk0Y2Q1Ny4uM2RjZjIzZmI1NjllODJjZGYxMzNhOThmZjZjY2M5
OWIxMjMwN2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTAxLTIwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbmQgaG9v
ayB1cCBBUElOYXZpZ2F0aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDA2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBzaW5nbGUgQVBJTmF2aWdhdGlvbkNsaWVudCB0aGF0IE5h
dmlnYXRpb25TdGF0ZSBpbXBsZW1lbnRzIGFuZAorICAgICAgICBXZWJQYWdlUHJveHkgcHJlZmVy
cyBvdmVyIEFQSUxvYWRlckNsaWVudCBhbmQgQVBJUG9saWN5Q2xpZW50LgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgRml4IGEgY29tbWVudC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgQVBJTmF2aWdhdGlvbkNsaWVudCBpcyB0aGUgdW5pb24gb2YgTmF2aWdhdGlvblN0
YXRlJ3Mgb3ZlcnJpZGVzIG9mIEFQSUxvYWRlckNsaWVudCBhbmQgQVBJUG9saWN5Q2xpZW50Lgor
ICAgICAgICBOYW1lcyBhcmUgYWRqdXN0ZWQgdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBNb2Rl
cm4gQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIElu
c3RlYWQgb2YgaGF2aW5nIHBvbGljeSBhbmQgbG9hZGVyIGNsaWVudHMsIE5hdmlnYXRpb25TdGF0
ZSBoYXMgYSBzaW5nbGUgbmF2aWdhdGlvbiBjbGllbnQuCisgICAgICAgIEFkanVzdCBhcyBuZWNl
c3NhcnkuCisKKyAgICAgICAgTW92ZSBhcyBtdWNoIGxvZ2ljIGFzIHBvc3NpYmxlIChpc01haW5G
cmFtZSBjaGVja3MsIGNvbnN0cnVjdGlvbiBvZiBBUEkgb2JqZWN0cykgb3V0IG9mIGhlcmUKKyAg
ICAgICAgYW5kIGludG8gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgIEluc3RhbGwgdGhlIGFmb3JlbWVudGlvbmVkIHNpbmds
ZSBuYXZpZ2F0aW9uIGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQp
OgorICAgICAgICBBZGQgYSBuYXZpZ2F0aW9uIGNsaWVudCBzZXR0ZXIuCisKKyAgICAgICAgRm9y
IGFsbCBwb2xpY3kgYW5kIGxvYWRlciBjbGllbnQgY2FsbHMsIGlmIHdlIGhhdmUgYSBuYXZpZ2F0
aW9uIGNsaWVudCwgdXNlIHRoYXQ7CisgICAgICAgIG90aGVyd2lzZSwgZmFsbCBiYWNrIG9uIHRo
ZSBwb2xpY3kgYW5kIGxvYWRlciBjbGllbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxNS0wMS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFuIHVwIC8gbW9kZXJuaXplIFBhZ2VDYWNoZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApp
bmRleCBjMGM2NWVkYzczZmIyZDk1MGJhZWJiMWI5MDUyNTllN2Y4NTZkNDhiLi5jYzQyYjg1MDky
ZjNkZWM2ZDM0NWI4NmI2ZDQ5YTE5Y2IxMTk5NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
MzgyLDYgKzM4Miw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViVmli
cmF0aW9uUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAK
IAorICAgIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVNlc3Npb25TdGF0ZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAppbmRleCBiZDA3NDQ1MzBjMmNi
MWViOGIwZmVlOGJlOWQ3NzIwYjQ4ZjBkZjUyLi4zODU4ZDU1YWU3ODRhYjEwNTEwYWNhODU4N2Ni
MDM1MDNjYTJiYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9h
ZGVyQ2xpZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VQcm9ncmVzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogCi0gICAg
Ly8gRklYTUU6IFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhp
cyBjbGllbnQuCisgICAgLy8gRklYTUU6IFRoZXNlIGZvdXIgZnVuY3Rpb25zIHNob3VsZCBub3Qg
YmUgcGFydCBvZiB0aGlzIGNsaWVudC4KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZEJlY29t
ZVVucmVzcG9uc2l2ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBpbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNwb25zaXZlKFdlYktpdDo6V2Vi
UGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25z
aXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGI3Y2JmZDBmMmRkMGQ2MGU2
YmYxYjY0ZTM1YmQ0MDVkZjk2M2YyZmYuLjY3MmU5MGIyODA3ZDNhYWRmYjM4NWZjNzBmYzZjNjU0
NmFlZTA3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEFQSU5hdmlnYXRpb25B
Y3Rpb25faAogI2RlZmluZSBBUElOYXZpZ2F0aW9uQWN0aW9uX2gKIAorI2luY2x1ZGUgIkFQSUZy
YW1lSW5mby5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25B
Y3Rpb25EYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjhmZTlkMTNjNGJhODY1YjA5ZWEwYzkwY2VmMTBkOWFiYjA2ZGE5NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElO
YXZpZ2F0aW9uQ2xpZW50X2gKKyNkZWZpbmUgQVBJTmF2aWdhdGlvbkNsaWVudF9oCisKKyNpbmNs
dWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgorI2luY2x1ZGUg
IlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNp
bmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5OworY2xhc3MgUXVpY2tMb29rRG9jdW1lbnREYXRhOworY2xhc3MgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTsKK2NsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKK2Ns
YXNzIFdlYkZyYW1lUHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBXZWJQcm90ZWN0
aW9uU3BhY2U7CitzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CitzdHJ1Y3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERpY3Rpb25hcnk7
CitjbGFzcyBOYXZpZ2F0aW9uOworY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKK2NsYXNzIE5hdmln
YXRpb25SZXNwb25zZTsKK2NsYXNzIE9iamVjdDsKKworY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNsaWVudCgpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlv
biosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTmF2aWdh
dGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LCBBUEk6Ok9iamVjdCopIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNz
RGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
cywgQVBJOjpPYmplY3QqKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJQ
cm90ZWN0aW9uU3BhY2UqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSB7IH0KKworICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGlzIGNsaWVudC4KKyAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2Vi
UGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
S2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0
b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6U3RyaW5nJikgeyB9CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6
OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSYpIHsgfQorI2VuZGlmCisKKyAgICB2aXJ0
dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQorICAgIHsKKyAgICAgICAg
bGlzdGVuZXItPnVzZSgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRp
b25SZXNwb25zZSYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqKQorICAgIHsKKyAgICAgICAgbGlzdGVuZXItPnVzZSgpOwor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJTmF2aWdhdGlv
bkNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uUmVzcG9uc2UuaAppbmRleCBmN2Y5NTdkNTE1NGI5MTlhNGNmNzA2YmU0OGE0YmFhM2Rl
NTU1Y2EwLi43NWM0NTZmNTM0ZmY3ODcwNGY0ODJmNGY1OTg1NmFkZWMxMzZhMDU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25SZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvblJlc3BvbnNl
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQVBJTmF2aWdhdGlvblJlc3BvbnNlX2gKICNk
ZWZpbmUgQVBJTmF2aWdhdGlvblJlc3BvbnNlX2gKIAorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5o
IgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDZiMjMzYmNk
NGM2OWM2MmY1ZGYyOTdlNjA5NDhkNjdlMGE3ODNmNWYuLmJhMTIyNTIwMDg5YjE3YzE5OTI0ZWIy
M2UxYzIzNTQ5ZmEwODRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zNTcsOCArMzU3LDcgQEAgc3RhdGljIGludDMyX3QgZGV2
aWNlT3JpZW50YXRpb24oKQogICAgICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk7CiAKICAgICBfbmF2aWdhdGlvblN0
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7Ci0g
ICAgX3BhZ2UtPnNldFBvbGljeUNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVQb2xpY3lD
bGllbnQoKSk7Ci0gICAgX3BhZ2UtPnNldExvYWRlckNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5j
cmVhdGVMb2FkZXJDbGllbnQoKSk7CisgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25h
dmlnYXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKIAogICAgIF91aURlbGVn
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwogICAgIF9w
YWdlLT5zZXRVSUNsaWVudChfdWlEZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYTY4
Y2U1NjVhMTBkY2ZkNjg5NTg1YjcwYjFkMTA3ZmZjY2FkYmM5Yi4uZjllZjM1ODM0MzAwZDRhZDJh
YmYyY2E5YTE2ZjljNTAwMThlZjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMzAsMTMgKzMwLDEyIEBACiAKICNpZiBXS19B
UElfRU5BQkxFRAogCi0jaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgotI2ltcG9ydCAiQVBJTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJBUElQb2xpY3lD
bGllbnQuaCIKKyNpbXBvcnQgIkFQSU5hdmlnYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIlBhZ2VM
b2FkU3RhdGUuaCIKICNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbXBvcnQgIldlYWtP
YmpDUHRyLmgiCisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCiBAY2xhc3MgV0tXZWJWaWV3OwogQHByb3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZTsKQEAgLTU3LDggKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIE5hdmlnYXRpb25T
dGF0ZSYgZnJvbVdlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpQb2xpY3lDbGllbnQ+IGNyZWF0ZVBvbGljeUNsaWVudCgpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxvYWRlckNsaWVudD4gY3JlYXRlTG9hZGVyQ2xpZW50KCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gY3JlYXRlTmF2aWdhdGlvbkNsaWVudCgp
OwogCiAgICAgUmV0YWluUHRyPGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gPiBuYXZpZ2F0aW9u
RGVsZWdhdGUoKTsKICAgICB2b2lkIHNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+KTsKQEAgLTczLDQ5ICs3MSw0MSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxs
UmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKIAogcHJp
dmF0ZToKLSAgICBjbGFzcyBQb2xpY3lDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpQb2xpY3lD
bGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgUG9saWN5Q2xpZW50KE5hdmln
YXRpb25TdGF0ZSYpOwotICAgICAgICB+UG9saWN5Q2xpZW50KCk7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICAvLyBBUEk6OlBvbGljeUNsaWVudAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBk
ZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYkZyYW1lUHJv
eHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBi
b29sIGNhblNob3dNSU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKLQotICAgICAgICBOYXZpZ2F0aW9uU3Rh
dGUmIG1fbmF2aWdhdGlvblN0YXRlOwotICAgIH07Ci0KLSAgICBjbGFzcyBMb2FkZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpMb2FkZXJDbGllbnQgeworICAgIGNsYXNzIE5hdmlnYXRpb25D
bGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChOYXZpZ2F0aW9uU3RhdGUmKTsKLSAgICAg
ICAgfkxvYWRlckNsaWVudCgpOworICAgICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uQ2xpZW50KE5h
dmlnYXRpb25TdGF0ZSYpOworICAgICAgICB+TmF2aWdhdGlvbkNsaWVudCgpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFt
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdl
YlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVj
dCopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2Vi
UGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkTGF5b3V0KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5G
cmFtZShXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1l
bnRMb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3Zl
cnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJQYWdlUHJveHkm
LCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworCisg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KFdlYlBhZ2VQcm94eSYsIFdlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94
eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBh
Z2VQcm94eSYpIG92ZXJyaWRlOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJikgb3Zl
cnJpZGU7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBRdWlja0xvb2tEb2N1bWVudERhdGEmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJQYWdlUHJveHkm
LCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViRnJhbWVQcm94eSYpIG92ZXJyaWRl
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVBy
b3h5Jikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVw
ZGF0ZUhpc3RvcnlUaXRsZShXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb25BY3Rpb24mLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdh
dGlvblJlc3BvbnNlJiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKIAogICAgICAgICBOYXZpZ2F0aW9uU3RhdGUmIG1f
bmF2aWdhdGlvblN0YXRlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA2YTdhMTQ0OTE2NmFjZDljNGM1NTllN2Ni
NTE4MTc1M2I0ZDZkMjBmLi5jMTY5YjZkMzgwYzc3YmM1Y2EwOTA1NTk1ZTE4YTlkYzYzMjRmM2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KQEAgLTEwNCwxNCArMTA0LDkgQEAgTmF2aWdhdGlvblN0YXRlJiBOYXZpZ2F0aW9uU3Rh
dGU6OmZyb21XZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgIHJldHVybiAq
bmF2aWdhdGlvblN0YXRlcygpLmdldCgmd2ViUGFnZVByb3h5KTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZUxvYWRlckNsaWVu
dCgpCitzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PiBOYXZpZ2F0aW9uU3Rh
dGU6OmNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExvYWRlckNsaWVudD4oKnRoaXMpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xp
Y3lDbGllbnQ+IE5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlUG9saWN5Q2xpZW50KCkKLXsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0aW9uQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0
cjxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+ID4gTmF2aWdhdGlvblN0YXRlOjpuYXZpZ2F0aW9u
RGVsZWdhdGUoKQpAQCAtMjE1LDIxICsyMTAsMjEgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ondp
bGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkK
ICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZSkgX3dlYlZpZXc6bV93ZWJWaWV3IHdpbGxTbmFwc2hvdEJhY2tGb3J3YXJk
TGlzdEl0ZW06d3JhcHBlcihpdGVtKV07CiB9CiAKLU5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xp
ZW50OjpQb2xpY3lDbGllbnQoTmF2aWdhdGlvblN0YXRlJiBuYXZpZ2F0aW9uU3RhdGUpCitOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Ok5hdmlnYXRpb25DbGllbnQoTmF2aWdhdGlv
blN0YXRlJiBuYXZpZ2F0aW9uU3RhdGUpCiAgICAgOiBtX25hdmlnYXRpb25TdGF0ZShuYXZpZ2F0
aW9uU3RhdGUpCiB7CiB9CiAKLU5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50Ojp+UG9saWN5
Q2xpZW50KCkKK05hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6fk5hdmlnYXRpb25D
bGllbnQoKQogewogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkq
IGRlc3RpbmF0aW9uRnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVu
ZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewog
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyKSB7Ci0g
ICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IGFkb3B0TlMod3Jh
cHBlcigqQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdCkubGVha1JlZigpKSk7CisgICAg
ICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IGFkb3B0TlMod3JhcHBl
cigqQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0KCkpLmxl
YWtSZWYoKSkpOwogCi0gICAgICAgIGlmICghZGVzdGluYXRpb25GcmFtZSkgeworICAgICAgICBp
ZiAoIW5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUoKSkgewogICAgICAgICAgICAgbGlzdGVu
ZXItPnVzZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNTMsMTkgKzI0
OCw2IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gZGVzdGlu
YXRpb25GcmFtZUluZm87Ci0gICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUlu
Zm87Ci0KLSAgICBpZiAoZGVzdGluYXRpb25GcmFtZSkKLSAgICAgICAgZGVzdGluYXRpb25GcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpkZXN0aW5hdGlvbkZyYW1lKTsKLQotICAg
IGlmIChzb3VyY2VGcmFtZSA9PSBkZXN0aW5hdGlvbkZyYW1lKQotICAgICAgICBzb3VyY2VGcmFt
ZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mbzsKLSAgICBlbHNlIGlmIChzb3VyY2VGcmFtZSkK
LSAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqc291cmNl
RnJhbWUpOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0
aW9uOjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwg
ZGVzdGluYXRpb25GcmFtZUluZm8uZ2V0KCksIHJlcXVlc3QsIG9yaWdpbmFsUmVxdWVzdC51cmwo
KSk7Ci0KICAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsb2NhbExpc3Rl
bmVyID0gV1RGOjptb3ZlKGxpc3RlbmVyKTsKICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOikpOwogICAgIFtuYXZpZ2F0aW9u
RGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIGRlY2lzaW9uSGFu
ZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0oV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFj
dGlvblBvbGljeSkgewpAQCAtMjkxLDI3ICsyNzMsMjIgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJv
eHkKICAgICB9XTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBX
ZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKLXsKLSAgICBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2VQcm94eSwgbnVsbHB0ciwgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsICZzb3VyY2VGcmFtZSwgcmVxdWVzdCwgcmVxdWVzdCwgV1RGOjptb3Zl
KGxpc3RlbmVyKSwgdXNlckRhdGEpOwotfQotCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNw
b25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxp
c3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlRGVjaXNpb25I
YW5kbGVyKSB7Ci0gICAgICAgIE5TVVJMICp1cmwgPSByZXNvdXJjZVJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKS5VUkw7CisgICAgICAgIE5TVVJMICp1cmwgPSBuYXZpZ2F0aW9uUmVzcG9uc2UucmVz
cG9uc2UoKS5uc1VSTFJlc3BvbnNlKCkuVVJMOwogICAgICAgICBpZiAoW3VybCBpc0ZpbGVVUkxd
KSB7CiAgICAgICAgICAgICBCT09MIGlzRGlyZWN0b3J5ID0gTk87CiAgICAgICAgICAgICBCT09M
IGV4aXN0cyA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDp1cmwucGF0aCBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldOwogCi0gICAgICAgICAgICBpZiAo
ZXhpc3RzICYmICFpc0RpcmVjdG9yeSAmJiBjYW5TaG93TUlNRVR5cGUpCisgICAgICAgICAgICBp
ZiAoZXhpc3RzICYmICFpc0RpcmVjdG9yeSAmJiBuYXZpZ2F0aW9uUmVzcG9uc2UuY2FuU2hvd01J
TUVUeXBlKCkpCiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjYW5TaG93TUlNRVR5cGUpCisgICAgICAg
IGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UuY2FuU2hvd01JTUVUeXBlKCkpCiAgICAgICAgICAgICBs
aXN0ZW5lci0+dXNlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25v
cmUoKTsKQEAgLTMyMiw4ICsyOTksNiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmLCBXZWJGcgogICAgIGlm
ICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG5hdmln
YXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShmcmFtZSkuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcmVzb3VyY2VSZXNw
b25zZSwgY2FuU2hvd01JTUVUeXBlKTsKLQogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEY6Om1vdmUobGlzdGVuZXIpOwogICAgIFJlZlB0
cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9y
KHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxl
cjopKTsKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5hdmln
YXRpb25SZXNwb25zZSkgZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2VyXShX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSByZXNwb25zZVBvbGljeSkgewpAQCAtMzQ5LDIwICsz
MjQsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShXZWJQYWdlUHJveHkmLCBXZWJGcgogICAgIH1dOwogfQogCi1OYXZpZ2F0aW9u
U3RhdGU6OkxvYWRlckNsaWVudDo6TG9hZGVyQ2xpZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdh
dGlvblN0YXRlKQotICAgIDogbV9uYXZpZ2F0aW9uU3RhdGUobmF2aWdhdGlvblN0YXRlKQotewot
fQotCi1OYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6fkxvYWRlckNsaWVudCgpCi17Ci19
Ci0KLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2
aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwg
QVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgpKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlv
bkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMzc4LDExICszNDEsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQ
cm94eQogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKIH0K
IAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdh
dGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
KQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTQxMiwyMCArMzcyLDkgQEAgc3RhdGljIFJldGFp
blB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihXS1dlYlZpZXcg
KndlYlZpZXcsIFcKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRo
RG9tYWluOm9yaWdpbmFsRXJyb3IuZG9tYWluIGNvZGU6b3JpZ2luYWxFcnJvci5jb2RlIHVzZXJJ
bmZvOnVzZXJJbmZvLmdldCgpXSk7CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2Jq
ZWN0KikKKy8vIEZJWE1FOiBTaG91bGRuJ3QgbmVlZCB0byBwYXNzIHRoZSBXZWJGcmFtZVByb3h5
IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVIYW5kbGUuCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihX
ZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Is
IEFQSTo6T2JqZWN0KikKIHsKLSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkg
ewotICAgICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7Ci0g
ICAgICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhS
ZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJv
eHksIGVycm9yKTsKLSAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFpbiBmcmFtZSdzIGN1cnJl
bnQgbmF2aWdhdGlvbi4KLSAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
PiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lOndyYXBwZXIo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5KSkgd2l0aEVycm9yOmVycm9yV2l0
aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxs
IGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91
Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gd2tOYXZpZ2F0
aW9uOwogICAgIGlmIChuYXZpZ2F0aW9uKQpAQCAtNDQ0LDExICszOTMsMjUgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdlYlAKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2tOYXZpZ2F0
aW9uLmdldCgpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9
CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQorLy8gRklYTUU6IFNob3Vs
ZG4ndCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJveHkgaW4gaGVyZS4gQXQgbW9zdCwgYSBG
cmFtZUhhbmRsZS4KK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2Us
IFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsK
LSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3Mg
Y3VycmVudGx5IG51bGwgYmVjYXVzZSBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBwYXNzZXMgbnVsbC4KKyAgICBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiB3a05h
dmlnYXRpb247CisgICAgaWYgKG5hdmlnYXRpb24pCisgICAgICAgIHdrTmF2aWdhdGlvbiA9IHdy
YXBwZXIoKm5hdmlnYXRpb24pOworCisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGYWlsUHJvdmlzaW9uYWxM
b2FkSW5TdWJmcmFtZVdpdGhFcnJvcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBuYXZp
Z2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFt
ZVByb3h5LCBlcnJvcik7CisKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcg
bmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHkpKSB3aXRoRXJyb3I6ZXJyb3JXaXRo
UmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQorewogICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDb21t
aXROYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ2NCwxMSArNDI3LDggQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2UKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246d2tOYXZpZ2F0aW9u
XTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJG
cmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExv
YWQoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6
T2JqZWN0KikKIHsKLSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNDg0LDExICs0NDQsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkm
CiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkOndrTmF2aWdhdGlvbl07CiB9CiAKLXZv
aWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKIHsKLSAgICBpZiAo
IXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYg
KCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEZpbmlzaE5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTA0LDExICs0NjEsOSBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZQogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjp3a05hdmln
YXRpb25dOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGYWls
TG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYg
d2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQorLy8gRklYTUU6
IFNob3VsZG4ndCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJveHkgaW4gaGVyZS4gQXQgbW9z
dCwgYSBGcmFtZUhhbmRsZS4KK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKQogICAgICAgICByZXR1cm47CiAKQEAg
LTUyNSwxMSArNDgwLDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHAKICAgICBbbmF2aWdhdGlv
bkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxOYXZp
Z2F0aW9uOndrTmF2aWdhdGlvbiB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIu
Z2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYg
d2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2Vi
RnJhbWVQcm94eS5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1f
bmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TmF2aWdh
dGlvbkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTQ1
LDcgKzQ5Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJQYWdlUHJvCiAgICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOndrTmF2aWdh
dGlvbiBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOnRvV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZShuYXZpZ2F0aW9uVHlwZSldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVy
Q2xpZW50OjpkaWRMYXlvdXQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0
b25lcywgQVBJOjpPYmplY3QqKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTU3LDcgKzUwOSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6
OkxhCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Pihu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
VmlldyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTpyZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyhs
YXlvdXRNaWxlc3RvbmVzKV07CiB9CiAKLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGll
bnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0
aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSkKK2Jvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFj
ZSkKIHsKICAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NzIsNyArNTI0LDcgQEAgYm9vbCBOYXZp
Z2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUKICAgICByZXR1cm4gW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlOnByb3RlY3Rpb25TcGFjZS0+cHJvdGVjdGlvblNwYWNlKCkubnNTcGFjZSgpXTsKIH0KIAot
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogI2lmICFkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5
MAogICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
KSB7CkBAIC02MjksNyArNTgxLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWIKICAgICBbc3Rh
dGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKCphdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlk
Q3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JiBw
YWdlKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAgIHJldHVybjsKQEAgLTY0
MSw3ICs1OTMsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNz
RGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
IF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOm1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107
CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikKK1Bhc3NSZWZQdHI8
QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01h
c3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2Vi
VmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02NTgsNyArNjEwLDcgQEAgUGFzc1Jl
ZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9N
YXN0ZXJLZXkoV2ViS2l0OjoKIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQotdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgdXRpKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjIyLDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZSgKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVX
aXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRl
OjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQordm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJiBk
YXRhKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjg1LDExICs2MzcsOCBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZQogCiAvLyBIaXN0b3J5RGVsZWdhdGVQcml2YXRlIHN1cHBvcnQKIAotdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3Rv
cmUmIG5hdmlnYXRpb25EYXRhU3RvcmUsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQ
cm94eSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYktpdDo6
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgbmF2aWdhdGlvbkRhdGFTdG9yZSkKIHsKLSAgICBpZiAo
IXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYg
KCFtX25hdmlnYXRpb25TdGF0ZS5tX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwMCwxMSAr
NjQ5LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGEoV2ViS2l0OjpXZWJQYWcKICAgICBbaGlzdG9yeURlbGVnYXRlIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YTp3cmFwcGVyKCpBUEk6Ok5hdmlnYXRpb25EYXRhOjpjcmVhdGUobmF2aWdhdGlvbkRh
dGFTdG9yZSkpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMKQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1faGlzdG9y
eURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTFRv
VVJMKQogICAgICAgICByZXR1cm47CiAKQEAgLTcxNSwxMSArNjYxLDggQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6
V2ViUGFnZVByb3gKICAgICBbaGlzdG9yeURlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMOltOU1VSTCBfd2Vi
X1VSTFdpdGhXVEZTdHJpbmc6c291cmNlVVJMXSB0b1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RG
U3RyaW5nOmRlc3RpbmF0aW9uVVJMXV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2Fk
ZXJDbGllbnQ6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5h
dGlvblVSTCwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5KQordm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKIHsKLSAgICBpZiAoIXdlYkZyYW1lUHJveHku
aXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdEZyb21VUkxUb1VSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC03MzAsMTEgKzY3Myw4IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94CiAgICAgW2hpc3RvcnlEZWxlZ2F0ZSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVS
TDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnNvdXJjZVVSTF0gdG9VUkw6W05TVVJMIF93
ZWJfVVJMV2l0aFdURlN0cmluZzpkZXN0aW5hdGlvblVSTF1dOwogfQogCi12b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1
cmwsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSkKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5n
JiB1cmwpCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWRVcGRhdGVIaXN0b3J5VGl0bGVGb3JVUkwpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjMDEw
ZmRlZjEyMTNkZDNhMTQ2NmMyZTFiNzYyMTg2NzVjNzUxODgzLi5kYmUzZWRlMzdkMmQzNTkwZjYz
ZDlkZGIwOGJmZGYxYzk3MmNlNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMzEsMTAgKzMxLDE0IEBACiAjaW5jbHVkZSAiQVBJQ29udGV4dE1lbnVD
bGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRm9ybUNs
aWVudC5oIgorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5oIgogI2luY2x1ZGUgIkFQSUdlb21ldHJ5
LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCisjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbkFjdGlvbi5oIgorI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25DbGllbnQu
aCIKKyNpbmNsdWRlICJBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaCIKICNpbmNsdWRlICJBUElQb2xp
Y3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQ
SVVJQ2xpZW50LmgiCkBAIC01MDUsNiArNTA5LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
cmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyYgcHJlZmVyZW5jZXMpCiAgICAgcHJlZmVyZW5jZXNE
aWRDaGFuZ2UoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRpb25DbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbmF2aWdhdGlvbkNsaWVudCkK
K3sKKyAgICBtX25hdmlnYXRpb25DbGllbnQgPSBXVEY6Om1vdmUobmF2aWdhdGlvbkNsaWVudCk7
Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6TG9hZGVyQ2xpZW50PiBsb2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJDbGll
bnQpIHsKQEAgLTI2NTcsNyArMjY2NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYQogICAg
IGZyYW1lLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwogCiAgICAgbV9wYWdlTG9hZFN0
YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIH0gZWxz
ZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI2NzksNyArMjY5MiwxMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZgogICAgIGZyYW1lLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRD
aGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCks
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKGZyYW1l
LT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRp
b24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRoaXMsICpm
cmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQpAQCAtMjcwMCw3ICsyNzE3LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
CiAgICAgZnJhbWUtPmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgp
LCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2
aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBHZXQgdGhlIG1haW4gZnJhbWUncyBjdXJyZW50IG5hdmlnYXRpb24uCisgICAg
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIG51bGxwdHIsIGVycm9yLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCks
IGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVu
dENhbGxiYWNrcygpCkBAIC0yNzczLDcgKzI3OTgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQKICAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSAxOwogCiAgICAgbV9wYWdlTG9hZFN0YXRl
LmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAg
ICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBu
YXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGll
bnQtPmRpZENvbW1pdExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQpAQCAtMjc4Niw3ICsyODE1LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAg
ICAgICAgbmF2aWdhdGlvbiA9ICZuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaERvY3VtZW50TG9hZCgqdGhpcywg
bmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0
aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI4MDgsNyArMjg0MSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRAogICAgIGZyYW1lLT5kaWRGaW5pc2hMb2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3Rh
dGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hMb2FkRm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1f
bmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoaXNNYWluRnJhbWUpCisgICAgICAgICAg
ICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRp
b24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
RmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlkRmluaXNo
TG9hZEZvck1haW5GcmFtZSgpOwpAQCAtMjgzNCw3ICsyODcxLDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwKICAgICBmcmFtZS0+ZGlkRmFpbExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0
ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQorICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsTmF2aWdh
dGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBtX3By
b2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9w
YXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjg2MCw3ICsyOTAxLDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwogCiAgICAgU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUp
OwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
KnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwor
ICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYgKGlzTWFpbkZyYW1lKQor
ICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
KCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBuYXZpZ2F0aW9uVHlwZSwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShuYXZpZ2F0aW9uVHlwZSk7CkBAIC0yOTAz
LDcgKzI5NDgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZExheW91dCh1aW50MzJfdCBsYXlvdXRNaWxlc3RvbmVzLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZExheW91dCgqdGhpcywgc3RhdGlj
X2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obGF5b3V0TWlsZXN0b25lcyksIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlm
IChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVy
aW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+
KGxheW91dE1pbGVzdG9uZXMpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRMYXlvdXQoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91
dE1pbGVzdG9uZXMpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUZy
YW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCkBAIC0yOTkwLDcgKzMwMzgsMjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAgICBt
X2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IHRydWU7CiAgICAgbV9zeW5jTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQgPSBmYWxzZTsKIAotICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBmcmFtZSwgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgcmVx
dWVzdCwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkgeworICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IGRlc3RpbmF0aW9uRnJhbWVJ
bmZvOworICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKKwor
ICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgICBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lKTsKKworICAgICAgICBpZiAob3JpZ2luYXRpbmdG
cmFtZSA9PSBmcmFtZSkKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9u
RnJhbWVJbmZvOworICAgICAgICBlbHNlIGlmIChvcmlnaW5hdGluZ0ZyYW1lKQorICAgICAgICAg
ICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqb3JpZ2luYXRpbmdG
cmFtZSk7CisKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJjZUZyYW1lSW5mby5nZXQo
KSwgZGVzdGluYXRpb25GcmFtZUluZm8uZ2V0KCksIHJlcXVlc3QsIG9yaWdpbmFsUmVxdWVzdC51
cmwoKSk7CisKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEY6Om1vdmUobGlz
dGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCByZXF1ZXN0LCBXVEY6Om1v
dmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uID0gZmFsc2U7CiAKQEAgLTMwMTAsNyArMzA3NCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IE5hdmlnYQogCiAgICAgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIg
PSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwogCi0gICAgbV9w
b2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigqdGhpcywgKmZyYW1l
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEY6Om1vdmUobGlz
dGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CisgICAgICAgIFJl
ZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAgICAgICBpZiAoZnJhbWUp
CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpm
cmFtZSk7CisKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJjZUZyYW1lSW5mby5nZXQo
KSwgbnVsbHB0ciwgcmVxdWVzdCwgcmVxdWVzdC51cmwoKSk7CisKKyAgICAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0
aW9uQWN0aW9uLmdldCgpLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworICAgIH0gZWxz
ZQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUs
IFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTMwMjIsNyArMzA5NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXNwbwogCiAgICAg
UmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwogCi0gICAgbV9wb2xpY3lDbGllbnQtPmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBj
YW5TaG93TUlNRVR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6
Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1l
KS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSk7CisgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlz
LCBuYXZpZ2F0aW9uUmVzcG9uc2UuZ2V0KCksIFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RG
Ojptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVp
bnQ2NF90JiBkb3dubG9hZElEKQpAQCAtMzA3NCw3ICszMTUyLDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlJiBzCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZS0+cGFnZSgpID09IHRoaXMpOwogCi0gICAgbV9sb2FkZXJDbGllbnQtPmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhKCp0aGlzLCBzdG9yZSwgKmZyYW1lKTsKKyAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
KnRoaXMsIHN0b3JlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKCp0aGlzLCBzdG9yZSwgKmZyYW1lKTsKICAgICBwcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0aGlzLCBzdG9yZSwgKmZyYW1lKTsK
IH0KIApAQCAtMzA5MCw3ICszMTcyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAgICAg
TUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3RyaW5nKTsKICAgICBNRVNTQUdFX0NIRUNLX1VS
TChkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCAqZnJhbWUpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRp
b25VUkxTdHJpbmcpOworICAgIH0gZWxzZQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCAqZnJhbWUpOwogICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmhpc3RvcnlDbGll
bnQoKS5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0
aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOwogfQog
CkBAIC0zMTA2LDcgKzMxOTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2
ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKICAgICBNRVNT
QUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRl
c3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRQZXJmb3JtU2Vy
dmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcs
ICpmcmFtZSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgeworICAgICAgICBpZiAoZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdCgqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVS
TFN0cmluZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJp
bmcsICpmcmFtZSk7CiAgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuaGlzdG9yeUNsaWVudCgp
LmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSwgKnRoaXMs
IHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7CiB9CiAKQEAg
LTMxMTgsNyArMzIwOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLAogCiAgICAgTUVTU0FH
RV9DSEVDS19VUkwodXJsKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRVcGRhdGVIaXN0b3J5
VGl0bGUoKnRoaXMsIHRpdGxlLCB1cmwsICpmcmFtZSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkgeworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSgqdGhpcywgdGl0bGUsIHVy
bCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRVcGRhdGVIaXN0b3J5
VGl0bGUoKnRoaXMsIHRpdGxlLCB1cmwsICpmcmFtZSk7CiAgICAgcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkuaGlzdG9yeUNsaWVudCgpLmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShwcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKSwgKnRoaXMsIHRpdGxlLCB1cmwsICpmcmFtZSk7CiB9CiAKQEAgLTQ1MTMsNyAr
NDYwNywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKIAogICAgIG5h
dmlnYXRpb25TdGF0ZSgpLmNsZWFyQWxsTmF2aWdhdGlvbnMoKTsKIAotICAgIG1fbG9hZGVyQ2xp
ZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQp
CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0aGlzKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0
U3RhdGVSZWFzb24pCkBAIC00NzQwLDcgKzQ4MzcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQKIAogICAgIFJlZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IHByb3RlY3Rpb25TcGFjZSA9IFdl
YlByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwogCi0gICAgY2Fu
QXV0aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgY2FuQXV0aGVudGljYXRlID0g
bV9uYXZpZ2F0aW9uQ2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KCp0aGlzLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgY2FuQXV0
aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFs
bGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtNDc1Niw3ICs0ODU2LDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50
NjRfdCBmcmFtZUlELCBQYXNzCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICBSZWZQ
dHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBwcnBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSgqdGhpcywgKmZyYW1lLCBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZy
YW1lKCp0aGlzLCAqZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2Us
IHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQpAQCAtNTIzOCw3
ICs1MzQxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBib29sJiBzdWNjZWVkZWQsIFZlCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1hc3RlcktleTsKIAotICAgIGlmIChSZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRhID0gbV9s
b2FkZXJDbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCisgICAgaWYgKG1fbmF2aWdh
dGlvbkNsaWVudCkgeworICAgICAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1f
bmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKKyAgICAgICAgICAg
IG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICB9IGVs
c2UgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX2xvYWRlckNsaWVudC0+d2ViQ3J5
cHRvTWFzdGVyS2V5KCp0aGlzKSkKICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJl
ZmVyZW5jZSgpLnZlY3RvcigpOwogICAgIGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFz
dGVyS2V5KG1hc3RlcktleSkpIHsKICAgICAgICAgc3VjY2VlZGVkID0gZmFsc2U7CkBAIC01MjUy
LDcgKzUzNTgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gbWFzdGVyS2V5OwogCi0gICAgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBt
X2xvYWRlckNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKKyAgICBpZiAobV9uYXZp
Z2F0aW9uQ2xpZW50KSB7CisgICAgICAgIGlmIChSZWZQdHI8QVBJOjpEYXRhPiBrZXlEYXRhID0g
bV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXkoKnRoaXMpKQorICAgICAgICAg
ICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOworICAgIH0g
ZWxzZSBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbG9hZGVyQ2xpZW50LT53ZWJD
cnlwdG9NYXN0ZXJLZXkoKnRoaXMpKQogICAgICAgICBtYXN0ZXJLZXkgPSBrZXlEYXRhLT5kYXRh
UmVmZXJlbmNlKCkudmVjdG9yKCk7CiAgICAgZWxzZSBpZiAoIWdldERlZmF1bHRXZWJDcnlwdG9N
YXN0ZXJLZXkobWFzdGVyS2V5KSkgewogICAgICAgICBzdWNjZWVkZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZjM4ZWIwZTI4ZGQ1MjllNDQ1
ZTZhN2NkODI0MTU5Yzc4ZjdlMWIyLi5mMzRlZWU3Zjc3ZTgwMmRlOTMyYjkzODBkNGQxZjEwMWI4
NDlhNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTcs
NiArMTE3LDcgQEAgY2xhc3MgRmluZENsaWVudDsKIGNsYXNzIEZvcm1DbGllbnQ7CiBjbGFzcyBM
b2FkZXJDbGllbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uOworY2xhc3MgTmF2aWdhdGlvbkNsaWVudDsK
IGNsYXNzIFBvbGljeUNsaWVudDsKIGNsYXNzIFVJQ2xpZW50OwogY2xhc3MgVVJMUmVxdWVzdDsK
QEAgLTMxNCw2ICszMTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4pOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZUZpbmRNYXRjaGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRj
aGVzQ2xpZW50QmFzZSopOwogICAgIHZvaWQgc2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGb3JtQ2xpZW50Pik7CisgICAgdm9pZCBzZXROYXZpZ2F0aW9uQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KTsKICAgICB2b2lkIHNldExvYWRlckNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+KTsKICAgICB2b2lkIHNldFBvbGlj
eUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+KTsKIApAQCAtMTM3MSw2
ICsxMzczLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5Q2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2aWdhdGlvbkNsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiBtX2Zvcm1DbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+IG1fdWlDbGllbnQ7CiAjaWYgUExBVEZPUk0o
RUZMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDZkMjdhNjJhZjBkYzEzYmVhZTk0YjVlZWI2YmQ2ODBiYmVhYTU2YmUuLjVmNDdj
NTg3Nzg4NTJjYzgzNjllNDhhN2RkNGE2OWYwNDhmOWVhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0NCw2ICs2NDQsNyBA
QAogCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdp
c3RyeS5oICovOyB9OwogCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVu
dFByb3ZpZGVyUmVnaXN0cnkubW0gKi87IH07CiAJCTJERDEzQkQ1MThGN0RBREQwMEUxMzBBMSAv
KiBGaW5kQ29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERDEzQkQzMThGN0RBREQwMEUxMzBBMSAvKiBGaW5kQ29udHJvbGxlcklP
Uy5tbSAqLzsgfTsKKwkJMkREOUVCMkQxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25D
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
RDlFQjJDMUE2RjAxMjUwMEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggKi87IH07CiAJ
CTJEREUwQUZBMTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUw
QUY4MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAq
LzsgfTsKIAkJMkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIubW0gKi87IH07CiAJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEREY3MzEzMThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24uaCAqLzsgfTsKQEAgLTI3MzksNiArMjc0MCw3IEBACiAJCTJE
QzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREM2RDlDMjE4
QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkREMTNCRDMx
OEY3REFERDAwRTEzMEExIC8qIEZpbmRDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gRmluZENvbnRyb2xsZXJJT1MubW07IHBhdGggPSBpb3Mv
RmluZENvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERDlF
QjJDMUE2RjAxMjUwMEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRERjczMTMxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYx
MzcsNiArNjEzOSw3IEBACiAJCQkJN0NEM0E0ODAxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmln
YXRpb24uY3BwICovLAogCQkJCTdDRDNBNDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0
aW9uLmggKi8sCiAJCQkJMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25B
Y3Rpb24uaCAqLywKKwkJCQkyREQ5RUIyQzFBNkYwMTI1MDBCQjEyNjcgLyogQVBJTmF2aWdhdGlv
bkNsaWVudC5oICovLAogCQkJCUJDRjY5RkExMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0
aW9uRGF0YS5jcHAgKi8sCiAJCQkJQkNGNjlGQTAxMTc2RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmln
YXRpb25EYXRhLmggKi8sCiAJCQkJMkRGOUVFRUQxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmln
YXRpb25SZXNwb25zZS5oICovLApAQCAtNzU5MCw2ICs3NTkzLDcgQEAKIAkJCQk1MTdDRjBFNDE2
M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNzk1NTcxMTYyODc3RDIwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MzE5OTUxNjI4OUE2
MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTJERDlFQjJEMUE2RjAxMjUwMEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTRBOTU0QTE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzk1NTZFMTYyODc3QjMw
MEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNB
MTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywK
</data>
<flag name="review"
          id="270685"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>