<?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>171316</bug_id>
          
          <creation_ts>2017-04-25 23:36:55 -0700</creation_ts>
          <short_desc>Encoded filename should be decoded for WKContentExtension.identifier</short_desc>
          <delta_ts>2017-04-26 10:09:04 -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></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>aestes</cc>
    
    <cc>buildbot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1301509</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-25 23:36:55 -0700</bug_when>
    <thetext>Encoded filename should be decoded for WKContentExtension.identifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301510</commentid>
    <comment_count>1</comment_count>
      <attachid>308223</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-25 23:37:31 -0700</bug_when>
    <thetext>Created attachment 308223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301515</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-25 23:39:19 -0700</bug_when>
    <thetext>Attachment 308223 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKContentExtensionStore.mm:148:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKContentExtensionStore.mm:161:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301652</commentid>
    <comment_count>3</comment_count>
      <attachid>308223</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-26 10:06:12 -0700</bug_when>
    <thetext>Comment on attachment 308223
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIContentExtensionStore.cpp:387
&gt; +            auto contentExtension = createExtension(identifier, metaData, fileData);
&gt; +            completionHandler(WTFMove(contentExtension), { });

I don&apos;t think you need a local variable for contentExtension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301653</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-26 10:09:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/r215807</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308223</attachid>
            <date>2017-04-25 23:37:31 -0700</date>
            <delta_ts>2017-04-26 10:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171316-20170425233731.patch</filename>
            <type>text/plain</type>
            <size>42025</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTc5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA0LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5jb2RlZCBm
aWxlbmFtZSBzaG91bGQgYmUgZGVjb2RlZCBmb3IgV0tDb250ZW50RXh0ZW5zaW9uLmlkZW50aWZp
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTMx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vRmlsZVN5c3RlbS5oOgorCiAyMDE3LTA0LTI1ICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkNyeXB0b10gRW5oYW5jZSB3YXlzIHRvIGNvbnZl
cnQgYW4gRUNEU0Egc2lnbmF0dXJlIGJpbmFyeSBpbnRvIERFUiBmb3JtYXQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDIxNTc5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5
MCw3IEBAIGJvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKTsKIAogLy8gRW5jb2RlIGEg
c3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIGRlY29kZUZyb21GaWxl
bmFtZShjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVGcm9tRmls
ZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmlsZXNIYXZlU2Ft
ZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMjE1NzkxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBFbmNvZGVkIGZpbGVuYW1lIHNob3VsZCBi
ZSBkZWNvZGVkIGZvciBXS0NvbnRlbnRFeHRlbnNpb24uaWRlbnRpZmllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmNyZWF0ZUV4dGVuc2lvbik6
CisgICAgICAgIChBUEk6OkNvbnRlbnRFeHRlbnNpb25TdG9yZTo6bG9va3VwQ29udGVudEV4dGVu
c2lvbik6CisgICAgICAgIChBUEk6OkNvbnRlbnRFeHRlbnNpb25TdG9yZTo6Z2V0QXZhaWxhYmxl
Q29udGVudEV4dGVuc2lvbklkZW50aWZpZXJzKToKKwogMjAxNy0wNC0yNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04oMjA2
NDUwKTogV2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCBtX21vZGlmaWVyRmxhZ3Mgbm90IHNldApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudEV4dGVuc2lvblN0b3JlLmNwcAkocmV2aXNpb24gMjE1NzkxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRv
RmlsZShTdAogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBSZWZQdHI8QVBJOjpDb250ZW50
RXh0ZW5zaW9uPiBjcmVhdGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0
YSkKK3N0YXRpYyBSZWY8QVBJOjpDb250ZW50RXh0ZW5zaW9uPiBjcmVhdGVFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1l
dGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0YSkKIHsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoY29uc3RfY2FzdDx1aW50OF90Kj4oZmlsZURh
dGEuZGF0YSgpKSwgZmlsZURhdGEuc2l6ZSgpLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwogICAgIGNvbnN0IHNpemVfdCBoZWFkZXJBbmRTb3VyY2VTaXplID0g
Q29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplICsgbWV0YURhdGEuc291cmNlU2l6ZTsKQEAg
LTM4Myw4ICszODMsOCBAQCB2b2lkIENvbnRlbnRFeHRlbnNpb25TdG9yZTo6bG9va3VwQ29udGVu
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpLCBmaWxlRGF0YSA9IFdURk1vdmUoZmlsZURhdGEpLCBtZXRhRGF0YSA9
IFdURk1vdmUobWV0YURhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBSZWZQdHI8QVBJOjpDb250ZW50RXh0ZW5zaW9uPiBj
b250ZW50RXh0ZW5zaW9uID0gY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXIsIG1ldGFEYXRhLCBm
aWxlRGF0YSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZW50RXh0ZW5zaW9u
LCB7IH0pOworICAgICAgICAgICAgYXV0byBjb250ZW50RXh0ZW5zaW9uID0gY3JlYXRlRXh0ZW5z
aW9uKGlkZW50aWZpZXIsIG1ldGFEYXRhLCBmaWxlRGF0YSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbnRlbnRFeHRlbnNpb24pLCB7IH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIENvbnRlbnRFeHRlbnNpb25TdG9y
ZTo6Z2V0QXZhaWxhYmxlCiAgICAgICAgIGlkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZnVsbFBhdGhzLnNpemUoKSk7CiAgICAgICAgIGNvbnN0IGF1dG8gcHJlZml4TGVuZ3RoID0g
Y29uc3RydWN0ZWRQYXRoUHJlZml4KCkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgcGF0aCA6IGZ1bGxQYXRocykKLSAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFw
cGVuZChwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxICsgcHJlZml4TGVu
Z3RoKSk7CisgICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6
ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSAr
IDEgKyBwcmVmaXhMZW5ndGgpKSk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaWRlbnRpZmllcnMgPSBXVEZNb3ZlKGlk
ZW50aWZpZXJzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoaWRlbnRpZmllcnMpKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTc5MykKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA0LTI1ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5jb2RlZCBmaWxlbmFt
ZSBzaG91bGQgYmUgZGVjb2RlZCBmb3IgV0tDb250ZW50RXh0ZW5zaW9uLmlkZW50aWZpZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTMxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUu
bW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbS4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLm1tOiBSZW1vdmVkLgorCiAyMDE3LTA0LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTigyMDY0NTApOiBXZWJL
aXQyUGxhdGZvcm1Nb3VzZUV2ZW50IG1fbW9kaWZpZXJGbGFncyBub3Qgc2V0CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE1NzkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIwMyw3ICsyMDMsNyBAQAogCQk1QzlFNTk0MTFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGlj
YXRpb25DYWNoZS5kYiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzlFNTkzRTFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5k
YiAqLzsgfTsKIAkJNUM5RTU5NDIxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUu
ZGItc2htIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDOUU1OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAq
LzsgfTsKIAkJNUM5RTU5NDMxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIt
d2FsIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDOUU1OTQwMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLzsg
fTsKLQkJNUNFMzU0RDkxRTcwREE1QzAwQkVGRTNCIC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
RTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0g
Ki87IH07CisJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
RTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLzsg
fTsKIAkJNUU0QjFEMkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jh
c2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTRC
MUQyQzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbSAqLzsg
fTsKIAkJNjMxRUZGRjYxRTdCNUU4RDAwRDJFQkI4IC8qIEdlb2xvY2F0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxRUZGRjUxRTdCNUU4RDAw
RDJFQkI4IC8qIEdlb2xvY2F0aW9uLm1tICovOyB9OwogCQk2MzQ5MTBFMDFFOUQzRkYzMDA4ODAz
MDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9j
YXRpb24uZnJhbWV3b3JrICovOyB9OwpAQCAtMTE1Miw3ICsxMTUyLDcgQEAKIAkJNUM5RTU5M0Ux
RDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gQXBwbGljYXRpb25D
YWNoZS5kYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RTU5M0YxRDNFQjFERTAw
RTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJBcHBsaWNhdGlvbkNhY2hl
LmRiLXNobSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1OTQwMUQzRUIxREUw
MEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQXBwbGljYXRpb25DYWNo
ZS5kYi13YWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0UzNTREODFFNzBEOUMz
MDBCRUZFM0IgLyogV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0Ig
LyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUU0QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0Rl
bGVnYXRlQ3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1tOyBwYXRoID0gLi4vaW9zL1dLU2Nyb2xsVmlld0Rl
bGVnYXRlQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzMUVGRkY1MUU3
QjVFOEQwMEQyRUJCOCAvKiBHZW9sb2NhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2MzQ5MTBERjFFOUQzRkYzMDA4ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gQ29yZUxvY2F0aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUxvY2F0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNE
S1JPT1Q7IH07CkBAIC0xNzQ0LDcgKzE3NDQsNyBAQAogCQkJCTJEMDAwNjVEMUMxRjU4OTQwMDg4
RTZBNyAvKiBXS1BERlZpZXdSZXNpemVDcmFzaC5tbSAqLywKIAkJCQk1RTRCMUQyQzFENDA0QzYx
MDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbSAqLywKIAkJCQk1MUM2ODNE
RDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gKi8sCi0JCQkJNUNF
MzU0RDgxRTcwRDlDMzAwQkVGRTNCIC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAq
LywKKwkJCQk1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmUubW0gKi8sCiAJCQkJMkVGRjA2RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2ViVmlld0NhbmRp
ZGF0ZVRlc3RzLm1tICovLAogCQkJCTdDNDE3RjMxMUQxOUUxNDgwMEI4RUY1MyAvKiBXS1dlYlZp
ZXdEZWZhdWx0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAogCQkJCTBGM0I5NEE1MUE3NzI2NkMw
MERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi8sCkBAIC0zMDUzLDcg
KzMwNTMsNyBAQAogCQkJCTdDQ0U3RjFFMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1N0cmluZ0pTU3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDNzk2NDEwMUVCMDI3OEQwMDc1RDc0QyAvKiBF
dmVudE1vZGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDRDRjhCRDFEODM2MENDMDAw
MUNFOEQgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNFMzU0RDkx
RTcwREE1QzAwQkVGRTNCIC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNp
b25TdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFRkYwNkQ3MUQ4QUYzNEEwMDA0QkIzMCAv
KiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExNEZDNTg1
MUI4OTczOTEwMEQxMDdFQiAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M0MTdGMzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1
bHROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLQ29u
dGVudEV4dGVuc2lvblN0b3JlLm1tCShyZXZpc2lvbiAyMTU3OTEpCShmcm9tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bToyMTU3OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0Nv
bnRlbnRFeHRlbnNpb25TdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRh
dGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRFeHRlbnNp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworY2xhc3MgV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpCisgICAgeworICAgICAgICBbW1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1
bHRTdG9yZV0gX3JlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zXTsKKyAgICB9Cit9OworCitzdGF0
aWMgTlNTdHJpbmcgKmJhc2ljRmlsdGVyID0gQCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxv
Y2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLip3ZWJraXQub3JnXCJ9fV0iOwor
CitURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBDb21waWxlKQoreworICAgIF9f
YmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRlbnNp
b25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgCisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0ZXIpOworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgZG9uZUNvbXBpbGluZyA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lQ29tcGlsaW5nKTsKK30KKwor
c3RhdGljIE5TU3RyaW5nICppbnZhbGlkRmlsdGVyID0gQCJbIjsKKworc3RhdGljIHZvaWQgY2hl
Y2tEb21haW4oTlNFcnJvciAqZXJyb3IpCit7CisgICAgRVhQRUNUX1NUUkVRKFtbZXJyb3IgZG9t
YWluXSBVVEY4U3RyaW5nXSwgW1dLRXJyb3JEb21haW4gVVRGOFN0cmluZ10pOworfQorCitURVNU
X0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBJbnZhbGlkRXh0ZW5zaW9uKQoreworICAg
IF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRp
ZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmludmFsaWRGaWx0
ZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAKKyAgICAgICAgRVhQRUNUX05VTEwoZmlsdGVyKTsKKyAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgY2hlY2tEb21haW4oZXJyb3IpOworICAg
ICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUNv
bXBpbGVGYWlsZWQpOworICAgICAgICBFWFBFQ1RfU1RSRVEoIkV4dGVuc2lvbiBjb21waWxhdGlv
biBmYWlsZWQ6IEZhaWxlZCB0byBwYXJzZSB0aGUgSlNPTiBTdHJpbmcuIiwgW1tlcnJvciBoZWxw
QW5jaG9yXSBVVEY4U3RyaW5nXSk7CisKKyAgICAgICAgZG9uZUNvbXBpbGluZyA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lQ29tcGlsaW5nKTsKK30K
KworVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3JlVGVzdCwgTG9va3VwKQoreworICAgIF9f
YmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRlbnNp
b25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgCisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0ZXIpOworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgZG9uZUNvbXBpbGluZyA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lQ29tcGlsaW5nKTsKKworICAg
IF9fYmxvY2sgYm9vbCBkb25lTG9va2luZ1VwID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGxvb2tVcENvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlm
aWVyOkAiVGVzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNp
b24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKKworICAgICAgICBFWFBFQ1RfU1RSRVEoZmls
dGVyLmlkZW50aWZpZXIuVVRGOFN0cmluZywgIlRlc3RFeHRlbnNpb24iKTsKKyAgICAgICAgRVhQ
RUNUX05PVF9OVUxMKGZpbHRlcik7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAg
ICAgICBkb25lTG9va2luZ1VwID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmVMb29raW5nVXApOworfQorCitURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9u
U3RvcmVUZXN0LCBOb25FeGlzdGluZ0lkZW50aWZpZXJMb29rdXApCit7CisgICAgX19ibG9jayBi
b29sIGRvbmVMb29raW5nVXAgPSBmYWxzZTsKKyAgICBbW1dLQ29udGVudEV4dGVuc2lvblN0b3Jl
IGRlZmF1bHRTdG9yZV0gbG9va1VwQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJEb2Vz
Tm90RXhpc3QiIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgCisgICAgICAgIEVYUEVDVF9OVUxMKGZpbHRlcik7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIGNoZWNrRG9tYWluKGVycm9y
KTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9u
U3RvcmVMb29rVXBGYWlsZWQpOworICAgICAgICBFWFBFQ1RfU1RSRVEoIkV4dGVuc2lvbiBsb29r
dXAgZmFpbGVkOiBVbnNwZWNpZmllZCBlcnJvciBkdXJpbmcgbG9va3VwLiIsIFtbZXJyb3IgaGVs
cEFuY2hvcl0gVVRGOFN0cmluZ10pOworICAgICAgICAKKyAgICAgICAgZG9uZUxvb2tpbmdVcCA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lTG9va2lu
Z1VwKTsKK30KKworVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3JlVGVzdCwgVmVyc2lvbk1p
c21hdGNoKQoreworICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7CisgICAg
W1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0
ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50RXh0ZW5z
aW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpm
aWx0ZXIsIE5TRXJyb3IgKmVycm9yKQorICAgIHsKKyAgICAgICAgCisgICAgICAgIEVYUEVDVF9O
T1RfTlVMTChmaWx0ZXIpOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIAor
ICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcpOworCisgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZSBkZWZhdWx0U3RvcmVdIF9pbnZhbGlkYXRlQ29udGVudEV4dGVuc2lvblZlcnNpb25Gb3JJ
ZGVudGlmaWVyOkAiVGVzdEV4dGVuc2lvbiJdOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkb25l
TG9va2luZ1VwID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0
U3RvcmVdIGxvb2tVcENvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOkAiVGVzdEV4dGVuc2lv
biIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJv
ciAqZXJyb3IpCisgICAgeworICAgICAgICAKKyAgICAgICAgRVhQRUNUX05VTEwoZmlsdGVyKTsK
KyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgY2hlY2tEb21haW4oZXJy
b3IpOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvckNvbnRlbnRFeHRlbnNp
b25TdG9yZVZlcnNpb25NaXNtYXRjaCk7CisgICAgICAgIEVYUEVDVF9TVFJFUSgiRXh0ZW5zaW9u
IGxvb2t1cCBmYWlsZWQ6IFZlcnNpb24gb2YgZmlsZSBkb2VzIG5vdCBtYXRjaCB2ZXJzaW9uIG9m
IGludGVycHJldGVyLiIsIFtbZXJyb3IgaGVscEFuY2hvcl0gVVRGOFN0cmluZ10pOworICAgICAg
ICAKKyAgICAgICAgZG9uZUxvb2tpbmdVcCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lTG9va2luZ1VwKTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25l
R2V0dGluZ1NvdXJjZSA9IGZhbHNlOworICAgIFtbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVm
YXVsdFN0b3JlXSBfZ2V0Q29udGVudEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6QCJUZXN0
RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBzb3VyY2UpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoc291cmNlKTsKKyAgICAgICAgZG9uZUdldHRpbmdTb3VyY2UgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUdldHRpbmdTb3Vy
Y2UpOworfQorCitURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBSZW1vdmFsKQor
eworICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7CisgICAgW1tXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9y
SWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2lj
RmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgCisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0ZXIpOwor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgZG9uZUNvbXBpbGluZyA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lQ29tcGlsaW5n
KTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lUmVtb3ZpbmcgPSBmYWxzZTsKKyAgICBbW1dLQ29u
dGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0gcmVtb3ZlQ29udGVudEV4dGVuc2lvbkZv
cklkZW50aWZpZXI6QCJUZXN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBkb25lUmVt
b3ZpbmcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZVJlbW92aW5nKTsKK30KKworVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3JlVGVzdCwgTm9u
RXhpc3RpbmdJZGVudGlmaWVyUmVtb3ZlKQoreworICAgIF9fYmxvY2sgYm9vbCBkb25lUmVtb3Zp
bmcgPSBmYWxzZTsKKyAgICBbW1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0g
cmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJEb2VzTm90RXhpc3QiIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgY2hlY2tEb21haW4oZXJyb3IpOworICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlbW92ZUZhaWxlZCk7Cisg
ICAgICAgIEVYUEVDVF9TVFJFUSgiRXh0ZW5zaW9uIHJlbW92YWwgZmFpbGVkOiBVbnNwZWNpZmll
ZCBlcnJvciBkdXJpbmcgcmVtb3ZlLiIsIFtbZXJyb3IgaGVscEFuY2hvcl0gVVRGOFN0cmluZ10p
OworCisgICAgICAgIGRvbmVSZW1vdmluZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lUmVtb3ZpbmcpOworfQorCitURVNUX0YoV0tDb250ZW50RXh0
ZW5zaW9uU3RvcmVUZXN0LCBOb25EZWZhdWx0U3RvcmUpCit7CisgICAgTlNVUkwgKnRlbXBEaXIg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25UZXN0Il0gaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSAqc3RvcmUgPSBbV0tDb250ZW50
RXh0ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJdOworICAgIE5TU3RyaW5nICppZGVu
dGlmaWVyID0gQCJUZXN0RXh0ZW5zaW9uIjsKKyAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBAIkNv
bnRlbnRFeHRlbnNpb24tVGVzdEV4dGVuc2lvbiI7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZUdl
dHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyA9IGZhbHNlOworICAgIFtzdG9yZSBnZXRBdmFpbGFi
bGVDb250ZW50RXh0ZW5zaW9uSWRlbnRpZmllcnM6XihOU0FycmF5PE5TU3RyaW5nICo+ICppZGVu
dGlmaWVycykgeworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpZmllcnMpOworICAgICAg
ICBFWFBFQ1RfRVEoaWRlbnRpZmllcnMuY291bnQsIDB1KTsKKyAgICAgICAgZG9uZUdldHRpbmdB
dmFpbGFibGVJZGVudGlmaWVycyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lR2V0dGluZ0F2YWlsYWJsZUlkZW50aWZpZXJzKTsKKyAgICAKKyAgICBf
X2Jsb2NrIGJvb2wgZG9uZUNvbXBpbGluZyA9IGZhbHNlOworICAgIFtzdG9yZSBjb21waWxlQ29u
dGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVu
c2lvbjpiYXNpY0ZpbHRlciBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAq
ZmlsdGVyLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZmlsdGVy
KTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBkb25lQ29tcGlsaW5nID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDb21waWxp
bmcpOworCisgICAgZG9uZUdldHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyA9IGZhbHNlOworICAg
IFtzdG9yZSBnZXRBdmFpbGFibGVDb250ZW50RXh0ZW5zaW9uSWRlbnRpZmllcnM6XihOU0FycmF5
PE5TU3RyaW5nICo+ICppZGVudGlmaWVycykgeworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaWRl
bnRpZmllcnMpOworICAgICAgICBFWFBFQ1RfRVEoaWRlbnRpZmllcnMuY291bnQsIDF1KTsKKyAg
ICAgICAgRVhQRUNUX1NUUkVRKGlkZW50aWZpZXJzWzBdLlVURjhTdHJpbmcsICJUZXN0RXh0ZW5z
aW9uIik7CisgICAgICAgIGRvbmVHZXR0aW5nQXZhaWxhYmxlSWRlbnRpZmllcnMgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUdldHRpbmdBdmFpbGFi
bGVJZGVudGlmaWVycyk7CisKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZlVSTDpbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZU5hbWVd
XTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGF0YSk7CisgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3Ro
LCAyMjh1KTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZUNoZWNraW5nU291cmNlID0gZmFs
c2U7CisgICAgW3N0b3JlIF9nZXRDb250ZW50RXh0ZW5zaW9uU291cmNlRm9ySWRlbnRpZmllcjpp
ZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnNvdXJjZSkgeworICAgICAg
ICBFWFBFQ1RfTk9UX05VTEwoc291cmNlKTsKKyAgICAgICAgRVhQRUNUX1NUUkVRKGJhc2ljRmls
dGVyLlVURjhTdHJpbmcsIHNvdXJjZS5VVEY4U3RyaW5nKTsKKyAgICAgICAgZG9uZUNoZWNraW5n
U291cmNlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmVDaGVja2luZ1NvdXJjZSk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvbmVSZW1vdmluZyA9
IGZhbHNlOworICAgIFtzdG9yZSByZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpp
ZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBkb25lUmVtb3ZpbmcgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZVJlbW92aW5nKTsKKworICAgIE5T
RGF0YSAqZGF0YUFmdGVyUmVtb3ZpbmcgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpb
dGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZU5hbWVdXTsKKyAgICBFWFBF
Q1RfTlVMTChkYXRhQWZ0ZXJSZW1vdmluZyk7Cit9CisKK1RFU1RfRihXS0NvbnRlbnRFeHRlbnNp
b25TdG9yZVRlc3QsIE11bHRpcGxlRXh0ZW5zaW9ucykKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIFtbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBj
b21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJGaXJzdEV4dGVuc2lvbiIgZW5j
b2RlZENvbnRlbnRFeHRlbnNpb246YmFzaWNGaWx0ZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0Nv
bnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X05PVF9OVUxMKGZpbHRlcik7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
W1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0
ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlNlY29uZEV4dGVuc2lvbiIgZW5jb2RlZENvbnRlbnRFeHRl
bnNpb246YmFzaWNGaWx0ZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24g
KmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChm
aWx0ZXIpOworICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgW1tX
S0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGdldEF2YWlsYWJsZUNvbnRlbnRF
eHRlbnNpb25JZGVudGlmaWVyczpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmlkZW50aWZpZXJzKSB7
CisgICAgICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxMKGlkZW50aWZpZXJzKTsKKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfRVEoaWRlbnRpZmllcnMuY291bnQsIDJ1KTsKKyAgICAgICAgICAgICAg
ICBFWFBFQ1RfU1RSRVEoaWRlbnRpZmllcnNbMF0uVVRGOFN0cmluZywgIkZpcnN0RXh0ZW5zaW9u
Iik7CisgICAgICAgICAgICAgICAgRVhQRUNUX1NUUkVRKGlkZW50aWZpZXJzWzFdLlVURjhTdHJp
bmcsICJTZWNvbmRFeHRlbnNpb24iKTsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH1dOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworfQorCitURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0
LCBOb25BU0NJSVNvdXJjZSkKK3sKKyAgICBzdGF0aWMgTlNTdHJpbmcgKm5vbkFTQ0lJRmlsdGVy
ID0gQCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiLip3ZWJraXQub3JnXCJ9LCBcInVudXNlZFwiOlwiw7DFuOKAmcKpXCJ9XSI7
CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFy
eURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRl
bnNpb25UZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBXS0NvbnRlbnRFeHRlbnNpb25TdG9y
ZSAqc3RvcmUgPSBbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJd
OworICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gQCJUZXN0RXh0ZW5zaW9uIjsKKyAgICBOU1N0
cmluZyAqZmlsZU5hbWUgPSBAIkNvbnRlbnRFeHRlbnNpb24tVGVzdEV4dGVuc2lvbiI7CisgICAg
CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbc3RvcmUgY29tcGlsZUNvbnRl
bnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNp
b246bm9uQVNDSUlGaWx0ZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24g
KmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGZpbHRl
cik7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBbc3RvcmUgX2dldENv
bnRlbnRFeHRlbnNpb25Tb3VyY2VGb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhh
bmRsZXI6XihOU1N0cmluZyAqc291cmNlKSB7CisgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwo
c291cmNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUShub25BU0NJSUZpbHRlci5VVEY4U3Ry
aW5nLCBzb3VyY2UuVVRGOFN0cmluZyk7CisKKyAgICAgICAgICAgIFtzdG9yZSBfcmVtb3ZlQWxs
Q29udGVudEV4dGVuc2lvbnNdOworICAgICAgICAgICAgTlNEYXRhICpkYXRhQWZ0ZXJSZW1vdmlu
ZyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOlt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpmaWxlTmFtZV1dOworICAgICAgICAgICAgRVhQRUNUX05VTEwoZGF0YUFm
dGVyUmVtb3ZpbmcpOworCisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworc3RhdGlj
IHNpemVfdCBhbGVydENvdW50IHsgMCB9Oworc3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydCB7IGZh
bHNlIH07CisKK0BpbnRlcmZhY2UgQ29udGVudEV4dGVuc2lvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENvbnRlbnRFeHRlbnNpb25E
ZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNj
cmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5
RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgc3dpdGNoIChhbGVydENvdW50KyspIHsKKyAg
ICBjYXNlIDA6CisgICAgICAgIC8vIERlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgIEVYUEVDVF9T
VFJFUSgiY29udGVudCBibG9ja2VycyBlbmFibGVkIiwgbWVzc2FnZS5VVEY4U3RyaW5nKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICAvLyBBZnRlciBoYXZpbmcgcmVtb3Zl
ZCB0aGUgY29udGVudCBleHRlbnNpb24uCisgICAgICAgIEVYUEVDVF9TVFJFUSgiY29udGVudCBi
bG9ja2VycyBkaXNhYmxlZCIsIG1lc3NhZ2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICB9CisgICAgcmVj
ZWl2ZWRBbGVydCA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworQGVuZAor
CitURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBBZGRSZW1vdmUpCit7CisgICAg
W1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50
RXh0ZW5zaW9uc107CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZUNvbXBpbGluZyA9IGZhbHNlOwor
ICAgIE5TU3RyaW5nKiBjb250ZW50QmxvY2tlciA9IEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpc
ImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwi
OntcInVybC1maWx0ZXJcIjpcIi4qXCJ9fV0iOworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLQ29u
dGVudEV4dGVuc2lvbj4gZXh0ZW5zaW9uOworICAgIFtbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUg
ZGVmYXVsdFN0b3JlXSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJUZXN0
QWRkUmVtb3ZlIiBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpjb250ZW50QmxvY2tlciBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAqY29tcGlsZWRFeHRlbnNpb24sIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGVycm9yID09IG5pbCk7CisgICAgICAg
IGV4dGVuc2lvbiA9IGNvbXBpbGVkRXh0ZW5zaW9uOworICAgICAgICBkb25lQ29tcGlsaW5nID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDb21waWxp
bmcpOworICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRDb250ZW50RXh0
ZW5zaW9uOmV4dGVuc2lvbi5nZXQoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tDb250ZW50RXh0ZW5zaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImNvbnRlbnRCbG9ja2VyQ2hlY2siIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsK
KyAgICBhbGVydENvdW50ID0gMDsKKyAgICByZWNlaXZlZEFsZXJ0ID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZEFsZXJ0KTsKKworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIHJlbW92ZUNvbnRlbnRFeHRlbnNpb246ZXh0ZW5zaW9uLmdldCgpXTsKKworICAgIHJl
Y2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7Cit9CisKKworI2VuZGlmCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0NvbnRlbnRFeHRlbnNpb25T
dG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkocmV2aXNpb24gMjE1NzkxKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMjcgQEAgVEVTVF9GKFdLQ29udGVu
dEV4dGVuc2lvblN0b3JlVGVzdCwgTG9vawogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZUxvb2tpbmdVcCk7CiB9CiAKK1RFU1RfRihXS0NvbnRlbnRFeHRlbnNpb25TdG9yZVRlc3Qs
IEVuY29kZWRJZGVudGlmaWVyKQoreworICAgIC8vIEZJWE1FOiBVKzAwQzQgY2F1c2VzIHByb2Js
ZW1zIGhlcmUuIFVzaW5nIHRoZSBvdXRwdXQgb2YgZW5jb2RlRm9yRmlsZU5hbWUgd2l0aAorICAg
IC8vIHRoZSBmaWxlc3lzdGVtIGNoYW5nZXMgaXQgdG8gVSswMDQxIGZvbGxvd2VkIGJ5IFUrMDMw
OAorICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gQCI6OyUyNSUrMjXQmPCfmI0iOworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBk
ZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlm
aWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CisKKyAgICAg
ICAgRVhQRUNUX1NUUkVRKGZpbHRlci5pZGVudGlmaWVyLlVURjhTdHJpbmcsIGlkZW50aWZpZXIu
VVRGOFN0cmluZyk7CisKKyAgICAgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0
U3RvcmVdIGdldEF2YWlsYWJsZUNvbnRlbnRFeHRlbnNpb25JZGVudGlmaWVyczpeKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKmlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoaWRlbnRp
ZmllcnMuY291bnQsIDF1KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShpZGVudGlmaWVyc1swXS5s
ZW5ndGgsIGlkZW50aWZpZXIubGVuZ3RoKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUShpZGVu
dGlmaWVyc1swXS5VVEY4U3RyaW5nLCBpZGVudGlmaWVyLlVURjhTdHJpbmcpOworCisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3Jl
VGVzdCwgTm9uRXhpc3RpbmdJZGVudGlmaWVyTG9va3VwKQogewogICAgIF9fYmxvY2sgYm9vbCBk
b25lTG9va2luZ1VwID0gZmFsc2U7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLm1tCShyZXZpc2lvbiAyMTU3OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKG5vbmV4aXN0
ZW50KQpAQCAtMSwzNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgotCi0jaWYgV0tfQVBJX0VOQUJMRUQKLQot
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgIlRlc3QuaCIKLSNpbXBvcnQg
PFdlYktpdC9XS0NvbnRlbnRFeHRlbnNpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRF
eHRlbnNpb25TdG9yZVByaXZhdGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotY2xh
c3MgV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBbW1dLQ29u
dGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0gX3JlbW92ZUFsbENvbnRlbnRFeHRlbnNp
b25zXTsKLSAgICB9Ci19OwotCi1zdGF0aWMgTlNTdHJpbmcgKmJhc2ljRmlsdGVyID0gQCJbe1wi
YWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiLip3ZWJraXQub3JnXCJ9fV0iOwotCi1URVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVU
ZXN0LCBDb21waWxlKQotewotICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7
Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250
ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50
RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5z
aW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgCi0gICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChmaWx0ZXIpOwotICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Ci0KLSAgICAgICAgZG9u
ZUNvbXBpbGluZyA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lQ29tcGlsaW5nKTsKLX0KLQotc3RhdGljIE5TU3RyaW5nICppbnZhbGlkRmlsdGVyID0g
QCJbIjsKLQotc3RhdGljIHZvaWQgY2hlY2tEb21haW4oTlNFcnJvciAqZXJyb3IpCi17Ci0gICAg
RVhQRUNUX1NUUkVRKFtbZXJyb3IgZG9tYWluXSBVVEY4U3RyaW5nXSwgW1dLRXJyb3JEb21haW4g
VVRGOFN0cmluZ10pOwotfQotCi1URVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBJ
bnZhbGlkRXh0ZW5zaW9uKQotewotICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFs
c2U7Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVD
b250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250
ZW50RXh0ZW5zaW9uOmludmFsaWRGaWx0ZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRF
eHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAKLSAgICAgICAgRVhQRUNU
X05VTEwoZmlsdGVyKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKLSAgICAgICAg
Y2hlY2tEb21haW4oZXJyb3IpOwotICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJv
ckNvbnRlbnRFeHRlbnNpb25TdG9yZUNvbXBpbGVGYWlsZWQpOwotICAgICAgICBFWFBFQ1RfU1RS
RVEoIkV4dGVuc2lvbiBjb21waWxhdGlvbiBmYWlsZWQ6IEZhaWxlZCB0byBwYXJzZSB0aGUgSlNP
TiBTdHJpbmcuIiwgW1tlcnJvciBoZWxwQW5jaG9yXSBVVEY4U3RyaW5nXSk7Ci0KLSAgICAgICAg
ZG9uZUNvbXBpbGluZyA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lQ29tcGlsaW5nKTsKLX0KLQotVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3Jl
VGVzdCwgTG9va3VwKQotewotICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFsc2U7
Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250
ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29kZWRDb250ZW50
RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5z
aW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgCi0gICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChmaWx0ZXIpOwotICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Ci0KLSAgICAgICAgZG9u
ZUNvbXBpbGluZyA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lQ29tcGlsaW5nKTsKLQotICAgIF9fYmxvY2sgYm9vbCBkb25lTG9va2luZ1VwID0gZmFs
c2U7Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGxvb2tVcENv
bnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOkAiVGVzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhh
bmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKLQot
ICAgICAgICBFWFBFQ1RfU1RSRVEoZmlsdGVyLmlkZW50aWZpZXIuVVRGOFN0cmluZywgIlRlc3RF
eHRlbnNpb24iKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGZpbHRlcik7Ci0gICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKLQotICAgICAgICBkb25lTG9va2luZ1VwID0gdHJ1ZTsKLSAgICB9
XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVMb29raW5nVXApOwotfQotCi1U
RVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBOb25FeGlzdGluZ0lkZW50aWZpZXJM
b29rdXApCi17Ci0gICAgX19ibG9jayBib29sIGRvbmVMb29raW5nVXAgPSBmYWxzZTsKLSAgICBb
W1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0gbG9va1VwQ29udGVudEV4dGVu
c2lvbkZvcklkZW50aWZpZXI6QCJEb2VzTm90RXhpc3QiIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tD
b250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgCi0gICAgICAg
IEVYUEVDVF9OVUxMKGZpbHRlcik7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7Ci0g
ICAgICAgIGNoZWNrRG9tYWluKGVycm9yKTsKLSAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29rVXBGYWlsZWQpOwotICAgICAgICBFWFBF
Q1RfU1RSRVEoIkV4dGVuc2lvbiBsb29rdXAgZmFpbGVkOiBVbnNwZWNpZmllZCBlcnJvciBkdXJp
bmcgbG9va3VwLiIsIFtbZXJyb3IgaGVscEFuY2hvcl0gVVRGOFN0cmluZ10pOwotICAgICAgICAK
LSAgICAgICAgZG9uZUxvb2tpbmdVcCA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lTG9va2luZ1VwKTsKLX0KLQotVEVTVF9GKFdLQ29udGVudEV4dGVu
c2lvblN0b3JlVGVzdCwgVmVyc2lvbk1pc21hdGNoKQotewotICAgIF9fYmxvY2sgYm9vbCBkb25l
Q29tcGlsaW5nID0gZmFsc2U7Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0
U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNp
b24iIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKQotICAgIHsKLSAg
ICAgICAgCi0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0ZXIpOwotICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7Ci0gICAgICAgIAotICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1ZTsKLSAg
ICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcpOwotCi0g
ICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9pbnZhbGlkYXRlQ29u
dGVudEV4dGVuc2lvblZlcnNpb25Gb3JJZGVudGlmaWVyOkAiVGVzdEV4dGVuc2lvbiJdOwotICAg
IAotICAgIF9fYmxvY2sgYm9vbCBkb25lTG9va2luZ1VwID0gZmFsc2U7Ci0gICAgW1tXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGxvb2tVcENvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOkAiVGVzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRF
eHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpCi0gICAgewotICAgICAgICAKLSAgICAg
ICAgRVhQRUNUX05VTEwoZmlsdGVyKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsK
LSAgICAgICAgY2hlY2tEb21haW4oZXJyb3IpOwotICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29k
ZSwgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVZlcnNpb25NaXNtYXRjaCk7Ci0gICAgICAg
IEVYUEVDVF9TVFJFUSgiRXh0ZW5zaW9uIGxvb2t1cCBmYWlsZWQ6IFZlcnNpb24gb2YgZmlsZSBk
b2VzIG5vdCBtYXRjaCB2ZXJzaW9uIG9mIGludGVycHJldGVyLiIsIFtbZXJyb3IgaGVscEFuY2hv
cl0gVVRGOFN0cmluZ10pOwotICAgICAgICAKLSAgICAgICAgZG9uZUxvb2tpbmdVcCA9IHRydWU7
Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lTG9va2luZ1VwKTsK
LQotICAgIF9fYmxvY2sgYm9vbCBkb25lR2V0dGluZ1NvdXJjZSA9IGZhbHNlOwotICAgIFtbV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBfZ2V0Q29udGVudEV4dGVuc2lvblNv
dXJjZUZvcklkZW50aWZpZXI6QCJUZXN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
U3RyaW5nKiBzb3VyY2UpIHsKLSAgICAgICAgRVhQRUNUX05VTEwoc291cmNlKTsKLSAgICAgICAg
ZG9uZUdldHRpbmdTb3VyY2UgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUdldHRpbmdTb3VyY2UpOwotfQotCi1URVNUX0YoV0tDb250ZW50RXh0ZW5z
aW9uU3RvcmVUZXN0LCBSZW1vdmFsKQotewotICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5n
ID0gZmFsc2U7Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNv
bXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGVuY29k
ZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250
ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgCi0gICAgICAgIEVY
UEVDVF9OT1RfTlVMTChmaWx0ZXIpOwotICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Ci0KLSAg
ICAgICAgZG9uZUNvbXBpbGluZyA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lQ29tcGlsaW5nKTsKLQotICAgIF9fYmxvY2sgYm9vbCBkb25lUmVtb3Zp
bmcgPSBmYWxzZTsKLSAgICBbW1dLQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0g
cmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJUZXN0RXh0ZW5zaW9uIiBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKLQotICAgICAgICBkb25lUmVtb3ZpbmcgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZVJlbW92aW5nKTsKLX0KLQotVEVTVF9GKFdLQ29udGVu
dEV4dGVuc2lvblN0b3JlVGVzdCwgTm9uRXhpc3RpbmdJZGVudGlmaWVyUmVtb3ZlKQotewotICAg
IF9fYmxvY2sgYm9vbCBkb25lUmVtb3ZpbmcgPSBmYWxzZTsKLSAgICBbW1dLQ29udGVudEV4dGVu
c2lvblN0b3JlIGRlZmF1bHRTdG9yZV0gcmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6QCJEb2VzTm90RXhpc3QiIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsK
LSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKLSAgICAgICAgY2hlY2tEb21haW4oZXJy
b3IpOwotICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvckNvbnRlbnRFeHRlbnNp
b25TdG9yZVJlbW92ZUZhaWxlZCk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiRXh0ZW5zaW9uIHJl
bW92YWwgZmFpbGVkOiBVbnNwZWNpZmllZCBlcnJvciBkdXJpbmcgcmVtb3ZlLiIsIFtbZXJyb3Ig
aGVscEFuY2hvcl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgIGRvbmVSZW1vdmluZyA9IHRydWU7
Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lUmVtb3ZpbmcpOwot
fQotCi1URVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBOb25EZWZhdWx0U3RvcmUp
Ci17Ci0gICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBv
cmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRF
eHRlbnNpb25UZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZSAqc3RvcmUgPSBbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBE
aXJdOwotICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gQCJUZXN0RXh0ZW5zaW9uIjsKLSAgICBO
U1N0cmluZyAqZmlsZU5hbWUgPSBAIkNvbnRlbnRFeHRlbnNpb24tVGVzdEV4dGVuc2lvbiI7Ci0K
LSAgICBfX2Jsb2NrIGJvb2wgZG9uZUdldHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyA9IGZhbHNl
OwotICAgIFtzdG9yZSBnZXRBdmFpbGFibGVDb250ZW50RXh0ZW5zaW9uSWRlbnRpZmllcnM6XihO
U0FycmF5PE5TU3RyaW5nICo+ICppZGVudGlmaWVycykgewotICAgICAgICBFWFBFQ1RfTk9UX05V
TEwoaWRlbnRpZmllcnMpOwotICAgICAgICBFWFBFQ1RfRVEoaWRlbnRpZmllcnMuY291bnQsIDB1
KTsKLSAgICAgICAgZG9uZUdldHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyA9IHRydWU7Ci0gICAg
fV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lR2V0dGluZ0F2YWlsYWJsZUlk
ZW50aWZpZXJzKTsKLSAgICAKLSAgICBfX2Jsb2NrIGJvb2wgZG9uZUNvbXBpbGluZyA9IGZhbHNl
OwotICAgIFtzdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRp
ZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpiYXNpY0ZpbHRlciBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLQ29udGVudEV4dGVuc2lvbiAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikgewotICAgICAg
ICBFWFBFQ1RfTk9UX05VTEwoZmlsdGVyKTsKLSAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwot
ICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcpOwotCi0gICAgZG9uZUdldHRpbmdBdmFpbGFibGVJ
ZGVudGlmaWVycyA9IGZhbHNlOwotICAgIFtzdG9yZSBnZXRBdmFpbGFibGVDb250ZW50RXh0ZW5z
aW9uSWRlbnRpZmllcnM6XihOU0FycmF5PE5TU3RyaW5nICo+ICppZGVudGlmaWVycykgewotICAg
ICAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpZmllcnMpOwotICAgICAgICBFWFBFQ1RfRVEoaWRl
bnRpZmllcnMuY291bnQsIDF1KTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKGlkZW50aWZpZXJzWzBd
LlVURjhTdHJpbmcsICJUZXN0RXh0ZW5zaW9uIik7Ci0gICAgICAgIGRvbmVHZXR0aW5nQXZhaWxh
YmxlSWRlbnRpZmllcnMgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUdldHRpbmdBdmFpbGFibGVJZGVudGlmaWVycyk7Ci0KLSAgICBOU0RhdGEgKmRh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpbdGVtcERpciBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6ZmlsZU5hbWVdXTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZGF0YSk7Ci0g
ICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCAyMjh1KTsKLSAgICAKLSAgICBfX2Jsb2NrIGJvb2wg
ZG9uZUNoZWNraW5nU291cmNlID0gZmFsc2U7Ci0gICAgW3N0b3JlIF9nZXRDb250ZW50RXh0ZW5z
aW9uU291cmNlRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNT
dHJpbmcgKnNvdXJjZSkgewotICAgICAgICBFWFBFQ1RfTk9UX05VTEwoc291cmNlKTsKLSAgICAg
ICAgRVhQRUNUX1NUUkVRKGJhc2ljRmlsdGVyLlVURjhTdHJpbmcsIHNvdXJjZS5VVEY4U3RyaW5n
KTsKLSAgICAgICAgZG9uZUNoZWNraW5nU291cmNlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDaGVja2luZ1NvdXJjZSk7Ci0gICAgCi0gICAgX19i
bG9jayBib29sIGRvbmVSZW1vdmluZyA9IGZhbHNlOwotICAgIFtzdG9yZSByZW1vdmVDb250ZW50
RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNF
cnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwotICAgICAgICBkb25l
UmVtb3ZpbmcgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZVJlbW92aW5nKTsKLQotICAgIE5TRGF0YSAqZGF0YUFmdGVyUmVtb3ZpbmcgPSBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZlVSTDpbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6ZmlsZU5hbWVdXTsKLSAgICBFWFBFQ1RfTlVMTChkYXRhQWZ0ZXJSZW1vdmluZyk7Ci19Ci0K
LVRFU1RfRihXS0NvbnRlbnRFeHRlbnNpb25TdG9yZVRlc3QsIE11bHRpcGxlRXh0ZW5zaW9ucykK
LXsKLSAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFtbV0tDb250ZW50RXh0ZW5z
aW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6QCJGaXJzdEV4dGVuc2lvbiIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246YmFzaWNGaWx0ZXIg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAq
ZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGZpbHRlcik7Ci0gICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKLSAgICAgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0
U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlNlY29uZEV4dGVu
c2lvbiIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246YmFzaWNGaWx0ZXIgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0ZXIpOwotICAgICAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOwotICAgICAgICAgICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3Rv
cmVdIGdldEF2YWlsYWJsZUNvbnRlbnRFeHRlbnNpb25JZGVudGlmaWVyczpeKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKmlkZW50aWZpZXJzKSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGlkZW50aWZpZXJzKTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoaWRlbnRpZmllcnMuY291
bnQsIDJ1KTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoaWRlbnRpZmllcnNbMF0uVVRG
OFN0cmluZywgIkZpcnN0RXh0ZW5zaW9uIik7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1NUUkVR
KGlkZW50aWZpZXJzWzFdLlVURjhTdHJpbmcsICJTZWNvbmRFeHRlbnNpb24iKTsKLSAgICAgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH1dOwotICAgICAgICB9XTsKLSAgICB9
XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwotfQotCi1URVNUX0YoV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBOb25BU0NJSVNvdXJjZSkKLXsKLSAgICBzdGF0aWMg
TlNTdHJpbmcgKm5vbkFTQ0lJRmlsdGVyID0gQCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxv
Y2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLip3ZWJraXQub3JnXCJ9LCBcInVu
dXNlZFwiOlwiw7DFuOKAmcKpXCJ9XSI7Ci0gICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25UZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKLSAg
ICBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSAqc3RvcmUgPSBbV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJdOwotICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gQCJU
ZXN0RXh0ZW5zaW9uIjsKLSAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBAIkNvbnRlbnRFeHRlbnNp
b24tVGVzdEV4dGVuc2lvbiI7Ci0gICAgCi0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
LSAgICBbc3RvcmUgY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOmlkZW50aWZp
ZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246bm9uQVNDSUlGaWx0ZXIgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKGZpbHRlcik7Ci0gICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
LQotICAgICAgICBbc3RvcmUgX2dldENvbnRlbnRFeHRlbnNpb25Tb3VyY2VGb3JJZGVudGlmaWVy
OmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqc291cmNlKSB7Ci0gICAg
ICAgICAgICBFWFBFQ1RfTk9UX05VTEwoc291cmNlKTsKLSAgICAgICAgICAgIEVYUEVDVF9TVFJF
UShub25BU0NJSUZpbHRlci5VVEY4U3RyaW5nLCBzb3VyY2UuVVRGOFN0cmluZyk7Ci0KLSAgICAg
ICAgICAgIFtzdG9yZSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOwotICAgICAgICAgICAg
TlNEYXRhICpkYXRhQWZ0ZXJSZW1vdmluZyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJM
Olt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV1dOwotICAgICAg
ICAgICAgRVhQRUNUX05VTEwoZGF0YUFmdGVyUmVtb3ZpbmcpOwotCi0gICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKLX0KLQotc3RhdGljIHNpemVfdCBhbGVydENvdW50IHsgMCB9Owotc3RhdGlj
IGJvb2wgcmVjZWl2ZWRBbGVydCB7IGZhbHNlIH07Ci0KLUBpbnRlcmZhY2UgQ29udGVudEV4dGVu
c2lvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIENvbnRlbnRFeHRlbnNpb25EZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJp
bmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgc3dp
dGNoIChhbGVydENvdW50KyspIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIC8vIERlZmF1bHQgYmVo
YXZpb3IuCi0gICAgICAgIEVYUEVDVF9TVFJFUSgiY29udGVudCBibG9ja2VycyBlbmFibGVkIiwg
bWVzc2FnZS5VVEY4U3RyaW5nKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAg
ICAvLyBBZnRlciBoYXZpbmcgcmVtb3ZlZCB0aGUgY29udGVudCBleHRlbnNpb24uCi0gICAgICAg
IEVYUEVDVF9TVFJFUSgiY29udGVudCBibG9ja2VycyBkaXNhYmxlZCIsIG1lc3NhZ2UuVVRGOFN0
cmluZyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGZhbHNlKTsKLSAgICB9Ci0gICAgcmVjZWl2ZWRBbGVydCA9IHRydWU7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLX0KLQotQGVuZAotCi1URVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVU
ZXN0LCBBZGRSZW1vdmUpCi17Ci0gICAgW1tXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0
U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107Ci0KLSAgICBfX2Jsb2NrIGJvb2wg
ZG9uZUNvbXBpbGluZyA9IGZhbHNlOwotICAgIE5TU3RyaW5nKiBjb250ZW50QmxvY2tlciA9IEAi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6
XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qXCJ9fV0iOwotICAg
IF9fYmxvY2sgUmV0YWluUHRyPFdLQ29udGVudEV4dGVuc2lvbj4gZXh0ZW5zaW9uOwotICAgIFtb
V0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBjb21waWxlQ29udGVudEV4dGVu
c2lvbkZvcklkZW50aWZpZXI6QCJUZXN0QWRkUmVtb3ZlIiBlbmNvZGVkQ29udGVudEV4dGVuc2lv
bjpjb250ZW50QmxvY2tlciBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAq
Y29tcGlsZWRFeHRlbnNpb24sIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGVycm9yID09IG5pbCk7Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbXBpbGVkRXh0ZW5zaW9uOwot
ICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcpOwotICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNp
b24pOwotCi0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRDb250ZW50RXh0ZW5zaW9uOmV4dGVuc2lvbi5nZXQoKV07Ci0KLSAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwotCi0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb250ZW50RXh0ZW5zaW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKLQotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImNvbnRl
bnRCbG9ja2VyQ2hlY2siIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBhbGVydENvdW50ID0gMDsKLSAgICByZWNlaXZl
ZEFsZXJ0ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKLQotICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZUNvbnRlbnRFeHRlbnNpb246ZXh0
ZW5zaW9uLmdldCgpXTsKLQotICAgIHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKLSAgICBbd2ViVmll
dyByZWxvYWRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7
Ci19Ci0KLQotI2VuZGlmCg==
</data>
<flag name="review"
          id="329394"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>