<?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>223831</bug_id>
          
          <creation_ts>2021-03-26 17:40:53 -0700</creation_ts>
          <short_desc>Migrate _WKUserContentExtension and older versions of WKContentRuleList to WKContentRuleList during lookup</short_desc>
          <delta_ts>2021-03-29 11:13:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744409</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-26 17:40:53 -0700</bug_when>
    <thetext>Migrate _WKUserContentExtension and older versions of WKContentRuleList to WKContentRuleList during lookup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744415</commentid>
    <comment_count>1</comment_count>
      <attachid>424425</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-26 17:49:29 -0700</bug_when>
    <thetext>Created attachment 424425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744743</commentid>
    <comment_count>2</comment_count>
      <attachid>424539</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-29 09:57:55 -0700</bug_when>
    <thetext>Created attachment 424539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744744</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-29 09:59:14 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744756</commentid>
    <comment_count>4</comment_count>
      <attachid>424541</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-29 10:14:22 -0700</bug_when>
    <thetext>Created attachment 424541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744772</commentid>
    <comment_count>5</comment_count>
      <attachid>424541</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-29 10:51:44 -0700</bug_when>
    <thetext>Comment on attachment 424541
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=424541&amp;action=review

&gt; Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp:82
&gt; +// FIXME: Remove legacyFilename in 2022 or 2023 after users have had a chance to run the updating logic.

HAH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744787</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-29 11:12:29 -0700</bug_when>
    <thetext>Committed r275166: &lt;https://commits.webkit.org/r275166&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424541.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744788</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-29 11:13:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/75963021&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424425</attachid>
            <date>2021-03-26 17:49:29 -0700</date>
            <delta_ts>2021-03-29 09:57:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223831-20210326174928.patch</filename>
            <type>text/plain</type>
            <size>42379</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkMWE3NGM0ZTczMDZhNDk3
ZTBlNmNiZWE1MWYwYzhmMjAxNDViYjcuLjY1MTlhYTA1NDYwOTczYjNlZTZiZjQ0NGUyOTMwZjIz
N2JhOWRhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjEtMDMtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNaWdyYXRlIF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uIGFuZCBvbGRlciB2ZXJzaW9ucyBvZiBXS0NvbnRlbnRSdWxl
TGlzdCB0byBXS0NvbnRlbnRSdWxlTGlzdCBkdXJpbmcgbG9va3VwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjc1MDc4IGluY3JlbWVudGVkIEN1cnJl
bnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbiBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gYSBmZXcg
eWVhcnMuCisgICAgICAgIEFzIGEgcmVzdWx0LCB3ZSB3aWxsIGdldCBhIFdLRXJyb3JDb250ZW50
UnVsZUxpc3RTdG9yZVZlcnNpb25NaXNtYXRjaCBkdXJpbmcgbG9va3VwIGZvciBleGlzdGluZyBj
b21waWxlZCBXS0NvbnRlbnRSdWxlTGlzdHMuCisgICAgICAgIFRvIG1ha2UgdGhpcyBhcyBjb21w
YXRpYmxlIGFzIHBvc3NpYmxlLCBpZiB3ZSBzZWUgc3VjaCBhIFdLQ29udGVudFJ1bGVMaXN0LCB0
cnkgZXh0cmFjdGluZyBpdHMgc291cmNlIGFuZCByZWNvbXBpbGluZy4KKworICAgICAgICBBbHNv
LCBfV0tVc2VyQ29udGVudEV4dGVuc2lvbiBpcyB1c2VkIGJ5IFNhZmFyaSBhbmQgYmVpbmcgbWln
cmF0ZWQgZnJvbSBpbiByZGFyOi8vNzU4ODk0MTQuCisgICAgICAgIFRvIG1ha2UgdGhpcyBzdWNj
ZWVkIGFuZCBub3QgbGVhdmUgYW55IGZpbGVzIGJlaGluZCwgd2UgbW92ZSBsZWdhY3kgZmlsZXMg
dG8gbW9kZXJuIGZpbGVuYW1lcyBkdXJpbmcgbG9va3VwLgorICAgICAgICBXZSBhbHNvIHJlbW92
ZSB0aGVtIGlmIHRoZXkncmUgdGhlcmUgd2hlbiByZW1vdmluZyB0aGUgV0tDb250ZW50UnVsZUxp
c3QgZnJvbSB0aGUgV0tDb250ZW50UnVsZUxpc3RTdG9yZSwKKyAgICAgICAgYW5kIHdlIGluY2x1
ZGUgdGhlbSBpbiBnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycy4gIGNvbXBp
bGVDb250ZW50UnVsZUxpc3Qgb25seSBjb21waWxlcyB0byB0aGUgbW9kZXJuIGxvY2F0aW9ucywK
KyAgICAgICAgYW5kIGludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uIGlzIG9ubHkgdXNl
ZCBmb3IgdGVzdHMuICBBbGwgdGhpcyBpcyBkb25lIG9uIG5vbi1tYWluIFdvcmtRdWV1ZXMsIHNv
IHRoZSBmZXcgYWRkaXRpb25hbAorICAgICAgICBmaWxlIHJlYWRzL3dyaXRlcyBhcmVuJ3QgYW4g
aXNzdWUuCisKKyAgICAgICAgTHVja2lseSwgX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSB3
YXMgb25seSB1c2VkIGJ5IFNhZmFyaSwgYW5kIGl0cyBkZWZhdWx0U3RvcmUgd2FzIG5ldmVyIHVz
ZWQuCisKKyAgICAgICAgQWxsIHRoaXMgaXMgY292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZSk6CisgICAgICAgIChBUEk6
OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKToKKyAgICAgICAgKEFQSTo6Q29u
dGVudFJ1bGVMaXN0U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKToKKyAgICAgICAgKEFQSTo6
b3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OmdldENvbnRlbnRSdWxl
TGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0
U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxl
TGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyk6CisgICAg
ICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KToK
KyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlz
dCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVu
dFJ1bGVMaXN0VmVyc2lvbik6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpn
ZXRDb250ZW50UnVsZUxpc3RTb3VyY2UpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6bGVnYWN5RGVmYXVsdFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6Q29udGVu
dFJ1bGVMaXN0U3RvcmU6Om5vbkxlZ2FjeURlZmF1bHRTdG9yZSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjp+Q29udGVudFJ1bGVMaXN0U3RvcmUpOiBEZWxl
dGVkLgorICAgICAgICAoQVBJOjpvcGVuQW5kTWFwT3JDb3B5Q29udGVudFJ1bGVMaXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJl
Zi5jcHA6CisgICAgICAgIChXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVDcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5t
bToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5t
bToKKyAgICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBkZWZhdWx0U3RvcmVdKToKKyAg
ICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkw6XSk6CisgICAgICAg
ICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgZGVmYXVsdFN0b3JlV2l0aExlZ2FjeUZpbGVuYW1l
XSk6CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRoVVJMQW5kTGVn
YWN5RmlsZW5hbWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlUHJpdmF0ZS5oOgorCiAyMDIxLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgV0tDb250ZW50UnVsZUxp
c3QgdG8gYmxvY2sgb25seSBpbiBmcmFtZXMgb3Igb25seSBpbiBtYWluIGZyYW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAppbmRleCA5MzBiMTdmM2UxOTQ2ZmQ1ZWFhMmZjN2Q5NmFlNzNhMzBhMTE4NGMxLi5jMGY4
NGE5NzRhN2U5ODRmOTY1YmE1YzE5NmQ0YjUwOWY4OGM5ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAg
LTUyLDUxICs1MiwzNCBAQCBuYW1lc3BhY2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTsKIHVzaW5nIG5hbWVzcGFjZSBGaWxlU3lzdGVtOwogCi1Db250ZW50UnVs
ZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmxlZ2FjeURlZmF1bHRTdG9yZSgpCitD
b250ZW50UnVsZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZSgp
CiB7Ci0gICAgY29uc3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IHRydWU7Ci0gICAgc3RhdGljIENv
bnRlbnRSdWxlTGlzdFN0b3JlKiBkZWZhdWx0U3RvcmUgPSBhZG9wdFJlZihuZXcgQ29udGVudFJ1
bGVMaXN0U3RvcmUobGVnYWN5RmlsZW5hbWUpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRl
bnRSdWxlTGlzdFN0b3JlKiBkZWZhdWx0U3RvcmUgPSBhZG9wdFJlZihuZXcgQ29udGVudFJ1bGVM
aXN0U3RvcmUoKSkubGVha1JlZigpOwogICAgIHJldHVybiAqZGVmYXVsdFN0b3JlOwogfQotICAg
IAotQ29udGVudFJ1bGVMaXN0U3RvcmUmIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpub25MZWdhY3lE
ZWZhdWx0U3RvcmUoKQotewotICAgIGNvbnN0IGJvb2wgbGVnYWN5RmlsZW5hbWUgPSBmYWxzZTsK
LSAgICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUqIGRlZmF1bHRTdG9yZSA9IGFkb3B0UmVm
KG5ldyBDb250ZW50UnVsZUxpc3RTdG9yZShsZWdhY3lGaWxlbmFtZSkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gKmRlZmF1bHRTdG9yZTsKLX0KLSAgICAKLUNvbnRlbnRSdWxlTGlzdFN0b3JlJiBD
b250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlKGJvb2wgbGVnYWN5RmlsZW5hbWUpCi17
Ci0gICAgaWYgKGxlZ2FjeUZpbGVuYW1lKQotICAgICAgICByZXR1cm4gbGVnYWN5RGVmYXVsdFN0
b3JlKCk7Ci0gICAgcmV0dXJuIG5vbkxlZ2FjeURlZmF1bHRTdG9yZSgpOwotfQogCi1SZWY8Q29u
dGVudFJ1bGVMaXN0U3RvcmU+IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgsIGJvb2wgbGVnYWN5RmlsZW5hbWUpCitSZWY8Q29u
dGVudFJ1bGVMaXN0U3RvcmU+IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGVudFJ1bGVMaXN0U3RvcmUoc3RvcmVQYXRoLCBsZWdhY3lGaWxlbmFtZSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRlbnRSdWxlTGlzdFN0b3JlKHN0b3JlUGF0aCkpOwogfQog
Ci1Db250ZW50UnVsZUxpc3RTdG9yZTo6Q29udGVudFJ1bGVMaXN0U3RvcmUoYm9vbCBsZWdhY3lG
aWxlbmFtZSkKLSAgICA6IENvbnRlbnRSdWxlTGlzdFN0b3JlKGRlZmF1bHRTdG9yZVBhdGgobGVn
YWN5RmlsZW5hbWUpLCBsZWdhY3lGaWxlbmFtZSkKK0NvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250
ZW50UnVsZUxpc3RTdG9yZSgpCisgICAgOiBDb250ZW50UnVsZUxpc3RTdG9yZShkZWZhdWx0U3Rv
cmVQYXRoKCkpCiB7CiB9CiAKLUNvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250ZW50UnVsZUxpc3RT
dG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKQor
Q29udGVudFJ1bGVMaXN0U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3Ry
aW5nJiBzdG9yZVBhdGgpCiAgICAgOiBtX3N0b3JlUGF0aChzdG9yZVBhdGgpCiAgICAgLCBtX2Nv
bXBpbGVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3RvcmUgQ29tcGls
ZSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6Q29uY3VycmVudCkpCiAgICAgLCBtX3JlYWRRdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3RvcmUgUmVhZCBRdWV1ZSIpKQog
ICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3Rv
cmUgUmVtb3ZlIFF1ZXVlIikpCi0gICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVuYW1l
KQogewogICAgIG1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCi1Db250ZW50UnVs
ZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKLXsKLX0KK0NvbnRlbnRSdWxlTGlz
dFN0b3JlOjp+Q29udGVudFJ1bGVMaXN0U3RvcmUoKSA9IGRlZmF1bHQ7CiAKKy8vIEZJWE1FOiBS
ZW1vdmUgbGVnYWN5RmlsZW5hbWUgaW4gMjAyMiBvciAyMDIzIGFmdGVyIHVzZXJzIGhhdmUgaGFk
IGEgY2hhbmNlIHRvIHJ1biB0aGUgdXBkYXRpbmcgbG9naWMuCiBzdGF0aWMgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnN0cnVjdGVkUGF0aFByZWZpeChib29sIGxlZ2FjeUZpbGVuYW1lKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gcHJlZml4KCJDb250ZW50UnVsZUxp
c3QtIik7CkBAIC0yMzUsNyArMjE4LDcgQEAgc3RydWN0IE1hcHBlZERhdGEgewogICAgIFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhIGRhdGE7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8TWFwcGVk
RGF0YT4gb3BlbkFuZE1hcE9yQ29weUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
cGF0aCkKK3N0YXRpYyBPcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVM
aXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQogewogICAgIEZpbGVTeXN0ZW06Om1ha2VTYWZl
VG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOwogICAgIFdlYktpdDo6TmV0d29ya0NhY2hlOjpE
YXRhIGZpbGVEYXRhID0gbWFwRmlsZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpKTsKQEAgLTQ1MSwxMiArNDM0LDQyIEBAIHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxp
c3Q+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBy
ZXR1cm4gQVBJOjpDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShpZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0KSwgV1RGTW92ZShkYXRhLmRhdGEpKTsKIH0KIAorc3RhdGlj
IFdURjo6U3RyaW5nIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKGNvbnN0
IE1hcHBlZERhdGEmIG1hcHBlZERhdGEpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBzd2l0Y2ggKG1hcHBlZERhdGEubWV0YURhdGEudmVyc2lvbikgeworICAgIGNh
c2UgOToKKyAgICBjYXNlIDEwOgorICAgIGNhc2UgMTE6CisgICAgICAgIGlmICghbWFwcGVkRGF0
YS5tZXRhRGF0YS5zb3VyY2VTaXplKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
Ym9vbCBpczhCaXQgPSBtYXBwZWREYXRhLmRhdGEuZGF0YSgpW0NvbnRlbnRSdWxlTGlzdEZpbGVI
ZWFkZXJTaXplXTsKKyAgICAgICAgc2l6ZV90IHN0YXJ0ID0gQ29udGVudFJ1bGVMaXN0RmlsZUhl
YWRlclNpemUgKyBzaXplb2YoYm9vbCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBtYXBwZWRE
YXRhLm1ldGFEYXRhLnNvdXJjZVNpemUgLSBzaXplb2YoYm9vbCk7CisgICAgICAgIGlmIChpczhC
aXQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpTdHJpbmcobWFwcGVkRGF0YS5kYXRhLmRhdGEo
KSArIHN0YXJ0LCBsZW5ndGgpOworICAgICAgICBpZiAobGVuZ3RoICUgc2l6ZW9mKFVDaGFyKSkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBXVEY6OlN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4obWFwcGVkRGF0YS5kYXRhLmRhdGEoKSArIHN0YXJ0KSwgbGVuZ3Ro
IC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgfQorCisgICAgLy8gT2xkZXIgdmVyc2lvbnMgY2Fubm90
IHJlY292ZXIgdGhlIG9yaWdpbmFsIEpTT04gc291cmNlIGZyb20gZGlzay4KKyAgICByZXR1cm4g
eyB9OworfQorCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxp
c3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBz
dG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBt
X2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgo
c3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7Ci0gICAgICAgIAotICAgICAg
ICBhdXRvIGNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRNYXBPckNvcHlDb250ZW50UnVsZUxpc3Qo
cGF0aCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1ZS0+
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRo
LCBpZGVudGlmaWVyLCBmYWxzZSk7CisgICAgICAgIGF1dG8gbGVnYWN5UGF0aCA9IGNvbnN0cnVj
dGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIHRydWUpOworICAgICAgICBpZiAoZmlsZUV4
aXN0cyhsZWdhY3lQYXRoKSkKKyAgICAgICAgICAgIG1vdmVGaWxlKGxlZ2FjeVBhdGgsIHBhdGgp
OworCisgICAgICAgIGF1dG8gY29udGVudFJ1bGVMaXN0ID0gb3BlbkFuZE1hcENvbnRlbnRSdWxl
TGlzdChwYXRoKTsKICAgICAgICAgaWYgKCFjb250ZW50UnVsZUxpc3QpIHsKICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIs
IEVycm9yOjpMb29rdXBGYWlsZWQpOwpAQCAtNDY1LDYgKzQ3OCwxMiBAQCB2b2lkIENvbnRlbnRS
dWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChjb250ZW50UnVsZUxp
c3QtPm1ldGFEYXRhLnZlcnNpb24gIT0gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkN1cnJlbnRDb250
ZW50UnVsZUxpc3RGaWxlVmVyc2lvbikgeworICAgICAgICAgICAgaWYgKGF1dG8gc291cmNlRnJv
bU9sZFZlcnNpb24gPSBnZXRDb250ZW50UnVsZUxpc3RTb3VyY2VGcm9tTWFwcGVkRmlsZSgqY29u
dGVudFJ1bGVMaXN0KTsgIXNvdXJjZUZyb21PbGRWZXJzaW9uLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHNvdXJjZUZyb21PbGRWZXJzaW9uID0gc291cmNlRnJvbU9sZFZl
cnNpb24uaXNvbGF0ZWRDb3B5KCksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29tcGlsZUNvbnRl
bnRSdWxlTGlzdChpZGVudGlmaWVyLCBXVEZNb3ZlKHNvdXJjZUZyb21PbGRWZXJzaW9uKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIEVycm9yOjpWZXJzaW9u
TWlzbWF0Y2gpOwogICAgICAgICAgICAgfSk7CkBAIC00NzksMTQgKzQ5OCwxOSBAQCB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsCiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJs
ZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9yZWFkUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JlUGF0aCA9
IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5Rmls
ZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmVQYXRoID0g
bV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAKLSAgICAgICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBmdWxsUGF0aHMgPSBsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRo
RmlsdGVyKGxlZ2FjeUZpbGVuYW1lKSk7CisgICAgICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gZnVs
bFBhdGhzID0gbGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihm
YWxzZSkpOworICAgICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2FjeUZ1bGxQYXRocyA9IGxp
c3REaXJlY3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIodHJ1ZSkpOwogICAg
ICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGlkZW50aWZpZXJzOwotICAgICAgICBpZGVudGlmaWVy
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bGxQYXRocy5zaXplKCkpOwotICAgICAgICBjb25z
dCBhdXRvIHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFt
ZSkubGVuZ3RoKCk7CisgICAgICAgIGlkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
ZnVsbFBhdGhzLnNpemUoKSArIGxlZ2FjeUZ1bGxQYXRocy5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvIHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChmYWxzZSkubGVuZ3Ro
KCk7CisgICAgICAgIGNvbnN0IGF1dG8gbGVnYWN5UHJlZml4TGVuZ3RoID0gY29uc3RydWN0ZWRQ
YXRoUHJlZml4KHRydWUpLmxlbmd0aCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBmdWxsUGF0aHMpCiAgICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoZGVj
b2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEg
KyBwcmVmaXhMZW5ndGgpKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGxlZ2Fj
eUZ1bGxQYXRocykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChkZWNv
ZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSAr
IGxlZ2FjeVByZWZpeExlbmd0aCkpKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IFdURk1vdmUo
aWRlbnRpZmllcnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShpZGVudGlmaWVycykpOwpAQCAtNDk2LDYgKzUyMCw3IEBAIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBs
ZXRpb25IYW5kCiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVs
ZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6
OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKICAgICBXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lOjppbml0KCk7CiAgICAgCkBAIC01MDMsOCArNTI4LDggQEAgdm9pZCBDb250ZW50UnVs
ZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwKICAgICBpZiAoIXBhcnNlZFJ1bGVzLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgcGFyc2VkUnVsZXMuZXJyb3IoKSk7CiAgICAg
Ci0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxl
bmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJz
ZWRSdWxlcyA9IHBhcnNlZFJ1bGVzLnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9
IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBwYXRoID0gY29u
c3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOworICAg
IG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9IGpzb24uaXNv
bGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFsdWUoKS5pc29sYXRlZENv
cHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAg
ICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBmYWxz
ZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24p
LCBXVEZNb3ZlKHBhcnNlZFJ1bGVzKSwgcGF0aCk7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192
YWx1ZSgpKSB7CkBAIC01MjMsMTkgKzU0OCwyMSBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAog
CiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjplcnJv
cl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcGF0
aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1l
KTsKLQotICAgICAgICBpZiAoIWRlbGV0ZUZpbGUocGF0aCkpIHsKLSAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEVycm9yOjpSZW1vdmVG
YWlsZWQpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9yZW1vdmVRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShzdGQ6OmVycm9yX2NvZGUgZXJyb3IpIG11dGFibGUgeworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH07CisgICAgICAgIGlmIChhdXRvIGxlZ2FjeVBhdGggPSBjb25zdHJ1
Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCB0cnVlKTsgZmlsZUV4aXN0cyhsZWdhY3lQ
YXRoKSkgeworICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGxlZ2FjeVBhdGgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0ZShFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0ZSh7IH0pOwogICAgICAgICB9Ci0KLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICB9KTsKKyAg
ICAgICAgaWYgKGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZp
ZXIsIGZhbHNlKTsgIWRlbGV0ZUZpbGUocGF0aCkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGUoRXJyb3I6OlJlbW92ZUZhaWxlZCk7CisgICAgICAgIGNvbXBsZXRlKHsgfSk7CiAgICAgfSk7
CiB9CiAKQEAgLTU0Nyw3ICs1NzQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzeW5j
aHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogCiB2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGZpbGUgPSBvcGVuRmlsZShjb25zdHJ1Y3RlZFBh
dGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBGaWxlT3Blbk1v
ZGU6OldyaXRlKTsKKyAgICBhdXRvIGZpbGUgPSBvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9z
dG9yZVBhdGgsIGlkZW50aWZpZXIsIGZhbHNlKSwgRmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAg
aWYgKGZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwg
MCwgMH07CkBAIC01NTgsNDMgKzU4NSwyMiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpp
bnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQogCiB2
b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJp
bmcpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdh
Y3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcGF0aCA9IGNv
bnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKLSAg
ICAgICAgCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1ZS0+
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShXVEY6OlN0cmluZyBzb3VyY2UpIG11dGFibGUgewogICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc291
cmNlID0gc291cmNlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzb3VyY2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH07
CiAKLSAgICAgICAgYXV0byBjb250ZW50UnVsZUxpc3QgPSBvcGVuQW5kTWFwT3JDb3B5Q29udGVu
dFJ1bGVMaXN0KHBhdGgpOworICAgICAgICBhdXRvIGNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRN
YXBDb250ZW50UnVsZUxpc3QoY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwg
ZmFsc2UpKTsKICAgICAgICAgaWYgKCFjb250ZW50UnVsZUxpc3QpIHsKLSAgICAgICAgICAgIGNv
bXBsZXRlKHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhdXRvIGxlZ2Fj
eUNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3RydWN0ZWRQ
YXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgdHJ1ZSkpOworICAgICAgICAgICAgaWYgKCFsZWdh
Y3lDb250ZW50UnVsZUxpc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlKHsgfSk7
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGUoZ2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJv
bU1hcHBlZEZpbGUoKmxlZ2FjeUNvbnRlbnRSdWxlTGlzdCkpOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBzd2l0Y2ggKGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEudmVyc2lvbikgewot
ICAgICAgICBjYXNlIDk6Ci0gICAgICAgIGNhc2UgMTA6Ci0gICAgICAgIGNhc2UgMTE6Ci0gICAg
ICAgICAgICBpZiAoIWNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEuc291cmNlU2l6ZSkgewotICAg
ICAgICAgICAgICAgIGNvbXBsZXRlKHsgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBpczhCaXQgPSBjb250ZW50UnVsZUxpc3QtPmRh
dGEuZGF0YSgpW0NvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplXTsKLSAgICAgICAgICAgIHNp
emVfdCBzdGFydCA9IENvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplICsgc2l6ZW9mKGJvb2wp
OwotICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEu
c291cmNlU2l6ZSAtIHNpemVvZihib29sKTsKLSAgICAgICAgICAgIGlmIChpczhCaXQpCi0gICAg
ICAgICAgICAgICAgY29tcGxldGUoV1RGOjpTdHJpbmcoY29udGVudFJ1bGVMaXN0LT5kYXRhLmRh
dGEoKSArIHN0YXJ0LCBsZW5ndGgpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFTU0VSVCghKGxlbmd0aCAlIHNpemVvZihVQ2hhcikpKTsKLSAgICAgICAgICAgICAgICBj
b21wbGV0ZShXVEY6OlN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY29udGVu
dFJ1bGVMaXN0LT5kYXRhLmRhdGEoKSArIHN0YXJ0KSwgbGVuZ3RoIC8gc2l6ZW9mKFVDaGFyKSkp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gT2xkZXIgdmVyc2lvbnMgY2Fubm90IHJlY292ZXIgdGhlIG9yaWdpbmFsIEpTT04gc291
cmNlIGZyb20gZGlzay4KLSAgICAgICAgY29tcGxldGUoeyB9KTsKKyAgICAgICAgY29tcGxldGUo
Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBlZEZpbGUoKmNvbnRlbnRSdWxlTGlzdCkp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IGE3NzI0NDQzYTQ4MWU5NDI2NDY5MTgyNzU1
NWIwYjU2ZWY1ODVjNjcuLmM1MjM3NmMwMjE0ZmFmZjFlOWViZjhmM2U1OWY4YzIzYWZiM2IzOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oCkBAIC01NiwxNCArNTYsMTQgQEAgcHVibGljOgogICAgIC8vIHRvIHByZXZl
bnQgY3Jhc2hpbmcgd2hpbGUgbG9hZGluZyBvbGQgZGF0YS4KICAgICAvLyBBbHNvIHVwZGF0ZSBD
b250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlIHRvIGJlIGFibGUg
dG8gZmluZCB0aGUgb3JpZ2luYWwgSlNPTgogICAgIC8vIHNvdXJjZSBmcm9tIG9sZCB2ZXJzaW9u
cy4KLSAgICAvLyBVcGRhdGUgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRSdWxlTGlz
dFNvdXJjZSB3aXRoIHRoaXMuCisgICAgLy8gVXBkYXRlIGdldENvbnRlbnRSdWxlTGlzdFNvdXJj
ZUZyb21NYXBwZWRGaWxlIHdpdGggdGhpcy4KICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IEN1cnJlbnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbiA9IDExOwogCi0gICAgc3RhdGljIENv
bnRlbnRSdWxlTGlzdFN0b3JlJiBkZWZhdWx0U3RvcmUoYm9vbCBsZWdhY3lGaWxlbmFtZSk7Ci0g
ICAgc3RhdGljIFJlZjxDb250ZW50UnVsZUxpc3RTdG9yZT4gc3RvcmVXaXRoUGF0aChjb25zdCBX
VEY6OlN0cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKTsKKyAgICBzdGF0aWMg
Q29udGVudFJ1bGVMaXN0U3RvcmUmIGRlZmF1bHRTdG9yZSgpOworICAgIHN0YXRpYyBSZWY8Q29u
dGVudFJ1bGVMaXN0U3RvcmU+IHN0b3JlV2l0aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3Jl
UGF0aCk7CiAKLSAgICBleHBsaWNpdCBDb250ZW50UnVsZUxpc3RTdG9yZShib29sIGxlZ2FjeUZp
bGVuYW1lKTsKLSAgICBleHBsaWNpdCBDb250ZW50UnVsZUxpc3RTdG9yZShjb25zdCBXVEY6OlN0
cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKTsKKyAgICBleHBsaWNpdCBDb250
ZW50UnVsZUxpc3RTdG9yZSgpOworICAgIGV4cGxpY2l0IENvbnRlbnRSdWxlTGlzdFN0b3JlKGNv
bnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpOwogICAgIHZpcnR1YWwgfkNvbnRlbnRSdWxlTGlz
dFN0b3JlKCk7CiAKICAgICB2b2lkIGNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPik7CkBA
IC03NywxNSArNzcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Q29udGVudFJ1bGVMaXN0U291
cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6U3RyaW5nKT4pOwogCiBwcml2YXRlOgotICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9y
ZVBhdGgoYm9vbCBsZWdhY3lGaWxlbmFtZSk7Ci0gICAgc3RhdGljIENvbnRlbnRSdWxlTGlzdFN0
b3JlJiBsZWdhY3lEZWZhdWx0U3RvcmUoKTsKLSAgICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3Rv
cmUmIG5vbkxlZ2FjeURlZmF1bHRTdG9yZSgpOworICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9y
ZVBhdGgoKTsKICAgICAKICAgICBjb25zdCBXVEY6OlN0cmluZyBtX3N0b3JlUGF0aDsKICAgICBS
ZWY8V1RGOjpXb3JrUXVldWU+IG1fY29tcGlsZVF1ZXVlOwogICAgIFJlZjxXVEY6OldvcmtRdWV1
ZT4gbV9yZWFkUXVldWU7CiAgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3JlbW92ZVF1ZXVlOwot
ICAgIGJvb2wgbV9sZWdhY3lGaWxlbmFtZSB7IGZhbHNlIH07CiB9OwogCiBjb25zdCBzdGQ6OmVy
cm9yX2NhdGVnb3J5JiBjb250ZW50UnVsZUxpc3RTdG9yZUVycm9yQ2F0ZWdvcnkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCmluZGV4IDc5MDU0MmQyODI2ZjBmZWZkMzc2NDM4MWZl
Y2JhZDIyNDc5NTNiN2YuLmZmNDcwMWM5YjU0ODQ3YjczZjEwOTE1ZmQ3NWRlMzYyYzQxOGI5NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApAQCAtNDUsNyArNDUsNyBAQCBXS1R5
cGVJRCBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVHZXRUeXBlSUQoKQogV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlUmVmIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUNyZWF0ZShXS1N0
cmluZ1JlZiBwYXRoKQogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHRvV1RG
U3RyaW5nKHBhdGgpLCBmYWxzZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6
Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodG9XVEZTdHJpbmcocGF0aCkpLmxl
YWtSZWYoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KaW5kZXggNGVkMzc3NGEwNGYw
ODE4ZTU1NzQxMTFhMjc1NDZmNTZkMjdiN2Q5MS4uM2Q2NTc5ZjUyY2UzNTAxYTg2MWMzZjY1NWVm
YmVkMjRlODFlMTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdURjo6U3RyaW5nIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVnYWN5RmlsZW5hbWUpCitXVEY6OlN0
cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCgpCiB7CiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU1VSTD4+IGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMOwpAQCAtNTIsMTAgKzUy
LDcgQEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgo
Ym9vbCBsZWdhY3lGaWxlbmFtZSkKICAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGxlZ2FjeUZpbGVuYW1lKQotICAgICAgICAgICAg
Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIiBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudFJ1bGVMaXN0cyIgaXNEaXJlY3Rvcnk6
WUVTXTsKKyAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdHMiIGlzRGlyZWN0b3J5OllF
U107CiAgICAgfSk7CiAKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxs
cHRyXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IGY1YjJiNTllMTUyODgwYWZjNDcxOGI3ZjMz
ZWFkNTM1MjI4YTNjYTUuLmJmM2YyODk0ZDMxMjgxZWRhYTQ1ZGRiNjY0ZTlkN2QzYWU1YzkyN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzUsOSArMzUsOSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpCiArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3Jl
OwogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTDooTlNVUkwgKil1cmw7CiAKLS0gKHZvaWQp
Y29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmll
ciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKSBlbmNvZGVkQ29udGVudFJ1bGVM
aXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZCljb21waWxlQ29udGVudFJ1bGVMaXN0
Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxp
c3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcg
KilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlz
dCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZW1vdmVDb250ZW50
UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lkKWdl
dEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOih2b2lkICheKShOU0FycmF5PE5T
U3RyaW5nICo+KikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWdldEF2YWlsYWJsZUNvbnRl
bnRSdWxlTGlzdElkZW50aWZpZXJzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNv
bXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCmluZGV4IDU4MjUx
NGM4YmU1Y2U3MTMzN2NiNjA0ZDNjMzI1ZWE1MDQzOWFjNDUuLjIxOGYxZDc0ZDA3OWUxMTkwMTE5
NTVmZmYyZGFjMGY1NGE3MGZkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCkBAIC02NiwxNCAr
NjYsMTIgQEAgc3RhdGljIFdLRXJyb3JDb2RlIHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjplcnJv
cl9jb2RlJiBlcnJvcikKIAogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogewotICAgIGNv
bnN0IGJvb2wgbGVnYWN5RmlsZW5hbWUgPSBmYWxzZTsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6
OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUobGVnYWN5RmlsZW5hbWUpKTsKKyAg
ICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUo
KSk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkw6KE5TVVJMICopdXJsCiB7Ci0g
ICAgY29uc3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IGZhbHNlOwotICAgIHJldHVybiB3cmFwcGVy
KEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJM
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsKKyAgICByZXR1cm4g
d3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNv
bHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKIH0KIAogLSAodm9pZCljb21waWxl
Q29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29k
ZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgpAQCAtMTY2LDE0ICsxNjQsMTIgQEAgc3RhdGljIFdLRXJyb3JDb2Rl
IHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjplcnJvcl9jb2RlJiBlcnJvcikKIAogKyAoaW5zdGFu
Y2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZQogewotICAgIGNvbnN0IGJvb2wg
bGVnYWN5RmlsZW5hbWUgPSB0cnVlOwotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1
bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZShsZWdhY3lGaWxlbmFtZSkpOworICAgIHJldHVybiB3
cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZSgpKTsKIH0KIAog
KyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOihOU1VSTCAqKXVy
bAogewotICAgIGNvbnN0IGJvb2wgbGVnYWN5RmlsZW5hbWUgPSB0cnVlOwotICAgIHJldHVybiB3
cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29s
dXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsKKyAgICBy
ZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVy
bC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaAppbmRleCAyYmE3YTE5NjcwMGM5OGNlZjUxNzI0
NmM5N2FkY2Q3ZjBjMzE4NWJiLi41MDI4Njg2OGJmM2Q2NDcwMGY3MzFlMjQ4ZWQ1MzZkNGRkODdj
ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250
ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaApAQCAtMzAsMTMgKzMwLDEx
IEBACiAvLyBGb3IgdGVzdGluZyBvbmx5LgogLSAodm9pZClfcmVtb3ZlQWxsQ29udGVudFJ1bGVM
aXN0czsKIC0gKHZvaWQpX2ludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uRm9ySWRlbnRp
ZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyOwotLSAodm9pZClfZ2V0Q29udGVudFJ1bGVMaXN0
U291cmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1N0cmluZyopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZ2V0
Q29udGVudFJ1bGVMaXN0U291cmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVy
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxl
cjsKIAogLSAodm9pZClfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKSBlbmNv
ZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRS
dWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCi0vLyBUbyBtYWludGFp
biBjb21wYXRpYmlsaXR5IHdpdGggX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZQotLy8gRklY
TUU6IEFkZCBzb21ldGhpbmcgdG8gZXhpc3RpbmcgY2xpZW50cyBvZiBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlIHRvIG1pZ3JhdGUgZmlsZXMgZnJvbSBsZWdhY3kgZmlsZW5hbWVzLAotLy8g
YWRvcHQgV0tDb250ZW50UnVsZUxpc3RTdG9yZSwgYW5kIHJlbW92ZSBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLgorLy8gRklYTUU6IFJlbW92ZSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLgogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZTsKICsg
KGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTooTlNVUkwgKil1cmw7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3
OGYwODI3ODdkMWQ4ODkyODE4MDdjOGI5MDI4NmFiMmVkZWRkOWJkLi4yMWE0OTYyZGE3YjU0NzQx
ZjIzZjdhNjc2YWU5ZGMxNDQ4MzcwYjM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNaWdyYXRlIF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uIGFuZCBvbGRlciB2ZXJzaW9ucyBvZiBXS0NvbnRlbnRSdWxl
TGlzdCB0byBXS0NvbnRlbnRSdWxlTGlzdCBkdXJpbmcgbG9va3VwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAocmVzcG9u
ZCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9y
RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl0pOgorCiAyMDIxLTAzLTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgV0tDb250
ZW50UnVsZUxpc3QgdG8gYmxvY2sgb25seSBpbiBmcmFtZXMgb3Igb25seSBpbiBtYWluIGZyYW1l
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCmluZGV4IDJmYmUxYTJjZjMy
YmFmMDA0YjJjMjkxNTcwZWY3YWFmMzc4NTQ4OTMuLjEzMGU2Y2FhNDc1NGVkOGNlYWIzYWNjMTUw
MzBiZDZlZjlmZTg1ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1t
CkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAi
VGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlz
dFByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tDb250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1VSTFNjaGVtZUhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5oPgpAQCAtMTk4LDYgKzE5OCwxNCBAQCBzdGF0aWMgU3RyaW5nIHdlYlNvY2tldEFjY2Vw
dFZhbHVlKGNvbnN0IFZlY3RvcjxjaGFyPiYgcmVxdWVzdCkKICAgICByZXR1cm4gYmFzZTY0RW5j
b2RlKGhhc2guZGF0YSgpLCBTSEExOjpoYXNoU2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc3Bv
bmQoaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBjb25zdCBjaGFyKiBodG1sKQoreworICAgIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOnN0cmxlbihodG1sKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwor
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1d
OworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9OworCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgUmVz
b3VyY2VUeXBlcykKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKQEAgLTIx
NCwyMSArMjIyLDE1IEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBSZXNvdXJjZVR5cGVzKQogCiAg
ICAgYXV0byBoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNl
XTsKICAgICBoYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAq
LCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKLSAgICAgICAgYXV0byByZXNwb25kID0gW3Rh
c2tdIChjb25zdCBjaGFyKiBodG1sKSB7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5V
UkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJsZW4oaHRt
bCkgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNl
aXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVuKGh0bWwpXV07
Ci0gICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwotICAgICAgICB9OwogICAgICAgICBOU1N0
cmluZyAqcGF0aCA9IHRhc2sucmVxdWVzdC5VUkwucGF0aDsKICAgICAgICAgaWYgKFtwYXRoIGlz
RXF1YWxUb1N0cmluZzpAIi9jaGVja1dlYlNvY2tldC5odG1sIl0pCi0gICAgICAgICAgICByZXR1
cm4gcmVzcG9uZChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+dmFyIHdzID0g
bmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6JWQvdGVzdCcpO3dzLm9ub3Blbj0oKT0+e2Fs
ZXJ0KCdvbm9wZW4nKX07d3Mub25lcnJvcj0oKT0+e2FsZXJ0KCdvbmVycm9yJyl9PC9zY3JpcHQ+
Iiwgc2VydmVyUG9ydF0uVVRGOFN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gcmVzcG9uZCh0
YXNrLCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+dmFyIHdzID0gbmV3IFdl
YlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6JWQvdGVzdCcpO3dzLm9ub3Blbj0oKT0+e2FsZXJ0KCdv
bm9wZW4nKX07d3Mub25lcnJvcj0oKT0+e2FsZXJ0KCdvbmVycm9yJyl9PC9zY3JpcHQ+Iiwgc2Vy
dmVyUG9ydF0uVVRGOFN0cmluZyk7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCIvY2hlY2tGZXRjaC5odG1sIl0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiPHNjcmlw
dD5mZXRjaCgndGVzdDovLy9mZXRjaENvbnRlbnQnKS50aGVuKCgpPT57YWxlcnQoJ2ZldGNoZWQn
KX0pLmNhdGNoKCgpPT57YWxlcnQoJ2RpZCBub3QgZmV0Y2gnKX0pPC9zY3JpcHQ+Iik7CisgICAg
ICAgICAgICByZXR1cm4gcmVzcG9uZCh0YXNrLCAiPHNjcmlwdD5mZXRjaCgndGVzdDovLy9mZXRj
aENvbnRlbnQnKS50aGVuKCgpPT57YWxlcnQoJ2ZldGNoZWQnKX0pLmNhdGNoKCgpPT57YWxlcnQo
J2RpZCBub3QgZmV0Y2gnKX0pPC9zY3JpcHQ+Iik7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvZmV0Y2hDb250ZW50Il0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgi
aGVsbG8iKTsKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICJoZWxsbyIpOwogICAg
ICAgICBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NoZWNrWEhSLmh0bWwiXSkKLSAgICAg
ICAgICAgIHJldHVybiByZXNwb25kKCI8c2NyaXB0PnZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTt4aHIub3BlbignR0VUJywgJ3Rlc3Q6Ly8vZmV0Y2hDb250ZW50Jyk7eGhyLm9ucmVhZHlz
dGF0ZWNoYW5nZT0oKT0+e2lmKHhoci5yZWFkeVN0YXRlPT00KXtzZXRUaW1lb3V0KCgpPT57YWxl
cnQoJ3hociBmaW5pc2hlZCcpfSwgMCl9fTt4aHIub25lcnJvcj0oKT0+e2FsZXJ0KCd4aHIgZXJy
b3InKX07eGhyLnNlbmQoKTwvc2NyaXB0PiIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQo
dGFzaywgIjxzY3JpcHQ+dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdH
RVQnLCAndGVzdDovLy9mZXRjaENvbnRlbnQnKTt4aHIub25yZWFkeXN0YXRlY2hhbmdlPSgpPT57
aWYoeGhyLnJlYWR5U3RhdGU9PTQpe3NldFRpbWVvdXQoKCk9PnthbGVydCgneGhyIGZpbmlzaGVk
Jyl9LCAwKX19O3hoci5vbmVycm9yPSgpPT57YWxlcnQoJ3hociBlcnJvcicpfTt4aHIuc2VuZCgp
PC9zY3JpcHQ+Iik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKQEAg
LTI4MCwyMSArMjgyLDE1IEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBUaGlyZFBhcnR5KQogewog
ICAgIGF1dG8gaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFz
ZV07CiAgICAgaGFuZGxlci5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcg
KiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7Ci0gICAgICAgIGF1dG8gcmVzcG9uZCA9IFt0
YXNrXSAoY29uc3QgY2hhciogaHRtbCkgewotICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RybGVuKGh0
bWwpIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1d
OwotICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKLSAgICAgICAgfTsKICAgICAgICAgTlNT
dHJpbmcgKnBhdGggPSB0YXNrLnJlcXVlc3QuVVJMLnBhdGg7CiAgICAgICAgIGlmIChbcGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKLSAgICAgICAgICAgIHJldHVybiByZXNw
b25kKCI8c2NyaXB0PiIKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICI8c2NyaXB0
PiIKICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gdGVzdFdlYktpdCgpIHsgZmV0Y2goJ3Rlc3Q6
Ly93ZWJraXQub3JnL3Jlc291cmNlLnR4dCcsIHttb2RlOiduby1jb3JzJ30pLnRoZW4oKCk9Pnth
bGVydCgnd2Via2l0Lm9yZyBsb2FkZWQnKTt9KS5jYXRjaCgoKT0+e2FsZXJ0KCd3ZWJraXQub3Jn
IGJsb2NrZWQnKTt9KSB9OyIKICAgICAgICAgICAgICAgICAiZmV0Y2goJ3Rlc3Q6Ly9zdWIuZXhh
bXBsZS5jb20vcmVzb3VyY2UudHh0Jywge21vZGU6J25vLWNvcnMnfSkudGhlbigoKT0+e2FsZXJ0
KCdzdWIuZXhhbXBsZS5jb20gbG9hZGVkJyk7dGVzdFdlYktpdCgpO30pLmNhdGNoKCgpPT57YWxl
cnQoJ3N1Yi5leGFtcGxlLmNvbSBibG9ja2VkJyk7dGVzdFdlYktpdCgpO30pIgogICAgICAgICAg
ICAgIjwvc2NyaXB0PiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCIvcmVzb3VyY2UudHh0Il0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiaGki
KTsKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICJoaSIpOwogCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CkBAIC0zNTQsMzAgKzM1MCwyNCBAQCBURVNUKENv
bnRlbnRSdWxlTGlzdCwgVG9wRnJhbWVDaGlsZEZyYW1lKQogICAgIGF1dG8gaGFuZGxlciA9IFtb
VGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFzZV07CiAgICAgX19ibG9jayBib29s
IGxvYWRlZElGcmFtZSA9IGZhbHNlOwogICAgIGhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFu
ZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewotICAgICAg
ICBhdXRvIHJlc3BvbmQgPSBbdGFza10gKGNvbnN0IGNoYXIqIGh0bWwpIHsKLSAgICAgICAgICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOnN0cmxlbihodG1sKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2Vd
OwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlXTsKLSAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1sIGxl
bmd0aDpzdHJsZW4oaHRtbCldXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07Ci0gICAg
ICAgIH07CiAgICAgICAgIE5TU3RyaW5nICpwYXRoID0gdGFzay5yZXF1ZXN0LlVSTC5wYXRoOwog
ICAgICAgICBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3BvbmQoIjxpZnJhbWUgc3JjPSdmcmFtZS5odG1sJz48L2lmcmFtZT4i
KTsKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICI8aWZyYW1lIHNyYz0nZnJhbWUu
aHRtbCc+PC9pZnJhbWU+Iik7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIv
ZnJhbWUuaHRtbCJdKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UobG9hZGVkSUZyYW1lKTsK
ICAgICAgICAgICAgIGxvYWRlZElGcmFtZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVz
cG9uZCgiaGkiKTsKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICJoaSIpOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hfbWFpbi5o
dG1sIl0pIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25kKCI8c2NyaXB0PiIKKyAgICAgICAg
ICAgIHJldHVybiByZXNwb25kKHRhc2ssICI8c2NyaXB0PiIKICAgICAgICAgICAgICAgICAiZnVu
Y3Rpb24gYWRkaWZyYW1lKCkgeyB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
aWZyYW1lJyk7IGlmcmFtZS5zcmMgPSAnZmV0Y2hfaWZyYW1lLmh0bWwnOyBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGlmcmFtZSk7IH07IgogICAgICAgICAgICAgICAgICJmdW5jdGlvbiB0ZXN0
ZmV0Y2goKSB7IGZldGNoKCcvZmV0Y2hlZC50eHQnKS50aGVuKCgpPT57YWxlcnQoJ21haW4gZnJh
bWUgZmV0Y2hlZCBzdWNjZXNzZnVsbHknKTthZGRpZnJhbWUoKX0pLmNhdGNoKCgpPT57YWxlcnQo
J21haW4gZnJhbWUgZmV0Y2ggZmFpbGVkJyk7YWRkaWZyYW1lKCk7fSkgfSIKICAgICAgICAgICAg
ICAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSd0ZXN0ZmV0Y2goKScvPiIpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hlZC50eHQiXSkKLSAg
ICAgICAgICAgIHJldHVybiByZXNwb25kKCJoaSIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Bv
bmQodGFzaywgImhpIik7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0
Y2hfaWZyYW1lLmh0bWwiXSkgewotICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQoIjxzY3JpcHQ+
IgorICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQodGFzaywgIjxzY3JpcHQ+IgogICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiB0ZXN0ZmV0Y2goKSB7IGZldGNoKCcvZmV0Y2hlZC50eHQnKS50aGVu
KCgpPT57YWxlcnQoJ2lmcmFtZSBmZXRjaGVkIHN1Y2Nlc3NmdWxseScpfSkuY2F0Y2goKCk9Pnth
bGVydCgnaWZyYW1lIGZldGNoIGZhaWxlZCcpO30pIH0iCiAgICAgICAgICAgICAgICAgIjwvc2Ny
aXB0Pjxib2R5IG9ubG9hZD0ndGVzdGZldGNoKCknLz4iKTsKICAgICAgICAgfQpAQCAtNDIwLDYg
KzQxMCw4NCBAQCBURVNUKENvbnRlbnRSdWxlTGlzdCwgVG9wRnJhbWVDaGlsZEZyYW1lKQogICAg
IEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiaWZyYW1lIGZl
dGNoZWQgc3VjY2Vzc2Z1bGx5Iik7CiB9CiAKK1RFU1QoQ29udGVudFJ1bGVMaXN0LCBMZWdhY3lW
ZXJzaW9uQW5kTmFtZSkKK3sKKyAgICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gW05TVGVtcG9yYXJ5
RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudFJ1bGVM
aXN0VGVzdERpcmVjdG9yeSJdOworICAgIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUgKnN0b3JlID0g
W1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6ZGlyZWN0b3J5XV07CisgICAgCisgICAgYXV0byBoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1l
SGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBoYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFz
a0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAg
ICAgICAgcmVzcG9uZCh0YXNrLCAiaGkiKTsKKyAgICB9OworCisgICAgYXV0byBzZXR1cExlZ2Fj
eUNvbnRlbnRSdWxlTGlzdCA9IFtkaXJlY3RvcnldIHsKKyAgICAgICAgLy8gQ29tcGlsZWQgd2l0
aCBDdXJyZW50Q29udGVudFJ1bGVMaXN0RmlsZVZlcnNpb24gPSAxMAorICAgICAgICBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIDE2Mz4gb2xkVmVyc2lvbkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0IHsKKyAg
ICAgICAgICAgIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2UsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAg
ICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDJhLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAgICAg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgICAgIDB4MDEs
IDB4NWIsIDB4N2IsIDB4MjIsIDB4NjEsIDB4NjMsIDB4NzQsIDB4NjksIDB4NmYsIDB4NmUsIDB4
MjIsIDB4M2EsIDB4N2IsIDB4MjIsIDB4NzQsIDB4NzksCisgICAgICAgICAgICAweDcwLCAweDY1
LCAweDIyLCAweDNhLCAweDIyLCAweDYyLCAweDZjLCAweDZmLCAweDYzLCAweDZiLCAweDIyLCAw
eDdkLCAweDJjLCAweDIyLCAweDc0LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg2NywgMHg2
NywgMHg2NSwgMHg3MiwgMHgyMiwgMHgzYSwgMHg3YiwgMHgyMiwgMHg3NSwgMHg3MiwgMHg2Yywg
MHgyZCwgMHg2NiwgMHg2OSwgMHg2YywKKyAgICAgICAgICAgIDB4NzQsIDB4NjUsIDB4NzIsIDB4
MjIsIDB4M2EsIDB4MjIsIDB4NzQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MjIsIDB4N2QsIDB4N2Qs
IDB4NWQsIDB4MDAsIDB4MmEsCisgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDEwLCAw
eDc0LCAweDA1LCAweDFiLCAweGZkLCAweDEwLCAweDY1LCAweDA4LCAweDEwLCAweDc0LCAweGZk
LCAweDFiLCAweGY1LAorICAgICAgICAgICAgMHgxMiwgMHg3MywgMHg3NCwgMHgwNywgMHhmOCwg
MHgxYiwgMHhlZSwgMHgxMCwgMHg3NCwgMHgwNSwgMHgxYiwgMHhlOSwgMHgwNiwgMHgwMCwgMHgw
MCwgMHgwMCwKKyAgICAgICAgICAgIDB4MDAsIDB4MTAsIDB4NjUsIDB4ZWYsIDB4MTAsIDB4NzQs
IDB4ZTQsIDB4MWIsIDB4ZGMsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MDUsIDB4
MDAsCisgICAgICAgICAgICAweDAwLCAweDAwLCAweDBhCisgICAgICAgIH07CisgICAgICAgIE5T
RGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpvbGRWZXJzaW9uQ29tcGlsZWRDb250
ZW50UnVsZUxpc3QuZGF0YSgpIGxlbmd0aDpvbGRWZXJzaW9uQ29tcGlsZWRDb250ZW50UnVsZUxp
c3Quc2l6ZSgpXTsKKyAgICAgICAgW2RhdGEgd3JpdGVUb0ZpbGU6W2RpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50RXh0ZW5zaW9uLXRlc3QiXSBhdG9taWNh
bGx5OllFU107CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3Zl
SXRlbUF0UGF0aDpbZGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNv
bnRlbnRSdWxlTGlzdC10ZXN0Il0gZXJyb3I6bmlsXTsKKyAgICB9OworICAgIAorICAgIGF1dG8g
bGVnYWN5RmlsZUV4aXN0cyA9IFtkaXJlY3RvcnldIHsKKyAgICAgICAgcmV0dXJuIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbZGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdC10ZXN0Il1dOworICAg
IH07CisKKyAgICBzZXR1cExlZ2FjeUNvbnRlbnRSdWxlTGlzdCgpOworICAgIF9fYmxvY2sgUmV0
YWluUHRyPFdLQ29udGVudFJ1bGVMaXN0PiByZXRhaW5lZExpc3Q7CisgICAgW3N0b3JlIGxvb2tV
cENvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6QCJ0ZXN0IiBjb21wbGV0aW9uSGFuZGxlcjpe
KFdLQ29udGVudFJ1bGVMaXN0ICpsaXN0LCBOU0Vycm9yICopIHsKKyAgICAgICAgcmV0YWluZWRM
aXN0ID0gbGlzdDsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkTGlzdCkKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRl
c3QiXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIgZm9y
VVJMU2NoZW1lOkAic2NoZW1lIl07CisgICAgY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
ID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldy5j
b25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRDb250ZW50UnVsZUxpc3Q6cmV0
YWluZWRMaXN0LmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic2NoZW1lOi8vLyJdXV07Cisg
ICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJ0ZXN0Oi8vLyJdXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworCisgICAgc2V0dXBMZWdhY3lDb250ZW50UnVsZUxp
c3QoKTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVtb3ZlZCA9IGZhbHNlOworICAgIFtzdG9yZSByZW1v
dmVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOkAidGVzdCIgY29tcGxldGlvbkhhbmRsZXI6
XihOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IEVYUEVDVF9GQUxTRShsZWdhY3lGaWxlRXhpc3RzKCkpOworICAgICAgICByZW1vdmVkID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWQpOworICAg
IAorICAgIHNldHVwTGVnYWN5Q29udGVudFJ1bGVMaXN0KCk7CisgICAgX19ibG9jayBib29sIGZv
dW5kQXZhaWxhYmxlID0gZmFsc2U7CisgICAgW3N0b3JlIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxl
TGlzdElkZW50aWZpZXJzOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqaWRlbnRpZmllcnMpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGlkZW50aWZpZXJzLmNvdW50LCAxdSk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShpZGVudGlmaWVyc1swXSwgQCJ0ZXN0Iik7CisgICAgICAgIGZvdW5kQXZhaWxhYmxl
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWQp
OworCisgICAgX19ibG9jayBib29sIGdvdFNvdXJjZSA9IGZhbHNlOworICAgIFtzdG9yZSBfZ2V0
Q29udGVudFJ1bGVMaXN0U291cmNlRm9ySWRlbnRpZmllcjpAInRlc3QiIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNTdHJpbmcgKnNvdXJjZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc291cmNl
LCAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcInRlc3RcIn19XSIpOworICAgICAgICBnb3RTb3VyY2UgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290U291cmNlKTsKK30KKwogI2lmIEhB
VkUoU1NMKQogCiBURVNUKFdlYktpdCwgUmVkaXJlY3RUb1BsYWludGV4dEhUVFBTVXBncmFkZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgKaW5kZXggOWJkMTZiOTFhYTcwYTYwYWI1ZDE5MWFlZTk4ZTI4YzM2NzI4MmMyYi4uZjhjMDJm
OWJlMTFmMDBmMzZlYzlhZjMyNzI5ZjIzZTYwZGUxZWQyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgKQEAgLTUxLDUgKzUxLDYg
QEAKIC0gKHZvaWQpX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247CiAtICh2b2lkKV90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uV2l0aFByZWZlcmVuY2VzOihXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzOwogLSAodm9pZClfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbldpdGhvdXRQcmVzZW50YXRpb25VcGRhdGU7CistICh2b2lkKV90ZXN0X3dhaXRG
b3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwogLSAodm9pZClfdGVzdF93YWl0Rm9yV2Vi
Q29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGU7CiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KaW5kZXggYjhmZThjODAyM2Vj
MDQ5OTI0Y2Y1YjdiOGUwYmUyMDdhNTBiM2FmYS4uYmE5MjZjNjZlNmEzODA0NmVkNGVkNTk1YjBl
ZDBlZDdlNWJkY2IzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQpAQCAtMTg0LDYgKzE4NCwxNyBAQAogICAgIHNlbGYubmF2
aWdhdGlvbkRlbGVnYXRlID0gbmlsOwogfQogCistICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYubmF2aWdhdGlv
bkRlbGVnYXRlKTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBzZWxmLm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKworICAgIHNlbGYubmF2
aWdhdGlvbkRlbGVnYXRlID0gbmlsOworfQorCiAtICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uV2l0aG91dFByZXNlbnRhdGlvblVwZGF0ZQogewogICAgIEVYUEVDVF9GQUxT
RShzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424539</attachid>
            <date>2021-03-29 09:57:55 -0700</date>
            <delta_ts>2021-03-29 10:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223831-20210329095755.patch</filename>
            <type>text/plain</type>
            <size>42985</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkMWE3NGM0ZTczMDZhNDk3
ZTBlNmNiZWE1MWYwYzhmMjAxNDViYjcuLjY1MTlhYTA1NDYwOTczYjNlZTZiZjQ0NGUyOTMwZjIz
N2JhOWRhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjEtMDMtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNaWdyYXRlIF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uIGFuZCBvbGRlciB2ZXJzaW9ucyBvZiBXS0NvbnRlbnRSdWxl
TGlzdCB0byBXS0NvbnRlbnRSdWxlTGlzdCBkdXJpbmcgbG9va3VwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjc1MDc4IGluY3JlbWVudGVkIEN1cnJl
bnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbiBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gYSBmZXcg
eWVhcnMuCisgICAgICAgIEFzIGEgcmVzdWx0LCB3ZSB3aWxsIGdldCBhIFdLRXJyb3JDb250ZW50
UnVsZUxpc3RTdG9yZVZlcnNpb25NaXNtYXRjaCBkdXJpbmcgbG9va3VwIGZvciBleGlzdGluZyBj
b21waWxlZCBXS0NvbnRlbnRSdWxlTGlzdHMuCisgICAgICAgIFRvIG1ha2UgdGhpcyBhcyBjb21w
YXRpYmxlIGFzIHBvc3NpYmxlLCBpZiB3ZSBzZWUgc3VjaCBhIFdLQ29udGVudFJ1bGVMaXN0LCB0
cnkgZXh0cmFjdGluZyBpdHMgc291cmNlIGFuZCByZWNvbXBpbGluZy4KKworICAgICAgICBBbHNv
LCBfV0tVc2VyQ29udGVudEV4dGVuc2lvbiBpcyB1c2VkIGJ5IFNhZmFyaSBhbmQgYmVpbmcgbWln
cmF0ZWQgZnJvbSBpbiByZGFyOi8vNzU4ODk0MTQuCisgICAgICAgIFRvIG1ha2UgdGhpcyBzdWNj
ZWVkIGFuZCBub3QgbGVhdmUgYW55IGZpbGVzIGJlaGluZCwgd2UgbW92ZSBsZWdhY3kgZmlsZXMg
dG8gbW9kZXJuIGZpbGVuYW1lcyBkdXJpbmcgbG9va3VwLgorICAgICAgICBXZSBhbHNvIHJlbW92
ZSB0aGVtIGlmIHRoZXkncmUgdGhlcmUgd2hlbiByZW1vdmluZyB0aGUgV0tDb250ZW50UnVsZUxp
c3QgZnJvbSB0aGUgV0tDb250ZW50UnVsZUxpc3RTdG9yZSwKKyAgICAgICAgYW5kIHdlIGluY2x1
ZGUgdGhlbSBpbiBnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycy4gIGNvbXBp
bGVDb250ZW50UnVsZUxpc3Qgb25seSBjb21waWxlcyB0byB0aGUgbW9kZXJuIGxvY2F0aW9ucywK
KyAgICAgICAgYW5kIGludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uIGlzIG9ubHkgdXNl
ZCBmb3IgdGVzdHMuICBBbGwgdGhpcyBpcyBkb25lIG9uIG5vbi1tYWluIFdvcmtRdWV1ZXMsIHNv
IHRoZSBmZXcgYWRkaXRpb25hbAorICAgICAgICBmaWxlIHJlYWRzL3dyaXRlcyBhcmVuJ3QgYW4g
aXNzdWUuCisKKyAgICAgICAgTHVja2lseSwgX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSB3
YXMgb25seSB1c2VkIGJ5IFNhZmFyaSwgYW5kIGl0cyBkZWZhdWx0U3RvcmUgd2FzIG5ldmVyIHVz
ZWQuCisKKyAgICAgICAgQWxsIHRoaXMgaXMgY292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZSk6CisgICAgICAgIChBUEk6
OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKToKKyAgICAgICAgKEFQSTo6Q29u
dGVudFJ1bGVMaXN0U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKToKKyAgICAgICAgKEFQSTo6
b3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OmdldENvbnRlbnRSdWxl
TGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0
U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxl
TGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyk6CisgICAg
ICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KToK
KyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlz
dCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVu
dFJ1bGVMaXN0VmVyc2lvbik6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpn
ZXRDb250ZW50UnVsZUxpc3RTb3VyY2UpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6bGVnYWN5RGVmYXVsdFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6Q29udGVu
dFJ1bGVMaXN0U3RvcmU6Om5vbkxlZ2FjeURlZmF1bHRTdG9yZSk6IERlbGV0ZWQuCisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjp+Q29udGVudFJ1bGVMaXN0U3RvcmUpOiBEZWxl
dGVkLgorICAgICAgICAoQVBJOjpvcGVuQW5kTWFwT3JDb3B5Q29udGVudFJ1bGVMaXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJl
Zi5jcHA6CisgICAgICAgIChXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVDcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5t
bToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5t
bToKKyAgICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBkZWZhdWx0U3RvcmVdKToKKyAg
ICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkw6XSk6CisgICAgICAg
ICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgZGVmYXVsdFN0b3JlV2l0aExlZ2FjeUZpbGVuYW1l
XSk6CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRoVVJMQW5kTGVn
YWN5RmlsZW5hbWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlUHJpdmF0ZS5oOgorCiAyMDIxLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgV0tDb250ZW50UnVsZUxp
c3QgdG8gYmxvY2sgb25seSBpbiBmcmFtZXMgb3Igb25seSBpbiBtYWluIGZyYW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAppbmRleCA5MzBiMTdmM2UxOTQ2ZmQ1ZWFhMmZjN2Q5NmFlNzNhMzBhMTE4NGMxLi5jMGY4
NGE5NzRhN2U5ODRmOTY1YmE1YzE5NmQ0YjUwOWY4OGM5ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAg
LTUyLDUxICs1MiwzNCBAQCBuYW1lc3BhY2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTsKIHVzaW5nIG5hbWVzcGFjZSBGaWxlU3lzdGVtOwogCi1Db250ZW50UnVs
ZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmxlZ2FjeURlZmF1bHRTdG9yZSgpCitD
b250ZW50UnVsZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZSgp
CiB7Ci0gICAgY29uc3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IHRydWU7Ci0gICAgc3RhdGljIENv
bnRlbnRSdWxlTGlzdFN0b3JlKiBkZWZhdWx0U3RvcmUgPSBhZG9wdFJlZihuZXcgQ29udGVudFJ1
bGVMaXN0U3RvcmUobGVnYWN5RmlsZW5hbWUpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRl
bnRSdWxlTGlzdFN0b3JlKiBkZWZhdWx0U3RvcmUgPSBhZG9wdFJlZihuZXcgQ29udGVudFJ1bGVM
aXN0U3RvcmUoKSkubGVha1JlZigpOwogICAgIHJldHVybiAqZGVmYXVsdFN0b3JlOwogfQotICAg
IAotQ29udGVudFJ1bGVMaXN0U3RvcmUmIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpub25MZWdhY3lE
ZWZhdWx0U3RvcmUoKQotewotICAgIGNvbnN0IGJvb2wgbGVnYWN5RmlsZW5hbWUgPSBmYWxzZTsK
LSAgICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUqIGRlZmF1bHRTdG9yZSA9IGFkb3B0UmVm
KG5ldyBDb250ZW50UnVsZUxpc3RTdG9yZShsZWdhY3lGaWxlbmFtZSkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gKmRlZmF1bHRTdG9yZTsKLX0KLSAgICAKLUNvbnRlbnRSdWxlTGlzdFN0b3JlJiBD
b250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlKGJvb2wgbGVnYWN5RmlsZW5hbWUpCi17
Ci0gICAgaWYgKGxlZ2FjeUZpbGVuYW1lKQotICAgICAgICByZXR1cm4gbGVnYWN5RGVmYXVsdFN0
b3JlKCk7Ci0gICAgcmV0dXJuIG5vbkxlZ2FjeURlZmF1bHRTdG9yZSgpOwotfQogCi1SZWY8Q29u
dGVudFJ1bGVMaXN0U3RvcmU+IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgsIGJvb2wgbGVnYWN5RmlsZW5hbWUpCitSZWY8Q29u
dGVudFJ1bGVMaXN0U3RvcmU+IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGVudFJ1bGVMaXN0U3RvcmUoc3RvcmVQYXRoLCBsZWdhY3lGaWxlbmFtZSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRlbnRSdWxlTGlzdFN0b3JlKHN0b3JlUGF0aCkpOwogfQog
Ci1Db250ZW50UnVsZUxpc3RTdG9yZTo6Q29udGVudFJ1bGVMaXN0U3RvcmUoYm9vbCBsZWdhY3lG
aWxlbmFtZSkKLSAgICA6IENvbnRlbnRSdWxlTGlzdFN0b3JlKGRlZmF1bHRTdG9yZVBhdGgobGVn
YWN5RmlsZW5hbWUpLCBsZWdhY3lGaWxlbmFtZSkKK0NvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250
ZW50UnVsZUxpc3RTdG9yZSgpCisgICAgOiBDb250ZW50UnVsZUxpc3RTdG9yZShkZWZhdWx0U3Rv
cmVQYXRoKCkpCiB7CiB9CiAKLUNvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250ZW50UnVsZUxpc3RT
dG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKQor
Q29udGVudFJ1bGVMaXN0U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3Ry
aW5nJiBzdG9yZVBhdGgpCiAgICAgOiBtX3N0b3JlUGF0aChzdG9yZVBhdGgpCiAgICAgLCBtX2Nv
bXBpbGVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3RvcmUgQ29tcGls
ZSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6Q29uY3VycmVudCkpCiAgICAgLCBtX3JlYWRRdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3RvcmUgUmVhZCBRdWV1ZSIpKQog
ICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3Rv
cmUgUmVtb3ZlIFF1ZXVlIikpCi0gICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVuYW1l
KQogewogICAgIG1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCi1Db250ZW50UnVs
ZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKLXsKLX0KK0NvbnRlbnRSdWxlTGlz
dFN0b3JlOjp+Q29udGVudFJ1bGVMaXN0U3RvcmUoKSA9IGRlZmF1bHQ7CiAKKy8vIEZJWE1FOiBS
ZW1vdmUgbGVnYWN5RmlsZW5hbWUgaW4gMjAyMiBvciAyMDIzIGFmdGVyIHVzZXJzIGhhdmUgaGFk
IGEgY2hhbmNlIHRvIHJ1biB0aGUgdXBkYXRpbmcgbG9naWMuCiBzdGF0aWMgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnN0cnVjdGVkUGF0aFByZWZpeChib29sIGxlZ2FjeUZpbGVuYW1lKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gcHJlZml4KCJDb250ZW50UnVsZUxp
c3QtIik7CkBAIC0yMzUsNyArMjE4LDcgQEAgc3RydWN0IE1hcHBlZERhdGEgewogICAgIFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhIGRhdGE7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8TWFwcGVk
RGF0YT4gb3BlbkFuZE1hcE9yQ29weUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
cGF0aCkKK3N0YXRpYyBPcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVM
aXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQogewogICAgIEZpbGVTeXN0ZW06Om1ha2VTYWZl
VG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOwogICAgIFdlYktpdDo6TmV0d29ya0NhY2hlOjpE
YXRhIGZpbGVEYXRhID0gbWFwRmlsZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpKTsKQEAgLTQ1MSwxMiArNDM0LDQyIEBAIHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxp
c3Q+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBy
ZXR1cm4gQVBJOjpDb250ZW50UnVsZUxpc3Q6OmNyZWF0ZShpZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0KSwgV1RGTW92ZShkYXRhLmRhdGEpKTsKIH0KIAorc3RhdGlj
IFdURjo6U3RyaW5nIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKGNvbnN0
IE1hcHBlZERhdGEmIG1hcHBlZERhdGEpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBzd2l0Y2ggKG1hcHBlZERhdGEubWV0YURhdGEudmVyc2lvbikgeworICAgIGNh
c2UgOToKKyAgICBjYXNlIDEwOgorICAgIGNhc2UgMTE6CisgICAgICAgIGlmICghbWFwcGVkRGF0
YS5tZXRhRGF0YS5zb3VyY2VTaXplKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
Ym9vbCBpczhCaXQgPSBtYXBwZWREYXRhLmRhdGEuZGF0YSgpW0NvbnRlbnRSdWxlTGlzdEZpbGVI
ZWFkZXJTaXplXTsKKyAgICAgICAgc2l6ZV90IHN0YXJ0ID0gQ29udGVudFJ1bGVMaXN0RmlsZUhl
YWRlclNpemUgKyBzaXplb2YoYm9vbCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBtYXBwZWRE
YXRhLm1ldGFEYXRhLnNvdXJjZVNpemUgLSBzaXplb2YoYm9vbCk7CisgICAgICAgIGlmIChpczhC
aXQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpTdHJpbmcobWFwcGVkRGF0YS5kYXRhLmRhdGEo
KSArIHN0YXJ0LCBsZW5ndGgpOworICAgICAgICBpZiAobGVuZ3RoICUgc2l6ZW9mKFVDaGFyKSkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBXVEY6OlN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4obWFwcGVkRGF0YS5kYXRhLmRhdGEoKSArIHN0YXJ0KSwgbGVuZ3Ro
IC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgfQorCisgICAgLy8gT2xkZXIgdmVyc2lvbnMgY2Fubm90
IHJlY292ZXIgdGhlIG9yaWdpbmFsIEpTT04gc291cmNlIGZyb20gZGlzay4KKyAgICByZXR1cm4g
eyB9OworfQorCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxp
c3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBz
dG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBt
X2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgo
c3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7Ci0gICAgICAgIAotICAgICAg
ICBhdXRvIGNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRNYXBPckNvcHlDb250ZW50UnVsZUxpc3Qo
cGF0aCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1ZS0+
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRo
LCBpZGVudGlmaWVyLCBmYWxzZSk7CisgICAgICAgIGF1dG8gbGVnYWN5UGF0aCA9IGNvbnN0cnVj
dGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIHRydWUpOworICAgICAgICBpZiAoZmlsZUV4
aXN0cyhsZWdhY3lQYXRoKSkKKyAgICAgICAgICAgIG1vdmVGaWxlKGxlZ2FjeVBhdGgsIHBhdGgp
OworCisgICAgICAgIGF1dG8gY29udGVudFJ1bGVMaXN0ID0gb3BlbkFuZE1hcENvbnRlbnRSdWxl
TGlzdChwYXRoKTsKICAgICAgICAgaWYgKCFjb250ZW50UnVsZUxpc3QpIHsKICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIs
IEVycm9yOjpMb29rdXBGYWlsZWQpOwpAQCAtNDY1LDYgKzQ3OCwxMiBAQCB2b2lkIENvbnRlbnRS
dWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChjb250ZW50UnVsZUxp
c3QtPm1ldGFEYXRhLnZlcnNpb24gIT0gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkN1cnJlbnRDb250
ZW50UnVsZUxpc3RGaWxlVmVyc2lvbikgeworICAgICAgICAgICAgaWYgKGF1dG8gc291cmNlRnJv
bU9sZFZlcnNpb24gPSBnZXRDb250ZW50UnVsZUxpc3RTb3VyY2VGcm9tTWFwcGVkRmlsZSgqY29u
dGVudFJ1bGVMaXN0KTsgIXNvdXJjZUZyb21PbGRWZXJzaW9uLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHNvdXJjZUZyb21PbGRWZXJzaW9uID0gc291cmNlRnJvbU9sZFZl
cnNpb24uaXNvbGF0ZWRDb3B5KCksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29tcGlsZUNvbnRl
bnRSdWxlTGlzdChpZGVudGlmaWVyLCBXVEZNb3ZlKHNvdXJjZUZyb21PbGRWZXJzaW9uKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIEVycm9yOjpWZXJzaW9u
TWlzbWF0Y2gpOwogICAgICAgICAgICAgfSk7CkBAIC00NzksMTQgKzQ5OCwxOSBAQCB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsCiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJs
ZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9yZWFkUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JlUGF0aCA9
IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5Rmls
ZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmVQYXRoID0g
bV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAKLSAgICAgICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBmdWxsUGF0aHMgPSBsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRo
RmlsdGVyKGxlZ2FjeUZpbGVuYW1lKSk7CisgICAgICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gZnVs
bFBhdGhzID0gbGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihm
YWxzZSkpOworICAgICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2FjeUZ1bGxQYXRocyA9IGxp
c3REaXJlY3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIodHJ1ZSkpOwogICAg
ICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGlkZW50aWZpZXJzOwotICAgICAgICBpZGVudGlmaWVy
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bGxQYXRocy5zaXplKCkpOwotICAgICAgICBjb25z
dCBhdXRvIHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFt
ZSkubGVuZ3RoKCk7CisgICAgICAgIGlkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
ZnVsbFBhdGhzLnNpemUoKSArIGxlZ2FjeUZ1bGxQYXRocy5zaXplKCkpOworICAgICAgICBjb25z
dCBhdXRvIHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChmYWxzZSkubGVuZ3Ro
KCk7CisgICAgICAgIGNvbnN0IGF1dG8gbGVnYWN5UHJlZml4TGVuZ3RoID0gY29uc3RydWN0ZWRQ
YXRoUHJlZml4KHRydWUpLmxlbmd0aCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBmdWxsUGF0aHMpCiAgICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoZGVj
b2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEg
KyBwcmVmaXhMZW5ndGgpKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGxlZ2Fj
eUZ1bGxQYXRocykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChkZWNv
ZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSAr
IGxlZ2FjeVByZWZpeExlbmd0aCkpKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IFdURk1vdmUo
aWRlbnRpZmllcnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShpZGVudGlmaWVycykpOwpAQCAtNDk2LDYgKzUyMCw3IEBAIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBs
ZXRpb25IYW5kCiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVs
ZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6
OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKICAgICBXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lOjppbml0KCk7CiAgICAgCkBAIC01MDMsOCArNTI4LDggQEAgdm9pZCBDb250ZW50UnVs
ZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwKICAgICBpZiAoIXBhcnNlZFJ1bGVzLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgcGFyc2VkUnVsZXMuZXJyb3IoKSk7CiAgICAg
Ci0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxl
bmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJz
ZWRSdWxlcyA9IHBhcnNlZFJ1bGVzLnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9
IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBwYXRoID0gY29u
c3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOworICAg
IG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9IGpzb24uaXNv
bGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFsdWUoKS5pc29sYXRlZENv
cHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAg
ICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBmYWxz
ZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24p
LCBXVEZNb3ZlKHBhcnNlZFJ1bGVzKSwgcGF0aCk7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192
YWx1ZSgpKSB7CkBAIC01MjMsMTkgKzU0OCwyMSBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAog
CiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjplcnJv
cl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcGF0
aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1l
KTsKLQotICAgICAgICBpZiAoIWRlbGV0ZUZpbGUocGF0aCkpIHsKLSAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEVycm9yOjpSZW1vdmVG
YWlsZWQpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9yZW1vdmVRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShzdGQ6OmVycm9yX2NvZGUgZXJyb3IpIG11dGFibGUgeworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH07CisgICAgICAgIGlmIChhdXRvIGxlZ2FjeVBhdGggPSBjb25zdHJ1
Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCB0cnVlKTsgZmlsZUV4aXN0cyhsZWdhY3lQ
YXRoKSkgeworICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGxlZ2FjeVBhdGgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0ZShFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0ZSh7IH0pOwogICAgICAgICB9Ci0KLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICB9KTsKKyAg
ICAgICAgaWYgKGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZp
ZXIsIGZhbHNlKTsgIWRlbGV0ZUZpbGUocGF0aCkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGUoRXJyb3I6OlJlbW92ZUZhaWxlZCk7CisgICAgICAgIGNvbXBsZXRlKHsgfSk7CiAgICAgfSk7
CiB9CiAKQEAgLTU0Nyw3ICs1NzQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzeW5j
aHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogCiB2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGZpbGUgPSBvcGVuRmlsZShjb25zdHJ1Y3RlZFBh
dGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBGaWxlT3Blbk1v
ZGU6OldyaXRlKTsKKyAgICBhdXRvIGZpbGUgPSBvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9z
dG9yZVBhdGgsIGlkZW50aWZpZXIsIGZhbHNlKSwgRmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAg
aWYgKGZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwg
MCwgMH07CkBAIC01NTgsNDMgKzU4NSwyMiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpp
bnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQogCiB2
b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJp
bmcpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdh
Y3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcGF0aCA9IGNv
bnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKLSAg
ICAgICAgCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1ZS0+
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShXVEY6OlN0cmluZyBzb3VyY2UpIG11dGFibGUgewogICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc291
cmNlID0gc291cmNlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzb3VyY2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH07
CiAKLSAgICAgICAgYXV0byBjb250ZW50UnVsZUxpc3QgPSBvcGVuQW5kTWFwT3JDb3B5Q29udGVu
dFJ1bGVMaXN0KHBhdGgpOworICAgICAgICBhdXRvIGNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRN
YXBDb250ZW50UnVsZUxpc3QoY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwg
ZmFsc2UpKTsKICAgICAgICAgaWYgKCFjb250ZW50UnVsZUxpc3QpIHsKLSAgICAgICAgICAgIGNv
bXBsZXRlKHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhdXRvIGxlZ2Fj
eUNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3RydWN0ZWRQ
YXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgdHJ1ZSkpOworICAgICAgICAgICAgaWYgKCFsZWdh
Y3lDb250ZW50UnVsZUxpc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlKHsgfSk7
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGUoZ2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJv
bU1hcHBlZEZpbGUoKmxlZ2FjeUNvbnRlbnRSdWxlTGlzdCkpOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBzd2l0Y2ggKGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEudmVyc2lvbikgewot
ICAgICAgICBjYXNlIDk6Ci0gICAgICAgIGNhc2UgMTA6Ci0gICAgICAgIGNhc2UgMTE6Ci0gICAg
ICAgICAgICBpZiAoIWNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEuc291cmNlU2l6ZSkgewotICAg
ICAgICAgICAgICAgIGNvbXBsZXRlKHsgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBpczhCaXQgPSBjb250ZW50UnVsZUxpc3QtPmRh
dGEuZGF0YSgpW0NvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplXTsKLSAgICAgICAgICAgIHNp
emVfdCBzdGFydCA9IENvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplICsgc2l6ZW9mKGJvb2wp
OwotICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEu
c291cmNlU2l6ZSAtIHNpemVvZihib29sKTsKLSAgICAgICAgICAgIGlmIChpczhCaXQpCi0gICAg
ICAgICAgICAgICAgY29tcGxldGUoV1RGOjpTdHJpbmcoY29udGVudFJ1bGVMaXN0LT5kYXRhLmRh
dGEoKSArIHN0YXJ0LCBsZW5ndGgpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFTU0VSVCghKGxlbmd0aCAlIHNpemVvZihVQ2hhcikpKTsKLSAgICAgICAgICAgICAgICBj
b21wbGV0ZShXVEY6OlN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY29udGVu
dFJ1bGVMaXN0LT5kYXRhLmRhdGEoKSArIHN0YXJ0KSwgbGVuZ3RoIC8gc2l6ZW9mKFVDaGFyKSkp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gT2xkZXIgdmVyc2lvbnMgY2Fubm90IHJlY292ZXIgdGhlIG9yaWdpbmFsIEpTT04gc291
cmNlIGZyb20gZGlzay4KLSAgICAgICAgY29tcGxldGUoeyB9KTsKKyAgICAgICAgY29tcGxldGUo
Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBlZEZpbGUoKmNvbnRlbnRSdWxlTGlzdCkp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IGE3NzI0NDQzYTQ4MWU5NDI2NDY5MTgyNzU1
NWIwYjU2ZWY1ODVjNjcuLmM1MjM3NmMwMjE0ZmFmZjFlOWViZjhmM2U1OWY4YzIzYWZiM2IzOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oCkBAIC01NiwxNCArNTYsMTQgQEAgcHVibGljOgogICAgIC8vIHRvIHByZXZl
bnQgY3Jhc2hpbmcgd2hpbGUgbG9hZGluZyBvbGQgZGF0YS4KICAgICAvLyBBbHNvIHVwZGF0ZSBD
b250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlIHRvIGJlIGFibGUg
dG8gZmluZCB0aGUgb3JpZ2luYWwgSlNPTgogICAgIC8vIHNvdXJjZSBmcm9tIG9sZCB2ZXJzaW9u
cy4KLSAgICAvLyBVcGRhdGUgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRSdWxlTGlz
dFNvdXJjZSB3aXRoIHRoaXMuCisgICAgLy8gVXBkYXRlIGdldENvbnRlbnRSdWxlTGlzdFNvdXJj
ZUZyb21NYXBwZWRGaWxlIHdpdGggdGhpcy4KICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IEN1cnJlbnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbiA9IDExOwogCi0gICAgc3RhdGljIENv
bnRlbnRSdWxlTGlzdFN0b3JlJiBkZWZhdWx0U3RvcmUoYm9vbCBsZWdhY3lGaWxlbmFtZSk7Ci0g
ICAgc3RhdGljIFJlZjxDb250ZW50UnVsZUxpc3RTdG9yZT4gc3RvcmVXaXRoUGF0aChjb25zdCBX
VEY6OlN0cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKTsKKyAgICBzdGF0aWMg
Q29udGVudFJ1bGVMaXN0U3RvcmUmIGRlZmF1bHRTdG9yZSgpOworICAgIHN0YXRpYyBSZWY8Q29u
dGVudFJ1bGVMaXN0U3RvcmU+IHN0b3JlV2l0aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3Jl
UGF0aCk7CiAKLSAgICBleHBsaWNpdCBDb250ZW50UnVsZUxpc3RTdG9yZShib29sIGxlZ2FjeUZp
bGVuYW1lKTsKLSAgICBleHBsaWNpdCBDb250ZW50UnVsZUxpc3RTdG9yZShjb25zdCBXVEY6OlN0
cmluZyYgc3RvcmVQYXRoLCBib29sIGxlZ2FjeUZpbGVuYW1lKTsKKyAgICBleHBsaWNpdCBDb250
ZW50UnVsZUxpc3RTdG9yZSgpOworICAgIGV4cGxpY2l0IENvbnRlbnRSdWxlTGlzdFN0b3JlKGNv
bnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpOwogICAgIHZpcnR1YWwgfkNvbnRlbnRSdWxlTGlz
dFN0b3JlKCk7CiAKICAgICB2b2lkIGNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPik7CkBA
IC03NywxNSArNzcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Q29udGVudFJ1bGVMaXN0U291
cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6U3RyaW5nKT4pOwogCiBwcml2YXRlOgotICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9y
ZVBhdGgoYm9vbCBsZWdhY3lGaWxlbmFtZSk7Ci0gICAgc3RhdGljIENvbnRlbnRSdWxlTGlzdFN0
b3JlJiBsZWdhY3lEZWZhdWx0U3RvcmUoKTsKLSAgICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3Rv
cmUmIG5vbkxlZ2FjeURlZmF1bHRTdG9yZSgpOworICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9y
ZVBhdGgoKTsKICAgICAKICAgICBjb25zdCBXVEY6OlN0cmluZyBtX3N0b3JlUGF0aDsKICAgICBS
ZWY8V1RGOjpXb3JrUXVldWU+IG1fY29tcGlsZVF1ZXVlOwogICAgIFJlZjxXVEY6OldvcmtRdWV1
ZT4gbV9yZWFkUXVldWU7CiAgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3JlbW92ZVF1ZXVlOwot
ICAgIGJvb2wgbV9sZWdhY3lGaWxlbmFtZSB7IGZhbHNlIH07CiB9OwogCiBjb25zdCBzdGQ6OmVy
cm9yX2NhdGVnb3J5JiBjb250ZW50UnVsZUxpc3RTdG9yZUVycm9yQ2F0ZWdvcnkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCmluZGV4IDc5MDU0MmQyODI2ZjBmZWZkMzc2NDM4MWZl
Y2JhZDIyNDc5NTNiN2YuLmZmNDcwMWM5YjU0ODQ3YjczZjEwOTE1ZmQ3NWRlMzYyYzQxOGI5NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApAQCAtNDUsNyArNDUsNyBAQCBXS1R5
cGVJRCBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVHZXRUeXBlSUQoKQogV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlUmVmIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUNyZWF0ZShXS1N0
cmluZ1JlZiBwYXRoKQogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHRvV1RG
U3RyaW5nKHBhdGgpLCBmYWxzZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6
Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodG9XVEZTdHJpbmcocGF0aCkpLmxl
YWtSZWYoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KaW5kZXggNGVkMzc3NGEwNGYw
ODE4ZTU1NzQxMTFhMjc1NDZmNTZkMjdiN2Q5MS4uM2Q2NTc5ZjUyY2UzNTAxYTg2MWMzZjY1NWVm
YmVkMjRlODFlMTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdURjo6U3RyaW5nIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVnYWN5RmlsZW5hbWUpCitXVEY6OlN0
cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCgpCiB7CiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU1VSTD4+IGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMOwpAQCAtNTIsMTAgKzUy
LDcgQEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgo
Ym9vbCBsZWdhY3lGaWxlbmFtZSkKICAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGxlZ2FjeUZpbGVuYW1lKQotICAgICAgICAgICAg
Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIiBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudFJ1bGVMaXN0cyIgaXNEaXJlY3Rvcnk6
WUVTXTsKKyAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdHMiIGlzRGlyZWN0b3J5OllF
U107CiAgICAgfSk7CiAKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxs
cHRyXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IGY1YjJiNTllMTUyODgwYWZjNDcxOGI3ZjMz
ZWFkNTM1MjI4YTNjYTUuLmJmM2YyODk0ZDMxMjgxZWRhYTQ1ZGRiNjY0ZTlkN2QzYWU1YzkyN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzUsOSArMzUsOSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpCiArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3Jl
OwogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTDooTlNVUkwgKil1cmw7CiAKLS0gKHZvaWQp
Y29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmll
ciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKSBlbmNvZGVkQ29udGVudFJ1bGVM
aXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZCljb21waWxlQ29udGVudFJ1bGVMaXN0
Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxp
c3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcg
KilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlz
dCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZW1vdmVDb250ZW50
UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lkKWdl
dEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOih2b2lkICheKShOU0FycmF5PE5T
U3RyaW5nICo+KikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWdldEF2YWlsYWJsZUNvbnRl
bnRSdWxlTGlzdElkZW50aWZpZXJzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNv
bXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCmluZGV4IDU4MjUx
NGM4YmU1Y2U3MTMzN2NiNjA0ZDNjMzI1ZWE1MDQzOWFjNDUuLjIxOGYxZDc0ZDA3OWUxMTkwMTE5
NTVmZmYyZGFjMGY1NGE3MGZkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCkBAIC02NiwxNCAr
NjYsMTIgQEAgc3RhdGljIFdLRXJyb3JDb2RlIHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjplcnJv
cl9jb2RlJiBlcnJvcikKIAogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogewotICAgIGNv
bnN0IGJvb2wgbGVnYWN5RmlsZW5hbWUgPSBmYWxzZTsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6
OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUobGVnYWN5RmlsZW5hbWUpKTsKKyAg
ICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUo
KSk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkw6KE5TVVJMICopdXJsCiB7Ci0g
ICAgY29uc3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IGZhbHNlOwotICAgIHJldHVybiB3cmFwcGVy
KEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJM
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsKKyAgICByZXR1cm4g
d3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNv
bHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKIH0KIAogLSAodm9pZCljb21waWxl
Q29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29k
ZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgpAQCAtMTY2LDE0ICsxNjQsMTIgQEAgc3RhdGljIFdLRXJyb3JDb2Rl
IHRvV0tFcnJvckNvZGUoY29uc3Qgc3RkOjplcnJvcl9jb2RlJiBlcnJvcikKIAogKyAoaW5zdGFu
Y2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZQogewotICAgIGNvbnN0IGJvb2wg
bGVnYWN5RmlsZW5hbWUgPSB0cnVlOwotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1
bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZShsZWdhY3lGaWxlbmFtZSkpOworICAgIHJldHVybiB3
cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZSgpKTsKIH0KIAog
KyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOihOU1VSTCAqKXVy
bAogewotICAgIGNvbnN0IGJvb2wgbGVnYWN5RmlsZW5hbWUgPSB0cnVlOwotICAgIHJldHVybiB3
cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29s
dXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsKKyAgICBy
ZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVy
bC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaAppbmRleCAyYmE3YTE5NjcwMGM5OGNlZjUxNzI0
NmM5N2FkY2Q3ZjBjMzE4NWJiLi41MDI4Njg2OGJmM2Q2NDcwMGY3MzFlMjQ4ZWQ1MzZkNGRkODdj
ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250
ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaApAQCAtMzAsMTMgKzMwLDEx
IEBACiAvLyBGb3IgdGVzdGluZyBvbmx5LgogLSAodm9pZClfcmVtb3ZlQWxsQ29udGVudFJ1bGVM
aXN0czsKIC0gKHZvaWQpX2ludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uRm9ySWRlbnRp
ZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyOwotLSAodm9pZClfZ2V0Q29udGVudFJ1bGVMaXN0
U291cmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1N0cmluZyopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZ2V0
Q29udGVudFJ1bGVMaXN0U291cmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVy
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxl
cjsKIAogLSAodm9pZClfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKSBlbmNv
ZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRS
dWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCi0vLyBUbyBtYWludGFp
biBjb21wYXRpYmlsaXR5IHdpdGggX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZQotLy8gRklY
TUU6IEFkZCBzb21ldGhpbmcgdG8gZXhpc3RpbmcgY2xpZW50cyBvZiBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlIHRvIG1pZ3JhdGUgZmlsZXMgZnJvbSBsZWdhY3kgZmlsZW5hbWVzLAotLy8g
YWRvcHQgV0tDb250ZW50UnVsZUxpc3RTdG9yZSwgYW5kIHJlbW92ZSBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLgorLy8gRklYTUU6IFJlbW92ZSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLgogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZTsKICsg
KGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTooTlNVUkwgKil1cmw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9BUElDb250ZW50UnVsZUxpc3RTdG9yZUdMaWIuY3BwCmluZGV4IDRkZGU5OTJhNzJmYWJlZDY3
Nzk3NWMwZDBjNzIxM2FmMzEwZjQ4MjAuLjAxY2UxZTkwMmJlZTQ2NzYxOGVjZWY0NTA3YjFmYTE0
OGI3MzcyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVHTGliLmNwcApAQCAtMjksNyArMjks
NyBAQAogbmFtZXNwYWNlIEFQSSB7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQot
U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJvb2wpCitTdHJp
bmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgoKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OGYwODI3ODdkMWQ4ODkyODE4MDdj
OGI5MDI4NmFiMmVkZWRkOWJkLi4yMWE0OTYyZGE3YjU0NzQxZjIzZjdhNjc2YWU5ZGMxNDQ4Mzcw
YjM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNaWdyYXRlIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
IGFuZCBvbGRlciB2ZXJzaW9ucyBvZiBXS0NvbnRlbnRSdWxlTGlzdCB0byBXS0NvbnRlbnRSdWxl
TGlzdCBkdXJpbmcgbG9va3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAocmVzcG9uZCk6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbl0pOgorCiAyMDIxLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgV0tDb250ZW50UnVsZUxpc3QgdG8gYmxvY2sg
b25seSBpbiBmcmFtZXMgb3Igb25seSBpbiBtYWluIGZyYW1lCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uLm1tCmluZGV4IDJmYmUxYTJjZjMyYmFmMDA0YjJjMjkxNTcwZWY3YWFm
Mzc4NTQ4OTMuLjEzMGU2Y2FhNDc1NGVkOGNlYWIzYWNjMTUwMzBiZDZlZjlmZTg1ZGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC0zMyw3ICszMyw3IEBACiAj
aW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIu
aCIKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdFByaXZhdGUuaD4KLSNpbXBvcnQg
PFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tDb250
ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZUhhbmRsZXIuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oPgpAQCAtMTk4LDYgKzE5
OCwxNCBAQCBzdGF0aWMgU3RyaW5nIHdlYlNvY2tldEFjY2VwdFZhbHVlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYgcmVxdWVzdCkKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKGhhc2guZGF0YSgpLCBTSEEx
OjpoYXNoU2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc3BvbmQoaWQ8V0tVUkxTY2hlbWVUYXNr
PiB0YXNrLCBjb25zdCBjaGFyKiBodG1sKQoreworICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
ID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihodG1sKSB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOworICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpyZXNwb25zZV07CisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOworICAgIFt0YXNrIGRpZEZpbmlz
aF07Cit9OworCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgUmVzb3VyY2VUeXBlcykKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKQEAgLTIxNCwyMSArMjIyLDE1IEBAIFRFU1Qo
Q29udGVudFJ1bGVMaXN0LCBSZXNvdXJjZVR5cGVzKQogCiAgICAgYXV0byBoYW5kbGVyID0gW1tU
ZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKICAgICBoYW5kbGVyLnN0YXJ0
VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+
IHRhc2spIHsKLSAgICAgICAgYXV0byByZXNwb25kID0gW3Rhc2tdIChjb25zdCBjaGFyKiBodG1s
KSB7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJsZW4oaHRtbCkgdGV4dEVuY29kaW5nTmFtZTpu
aWxdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpy
ZXNwb25zZV07Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVuKGh0bWwpXV07Ci0gICAgICAgICAgICBbdGFzayBk
aWRGaW5pc2hdOwotICAgICAgICB9OwogICAgICAgICBOU1N0cmluZyAqcGF0aCA9IHRhc2sucmVx
dWVzdC5VUkwucGF0aDsKICAgICAgICAgaWYgKFtwYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVj
a1dlYlNvY2tldC5odG1sIl0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZChbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+dmFyIHdzID0gbmV3IFdlYlNvY2tldCgnd3M6Ly9s
b2NhbGhvc3Q6JWQvdGVzdCcpO3dzLm9ub3Blbj0oKT0+e2FsZXJ0KCdvbm9wZW4nKX07d3Mub25l
cnJvcj0oKT0+e2FsZXJ0KCdvbmVycm9yJyl9PC9zY3JpcHQ+Iiwgc2VydmVyUG9ydF0uVVRGOFN0
cmluZyk7CisgICAgICAgICAgICByZXR1cm4gcmVzcG9uZCh0YXNrLCBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjxzY3JpcHQ+dmFyIHdzID0gbmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhv
c3Q6JWQvdGVzdCcpO3dzLm9ub3Blbj0oKT0+e2FsZXJ0KCdvbm9wZW4nKX07d3Mub25lcnJvcj0o
KT0+e2FsZXJ0KCdvbmVycm9yJyl9PC9zY3JpcHQ+Iiwgc2VydmVyUG9ydF0uVVRGOFN0cmluZyk7
CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tGZXRjaC5odG1sIl0p
Ci0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiPHNjcmlwdD5mZXRjaCgndGVzdDovLy9mZXRj
aENvbnRlbnQnKS50aGVuKCgpPT57YWxlcnQoJ2ZldGNoZWQnKX0pLmNhdGNoKCgpPT57YWxlcnQo
J2RpZCBub3QgZmV0Y2gnKX0pPC9zY3JpcHQ+Iik7CisgICAgICAgICAgICByZXR1cm4gcmVzcG9u
ZCh0YXNrLCAiPHNjcmlwdD5mZXRjaCgndGVzdDovLy9mZXRjaENvbnRlbnQnKS50aGVuKCgpPT57
YWxlcnQoJ2ZldGNoZWQnKX0pLmNhdGNoKCgpPT57YWxlcnQoJ2RpZCBub3QgZmV0Y2gnKX0pPC9z
Y3JpcHQ+Iik7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hDb250
ZW50Il0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiaGVsbG8iKTsKKyAgICAgICAgICAg
IHJldHVybiByZXNwb25kKHRhc2ssICJoZWxsbyIpOwogICAgICAgICBpZiAoW3BhdGggaXNFcXVh
bFRvU3RyaW5nOkAiL2NoZWNrWEhSLmh0bWwiXSkKLSAgICAgICAgICAgIHJldHVybiByZXNwb25k
KCI8c2NyaXB0PnZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTt4aHIub3BlbignR0VUJywg
J3Rlc3Q6Ly8vZmV0Y2hDb250ZW50Jyk7eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHho
ci5yZWFkeVN0YXRlPT00KXtzZXRUaW1lb3V0KCgpPT57YWxlcnQoJ3hociBmaW5pc2hlZCcpfSwg
MCl9fTt4aHIub25lcnJvcj0oKT0+e2FsZXJ0KCd4aHIgZXJyb3InKX07eGhyLnNlbmQoKTwvc2Ny
aXB0PiIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQodGFzaywgIjxzY3JpcHQ+dmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdHRVQnLCAndGVzdDovLy9mZXRjaENv
bnRlbnQnKTt4aHIub25yZWFkeXN0YXRlY2hhbmdlPSgpPT57aWYoeGhyLnJlYWR5U3RhdGU9PTQp
e3NldFRpbWVvdXQoKCk9PnthbGVydCgneGhyIGZpbmlzaGVkJyl9LCAwKX19O3hoci5vbmVycm9y
PSgpPT57YWxlcnQoJ3hociBlcnJvcicpfTt4aHIuc2VuZCgpPC9zY3JpcHQ+Iik7CiAKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKQEAgLTI4MCwyMSArMjgyLDE1IEBAIFRF
U1QoQ29udGVudFJ1bGVMaXN0LCBUaGlyZFBhcnR5KQogewogICAgIGF1dG8gaGFuZGxlciA9IFtb
VGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFzZV07CiAgICAgaGFuZGxlci5zdGFy
dFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNr
PiB0YXNrKSB7Ci0gICAgICAgIGF1dG8gcmVzcG9uZCA9IFt0YXNrXSAoY29uc3QgY2hhciogaHRt
bCkgewotICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RybGVuKGh0bWwpIHRleHRFbmNvZGluZ05hbWU6
bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
cmVzcG9uc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwotICAgICAgICAgICAgW3Rhc2sg
ZGlkRmluaXNoXTsKLSAgICAgICAgfTsKICAgICAgICAgTlNTdHJpbmcgKnBhdGggPSB0YXNrLnJl
cXVlc3QuVVJMLnBhdGg7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFp
bi5odG1sIl0pIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25kKCI8c2NyaXB0PiIKKyAgICAg
ICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICI8c2NyaXB0PiIKICAgICAgICAgICAgICAgICAi
ZnVuY3Rpb24gdGVzdFdlYktpdCgpIHsgZmV0Y2goJ3Rlc3Q6Ly93ZWJraXQub3JnL3Jlc291cmNl
LnR4dCcsIHttb2RlOiduby1jb3JzJ30pLnRoZW4oKCk9PnthbGVydCgnd2Via2l0Lm9yZyBsb2Fk
ZWQnKTt9KS5jYXRjaCgoKT0+e2FsZXJ0KCd3ZWJraXQub3JnIGJsb2NrZWQnKTt9KSB9OyIKICAg
ICAgICAgICAgICAgICAiZmV0Y2goJ3Rlc3Q6Ly9zdWIuZXhhbXBsZS5jb20vcmVzb3VyY2UudHh0
Jywge21vZGU6J25vLWNvcnMnfSkudGhlbigoKT0+e2FsZXJ0KCdzdWIuZXhhbXBsZS5jb20gbG9h
ZGVkJyk7dGVzdFdlYktpdCgpO30pLmNhdGNoKCgpPT57YWxlcnQoJ3N1Yi5leGFtcGxlLmNvbSBi
bG9ja2VkJyk7dGVzdFdlYktpdCgpO30pIgogICAgICAgICAgICAgIjwvc2NyaXB0PiIpOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvcmVzb3VyY2UudHh0
Il0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiaGkiKTsKKyAgICAgICAgICAgIHJldHVy
biByZXNwb25kKHRhc2ssICJoaSIpOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH07CkBAIC0zNTQsMzAgKzM1MCwyNCBAQCBURVNUKENvbnRlbnRSdWxlTGlzdCwgVG9wRnJh
bWVDaGlsZEZyYW1lKQogICAgIGF1dG8gaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIg
bmV3XSBhdXRvcmVsZWFzZV07CiAgICAgX19ibG9jayBib29sIGxvYWRlZElGcmFtZSA9IGZhbHNl
OwogICAgIGhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICos
IGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewotICAgICAgICBhdXRvIHJlc3BvbmQgPSBbdGFz
a10gKGNvbnN0IGNoYXIqIGh0bWwpIHsKLSAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihodG1s
KSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1sIGxlbmd0aDpzdHJsZW4oaHRtbCldXTsK
LSAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07Ci0gICAgICAgIH07CiAgICAgICAgIE5TU3Ry
aW5nICpwYXRoID0gdGFzay5yZXF1ZXN0LlVSTC5wYXRoOwogICAgICAgICBpZiAoW3BhdGggaXNF
cXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKQotICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQo
IjxpZnJhbWUgc3JjPSdmcmFtZS5odG1sJz48L2lmcmFtZT4iKTsKKyAgICAgICAgICAgIHJldHVy
biByZXNwb25kKHRhc2ssICI8aWZyYW1lIHNyYz0nZnJhbWUuaHRtbCc+PC9pZnJhbWU+Iik7CiAg
ICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZnJhbWUuaHRtbCJdKSB7CiAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UobG9hZGVkSUZyYW1lKTsKICAgICAgICAgICAgIGxvYWRlZElG
cmFtZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiaGkiKTsKKyAgICAgICAg
ICAgIHJldHVybiByZXNwb25kKHRhc2ssICJoaSIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChb
cGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hfbWFpbi5odG1sIl0pIHsKLSAgICAgICAgICAg
IHJldHVybiByZXNwb25kKCI8c2NyaXB0PiIKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRh
c2ssICI8c2NyaXB0PiIKICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gYWRkaWZyYW1lKCkgeyB2
YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7IGlmcmFtZS5zcmMg
PSAnZmV0Y2hfaWZyYW1lLmh0bWwnOyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7
IH07IgogICAgICAgICAgICAgICAgICJmdW5jdGlvbiB0ZXN0ZmV0Y2goKSB7IGZldGNoKCcvZmV0
Y2hlZC50eHQnKS50aGVuKCgpPT57YWxlcnQoJ21haW4gZnJhbWUgZmV0Y2hlZCBzdWNjZXNzZnVs
bHknKTthZGRpZnJhbWUoKX0pLmNhdGNoKCgpPT57YWxlcnQoJ21haW4gZnJhbWUgZmV0Y2ggZmFp
bGVkJyk7YWRkaWZyYW1lKCk7fSkgfSIKICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PGJvZHkg
b25sb2FkPSd0ZXN0ZmV0Y2goKScvPiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChbcGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hlZC50eHQiXSkKLSAgICAgICAgICAgIHJldHVybiByZXNw
b25kKCJoaSIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQodGFzaywgImhpIik7CiAgICAg
ICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hfaWZyYW1lLmh0bWwiXSkgewot
ICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQoIjxzY3JpcHQ+IgorICAgICAgICAgICAgcmV0dXJu
IHJlc3BvbmQodGFzaywgIjxzY3JpcHQ+IgogICAgICAgICAgICAgICAgICJmdW5jdGlvbiB0ZXN0
ZmV0Y2goKSB7IGZldGNoKCcvZmV0Y2hlZC50eHQnKS50aGVuKCgpPT57YWxlcnQoJ2lmcmFtZSBm
ZXRjaGVkIHN1Y2Nlc3NmdWxseScpfSkuY2F0Y2goKCk9PnthbGVydCgnaWZyYW1lIGZldGNoIGZh
aWxlZCcpO30pIH0iCiAgICAgICAgICAgICAgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0ndGVz
dGZldGNoKCknLz4iKTsKICAgICAgICAgfQpAQCAtNDIwLDYgKzQxMCw4NCBAQCBURVNUKENvbnRl
bnRSdWxlTGlzdCwgVG9wRnJhbWVDaGlsZEZyYW1lKQogICAgIEVYUEVDVF9XS19TVFJFUShbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiaWZyYW1lIGZldGNoZWQgc3VjY2Vzc2Z1bGx5Iik7
CiB9CiAKK1RFU1QoQ29udGVudFJ1bGVMaXN0LCBMZWdhY3lWZXJzaW9uQW5kTmFtZSkKK3sKKyAg
ICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudFJ1bGVMaXN0VGVzdERpcmVjdG9yeSJdOwor
ICAgIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUgKnN0b3JlID0gW1dLQ29udGVudFJ1bGVMaXN0U3Rv
cmUgc3RvcmVXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5XV07CisgICAg
CisgICAgYXV0byBoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBoYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmll
dyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgcmVzcG9uZCh0YXNrLCAi
aGkiKTsKKyAgICB9OworCisgICAgYXV0byBzZXR1cExlZ2FjeUNvbnRlbnRSdWxlTGlzdCA9IFtk
aXJlY3RvcnldIHsKKyAgICAgICAgLy8gQ29tcGlsZWQgd2l0aCBDdXJyZW50Q29udGVudFJ1bGVM
aXN0RmlsZVZlcnNpb24gPSAxMAorICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDE2Mz4gb2xk
VmVyc2lvbkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0IHsKKyAgICAgICAgICAgIDB4MGEsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4M2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAgICAgICAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDJhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDA1LCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgICAgIDB4MDEsIDB4NWIsIDB4N2IsIDB4MjIsIDB4
NjEsIDB4NjMsIDB4NzQsIDB4NjksIDB4NmYsIDB4NmUsIDB4MjIsIDB4M2EsIDB4N2IsIDB4MjIs
IDB4NzQsIDB4NzksCisgICAgICAgICAgICAweDcwLCAweDY1LCAweDIyLCAweDNhLCAweDIyLCAw
eDYyLCAweDZjLCAweDZmLCAweDYzLCAweDZiLCAweDIyLCAweDdkLCAweDJjLCAweDIyLCAweDc0
LCAweDcyLAorICAgICAgICAgICAgMHg2OSwgMHg2NywgMHg2NywgMHg2NSwgMHg3MiwgMHgyMiwg
MHgzYSwgMHg3YiwgMHgyMiwgMHg3NSwgMHg3MiwgMHg2YywgMHgyZCwgMHg2NiwgMHg2OSwgMHg2
YywKKyAgICAgICAgICAgIDB4NzQsIDB4NjUsIDB4NzIsIDB4MjIsIDB4M2EsIDB4MjIsIDB4NzQs
IDB4NjUsIDB4NzMsIDB4NzQsIDB4MjIsIDB4N2QsIDB4N2QsIDB4NWQsIDB4MDAsIDB4MmEsCisg
ICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDc0LCAweDA1LCAweDFiLCAweGZk
LCAweDEwLCAweDY1LCAweDA4LCAweDEwLCAweDc0LCAweGZkLCAweDFiLCAweGY1LAorICAgICAg
ICAgICAgMHgxMiwgMHg3MywgMHg3NCwgMHgwNywgMHhmOCwgMHgxYiwgMHhlZSwgMHgxMCwgMHg3
NCwgMHgwNSwgMHgxYiwgMHhlOSwgMHgwNiwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgICAg
IDB4MDAsIDB4MTAsIDB4NjUsIDB4ZWYsIDB4MTAsIDB4NzQsIDB4ZTQsIDB4MWIsIDB4ZGMsIDB4
MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MGEsIDB4MDUsIDB4MDAsCisgICAgICAgICAgICAweDAw
LCAweDAwLCAweDBhCisgICAgICAgIH07CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpvbGRWZXJzaW9uQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuZGF0YSgpIGxl
bmd0aDpvbGRWZXJzaW9uQ29tcGlsZWRDb250ZW50UnVsZUxpc3Quc2l6ZSgpXTsKKyAgICAgICAg
W2RhdGEgd3JpdGVUb0ZpbGU6W2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDb250ZW50RXh0ZW5zaW9uLXRlc3QiXSBhdG9taWNhbGx5OllFU107CisgICAgICAgIFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpbZGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdC10ZXN0Il0g
ZXJyb3I6bmlsXTsKKyAgICB9OworICAgIAorICAgIGF1dG8gbGVnYWN5RmlsZUV4aXN0cyA9IFtk
aXJlY3RvcnldIHsKKyAgICAgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpbZGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIkNvbnRlbnRSdWxlTGlzdC10ZXN0Il1dOworICAgIH07CisKKyAgICBzZXR1cExlZ2Fj
eUNvbnRlbnRSdWxlTGlzdCgpOworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLQ29udGVudFJ1bGVM
aXN0PiByZXRhaW5lZExpc3Q7CisgICAgW3N0b3JlIGxvb2tVcENvbnRlbnRSdWxlTGlzdEZvcklk
ZW50aWZpZXI6QCJ0ZXN0IiBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudFJ1bGVMaXN0ICps
aXN0LCBOU0Vycm9yICopIHsKKyAgICAgICAgcmV0YWluZWRMaXN0ID0gbGlzdDsKKyAgICB9XTsK
KyAgICB3aGlsZSAoIXJldGFpbmVkTGlzdCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c3BpblJ1bkxvb3AoKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIgZm9yVVJMU2NoZW1lOkAic2NoZW1lIl07
CisgICAgY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldy5jb25maWd1cmF0aW9uLnVzZXJDb250
ZW50Q29udHJvbGxlciBhZGRDb250ZW50UnVsZUxpc3Q6cmV0YWluZWRMaXN0LmdldCgpXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAic2NoZW1lOi8vLyJdXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vLyJd
XV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRp
b25dOworCisgICAgc2V0dXBMZWdhY3lDb250ZW50UnVsZUxpc3QoKTsKKyAgICBfX2Jsb2NrIGJv
b2wgcmVtb3ZlZCA9IGZhbHNlOworICAgIFtzdG9yZSByZW1vdmVDb250ZW50UnVsZUxpc3RGb3JJ
ZGVudGlmaWVyOkAidGVzdCIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9GQUxTRShsZWdhY3lG
aWxlRXhpc3RzKCkpOworICAgICAgICByZW1vdmVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWQpOworICAgIAorICAgIHNldHVwTGVnYWN5Q29u
dGVudFJ1bGVMaXN0KCk7CisgICAgX19ibG9jayBib29sIGZvdW5kQXZhaWxhYmxlID0gZmFsc2U7
CisgICAgW3N0b3JlIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqaWRlbnRpZmllcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGlkZW50
aWZpZXJzLmNvdW50LCAxdSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShpZGVudGlmaWVyc1sw
XSwgQCJ0ZXN0Iik7CisgICAgICAgIGZvdW5kQXZhaWxhYmxlID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWQpOworCisgICAgX19ibG9jayBib29s
IGdvdFNvdXJjZSA9IGZhbHNlOworICAgIFtzdG9yZSBfZ2V0Q29udGVudFJ1bGVMaXN0U291cmNl
Rm9ySWRlbnRpZmllcjpAInRlc3QiIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnNvdXJj
ZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc291cmNlLCAiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcIn19XSIp
OworICAgICAgICBnb3RTb3VyY2UgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ290U291cmNlKTsKK30KKwogI2lmIEhBVkUoU1NMKQogCiBURVNUKFdlYktp
dCwgUmVkaXJlY3RUb1BsYWludGV4dEhUVFBTVXBncmFkZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgKaW5kZXggOWJkMTZiOTFhYTcw
YTYwYWI1ZDE5MWFlZTk4ZTI4YzM2NzI4MmMyYi4uZjhjMDJmOWJlMTFmMDBmMzZlYzlhZjMyNzI5
ZjIzZTYwZGUxZWQyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgKQEAgLTUxLDUgKzUxLDYgQEAKIC0gKHZvaWQpX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb247CiAtICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uV2l0aFByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXByZWZlcmVu
Y2VzOwogLSAodm9pZClfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbldpdGhvdXRQcmVz
ZW50YXRpb25VcGRhdGU7CistICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uOwogLSAodm9pZClfdGVzdF93YWl0Rm9yV2ViQ29udGVudFByb2Nlc3NEaWRUZXJt
aW5hdGU7CiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUubW0KaW5kZXggYjhmZThjODAyM2VjMDQ5OTI0Y2Y1YjdiOGUwYmUyMDdh
NTBiM2FmYS4uYmE5MjZjNjZlNmEzODA0NmVkNGVkNTk1YjBlZDBlZDdlNWJkY2IzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bQpAQCAtMTg0LDYgKzE4NCwxNyBAQAogICAgIHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlID0gbmls
OwogfQogCistICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
Cit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlKTsKKworICAgIGF1
dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uXTsKKworICAgIHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlID0gbmls
OworfQorCiAtICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uV2l0aG91dFBy
ZXNlbnRhdGlvblVwZGF0ZQogewogICAgIEVYUEVDVF9GQUxTRShzZWxmLm5hdmlnYXRpb25EZWxl
Z2F0ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424541</attachid>
            <date>2021-03-29 10:14:22 -0700</date>
            <delta_ts>2021-03-29 11:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223831-20210329101421.patch</filename>
            <type>text/plain</type>
            <size>42652</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzUxNjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIxLTAzLTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWlncmF0ZSBfV0tV
c2VyQ29udGVudEV4dGVuc2lvbiBhbmQgb2xkZXIgdmVyc2lvbnMgb2YgV0tDb250ZW50UnVsZUxp
c3QgdG8gV0tDb250ZW50UnVsZUxpc3QgZHVyaW5nIGxvb2t1cAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjI3NTA3OCBpbmNyZW1lbnRlZCBDdXJyZW50
Q29udGVudFJ1bGVMaXN0RmlsZVZlcnNpb24gZm9yIHRoZSBmaXJzdCB0aW1lIGluIGEgZmV3IHll
YXJzLgorICAgICAgICBBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgYSBXS0Vycm9yQ29udGVudFJ1
bGVMaXN0U3RvcmVWZXJzaW9uTWlzbWF0Y2ggZHVyaW5nIGxvb2t1cCBmb3IgZXhpc3RpbmcgY29t
cGlsZWQgV0tDb250ZW50UnVsZUxpc3RzLgorICAgICAgICBUbyBtYWtlIHRoaXMgYXMgY29tcGF0
aWJsZSBhcyBwb3NzaWJsZSwgaWYgd2Ugc2VlIHN1Y2ggYSBXS0NvbnRlbnRSdWxlTGlzdCwgdHJ5
IGV4dHJhY3RpbmcgaXRzIHNvdXJjZSBhbmQgcmVjb21waWxpbmcuCisKKyAgICAgICAgQWxzbywg
X1dLVXNlckNvbnRlbnRFeHRlbnNpb24gaXMgdXNlZCBieSBTYWZhcmkgYW5kIGJlaW5nIG1pZ3Jh
dGVkIGZyb20gaW4gcmRhcjovLzc1ODg5NDE0LgorICAgICAgICBUbyBtYWtlIHRoaXMgc3VjY2Vl
ZCBhbmQgbm90IGxlYXZlIGFueSBmaWxlcyBiZWhpbmQsIHdlIG1vdmUgbGVnYWN5IGZpbGVzIHRv
IG1vZGVybiBmaWxlbmFtZXMgZHVyaW5nIGxvb2t1cC4KKyAgICAgICAgV2UgYWxzbyByZW1vdmUg
dGhlbSBpZiB0aGV5J3JlIHRoZXJlIHdoZW4gcmVtb3ZpbmcgdGhlIFdLQ29udGVudFJ1bGVMaXN0
IGZyb20gdGhlIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUsCisgICAgICAgIGFuZCB3ZSBpbmNsdWRl
IHRoZW0gaW4gZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMuICBjb21waWxl
Q29udGVudFJ1bGVMaXN0IG9ubHkgY29tcGlsZXMgdG8gdGhlIG1vZGVybiBsb2NhdGlvbnMsCisg
ICAgICAgIGFuZCBpbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbiBpcyBvbmx5IHVzZWQg
Zm9yIHRlc3RzLiAgQWxsIHRoaXMgaXMgZG9uZSBvbiBub24tbWFpbiBXb3JrUXVldWVzLCBzbyB0
aGUgZmV3IGFkZGl0aW9uYWwKKyAgICAgICAgZmlsZSByZWFkcy93cml0ZXMgYXJlbid0IGFuIGlz
c3VlLgorCisgICAgICAgIEx1Y2tpbHksIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgd2Fz
IG9ubHkgdXNlZCBieSBTYWZhcmksIGFuZCBpdHMgZGVmYXVsdFN0b3JlIHdhcyBuZXZlciB1c2Vk
LgorCisgICAgICAgIEFsbCB0aGlzIGlzIGNvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUpOgorICAgICAgICAoQVBJOjpD
b250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aCk6CisgICAgICAgIChBUEk6OkNvbnRl
bnRSdWxlTGlzdFN0b3JlOjpDb250ZW50UnVsZUxpc3RTdG9yZSk6CisgICAgICAgIChBUEk6Om9w
ZW5BbmRNYXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpnZXRDb250ZW50UnVsZUxp
c3RTb3VyY2VGcm9tTWFwcGVkRmlsZSk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0
b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxp
c3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMpOgorICAgICAg
ICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6Cisg
ICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3Qp
OgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRS
dWxlTGlzdFZlcnNpb24pOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0
Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3Rv
cmU6OmxlZ2FjeURlZmF1bHRTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkNvbnRlbnRS
dWxlTGlzdFN0b3JlOjpub25MZWdhY3lEZWZhdWx0U3RvcmUpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6b3BlbkFuZE1hcE9yQ29weUNvbnRlbnRSdWxlTGlzdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYu
Y3BwOgorICAgICAgICAoV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlQ3JlYXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06
CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW06
CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgZGVmYXVsdFN0b3JlXSk6CisgICAg
ICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRoVVJMOl0pOgorICAgICAgICAo
K1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIGRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZV0p
OgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTEFuZExlZ2Fj
eUZpbGVuYW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVs
ZUxpc3RTdG9yZVByaXZhdGUuaDoKKwogMjAyMS0wMy0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvbW90ZSBXS1dlYlZpZXcgZ2V0VXNlck1lZGlhIFNQ
SSB0byBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAkocmV2aXNpb24gMjc1MTYyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNTEgKzUyLDM0IEBAIG5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwogdXNpbmcgbmFtZXNwYWNlIEZpbGVTeXN0ZW07CiAK
LUNvbnRlbnRSdWxlTGlzdFN0b3JlJiBDb250ZW50UnVsZUxpc3RTdG9yZTo6bGVnYWN5RGVmYXVs
dFN0b3JlKCkKK0NvbnRlbnRSdWxlTGlzdFN0b3JlJiBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVm
YXVsdFN0b3JlKCkKIHsKLSAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gdHJ1ZTsKLSAg
ICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUqIGRlZmF1bHRTdG9yZSA9IGFkb3B0UmVmKG5l
dyBDb250ZW50UnVsZUxpc3RTdG9yZShsZWdhY3lGaWxlbmFtZSkpLmxlYWtSZWYoKTsKKyAgICBz
dGF0aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUqIGRlZmF1bHRTdG9yZSA9IGFkb3B0UmVmKG5ldyBD
b250ZW50UnVsZUxpc3RTdG9yZSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuICpkZWZhdWx0U3Rv
cmU7CiB9Ci0gICAgCi1Db250ZW50UnVsZUxpc3RTdG9yZSYgQ29udGVudFJ1bGVMaXN0U3RvcmU6
Om5vbkxlZ2FjeURlZmF1bHRTdG9yZSgpCi17Ci0gICAgY29uc3QgYm9vbCBsZWdhY3lGaWxlbmFt
ZSA9IGZhbHNlOwotICAgIHN0YXRpYyBDb250ZW50UnVsZUxpc3RTdG9yZSogZGVmYXVsdFN0b3Jl
ID0gYWRvcHRSZWYobmV3IENvbnRlbnRSdWxlTGlzdFN0b3JlKGxlZ2FjeUZpbGVuYW1lKSkubGVh
a1JlZigpOwotICAgIHJldHVybiAqZGVmYXVsdFN0b3JlOwotfQotICAgIAotQ29udGVudFJ1bGVM
aXN0U3RvcmUmIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUoYm9vbCBsZWdhY3lG
aWxlbmFtZSkKLXsKLSAgICBpZiAobGVnYWN5RmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBsZWdh
Y3lEZWZhdWx0U3RvcmUoKTsKLSAgICByZXR1cm4gbm9uTGVnYWN5RGVmYXVsdFN0b3JlKCk7Ci19
CiAKLVJlZjxDb250ZW50UnVsZUxpc3RTdG9yZT4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3Jl
V2l0aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBsZWdhY3lGaWxlbmFt
ZSkKK1JlZjxDb250ZW50UnVsZUxpc3RTdG9yZT4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3Jl
V2l0aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDb250ZW50UnVsZUxpc3RTdG9yZShzdG9yZVBhdGgsIGxlZ2FjeUZpbGVuYW1l
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGVudFJ1bGVMaXN0U3RvcmUoc3RvcmVQ
YXRoKSk7CiB9CiAKLUNvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250ZW50UnVsZUxpc3RTdG9yZShi
b29sIGxlZ2FjeUZpbGVuYW1lKQotICAgIDogQ29udGVudFJ1bGVMaXN0U3RvcmUoZGVmYXVsdFN0
b3JlUGF0aChsZWdhY3lGaWxlbmFtZSksIGxlZ2FjeUZpbGVuYW1lKQorQ29udGVudFJ1bGVMaXN0
U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKKyAgICA6IENvbnRlbnRSdWxlTGlzdFN0b3Jl
KGRlZmF1bHRTdG9yZVBhdGgoKSkKIHsKIH0KIAotQ29udGVudFJ1bGVMaXN0U3RvcmU6OkNvbnRl
bnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgsIGJvb2wgbGVnYWN5
RmlsZW5hbWUpCitDb250ZW50UnVsZUxpc3RTdG9yZTo6Q29udGVudFJ1bGVMaXN0U3RvcmUoY29u
c3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCkKICAgICA6IG1fc3RvcmVQYXRoKHN0b3JlUGF0aCkK
ICAgICAsIG1fY29tcGlsZVF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50UnVsZUxpc3RT
dG9yZSBDb21waWxlIFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpDb25jdXJyZW50KSkKICAgICAs
IG1fcmVhZFF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50UnVsZUxpc3RTdG9yZSBSZWFk
IFF1ZXVlIikpCiAgICAgLCBtX3JlbW92ZVF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50
UnVsZUxpc3RTdG9yZSBSZW1vdmUgUXVldWUiKSkKLSAgICAsIG1fbGVnYWN5RmlsZW5hbWUobGVn
YWN5RmlsZW5hbWUpCiB7CiAgICAgbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JlUGF0aCk7CiB9CiAK
LUNvbnRlbnRSdWxlTGlzdFN0b3JlOjp+Q29udGVudFJ1bGVMaXN0U3RvcmUoKQotewotfQorQ29u
dGVudFJ1bGVMaXN0U3RvcmU6On5Db250ZW50UnVsZUxpc3RTdG9yZSgpID0gZGVmYXVsdDsKIAor
Ly8gRklYTUU6IFJlbW92ZSBsZWdhY3lGaWxlbmFtZSBpbiAyMDIyIG9yIDIwMjMgYWZ0ZXIgdXNl
cnMgaGF2ZSBoYWQgYSBjaGFuY2UgdG8gcnVuIHRoZSB1cGRhdGluZyBsb2dpYy4KIHN0YXRpYyBj
b25zdCBXVEY6OlN0cmluZyYgY29uc3RydWN0ZWRQYXRoUHJlZml4KGJvb2wgbGVnYWN5RmlsZW5h
bWUpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiBwcmVmaXgoIkNv
bnRlbnRSdWxlTGlzdC0iKTsKQEAgLTIzNSw3ICsyMTgsNyBAQCBzdHJ1Y3QgTWFwcGVkRGF0YSB7
CiAgICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZGF0YTsKIH07CiAKLXN0YXRpYyBPcHRp
b25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwT3JDb3B5Q29udGVudFJ1bGVMaXN0KGNvbnN0IFdU
Rjo6U3RyaW5nJiBwYXRoKQorc3RhdGljIE9wdGlvbmFsPE1hcHBlZERhdGE+IG9wZW5BbmRNYXBD
b250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCiB7CiAgICAgRmlsZVN5c3Rl
bTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCk7CiAgICAgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCkpOwpAQCAtNDUxLDEyICs0MzQsNDIgQEAgc3RhdGljIFJlZjxBUEk6OkNv
bnRlbnRSdWxlTGlzdD4gY3JlYXRlRQogICAgIHJldHVybiBBUEk6OkNvbnRlbnRSdWxlTGlzdDo6
Y3JlYXRlKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGlsZWRDb250ZW50UnVsZUxpc3QpLCBXVEZN
b3ZlKGRhdGEuZGF0YSkpOwogfQogCitzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0Q29udGVudFJ1bGVM
aXN0U291cmNlRnJvbU1hcHBlZEZpbGUoY29uc3QgTWFwcGVkRGF0YSYgbWFwcGVkRGF0YSkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHN3aXRjaCAobWFwcGVkRGF0
YS5tZXRhRGF0YS52ZXJzaW9uKSB7CisgICAgY2FzZSA5OgorICAgIGNhc2UgMTA6CisgICAgY2Fz
ZSAxMToKKyAgICAgICAgaWYgKCFtYXBwZWREYXRhLm1ldGFEYXRhLnNvdXJjZVNpemUpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICBib29sIGlzOEJpdCA9IG1hcHBlZERhdGEuZGF0
YS5kYXRhKClbQ29udGVudFJ1bGVMaXN0RmlsZUhlYWRlclNpemVdOworICAgICAgICBzaXplX3Qg
c3RhcnQgPSBDb250ZW50UnVsZUxpc3RGaWxlSGVhZGVyU2l6ZSArIHNpemVvZihib29sKTsKKyAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IG1hcHBlZERhdGEubWV0YURhdGEuc291cmNlU2l6ZSAtIHNp
emVvZihib29sKTsKKyAgICAgICAgaWYgKGlzOEJpdCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
OlN0cmluZyhtYXBwZWREYXRhLmRhdGEuZGF0YSgpICsgc3RhcnQsIGxlbmd0aCk7CisgICAgICAg
IGlmIChsZW5ndGggJSBzaXplb2YoVUNoYXIpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIFdURjo6U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtYXBwZWREYXRh
LmRhdGEuZGF0YSgpICsgc3RhcnQpLCBsZW5ndGggLyBzaXplb2YoVUNoYXIpKTsKKyAgICB9CisK
KyAgICAvLyBPbGRlciB2ZXJzaW9ucyBjYW5ub3QgcmVjb3ZlciB0aGUgb3JpZ2luYWwgSlNPTiBz
b3VyY2UgZnJvbSBkaXNrLgorICAgIHJldHVybiB7IH07Cit9CisKIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+
LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3JlYWRRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2Fj
eUZpbGVuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8gY29udGVudFJ1bGVMaXN0ID0gb3Bl
bkFuZE1hcE9yQ29weUNvbnRlbnRSdWxlTGlzdChwYXRoKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3Rv
cmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcGF0
aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGZhbHNlKTsKKyAgICAg
ICAgYXV0byBsZWdhY3lQYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmll
ciwgdHJ1ZSk7CisgICAgICAgIGlmIChmaWxlRXhpc3RzKGxlZ2FjeVBhdGgpKQorICAgICAgICAg
ICAgbW92ZUZpbGUobGVnYWN5UGF0aCwgcGF0aCk7CisKKyAgICAgICAgYXV0byBjb250ZW50UnVs
ZUxpc3QgPSBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KHBhdGgpOwogICAgICAgICBpZiAoIWNv
bnRlbnRSdWxlTGlzdCkgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJyb3I6Okxvb2t1cEZhaWxlZCk7CkBAIC00
NjUsNiArNDc4LDEyIEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnQK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGNvbnRlbnRSdWxlTGlzdC0+bWV0YURh
dGEudmVyc2lvbiAhPSBDb250ZW50UnVsZUxpc3RTdG9yZTo6Q3VycmVudENvbnRlbnRSdWxlTGlz
dEZpbGVWZXJzaW9uKSB7CisgICAgICAgICAgICBpZiAoYXV0byBzb3VyY2VGcm9tT2xkVmVyc2lv
biA9IGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKCpjb250ZW50UnVsZUxp
c3QpOyAhc291cmNlRnJvbU9sZFZlcnNpb24uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgc291cmNlRnJvbU9sZFZlcnNpb24gPSBzb3VyY2VGcm9tT2xkVmVyc2lvbi5pc29s
YXRlZENvcHkoKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jb21waWxlQ29udGVudFJ1bGVMaXN0
KGlkZW50aWZpZXIsIFdURk1vdmUoc291cmNlRnJvbU9sZFZlcnNpb24pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJyb3I6OlZlcnNpb25NaXNtYXRjaCk7
CiAgICAgICAgICAgICB9KTsKQEAgLTQ3OSwxNCArNDk4LDE5IEBAIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6Omxvb2t1cENvbnRlbnQKIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0
QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBt
X3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3Rv
cmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9s
ZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1f
cmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9y
ZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKIAotICAgICAgICBWZWN0b3I8
V1RGOjpTdHJpbmc+IGZ1bGxQYXRocyA9IGxpc3REaXJlY3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1
Y3RlZFBhdGhGaWx0ZXIobGVnYWN5RmlsZW5hbWUpKTsKKyAgICAgICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBmdWxsUGF0aHMgPSBsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRo
RmlsdGVyKGZhbHNlKSk7CisgICAgICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbGVnYWN5RnVsbFBh
dGhzID0gbGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcih0cnVl
KSk7CiAgICAgICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gaWRlbnRpZmllcnM7Ci0gICAgICAgIGlk
ZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnVsbFBhdGhzLnNpemUoKSk7Ci0gICAg
ICAgIGNvbnN0IGF1dG8gcHJlZml4TGVuZ3RoID0gY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2Fj
eUZpbGVuYW1lKS5sZW5ndGgoKTsKKyAgICAgICAgaWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShmdWxsUGF0aHMuc2l6ZSgpICsgbGVnYWN5RnVsbFBhdGhzLnNpemUoKSk7CisgICAg
ICAgIGNvbnN0IGF1dG8gcHJlZml4TGVuZ3RoID0gY29uc3RydWN0ZWRQYXRoUHJlZml4KGZhbHNl
KS5sZW5ndGgoKTsKKyAgICAgICAgY29uc3QgYXV0byBsZWdhY3lQcmVmaXhMZW5ndGggPSBjb25z
dHJ1Y3RlZFBhdGhQcmVmaXgodHJ1ZSkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgcGF0aCA6IGZ1bGxQYXRocykKICAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFw
cGVuZChkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgn
LycpICsgMSArIHByZWZpeExlbmd0aCkpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRo
IDogbGVnYWN5RnVsbFBhdGhzKQorICAgICAgICAgICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBw
ZW5kKGRlY29kZUZyb21GaWxlbmFtZShwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcv
JykgKyAxICsgbGVnYWN5UHJlZml4TGVuZ3RoKSkpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGlkZW50aWZpZXJzID0g
V1RGTW92ZShpZGVudGlmaWVycyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGlkZW50aWZpZXJzKSk7CkBAIC00OTYsNiArNTIwLDcgQEAgdm9pZCBD
b250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQwogCiB2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQ
STo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBdG9tU3RyaW5nOjppbml0
KCk7CiAgICAgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6aW5pdCgpOwogICAgIApAQCAtNTAzLDgg
KzUyOCw4IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW4KICAgICBp
ZiAoIXBhcnNlZFJ1bGVzLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0ciwgcGFyc2VkUnVsZXMuZXJyb3IoKSk7CiAgICAgCi0gICAgbV9jb21waWxl
UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZp
ZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5
RmlsZW5hbWUsIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IHBhcnNl
ZFJ1bGVzLnZhbHVlKCkuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0
b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOworICAgIG1fY29tcGlsZVF1ZXVl
LT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0g
aWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBh
cnNlZFJ1bGVzID0gcGFyc2VkUnVsZXMudmFsdWUoKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRo
ID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBhdXRvIHBhdGggPSBj
b25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBmYWxzZSk7CiAKICAgICAgICAg
YXV0byByZXN1bHQgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24pLCBXVEZNb3ZlKHBhcnNl
ZFJ1bGVzKSwgcGF0aCk7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CkBAIC01
MjMsMTkgKzU0OCwyMSBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVu
CiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25z
dCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVy
cm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3JlbW92ZVF1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5
KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBw
YXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5h
bWUpOwotCi0gICAgICAgIGlmICghZGVsZXRlRmlsZShwYXRoKSkgewotICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92
ZUZhaWxlZCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlbW92ZVF1
ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVy
ID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29tcGxldGUgPSBbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKHN0ZDo6ZXJyb3JfY29kZSBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKGF1dG8gbGVnYWN5UGF0aCA9IGNvbnN0
cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIHRydWUpOyBmaWxlRXhpc3RzKGxlZ2Fj
eVBhdGgpKSB7CisgICAgICAgICAgICBpZiAoIWRlbGV0ZUZpbGUobGVnYWN5UGF0aCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlKEVycm9yOjpSZW1vdmVGYWlsZWQpOworICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRlKHsgfSk7CiAgICAgICAgIH0KLQotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIH0pOwor
ICAgICAgICBpZiAoYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRp
ZmllciwgZmFsc2UpOyAhZGVsZXRlRmlsZShwYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0ZShFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKKyAgICAgICAgY29tcGxldGUoeyB9KTsKICAgICB9
KTsKIH0KIApAQCAtNTQ3LDcgKzU3NCw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnN5
bmNocm9ub3VzUmUKIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRl
bnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byBmaWxlID0gb3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlm
aWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgRmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgYXV0byBm
aWxlID0gb3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBm
YWxzZSksIEZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmIChmaWxlID09IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxpc3RNZXRh
RGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9OwpAQCAtNTU4LDQzICs1ODUs
MjIgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbgogCiB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJpbmcpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRD
b3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxl
bmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVj
dGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKLSAgICAgICAg
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewogICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShXVEY6OlN0cmluZyBzb3VyY2UpIG11dGFibGUgewogICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc291cmNlID0g
c291cmNlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzb3VyY2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH07CiAKLSAg
ICAgICAgYXV0byBjb250ZW50UnVsZUxpc3QgPSBvcGVuQW5kTWFwT3JDb3B5Q29udGVudFJ1bGVM
aXN0KHBhdGgpOworICAgICAgICBhdXRvIGNvbnRlbnRSdWxlTGlzdCA9IG9wZW5BbmRNYXBDb250
ZW50UnVsZUxpc3QoY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgZmFsc2Up
KTsKICAgICAgICAgaWYgKCFjb250ZW50UnVsZUxpc3QpIHsKLSAgICAgICAgICAgIGNvbXBsZXRl
KHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhdXRvIGxlZ2FjeUNvbnRl
bnRSdWxlTGlzdCA9IG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3RydWN0ZWRQYXRoKHN0
b3JlUGF0aCwgaWRlbnRpZmllciwgdHJ1ZSkpOworICAgICAgICAgICAgaWYgKCFsZWdhY3lDb250
ZW50UnVsZUxpc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlKHsgfSk7CisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGUoZ2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBl
ZEZpbGUoKmxlZ2FjeUNvbnRlbnRSdWxlTGlzdCkpOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBzd2l0Y2ggKGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEudmVyc2lvbikgewotICAgICAg
ICBjYXNlIDk6Ci0gICAgICAgIGNhc2UgMTA6Ci0gICAgICAgIGNhc2UgMTE6Ci0gICAgICAgICAg
ICBpZiAoIWNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEuc291cmNlU2l6ZSkgewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRlKHsgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYm9vbCBpczhCaXQgPSBjb250ZW50UnVsZUxpc3QtPmRhdGEuZGF0
YSgpW0NvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplXTsKLSAgICAgICAgICAgIHNpemVfdCBz
dGFydCA9IENvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplICsgc2l6ZW9mKGJvb2wpOwotICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEuc291cmNl
U2l6ZSAtIHNpemVvZihib29sKTsKLSAgICAgICAgICAgIGlmIChpczhCaXQpCi0gICAgICAgICAg
ICAgICAgY29tcGxldGUoV1RGOjpTdHJpbmcoY29udGVudFJ1bGVMaXN0LT5kYXRhLmRhdGEoKSAr
IHN0YXJ0LCBsZW5ndGgpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFT
U0VSVCghKGxlbmd0aCAlIHNpemVvZihVQ2hhcikpKTsKLSAgICAgICAgICAgICAgICBjb21wbGV0
ZShXVEY6OlN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY29udGVudFJ1bGVM
aXN0LT5kYXRhLmRhdGEoKSArIHN0YXJ0KSwgbGVuZ3RoIC8gc2l6ZW9mKFVDaGFyKSkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
T2xkZXIgdmVyc2lvbnMgY2Fubm90IHJlY292ZXIgdGhlIG9yaWdpbmFsIEpTT04gc291cmNlIGZy
b20gZGlzay4KLSAgICAgICAgY29tcGxldGUoeyB9KTsKKyAgICAgICAgY29tcGxldGUoZ2V0Q29u
dGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBlZEZpbGUoKmNvbnRlbnRSdWxlTGlzdCkpOwogICAg
IH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAkocmV2aXNpb24gMjc1MTYyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDE0ICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgLy8gdG8gcHJldmVudCBjcmFzaGlu
ZyB3aGlsZSBsb2FkaW5nIG9sZCBkYXRhLgogICAgIC8vIEFsc28gdXBkYXRlIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UgdG8gYmUgYWJsZSB0byBmaW5kIHRo
ZSBvcmlnaW5hbCBKU09OCiAgICAgLy8gc291cmNlIGZyb20gb2xkIHZlcnNpb25zLgotICAgIC8v
IFVwZGF0ZSBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlIHdp
dGggdGhpcy4KKyAgICAvLyBVcGRhdGUgZ2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBl
ZEZpbGUgd2l0aCB0aGlzLgogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgQ3VycmVudENv
bnRlbnRSdWxlTGlzdEZpbGVWZXJzaW9uID0gMTE7CiAKLSAgICBzdGF0aWMgQ29udGVudFJ1bGVM
aXN0U3RvcmUmIGRlZmF1bHRTdG9yZShib29sIGxlZ2FjeUZpbGVuYW1lKTsKLSAgICBzdGF0aWMg
UmVmPENvbnRlbnRSdWxlTGlzdFN0b3JlPiBzdG9yZVdpdGhQYXRoKGNvbnN0IFdURjo6U3RyaW5n
JiBzdG9yZVBhdGgsIGJvb2wgbGVnYWN5RmlsZW5hbWUpOworICAgIHN0YXRpYyBDb250ZW50UnVs
ZUxpc3RTdG9yZSYgZGVmYXVsdFN0b3JlKCk7CisgICAgc3RhdGljIFJlZjxDb250ZW50UnVsZUxp
c3RTdG9yZT4gc3RvcmVXaXRoUGF0aChjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoKTsKIAot
ICAgIGV4cGxpY2l0IENvbnRlbnRSdWxlTGlzdFN0b3JlKGJvb2wgbGVnYWN5RmlsZW5hbWUpOwot
ICAgIGV4cGxpY2l0IENvbnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9y
ZVBhdGgsIGJvb2wgbGVnYWN5RmlsZW5hbWUpOworICAgIGV4cGxpY2l0IENvbnRlbnRSdWxlTGlz
dFN0b3JlKCk7CisgICAgZXhwbGljaXQgQ29udGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpT
dHJpbmcmIHN0b3JlUGF0aCk7CiAgICAgdmlydHVhbCB+Q29udGVudFJ1bGVMaXN0U3RvcmUoKTsK
IAogICAgIHZvaWQgY29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKQEAgLTc3LDE1ICs3
NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJp
bmcpPik7CiAKIHByaXZhdGU6Ci0gICAgV1RGOjpTdHJpbmcgZGVmYXVsdFN0b3JlUGF0aChib29s
IGxlZ2FjeUZpbGVuYW1lKTsKLSAgICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUmIGxlZ2Fj
eURlZmF1bHRTdG9yZSgpOwotICAgIHN0YXRpYyBDb250ZW50UnVsZUxpc3RTdG9yZSYgbm9uTGVn
YWN5RGVmYXVsdFN0b3JlKCk7CisgICAgV1RGOjpTdHJpbmcgZGVmYXVsdFN0b3JlUGF0aCgpOwog
ICAgIAogICAgIGNvbnN0IFdURjo6U3RyaW5nIG1fc3RvcmVQYXRoOwogICAgIFJlZjxXVEY6Oldv
cmtRdWV1ZT4gbV9jb21waWxlUXVldWU7CiAgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3JlYWRR
dWV1ZTsKICAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fcmVtb3ZlUXVldWU7Ci0gICAgYm9vbCBt
X2xlZ2FjeUZpbGVuYW1lIHsgZmFsc2UgfTsKIH07CiAKIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdv
cnkmIGNvbnRlbnRSdWxlTGlzdFN0b3JlRXJyb3JDYXRlZ29yeSgpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCShyZXZpc2lvbiAyNzUxNjIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFdLVHlwZUlEIFdLVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZUdldFQKIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZiBXS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVDcmVhdGUoV0tTdHJpbmdSZWYgcGF0aCkKIHsKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQotICAgIHJldHVybiB0b0FQSSgmQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6c3RvcmVXaXRoUGF0aCh0b1dURlN0cmluZyhwYXRoKSwgZmFsc2UpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQ
YXRoKHRvV1RGU3RyaW5nKHBhdGgpKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocGF0aCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjc1MTYyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdURjo6U3RyaW5nIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVnYWN5RmlsZW5hbWUp
CitXVEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCgpCiB7
CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMOwpAQCAt
NTIsMTAgKzUyLDcgQEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bAog
ICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxl
SWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobGVnYWN5RmlsZW5hbWUpCi0gICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVS
TC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVu
c2lvbnMiIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRl
bnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDb250ZW50UnVsZUxpc3RzIiBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICBjb250ZW50
UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiQ29udGVudFJ1bGVMaXN0cyIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICB9KTsKIAogICAgIGlm
ICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpj
b250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5nZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxp
c3RTdG9yZS5oCShyZXZpc2lvbiAyNzUxNjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5
ICszNSw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4KICsgKGlu
c3RhbmNldHlwZSlkZWZhdWx0U3RvcmU7CiArIChpbnN0YW5jZXR5cGUpc3RvcmVXaXRoVVJMOihO
U1VSTCAqKXVybDsKIAotLSAodm9pZCljb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5n
ICopIGVuY29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
Q29udGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lk
KWNvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZp
ZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDooTlNTdHJpbmcgKillbmNvZGVkQ29udGVudFJ1bGVM
aXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClsb29rVXBDb250ZW50UnVsZUxpc3RG
b3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKFdLQ29udGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7
CiAtICh2b2lkKXJlbW92ZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcjsKLS0gKHZvaWQpZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmll
cnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4qKSljb21wbGV0aW9uSGFuZGxlcjsKKy0g
KHZvaWQpZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnM6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRl
bnRSdWxlTGlzdFN0b3JlLm1tCShyZXZpc2lvbiAyNzUxNjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjYsMTQgKzY2LDEyIEBAIC0gKHZvaWQpZGVhbGxvYwogCiArIChpbnN0YW5jZXR5cGUp
ZGVmYXVsdFN0b3JlCiB7Ci0gICAgY29uc3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IGZhbHNlOwot
ICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9y
ZShsZWdhY3lGaWxlbmFtZSkpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVM
aXN0U3RvcmU6OmRlZmF1bHRTdG9yZSgpKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0
aFVSTDooTlNVUkwgKil1cmwKIHsKLSAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gZmFs
c2U7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVX
aXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBsZWdhY3lG
aWxlbmFtZSkpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6
OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikp
OwogfQogCiAtICh2b2lkKWNvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0
cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDooTlNTdHJpbmcgKillbmNv
ZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRS
dWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCkBAIC0xNjYsMTQgKzE2NCwx
MiBAQCAtICh2b2lkKV9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpCiAKICsgKGluc3Rh
bmNldHlwZSlkZWZhdWx0U3RvcmVXaXRoTGVnYWN5RmlsZW5hbWUKIHsKLSAgICBjb25zdCBib29s
IGxlZ2FjeUZpbGVuYW1lID0gdHJ1ZTsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRS
dWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUobGVnYWN5RmlsZW5hbWUpKTsKKyAgICByZXR1cm4g
d3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUoKSk7CiB9CiAK
ICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTooTlNVUkwgKil1
cmwKIHsKLSAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gdHJ1ZTsKLSAgICByZXR1cm4g
d3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNv
bHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24sIGxlZ2FjeUZpbGVuYW1lKSk7CisgICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aCh1
cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7CiB9CiAKIEBlbmQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0
b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJpdmF0ZS5oCShyZXZpc2lvbiAyNzUxNjIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9y
ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDExIEBACiAvLyBGb3IgdGVz
dGluZyBvbmx5LgogLSAodm9pZClfcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0czsKIC0gKHZvaWQp
X2ludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcg
KilpZGVudGlmaWVyOwotLSAodm9pZClfZ2V0Q29udGVudFJ1bGVMaXN0U291cmNlRm9ySWRlbnRp
ZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U1N0cmluZyopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZ2V0Q29udGVudFJ1bGVMaXN0
U291cmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLSAodm9pZClf
Y29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmll
ciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKSBlbmNvZGVkQ29udGVudFJ1bGVM
aXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCi0vLyBUbyBtYWludGFpbiBjb21wYXRpYmlsaXR5
IHdpdGggX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZQotLy8gRklYTUU6IEFkZCBzb21ldGhp
bmcgdG8gZXhpc3RpbmcgY2xpZW50cyBvZiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHRv
IG1pZ3JhdGUgZmlsZXMgZnJvbSBsZWdhY3kgZmlsZW5hbWVzLAotLy8gYWRvcHQgV0tDb250ZW50
UnVsZUxpc3RTdG9yZSwgYW5kIHJlbW92ZSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLgor
Ly8gRklYTUU6IFJlbW92ZSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLgogKyAoaW5zdGFu
Y2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZTsKICsgKGluc3RhbmNldHlwZSlz
dG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTooTlNVUkwgKil1cmw7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjc1MTYyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVHTGliLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIEFQSSB7CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotU3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpk
ZWZhdWx0U3RvcmVQYXRoKGJvb2wpCitTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1
bHRTdG9yZVBhdGgoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBT
dHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVz
ZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwCShyZXZpc2lv
biAyNzUxNjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudEZpbHRlclN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUKICAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfdXNlcl9jb250ZW50X2ZpbHRlcl9zdG9yZV9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3RlZChvYmplY3QpOwogCiAgICAgV2ViS2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZSogc3Rv
cmUgPSBXRUJLSVRfVVNFUl9DT05URU5UX0ZJTFRFUl9TVE9SRShvYmplY3QpOwotICAgIHN0b3Jl
LT5wcml2LT5zdG9yZSA9IGFkb3B0UmVmKG5ldyBBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmUtPnByaXYt
PnN0b3JhZ2VQYXRoLmdldCgpKSwgZmFsc2UpKTsKKyAgICBzdG9yZS0+cHJpdi0+c3RvcmUgPSBh
ZG9wdFJlZihuZXcgQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JlLT5wcml2LT5zdG9yYWdlUGF0aC5nZXQo
KSkpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9maWx0ZXJfc3RvcmVf
Y2xhc3NfaW5pdChXZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlQ2xhc3MqIHN0b3JlQ2xhc3Mp
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzUxNjIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wMy0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1pZ3JhdGUgX1dLVXNlckNvbnRlbnRFeHRlbnNpb24gYW5k
IG9sZGVyIHZlcnNpb25zIG9mIFdLQ29udGVudFJ1bGVMaXN0IHRvIFdLQ29udGVudFJ1bGVMaXN0
IGR1cmluZyBsb29rdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3RO
b3RpZmljYXRpb24ubW06CisgICAgICAgIChyZXNwb25kKToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uXSk6CisKIDIwMjEtMDMtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IGdldFVzZXJNZWRpYSBTUEkgdG8gQVBJCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQkocmV2aXNpb24gMjc1MTYy
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBv
cnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgog
I2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2Vi
S2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CkBAIC0xOTgsNiArMTk4LDE0
IEBAIHN0YXRpYyBTdHJpbmcgd2ViU29ja2V0QWNjZXB0VmFsdWUoY29uc3QKICAgICByZXR1cm4g
YmFzZTY0RW5jb2RlKGhhc2guZGF0YSgpLCBTSEExOjpoYXNoU2l6ZSk7CiB9CiAKK3N0YXRpYyB2
b2lkIHJlc3BvbmQoaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBjb25zdCBjaGFyKiBodG1sKQor
eworICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihodG1sKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3Jl
bGVhc2VdOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxl
bihodG1sKV1dOworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9OworCiBURVNUKENvbnRlbnRSdWxl
TGlzdCwgUmVzb3VyY2VUeXBlcykKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
STsKQEAgLTIxNCwyMSArMjIyLDE1IEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBSZXNvdXJjZVR5
cGVzKQogCiAgICAgYXV0byBoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1
dG9yZWxlYXNlXTsKICAgICBoYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdL
V2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKLSAgICAgICAgYXV0byByZXNw
b25kID0gW3Rhc2tdIChjb25zdCBjaGFyKiBodG1sKSB7Ci0gICAgICAgICAgICBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2su
cmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpz
dHJsZW4oaHRtbCkgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07Ci0gICAgICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVu
KGh0bWwpXV07Ci0gICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwotICAgICAgICB9OwogICAg
ICAgICBOU1N0cmluZyAqcGF0aCA9IHRhc2sucmVxdWVzdC5VUkwucGF0aDsKICAgICAgICAgaWYg
KFtwYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja1dlYlNvY2tldC5odG1sIl0pCi0gICAgICAg
ICAgICByZXR1cm4gcmVzcG9uZChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+
dmFyIHdzID0gbmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6JWQvdGVzdCcpO3dzLm9ub3Bl
bj0oKT0+e2FsZXJ0KCdvbm9wZW4nKX07d3Mub25lcnJvcj0oKT0+e2FsZXJ0KCdvbmVycm9yJyl9
PC9zY3JpcHQ+Iiwgc2VydmVyUG9ydF0uVVRGOFN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4g
cmVzcG9uZCh0YXNrLCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+dmFyIHdz
ID0gbmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6JWQvdGVzdCcpO3dzLm9ub3Blbj0oKT0+
e2FsZXJ0KCdvbm9wZW4nKX07d3Mub25lcnJvcj0oKT0+e2FsZXJ0KCdvbmVycm9yJyl9PC9zY3Jp
cHQ+Iiwgc2VydmVyUG9ydF0uVVRGOFN0cmluZyk7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvY2hlY2tGZXRjaC5odG1sIl0pCi0gICAgICAgICAgICByZXR1cm4gcmVzcG9u
ZCgiPHNjcmlwdD5mZXRjaCgndGVzdDovLy9mZXRjaENvbnRlbnQnKS50aGVuKCgpPT57YWxlcnQo
J2ZldGNoZWQnKX0pLmNhdGNoKCgpPT57YWxlcnQoJ2RpZCBub3QgZmV0Y2gnKX0pPC9zY3JpcHQ+
Iik7CisgICAgICAgICAgICByZXR1cm4gcmVzcG9uZCh0YXNrLCAiPHNjcmlwdD5mZXRjaCgndGVz
dDovLy9mZXRjaENvbnRlbnQnKS50aGVuKCgpPT57YWxlcnQoJ2ZldGNoZWQnKX0pLmNhdGNoKCgp
PT57YWxlcnQoJ2RpZCBub3QgZmV0Y2gnKX0pPC9zY3JpcHQ+Iik7CiAgICAgICAgIGlmIChbcGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvZmV0Y2hDb250ZW50Il0pCi0gICAgICAgICAgICByZXR1cm4g
cmVzcG9uZCgiaGVsbG8iKTsKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICJoZWxs
byIpOwogICAgICAgICBpZiAoW3BhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NoZWNrWEhSLmh0bWwi
XSkKLSAgICAgICAgICAgIHJldHVybiByZXNwb25kKCI8c2NyaXB0PnZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTt4aHIub3BlbignR0VUJywgJ3Rlc3Q6Ly8vZmV0Y2hDb250ZW50Jyk7eGhy
Lm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHhoci5yZWFkeVN0YXRlPT00KXtzZXRUaW1lb3V0
KCgpPT57YWxlcnQoJ3hociBmaW5pc2hlZCcpfSwgMCl9fTt4aHIub25lcnJvcj0oKT0+e2FsZXJ0
KCd4aHIgZXJyb3InKX07eGhyLnNlbmQoKTwvc2NyaXB0PiIpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3BvbmQodGFzaywgIjxzY3JpcHQ+dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO3ho
ci5vcGVuKCdHRVQnLCAndGVzdDovLy9mZXRjaENvbnRlbnQnKTt4aHIub25yZWFkeXN0YXRlY2hh
bmdlPSgpPT57aWYoeGhyLnJlYWR5U3RhdGU9PTQpe3NldFRpbWVvdXQoKCk9PnthbGVydCgneGhy
IGZpbmlzaGVkJyl9LCAwKX19O3hoci5vbmVycm9yPSgpPT57YWxlcnQoJ3hociBlcnJvcicpfTt4
aHIuc2VuZCgpPC9zY3JpcHQ+Iik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfTsKQEAgLTI4MCwyMSArMjgyLDE1IEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBUaGlyZFBh
cnR5KQogewogICAgIGF1dG8gaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBh
dXRvcmVsZWFzZV07CiAgICAgaGFuZGxlci5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihX
S1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7Ci0gICAgICAgIGF1dG8gcmVz
cG9uZCA9IFt0YXNrXSAoY29uc3QgY2hhciogaHRtbCkgewotICAgICAgICAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
c3RybGVuKGh0bWwpIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOwotICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxl
bihodG1sKV1dOwotICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKLSAgICAgICAgfTsKICAg
ICAgICAgTlNTdHJpbmcgKnBhdGggPSB0YXNrLnJlcXVlc3QuVVJMLnBhdGg7CiAgICAgICAgIGlm
IChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKLSAgICAgICAgICAgIHJl
dHVybiByZXNwb25kKCI8c2NyaXB0PiIKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ss
ICI8c2NyaXB0PiIKICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gdGVzdFdlYktpdCgpIHsgZmV0
Y2goJ3Rlc3Q6Ly93ZWJraXQub3JnL3Jlc291cmNlLnR4dCcsIHttb2RlOiduby1jb3JzJ30pLnRo
ZW4oKCk9PnthbGVydCgnd2Via2l0Lm9yZyBsb2FkZWQnKTt9KS5jYXRjaCgoKT0+e2FsZXJ0KCd3
ZWJraXQub3JnIGJsb2NrZWQnKTt9KSB9OyIKICAgICAgICAgICAgICAgICAiZmV0Y2goJ3Rlc3Q6
Ly9zdWIuZXhhbXBsZS5jb20vcmVzb3VyY2UudHh0Jywge21vZGU6J25vLWNvcnMnfSkudGhlbigo
KT0+e2FsZXJ0KCdzdWIuZXhhbXBsZS5jb20gbG9hZGVkJyk7dGVzdFdlYktpdCgpO30pLmNhdGNo
KCgpPT57YWxlcnQoJ3N1Yi5leGFtcGxlLmNvbSBibG9ja2VkJyk7dGVzdFdlYktpdCgpO30pIgog
ICAgICAgICAgICAgIjwvc2NyaXB0PiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChbcGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCIvcmVzb3VyY2UudHh0Il0pCi0gICAgICAgICAgICByZXR1cm4gcmVz
cG9uZCgiaGkiKTsKKyAgICAgICAgICAgIHJldHVybiByZXNwb25kKHRhc2ssICJoaSIpOwogCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CkBAIC0zNTQsMzAgKzM1MCwyNCBA
QCBURVNUKENvbnRlbnRSdWxlTGlzdCwgVG9wRnJhbWVDaGlsZEZyYW1lCiAgICAgYXV0byBoYW5k
bGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKICAgICBfX2Js
b2NrIGJvb2wgbG9hZGVkSUZyYW1lID0gZmFsc2U7CiAgICAgaGFuZGxlci5zdGFydFVSTFNjaGVt
ZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7
Ci0gICAgICAgIGF1dG8gcmVzcG9uZCA9IFt0YXNrXSAoY29uc3QgY2hhciogaHRtbCkgewotICAg
ICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6c3RybGVuKGh0bWwpIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRv
cmVsZWFzZV07Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2Vd
OwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVz
Omh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwotICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNo
XTsKLSAgICAgICAgfTsKICAgICAgICAgTlNTdHJpbmcgKnBhdGggPSB0YXNrLnJlcXVlc3QuVVJM
LnBhdGg7CiAgICAgICAgIGlmIChbcGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0p
Ci0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgiPGlmcmFtZSBzcmM9J2ZyYW1lLmh0bWwnPjwv
aWZyYW1lPiIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQodGFzaywgIjxpZnJhbWUgc3Jj
PSdmcmFtZS5odG1sJz48L2lmcmFtZT4iKTsKICAgICAgICAgaWYgKFtwYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi9mcmFtZS5odG1sIl0pIHsKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShsb2FkZWRJ
RnJhbWUpOwogICAgICAgICAgICAgbG9hZGVkSUZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiByZXNwb25kKCJoaSIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQodGFzaywgImhp
Iik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFtwYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9mZXRj
aF9tYWluLmh0bWwiXSkgewotICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQoIjxzY3JpcHQ+Igor
ICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQodGFzaywgIjxzY3JpcHQ+IgogICAgICAgICAgICAg
ICAgICJmdW5jdGlvbiBhZGRpZnJhbWUoKSB7IHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpZnJhbWUnKTsgaWZyYW1lLnNyYyA9ICdmZXRjaF9pZnJhbWUuaHRtbCc7IGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsgfTsiCiAgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIHRlc3RmZXRjaCgpIHsgZmV0Y2goJy9mZXRjaGVkLnR4dCcpLnRoZW4oKCk9PnthbGVydCgn
bWFpbiBmcmFtZSBmZXRjaGVkIHN1Y2Nlc3NmdWxseScpO2FkZGlmcmFtZSgpfSkuY2F0Y2goKCk9
PnthbGVydCgnbWFpbiBmcmFtZSBmZXRjaCBmYWlsZWQnKTthZGRpZnJhbWUoKTt9KSB9IgogICAg
ICAgICAgICAgICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J3Rlc3RmZXRjaCgpJy8+Iik7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKFtwYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9mZXRjaGVkLnR4
dCJdKQotICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmQoImhpIik7CisgICAgICAgICAgICByZXR1
cm4gcmVzcG9uZCh0YXNrLCAiaGkiKTsKICAgICAgICAgaWYgKFtwYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAIi9mZXRjaF9pZnJhbWUuaHRtbCJdKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzcG9uZCgi
PHNjcmlwdD4iCisgICAgICAgICAgICByZXR1cm4gcmVzcG9uZCh0YXNrLCAiPHNjcmlwdD4iCiAg
ICAgICAgICAgICAgICAgImZ1bmN0aW9uIHRlc3RmZXRjaCgpIHsgZmV0Y2goJy9mZXRjaGVkLnR4
dCcpLnRoZW4oKCk9PnthbGVydCgnaWZyYW1lIGZldGNoZWQgc3VjY2Vzc2Z1bGx5Jyl9KS5jYXRj
aCgoKT0+e2FsZXJ0KCdpZnJhbWUgZmV0Y2ggZmFpbGVkJyk7fSkgfSIKICAgICAgICAgICAgICAg
ICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSd0ZXN0ZmV0Y2goKScvPiIpOwogICAgICAgICB9CkBA
IC00MjAsNiArNDEwLDg0IEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBUb3BGcmFtZUNoaWxkRnJh
bWUKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImlm
cmFtZSBmZXRjaGVkIHN1Y2Nlc3NmdWxseSIpOwogfQogCitURVNUKENvbnRlbnRSdWxlTGlzdCwg
TGVnYWN5VmVyc2lvbkFuZE5hbWUpCit7CisgICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IFtOU1Rl
bXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRl
bnRSdWxlTGlzdFRlc3REaXJlY3RvcnkiXTsKKyAgICBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlICpz
dG9yZSA9IFtXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTDpbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOmRpcmVjdG9yeV1dOworICAgIAorICAgIGF1dG8gaGFuZGxlciA9IFtbVGVzdFVS
TFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgaGFuZGxlci5zdGFydFVSTFNj
aGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
KSB7CisgICAgICAgIHJlc3BvbmQodGFzaywgImhpIik7CisgICAgfTsKKworICAgIGF1dG8gc2V0
dXBMZWdhY3lDb250ZW50UnVsZUxpc3QgPSBbZGlyZWN0b3J5XSB7CisgICAgICAgIC8vIENvbXBp
bGVkIHdpdGggQ3VycmVudENvbnRlbnRSdWxlTGlzdEZpbGVWZXJzaW9uID0gMTAKKyAgICAgICAg
c3RkOjphcnJheTx1aW50OF90LCAxNjM+IG9sZFZlcnNpb25Db21waWxlZENvbnRlbnRSdWxlTGlz
dCB7CisgICAgICAgICAgICAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDNlLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLAor
ICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYSwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAg
ICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAgICAg
ICAweDAxLCAweDViLCAweDdiLCAweDIyLCAweDYxLCAweDYzLCAweDc0LCAweDY5LCAweDZmLCAw
eDZlLCAweDIyLCAweDNhLCAweDdiLCAweDIyLCAweDc0LCAweDc5LAorICAgICAgICAgICAgMHg3
MCwgMHg2NSwgMHgyMiwgMHgzYSwgMHgyMiwgMHg2MiwgMHg2YywgMHg2ZiwgMHg2MywgMHg2Yiwg
MHgyMiwgMHg3ZCwgMHgyYywgMHgyMiwgMHg3NCwgMHg3MiwKKyAgICAgICAgICAgIDB4NjksIDB4
NjcsIDB4NjcsIDB4NjUsIDB4NzIsIDB4MjIsIDB4M2EsIDB4N2IsIDB4MjIsIDB4NzUsIDB4NzIs
IDB4NmMsIDB4MmQsIDB4NjYsIDB4NjksIDB4NmMsCisgICAgICAgICAgICAweDc0LCAweDY1LCAw
eDcyLCAweDIyLCAweDNhLCAweDIyLCAweDc0LCAweDY1LCAweDczLCAweDc0LCAweDIyLCAweDdk
LCAweDdkLCAweDVkLCAweDAwLCAweDJhLAorICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwg
MHgxMCwgMHg3NCwgMHgwNSwgMHgxYiwgMHhmZCwgMHgxMCwgMHg2NSwgMHgwOCwgMHgxMCwgMHg3
NCwgMHhmZCwgMHgxYiwgMHhmNSwKKyAgICAgICAgICAgIDB4MTIsIDB4NzMsIDB4NzQsIDB4MDcs
IDB4ZjgsIDB4MWIsIDB4ZWUsIDB4MTAsIDB4NzQsIDB4MDUsIDB4MWIsIDB4ZTksIDB4MDYsIDB4
MDAsIDB4MDAsIDB4MDAsCisgICAgICAgICAgICAweDAwLCAweDEwLCAweDY1LCAweGVmLCAweDEw
LCAweDc0LCAweGU0LCAweDFiLCAweGRjLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAw
eDA1LCAweDAwLAorICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwYQorICAgICAgICB9OworICAg
ICAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6b2xkVmVyc2lvbkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0LmRhdGEoKSBsZW5ndGg6b2xkVmVyc2lvbkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0LnNpemUoKV07CisgICAgICAgIFtkYXRhIHdyaXRlVG9GaWxlOltkaXJlY3Rvcnkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbi10ZXN0Il0g
YXRvbWljYWxseTpZRVNdOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IHJlbW92ZUl0ZW1BdFBhdGg6W2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDb250ZW50UnVsZUxpc3QtdGVzdCJdIGVycm9yOm5pbF07CisgICAgfTsKKyAgICAKKyAg
ICBhdXRvIGxlZ2FjeUZpbGVFeGlzdHMgPSBbZGlyZWN0b3J5XSB7CisgICAgICAgIHJldHVybiBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W2RpcmVjdG9y
eSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50UnVsZUxpc3QtdGVzdCJd
XTsKKyAgICB9OworCisgICAgc2V0dXBMZWdhY3lDb250ZW50UnVsZUxpc3QoKTsKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxXS0NvbnRlbnRSdWxlTGlzdD4gcmV0YWluZWRMaXN0OworICAgIFtzdG9y
ZSBsb29rVXBDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOkAidGVzdCIgY29tcGxldGlvbkhh
bmRsZXI6XihXS0NvbnRlbnRSdWxlTGlzdCAqbGlzdCwgTlNFcnJvciAqKSB7CisgICAgICAgIHJl
dGFpbmVkTGlzdCA9IGxpc3Q7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZExpc3QpCisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxTY2hl
bWU6QCJ0ZXN0Il07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyIGZvclVSTFNjaGVtZTpAInNjaGVtZSJdOworICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgW3dl
YlZpZXcuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkQ29udGVudFJ1bGVM
aXN0OnJldGFpbmVkTGlzdC5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInNjaGVtZTovLy8i
XV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy8iXV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKworICAgIHNldHVwTGVnYWN5Q29udGVu
dFJ1bGVMaXN0KCk7CisgICAgX19ibG9jayBib29sIHJlbW92ZWQgPSBmYWxzZTsKKyAgICBbc3Rv
cmUgcmVtb3ZlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjpAInRlc3QiIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UobGVnYWN5RmlsZUV4aXN0cygpKTsKKyAgICAgICAgcmVtb3Zl
ZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZW1vdmVk
KTsKKyAgICAKKyAgICBzZXR1cExlZ2FjeUNvbnRlbnRSdWxlTGlzdCgpOworICAgIF9fYmxvY2sg
Ym9vbCBmb3VuZEF2YWlsYWJsZSA9IGZhbHNlOworICAgIFtzdG9yZSBnZXRBdmFpbGFibGVDb250
ZW50UnVsZUxpc3RJZGVudGlmaWVyczpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmlkZW50aWZpZXJz
KSB7CisgICAgICAgIEVYUEVDVF9FUShpZGVudGlmaWVycy5jb3VudCwgMXUpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoaWRlbnRpZmllcnNbMF0sIEAidGVzdCIpOworICAgICAgICBmb3VuZEF2
YWlsYWJsZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZW1vdmVkKTsKKworICAgIF9fYmxvY2sgYm9vbCBnb3RTb3VyY2UgPSBmYWxzZTsKKyAgICBbc3Rv
cmUgX2dldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZvcklkZW50aWZpZXI6QCJ0ZXN0IiBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpzb3VyY2UpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHNvdXJjZSwgIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJ0ZXN0XCJ9fV0iKTsKKyAgICAgICAgZ290U291cmNlID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdFNvdXJjZSk7Cit9CisK
ICNpZiBIQVZFKFNTTCkKIAogVEVTVChXZWJLaXQsIFJlZGlyZWN0VG9QbGFpbnRleHRIVFRQU1Vw
Z3JhZGUpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjc1MTYyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDUg
KzUxLDYgQEAKIC0gKHZvaWQpX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247CiAtICh2
b2lkKV90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uV2l0aFByZWZlcmVuY2VzOihXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzOwogLSAodm9pZClfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbldpdGhvdXRQcmVzZW50YXRpb25VcGRhdGU7CistICh2b2lkKV90ZXN0
X3dhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwogLSAodm9pZClfdGVzdF93YWl0
Rm9yV2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGU7CiBAZW5kCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCShyZXZp
c2lvbiAyNzUxNjIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsMTcgQEAgLSAodm9pZClf
dGVzdF93YWl0Rm9yRGlkU3RhcnRQcm92aXNpb25hbAogICAgIHNlbGYubmF2aWdhdGlvbkRlbGVn
YXRlID0gbmlsOwogfQogCistICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uCit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlKTsK
KworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKworICAgIHNlbGYubmF2aWdhdGlvbkRlbGVn
YXRlID0gbmlsOworfQorCiAtICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
V2l0aG91dFByZXNlbnRhdGlvblVwZGF0ZQogewogICAgIEVYUEVDVF9GQUxTRShzZWxmLm5hdmln
YXRpb25EZWxlZ2F0ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>