<?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>211211</bug_id>
          
          <creation_ts>2020-04-29 17:17:39 -0700</creation_ts>
          <short_desc>Add SPI to change a WKWebView&apos;s CORS disabling pattern after initialization</short_desc>
          <delta_ts>2020-04-30 13:03:32 -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>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647214</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 17:17:39 -0700</bug_when>
    <thetext>Add SPI to change a WKWebView&apos;s CORS disabling pattern after initialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647215</commentid>
    <comment_count>1</comment_count>
      <attachid>398011</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 17:20:01 -0700</bug_when>
    <thetext>Created attachment 398011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647216</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 17:20:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/61837474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647453</commentid>
    <comment_count>3</comment_count>
      <attachid>398011</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 11:41:58 -0700</bug_when>
    <thetext>Comment on attachment 398011
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:403
&gt; +            WebCore::SecurityPolicy::allowAccessTo(parsedPattern);

This method says it is parsing things, however it is calling SecurityPolicy::allowAccessTo() too so it is doing way more than parsing.

Another concern. Even though you now support updating those CORS-disabling patterns, you really only ever allow more patterns with regards to SecurityPolicy::originAccessPatterns(). Once a pattern is added there, it does not seem it gets removed.
Another mismatch is that SecurityPolicy::originAccessPatterns() seems to apply at process level, while you patterns are per page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647463</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:54:55 -0700</bug_when>
    <thetext>The user of this SPI will only ever be adding patterns, so this concern isn&apos;t really valid for this use case.  It is valid for hypothetical future users of this SPI that reduce patterns, but we should cross that bridge when we come to it.

It is unfortunate that SecurityPolicy is global, but it is the way it is right now.  All loading in the web process is global.

Would you review this patch on the condition that parseCORSDisablingPatterns be renamed to parseAndAllowAccessToCORSDisablingPatterns?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647493</commentid>
    <comment_count>5</comment_count>
      <attachid>398080</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 12:25:31 -0700</bug_when>
    <thetext>Created attachment 398080
patch with renamed parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647512</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-30 13:03:32 -0700</bug_when>
    <thetext>Committed r260962: &lt;https://trac.webkit.org/changeset/260962&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398080.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398011</attachid>
            <date>2020-04-29 17:20:01 -0700</date>
            <delta_ts>2020-04-30 12:25:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211211-20200429172000.patch</filename>
            <type>text/plain</type>
            <size>15231</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2FibGluZyBwYXR0ZXJuIGFmdGVyIGluaXRp
YWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTEyMTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxODM3NDc0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMpOgorCiAyMDIwLTA0
LTI4ICBKYWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxw
dHIgY3Jhc2ggaW4gRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kIHZpYSBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6cmVtb3ZlTm9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI2MDgzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjEsNiArNTIx
LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgp
IGNvbnN0OwogICAgIGRvdWJsZSBjdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8VXNlckNvbnRlbnRV
UkxQYXR0ZXJuPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92
ZShwYXR0ZXJucyk7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVtb3J5Q2FjaGVD
bGllbnRDYWxsc0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBhcmVNZW1vcnlDYWNoZUNsaWVudENh
bGxzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0Vu
YWJsZWQ7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDg1OCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMjkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBB
ZGQgU1BJIHRvIGNoYW5nZSBhIFdLV2ViVmlldydzIENPUlMgZGlzYWJsaW5nIHBhdHRlcm4gYWZ0
ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE4Mzc0NzQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3JzRGlzYWJs
aW5nUGF0dGVybnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
cnNEaXNhYmxpbmdQYXR0ZXJucyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYXJzZUNPUlNEaXNhYmxpbmdQYXR0ZXJu
cyk6CisgICAgICAgIChXZWJLaXQ6Om1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUNPUlNEaXNhYmxpbmdQYXR0ZXJucyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0yOCAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBXZWJQYWdlOjp0ZXh0SW5w
dXRDb250ZXh0c0luUmVjdCgpIHRvIFdlYlBhZ2VJT1MubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjYwODMxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYg
KzQ4Myw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICNlbmRp
ZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKICAgICAsIG1fdHJ5Q2xv
c2VUaW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5Ojp0cnlD
bG9zZVRpbWVkT3V0KQorICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMobV9jb25maWd1cmF0
aW9uLT5jb3JzRGlzYWJsaW5nUGF0dGVybnMoKSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAs
IG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmlnbm9yZXNBcHBCb3Vu
ZERvbWFpbnMoKSB8fCBXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLnByaXZh
dGUuYXBwbGVtZWRpYXNlcnZpY2VzIikpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zKCkpCkBAIC03ODM3LDcgKzc4MzgsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IFdlYlBhZ2VQcm94eTo6CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBtX2JhY2tn
cm91bmRDb2xvcjsKIAogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3Zl
cnJpZGRlbk1lZGlhVHlwZTsKLSAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9
IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVy
cy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBjb3JzRGlzYWJsaW5nUGF0dGVybnMoKTsKICAgICBw
YXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gbV9jb25m
aWd1cmF0aW9uLT51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOwogICAg
IHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29yayA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNGcm9t
TmV0d29yaygpOwogICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2NvbmZpZ3Vy
YXRpb24tPmxvYWRzU3VicmVzb3VyY2VzKCk7CkBAIC0xMDExMCw2ICsxMDExMSwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29tcGxldGVUZXh0TWFuaXB1bGF0CiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oaXRlbXMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRD
T1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFN0cmluZz4mJiBwYXR0ZXJucykKK3sKKyAgICBt
X2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUocGF0dGVybnMpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUNPUlNEaXNhYmxpbmdQYXR0ZXJucyhtX2NvcnNEaXNhYmxp
bmdQYXR0ZXJucykpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcnJpZGRlbk1lZGlh
VHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKICAgICBtX292ZXJyaWRkZW5NZWRpYVR5
cGUgPSBtZWRpYVR5cGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjYwODMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MTMsNiArMTcxMyw5IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJpbmcmIG92ZXJyaWRkZW5NZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJy
aWRkZW5NZWRpYVR5cGU7IH0KICAgICB2b2lkIHNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7CiAKKyAgICB2b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8U3Ry
aW5nPiYmKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29yc0Rpc2FibGluZ1BhdHRlcm5z
KCkgY29uc3QgeyByZXR1cm4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7IH0KKwogICAgIHZvaWQg
Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
KTsKIAogICAgIHZvaWQgc2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0X3QpOwpA
QCAtMjc5MCw2ICsyNzkzLDggQEAgcHJpdmF0ZToKICAgICAKICAgICBTdHJpbmcgbV9vdmVycmlk
ZGVuTWVkaWFUeXBlOwogCisgICAgVmVjdG9yPFN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVy
bnM7CisKICAgICBzdHJ1Y3QgSW5qZWN0ZWRCdW5kbGVNZXNzYWdlIHsKICAgICAgICAgU3RyaW5n
IG1lc3NhZ2VOYW1lOwogICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG1lc3NhZ2VCb2R5OwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CShyZXZpc2lvbiAyNjA4MzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNzk1LDYgKzI3OTUsMTYgQEAgLSAodm9p
ZClfc2V0Vmlld1NjYWxlOihDR0Zsb2F0KXZpZXdTY2FsZQogI2VuZGlmCiB9CiAKKy0gKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKilfY29yc0Rpc2FibGluZ1BhdHRlcm5zCit7CisgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoX3BhZ2UtPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpKS5hdXRvcmVsZWFzZSgp
OworfQorCistICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilwYXR0ZXJucworeworICAgIF9wYWdlLT5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMo
bWFrZVZlY3RvcjxTdHJpbmc+KHBhdHRlcm5zKSk7Cit9CisKIC0gKHZvaWQpX2dldFByb2Nlc3NE
aXNwbGF5TmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBfcGFnZS0+Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKFtoYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIG5hbWUpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAkocmV2aXNpb24gMjYwODMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDYgKzIy
MSw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRWaWV3U2NhbGU6KSBDR0Zsb2F0IF92aWV3U2NhbGUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMSksIGlvcyg5LjApKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRl
cj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2NvcnNE
aXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNaW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGg6KSBDR0Zsb2F0IF9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lk
dGggV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOikg
Qk9PTCBfYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCksIGlvcyg4LjApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjA4MzEpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDYgKzM5
MywyMSBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmCiAgICAgcmV0
dXJuIHBhZ2U7CiB9CiAKK3N0YXRpYyBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBwYXJz
ZUNPUlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8U3RyaW5nPiYmIGlucHV0KQoreworICAgIFZl
Y3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IHBhcnNlZFBhdHRlcm5zOworICAgIHBhcnNlZFBh
dHRlcm5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXQuc2l6ZSgpKTsKKyAgICBmb3IgKGF1
dG8mJiBwYXR0ZXJuIDogV1RGTW92ZShpbnB1dCkpIHsKKyAgICAgICAgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIHBhcnNlZFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7CisgICAgICAgIGlmIChwYXJz
ZWRQYXR0ZXJuLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xp
Y3k6OmFsbG93QWNjZXNzVG8ocGFyc2VkUGF0dGVybik7CisgICAgICAgICAgICBwYXJzZWRQYXR0
ZXJucy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShwYXJzZWRQYXR0ZXJuKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcGFyc2VkUGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcGFy
c2VkUGF0dGVybnM7Cit9CisKIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1faWRlbnRp
ZmllcihwYWdlSUQpCiAgICAgLCBtX21haW5GcmFtZShXZWJGcmFtZTo6Y3JlYXRlKCkpCkBAIC01
MzAsMTkgKzU0NSw4IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIgPSBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOjpjcmVhdGUoKnRoaXMpOwogI2VuZGlm
Ci0KLSAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBwYXJzZWRQYXR0ZXJuczsKLSAg
ICBwYXJzZWRQYXR0ZXJucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhcmFtZXRlcnMuY29yc0Rp
c2FibGluZ1BhdHRlcm5zLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiYgcGF0dGVybiA6IFdURk1v
dmUocGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMpKSB7Ci0gICAgICAgIFVzZXJDb250
ZW50VVJMUGF0dGVybiBwYXJzZWRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOwotICAgICAgICBp
ZiAocGFyc2VkUGF0dGVybi5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlNlY3Vy
aXR5UG9saWN5OjphbGxvd0FjY2Vzc1RvKHBhcnNlZFBhdHRlcm4pOwotICAgICAgICAgICAgcGFy
c2VkUGF0dGVybnMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUocGFyc2VkUGF0dGVybikpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHBhcnNlZFBhdHRlcm5zLnNocmlua1RvRml0KCk7CiAgICAgCi0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJz
ZWRQYXR0ZXJucyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5z
ID0gcGFyc2VDT1JTRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNEaXNh
YmxpbmdQYXR0ZXJucykpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uID0gcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRV
bnRpbE5vdGlmaWNhdGlvbjsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291cmNl
cyA9IHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
bG9hZHNGcm9tTmV0d29yayA9IHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29yazsKQEAgLTcwNzcs
NiArNzA4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uCiAg
ICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAordm9pZCBX
ZWJQYWdlOjp1cGRhdGVDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFN0cmluZz4mJiBwYXR0
ZXJucykKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnNldENPUlNEaXNhYmxp
bmdQYXR0ZXJucyhwYXJzZUNPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHBhdHRlcm5zKSkp
OworfQorCiBib29sIFdlYlBhZ2U6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJp
bmdQdXJwb3NlIHB1cnBvc2UpCiB7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjYwODMx
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzAyLDYgKzEzMDIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBv
dmVycmlkZGVuTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZGVuTWVkaWFUeXBl
OyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogCisg
ICAgdm9pZCB1cGRhdGVDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFN0cmluZz4mJik7CisK
ICAgICB2b2lkIGdldFByb2Nlc3NEaXNwbGF5TmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmKT4mJik7CiAKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxv
d3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb247IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwODMxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYg
KzYwMiw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICAgICBT
ZXRPdmVycmlkZGVuTWVkaWFUeXBlKFN0cmluZyBtZWRpYVR5cGUpCiAgICAgR2V0UHJvY2Vzc0Rp
c3BsYXlOYW1lKCkgLT4gKFN0cmluZyBkaXNwbGF5TmFtZSkgQXN5bmMKIAorICAgIFVwZGF0ZUNP
UlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8U3RyaW5nPiBwYXR0ZXJucykKKwogICAgIFNldFNo
b3VsZEZpcmVFdmVudHMoYm9vbCBzaG91bGRGaXJlRXZlbnRzKQogICAgIFNldE5lZWRzRE9NV2lu
ZG93UmVzaXplRXZlbnQoKQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA5MjcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0yOSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gY2hhbmdl
IGEgV0tXZWJWaWV3J3MgQ09SUyBkaXNhYmxpbmcgcGF0dGVybiBhZnRlciBpbml0aWFsaXphdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjEx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTgzNzQ3ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisKIDIwMjAtMDQtMjkgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJldHRlciBoYW5k
bGluZyBvZiBhbiB1bmNsZWFyZWQgYnVuZGxlIGlkZW50aWZpZXIgaW4gV2ViS2l0VGVzdFJ1bm5l
cgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShyZXZpc2lvbiAyNjA4MzEpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0x
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NDgsMjAgKzg0OCwyMiBAQCBURVNUKFVSTFNjaGVtZUhh
bmRsZXIsIERpc2FibGVDT1JTKQogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgp
IGZvclVSTFNjaGVtZTpAImNvcnMiXTsKIAorICAgIE5TU3RyaW5nICp0ZXN0SlMgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgQCJmZXRjaCgnaHR0cDovLzEyNy4wLjAuMTol
ZC9zdWJyZXNvdXJjZScpLnRoZW4oZnVuY3Rpb24ocil7IgorICAgICAgICAgICAgInIuanNvbigp
LnRoZW4oZnVuY3Rpb24ob2JqZWN0KSB7IgorICAgICAgICAgICAgICAgICJpZiAob2JqZWN0LnRl
c3RrZXkgPT0gJ3Rlc3R2YWx1ZScpIHsiCisgICAgICAgICAgICAgICAgICAgICJmZXRjaCgnL2Nv
cnNzdWNjZXNzJykiCisgICAgICAgICAgICAgICAgIn0gZWxzZSB7IgorICAgICAgICAgICAgICAg
ICAgICAiZmV0Y2goJy9jb3JzZmFpbHVyZScpIgorICAgICAgICAgICAgICAgICJ9IgorICAgICAg
ICAgICAgIn0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3JzZmFpbHVyZScpfSkiCisgICAg
ICAgICJ9KS5jYXRjaChmdW5jdGlvbigpe2ZldGNoKCcvY29yc2ZhaWx1cmUnKX0pIgorICAgICAg
ICAsIHNlcnZlci5wb3J0KCldOworCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNr
SGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAg
ICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5o
dG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDoKLSAgICAgICAgICAgICAgICBAIjxzY3JpcHQ+IgotICAgICAgICAgICAgICAgICAg
ICAiZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6JWQvc3VicmVzb3VyY2UnKS50aGVuKGZ1bmN0aW9u
KHIpeyIKLSAgICAgICAgICAgICAgICAgICAgICAgICJyLmpzb24oKS50aGVuKGZ1bmN0aW9uKG9i
amVjdCkgeyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYgKG9iamVjdC50ZXN0a2V5
ID09ICd0ZXN0dmFsdWUnKSB7IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmV0
Y2goJy9jb3Jzc3VjY2VzcycpIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9IGVsc2Ug
eyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZldGNoKCcvY29yc2ZhaWx1cmUn
KSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAifSIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICJ9KS5jYXRjaChmdW5jdGlvbigpe2ZldGNoKCcvY29yc2ZhaWx1cmUnKX0pIgotICAgICAg
ICAgICAgICAgICAgICAifSkuY2F0Y2goZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNmYWlsdXJlJyl9
KSIKLSAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV0gZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgICAgICAgICAgICAgIEAiPHNjcmlw
dD4lQDwvc2NyaXB0PiIsIHRlc3RKU10gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRh
dGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKQEAgLTg4OCwxMSArODkwLDI5IEBA
IFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlMpCiAgICAgZG9uZSA9IGZhbHNlOwog
CiAgICAgY29uZmlndXJhdGlvbi5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8qLyoi
XTsKLSAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7Ci0gICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEv
bWFpbi5odG1sIl1dXTsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
LSAgICB9CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJd
XV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfVFJV
RShjb3Jzc3VjY2Vzcyk7CisgICAgRVhQRUNUX0ZBTFNFKGNvcnNmYWlsdXJlKTsKKworICAgIGNv
cnNzdWNjZXNzID0gZmFsc2U7CisgICAgY29yc2ZhaWx1cmUgPSBmYWxzZTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICB3ZWJWaWV3LmdldCgpLl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBAW107
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnRlc3RKUyBjb21wbGV0aW9uSGFuZGxl
cjpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNU
X0ZBTFNFKGNvcnNzdWNjZXNzKTsKKyAgICBFWFBFQ1RfVFJVRShjb3JzZmFpbHVyZSk7CisKKyAg
ICBjb3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CisgICAgZG9u
ZSA9IGZhbHNlOworCisgICAgd2ViVmlldy5nZXQoKS5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0g
QFtAIio6Ly8qLyoiXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6dGVzdEpTIGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBFWFBFQ1RfVFJVRShjb3Jzc3VjY2Vzcyk7CiAgICAgRVhQRUNUX0ZBTFNFKGNvcnNm
YWlsdXJlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398080</attachid>
            <date>2020-04-30 12:25:31 -0700</date>
            <delta_ts>2020-04-30 13:03:32 -0700</delta_ts>
            <desc>patch with renamed parser</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>15295</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBjaGFuZ2UgYSBXS1dlYlZpZXcncyBDT1JTIGRpc2FibGluZyBwYXR0ZXJuIGFmdGVyIGluaXRp
YWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTEyMTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxODM3NDc0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMpOgorCiAyMDIwLTA0
LTI4ICBKYWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxw
dHIgY3Jhc2ggaW4gRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kIHZpYSBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6cmVtb3ZlTm9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI2MDgzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjEsNiArNTIx
LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgp
IGNvbnN0OwogICAgIGRvdWJsZSBjdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8VXNlckNvbnRlbnRV
UkxQYXR0ZXJuPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92
ZShwYXR0ZXJucyk7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVtb3J5Q2FjaGVD
bGllbnRDYWxsc0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBhcmVNZW1vcnlDYWNoZUNsaWVudENh
bGxzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0Vu
YWJsZWQ7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDg1OCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMjkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBB
ZGQgU1BJIHRvIGNoYW5nZSBhIFdLV2ViVmlldydzIENPUlMgZGlzYWJsaW5nIHBhdHRlcm4gYWZ0
ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE4Mzc0NzQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3JzRGlzYWJs
aW5nUGF0dGVybnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
cnNEaXNhYmxpbmdQYXR0ZXJucyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYXJzZUFuZEFsbG93QWNjZXNzVG9DT1JT
RGlzYWJsaW5nUGF0dGVybnMpOgorICAgICAgICAoV2ViS2l0OjptX2lzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVDT1JTRGlzYWJs
aW5nUGF0dGVybnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAt
MDQtMjggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUg
V2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoKSB0byBXZWJQYWdlSU9TLm1tCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MDgz
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4Myw2ICs0ODMsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQp
CiAgICAgLCBtX3RyeUNsb3NlVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldl
YlBhZ2VQcm94eTo6dHJ5Q2xvc2VUaW1lZE91dCkKKyAgICAsIG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zKG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCkpCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgLCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9u
LT5pZ25vcmVzQXBwQm91bmREb21haW5zKCkgfHwgV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQo
ImNvbS5hcHBsZS5wcml2YXRlLmFwcGxlbWVkaWFzZXJ2aWNlcyIpKQogICAgICwgbV9saW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucygpKQpAQCAtNzgzNyw3ICs3ODM4LDcgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRlcnMuYmFja2dyb3Vu
ZENvbG9yID0gbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5N
ZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5NZWRpYVR5cGU7Ci0gICAgcGFyYW1ldGVycy5jb3JzRGlz
YWJsaW5nUGF0dGVybnMgPSBtX2NvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygp
OworICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gY29yc0Rpc2FibGluZ1Bh
dHRlcm5zKCk7CiAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24oKTsKICAgICBwYXJhbWV0ZXJzLmxvYWRzRnJvbU5ldHdvcmsgPSBtX2NvbmZpZ3Vy
YXRpb24tPmxvYWRzRnJvbU5ldHdvcmsoKTsKICAgICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3Vy
Y2VzID0gbV9jb25maWd1cmF0aW9uLT5sb2Fkc1N1YnJlc291cmNlcygpOwpAQCAtMTAxMTAsNiAr
MTAxMTEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXBsZXRlVGV4dE1hbmlwdWxhdAogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6Q29tcGxldGVUZXh0TWFuaXB1
bGF0aW9uKGl0ZW1zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFZlY3RvcjxTdHJpbmc+JiYgcGF0
dGVybnMpCit7CisgICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhdHRlcm5z
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDT1JTRGlzYWJsaW5nUGF0dGVy
bnMobV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAgICAgbV9v
dmVycmlkZGVuTWVkaWFUeXBlID0gbWVkaWFUeXBlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEzLDYgKzE3MTMsOSBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZGVuTWVkaWFUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9vdmVycmlkZGVuTWVkaWFUeXBlOyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZGVu
TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnMoVmVjdG9yPFN0cmluZz4mJik7CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvcnNE
aXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
OyB9CisKICAgICB2b2lkIGdldFByb2Nlc3NEaXNwbGF5TmFtZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJik7CiAKICAgICB2b2lkIHNldE9yaWVudGF0aW9uRm9yTWVkaWFDYXB0
dXJlKHVpbnQ2NF90KTsKQEAgLTI3OTAsNiArMjc5Myw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
U3RyaW5nIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKIAorICAgIFZlY3RvcjxTdHJpbmc+IG1fY29y
c0Rpc2FibGluZ1BhdHRlcm5zOworCiAgICAgc3RydWN0IEluamVjdGVkQnVuZGxlTWVzc2FnZSB7
CiAgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZTsKICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiBtZXNzYWdlQm9keTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjYwODMxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc5NSw2ICsy
Nzk1LDE2IEBAIC0gKHZvaWQpX3NldFZpZXdTY2FsZTooQ0dGbG9hdCl2aWV3U2NhbGUKICNlbmRp
ZgogfQogCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2NvcnNEaXNhYmxpbmdQYXR0ZXJucwor
eworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9wYWdlLT5jb3JzRGlzYWJsaW5nUGF0dGVybnMo
KSkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5z
OihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVybnMKK3sKKyAgICBfcGFnZS0+c2V0Q09SU0Rp
c2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOworfQorCiAtICh2
b2lkKV9nZXRQcm9jZXNzRGlzcGxheU5hbWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3BhZ2UtPmdldFByb2Nlc3NE
aXNwbGF5TmFtZShbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiBuYW1lKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMSw2ICsyMjEsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0Vmlld1NjYWxlOikgQ0dGbG9hdCBfdmlld1NjYWxlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCBzZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0TWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOikgQ0dGbG9hdCBfbWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygx
Mi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZTopIEJPT0wgX2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoOC4wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjYwODMxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5Myw2ICszOTMsMjEgQEAgUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdl
SWRlbnRpZgogICAgIHJldHVybiBwYWdlOwogfQogCitzdGF0aWMgVmVjdG9yPFVzZXJDb250ZW50
VVJMUGF0dGVybj4gcGFyc2VBbmRBbGxvd0FjY2Vzc1RvQ09SU0Rpc2FibGluZ1BhdHRlcm5zKFZl
Y3RvcjxTdHJpbmc+JiYgaW5wdXQpCit7CisgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVy
bj4gcGFyc2VkUGF0dGVybnM7CisgICAgcGFyc2VkUGF0dGVybnMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShpbnB1dC5zaXplKCkpOworICAgIGZvciAoYXV0byYmIHBhdHRlcm4gOiBXVEZNb3ZlKGlu
cHV0KSkgeworICAgICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4gcGFyc2VkUGF0dGVybihXVEZN
b3ZlKHBhdHRlcm4pKTsKKyAgICAgICAgaWYgKHBhcnNlZFBhdHRlcm4uaXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWxsb3dBY2Nlc3NUbyhwYXJzZWRQ
YXR0ZXJuKTsKKyAgICAgICAgICAgIHBhcnNlZFBhdHRlcm5zLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKHBhcnNlZFBhdHRlcm4pKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwYXJzZWRQYXR0ZXJu
cy5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBwYXJzZWRQYXR0ZXJuczsKK30KKwogV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9pZGVudGlmaWVyKHBhZ2VJRCkKICAgICAsIG1fbWFp
bkZyYW1lKFdlYkZyYW1lOjpjcmVhdGUoKSkKQEAgLTUzMCwxOSArNTQ1LDggQEAgV2ViUGFnZTo6
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXI6OmNyZWF0ZSgqdGhpcyk7CiAjZW5kaWYKLQotICAgIFZlY3RvcjxVc2VyQ29udGVu
dFVSTFBhdHRlcm4+IHBhcnNlZFBhdHRlcm5zOwotICAgIHBhcnNlZFBhdHRlcm5zLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2l6ZSgpKTsK
LSAgICBmb3IgKGF1dG8mJiBwYXR0ZXJuIDogV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNEaXNhYmxp
bmdQYXR0ZXJucykpIHsKLSAgICAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHBhcnNlZFBhdHRl
cm4oV1RGTW92ZShwYXR0ZXJuKSk7Ci0gICAgICAgIGlmIChwYXJzZWRQYXR0ZXJuLmlzVmFsaWQo
KSkgewotICAgICAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFsbG93QWNjZXNzVG8o
cGFyc2VkUGF0dGVybik7Ci0gICAgICAgICAgICBwYXJzZWRQYXR0ZXJucy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShwYXJzZWRQYXR0ZXJuKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcGFyc2Vk
UGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKICAgICAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5jb3Jz
RGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhcnNlZFBhdHRlcm5zKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBwYXJzZUFuZEFsbG93QWNjZXNzVG9D
T1JTRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0
ZXJucykpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGls
Tm90aWZpY2F0aW9uID0gcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbjsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291cmNlcyA9IHBhcmFt
ZXRlcnMubG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNGcm9t
TmV0d29yayA9IHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29yazsKQEAgLTcwNzcsNiArNzA4MSwx
MiBAQCB2b2lkIFdlYlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uCiAgICAgbV9wYWdl
LT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAordm9pZCBXZWJQYWdlOjp1
cGRhdGVDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFN0cmluZz4mJiBwYXR0ZXJucykKK3sK
KyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJu
cyhwYXJzZUFuZEFsbG93QWNjZXNzVG9DT1JTRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYXR0
ZXJucykpKTsKK30KKwogYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3Io
UmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogewogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMwMiw2ICsxMzAyLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3ZlcnJpZGRlbk1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGRlbk1l
ZGlhVHlwZTsgfQogICAgIHZvaWQgc2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcm
KTsKIAorICAgIHZvaWQgdXBkYXRlQ09SU0Rpc2FibGluZ1BhdHRlcm5zKFZlY3RvcjxTdHJpbmc+
JiYpOworCiAgICAgdm9pZCBnZXRQcm9jZXNzRGlzcGxheU5hbWUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYpOwogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3Jp
cHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0
aW9uOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTYwMiw2ICs2MDIsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWlu
CiAgICAgU2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShTdHJpbmcgbWVkaWFUeXBlKQogICAgIEdldFBy
b2Nlc3NEaXNwbGF5TmFtZSgpIC0+IChTdHJpbmcgZGlzcGxheU5hbWUpIEFzeW5jCiAKKyAgICBV
cGRhdGVDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFN0cmluZz4gcGF0dGVybnMpCisKICAg
ICBTZXRTaG91bGRGaXJlRXZlbnRzKGJvb2wgc2hvdWxkRmlyZUV2ZW50cykKICAgICBTZXROZWVk
c0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwOTI3KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMjkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRv
IGNoYW5nZSBhIFdLV2ViVmlldydzIENPUlMgZGlzYWJsaW5nIHBhdHRlcm4gYWZ0ZXIgaW5pdGlh
bGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMTIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE4Mzc0NzQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tOgorCiAyMDIwLTA0LTI5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiZXR0
ZXIgaGFuZGxpbmcgb2YgYW4gdW5jbGVhcmVkIGJ1bmRsZSBpZGVudGlmaWVyIGluIFdlYktpdFRl
c3RSdW5uZXIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQkocmV2aXNpb24gMjYwODMx
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbQkod29ya2luZyBjb3B5KQpAQCAtODQ4LDIwICs4NDgsMjIgQEAgVEVTVChVUkxT
Y2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SUykKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjb3JzIl07CiAKKyAgICBOU1N0cmluZyAqdGVzdEpTID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CisgICAgICAgIEAiZmV0Y2goJ2h0dHA6Ly8xMjcu
MC4wLjE6JWQvc3VicmVzb3VyY2UnKS50aGVuKGZ1bmN0aW9uKHIpeyIKKyAgICAgICAgICAgICJy
Lmpzb24oKS50aGVuKGZ1bmN0aW9uKG9iamVjdCkgeyIKKyAgICAgICAgICAgICAgICAiaWYgKG9i
amVjdC50ZXN0a2V5ID09ICd0ZXN0dmFsdWUnKSB7IgorICAgICAgICAgICAgICAgICAgICAiZmV0
Y2goJy9jb3Jzc3VjY2VzcycpIgorICAgICAgICAgICAgICAgICJ9IGVsc2UgeyIKKyAgICAgICAg
ICAgICAgICAgICAgImZldGNoKCcvY29yc2ZhaWx1cmUnKSIKKyAgICAgICAgICAgICAgICAifSIK
KyAgICAgICAgICAgICJ9KS5jYXRjaChmdW5jdGlvbigpe2ZldGNoKCcvY29yc2ZhaWx1cmUnKX0p
IgorICAgICAgICAifSkuY2F0Y2goZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNmYWlsdXJlJyl9KSIK
KyAgICAgICAgLCBzZXJ2ZXIucG9ydCgpXTsKKwogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2No
ZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2sp
IHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
L21haW4uaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6Ci0gICAgICAgICAgICAgICAgQCI8c2NyaXB0PiIKLSAgICAgICAgICAg
ICAgICAgICAgImZldGNoKCdodHRwOi8vMTI3LjAuMC4xOiVkL3N1YnJlc291cmNlJykudGhlbihm
dW5jdGlvbihyKXsiCi0gICAgICAgICAgICAgICAgICAgICAgICAici5qc29uKCkudGhlbihmdW5j
dGlvbihvYmplY3QpIHsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImlmIChvYmplY3Qu
dGVzdGtleSA9PSAndGVzdHZhbHVlJykgeyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZldGNoKCcvY29yc3N1Y2Nlc3MnKSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
fSBlbHNlIHsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZXRjaCgnL2NvcnNm
YWlsdXJlJykiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIn0iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAifSkuY2F0Y2goZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNmYWlsdXJlJyl9KSIK
LSAgICAgICAgICAgICAgICAgICAgIn0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3JzZmFp
bHVyZScpfSkiCi0gICAgICAgICAgICAgICAgIjwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCldIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgICAgICAgICBA
IjxzY3JpcHQ+JUA8L3NjcmlwdD4iLCB0ZXN0SlNdIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBl
OkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CkBAIC04ODgsMTEgKzg5
MCwyOSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTKQogICAgIGRvbmUgPSBm
YWxzZTsKIAogICAgIGNvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIq
Oi8vKi8qIl07Ci0gICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczov
L2hvc3QxL21haW4uaHRtbCJdXV07Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7Ci0gICAgfQorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWlu
Lmh0bWwiXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQ
RUNUX1RSVUUoY29yc3N1Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShjb3JzZmFpbHVyZSk7CisK
KyAgICBjb3Jzc3VjY2VzcyA9IGZhbHNlOworICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgd2ViVmlldy5nZXQoKS5fY29yc0Rpc2FibGluZ1BhdHRlcm5z
ID0gQFtdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDp0ZXN0SlMgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IEVYUEVDVF9GQUxTRShjb3Jzc3VjY2Vzcyk7CisgICAgRVhQRUNUX1RSVUUoY29yc2ZhaWx1cmUp
OworCisgICAgY29yc3N1Y2Nlc3MgPSBmYWxzZTsKKyAgICBjb3JzZmFpbHVyZSA9IGZhbHNlOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHdlYlZpZXcuZ2V0KCkuX2NvcnNEaXNhYmxpbmdQYXR0
ZXJucyA9IEBbQCIqOi8vKi8qIl07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnRl
c3RKUyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOwogICAgIEVYUEVDVF9GQUxT
RShjb3JzZmFpbHVyZSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>