<?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>239909</bug_id>
          
          <creation_ts>2022-04-29 13:23:04 -0700</creation_ts>
          <short_desc>CrashTracer: com.apple.WebKit.WebContent at com.apple.WebKit: WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions</short_desc>
          <delta_ts>2022-05-27 14:51:18 -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>HTML Editing</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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865522</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-29 13:23:04 -0700</bug_when>
    <thetext>an `NSRangeException` is thrown inside `-[NSConcreteMutableAttributedString addAttribute:value:range:]`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865523</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-29 13:23:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/87885717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865526</commentid>
    <comment_count>2</comment_count>
      <attachid>458605</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-29 13:36:05 -0700</bug_when>
    <thetext>Created attachment 458605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865537</commentid>
    <comment_count>3</comment_count>
      <attachid>458605</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-29 14:20:25 -0700</bug_when>
    <thetext>Comment on attachment 458605
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        CrashTracer: com.apple.WebKit.WebContent at com.apple.WebKit: WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions

A subtle TextIterator fix like this seems like it strongly requires a regression test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865539</commentid>
    <comment_count>4</comment_count>
      <attachid>458605</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-29 14:29:21 -0700</bug_when>
    <thetext>Comment on attachment 458605
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        CrashTracer: com.apple.WebKit.WebContent at com.apple.WebKit: WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions
&gt; 
&gt; A subtle TextIterator fix like this seems like it strongly requires a regression test.

yeah im working on that now

i put this up to let EWS munch on it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865548</commentid>
    <comment_count>5</comment_count>
      <attachid>458605</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-29 14:53:49 -0700</bug_when>
    <thetext>Comment on attachment 458605
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt;&gt; +        CrashTracer: com.apple.WebKit.WebContent at com.apple.WebKit: WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions
&gt;&gt; 
&gt;&gt; A subtle TextIterator fix like this seems like it strongly requires a regression test.
&gt; 
&gt; yeah im working on that now
&gt; 
&gt; i put this up to let EWS munch on it :)

I think it would be best to have some TextIterator tests for this bug that do *not* involve NSAttributedString; this underlying issue is not specific to the NSAttributedString code path, and can be tested without involving the NSAttributedString code path.

I also think the NSAttributedString code path might benefit from additional defensive range checking rather than relying on the subtle and complex TextIterator machinery to never create something with an incorrect offset.

We may want to fix this bug both ways, with:
a) defensive code in the code that deals with NSAttributedString that would prevent this kind of incorrect text offset computation from causing a crash, and
b) this TextIterator change that gives us a correct result that is valuable in and of itself.

Unfortunately the (b) change would make it a little harder to test (a) since we would no longer be able to use this bug to test the defensive checks are necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869511</commentid>
    <comment_count>6</comment_count>
      <attachid>459466</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-16 17:27:30 -0700</bug_when>
    <thetext>Created attachment 459466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869512</commentid>
    <comment_count>7</comment_count>
      <attachid>459466</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-16 17:29:23 -0700</bug_when>
    <thetext>Comment on attachment 459466
Patch

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

&gt; Source/WebCore/editing/TextIterator.cpp:638
&gt; +            if (runStart &gt;= runEnd &amp;&amp; m_behaviors.contains(TextIteratorBehavior::IgnoresWhiteSpaceAtEndOfRun)) {
&gt; +                m_textRun = nextTextRun;
&gt; +                continue;
&gt; +            }

I think this is actually the correct behavior that should _always_ be used, but since this is a regression I&apos;d rather target my fix to just that and then (perhaps) remove the check later on so that if there is a problem, rollouts are less conflicting (i.e. fixes one bug only to introduce another)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869548</commentid>
    <comment_count>8</comment_count>
      <attachid>459472</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-16 20:04:55 -0700</bug_when>
    <thetext>Created attachment 459472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869745</commentid>
    <comment_count>9</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-17 11:31:44 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872432</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-27 14:51:15 -0700</bug_when>
    <thetext>Committed r294955 (251061@main): &lt;https://commits.webkit.org/251061@main&gt;

Reviewed commits have been landed. Closing PR #681 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458605</attachid>
            <date>2022-04-29 13:36:05 -0700</date>
            <delta_ts>2022-05-16 17:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>239909.diff</filename>
            <type>text/plain</type>
            <size>7126</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMTM4NmI4MjJiMDcuLjdhY2RlZDBiZmMzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDIyLTA0LTI5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IGF0
IGNvbS5hcHBsZS5XZWJLaXQ6IFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojph
bm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzg3ODg1NzE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgZXhjZXB0aW9uIGhhcHBlbnMgd2hlbiB0cnlpbmcgdG8gYWRkIGF0dHJpYnV0ZXMg
Zm9yIHRleHQgdGhhdCBjb250YWlucyBjb2xsYXBzZWQKKyAgICAgICAgd2hpdGVzcGFjZSBhbmQg
aGFzIGFsc28gYmVlbiB3cmFwcGVkIGR1ZSB0byB0aGUgc2l6ZSBvZiBpdHMgcGFyZW50IGNvbnRh
aW5lci4gVGhlIGV4Y2VwdGlvbgorICAgICAgICBzcGVjaWZpY2FsbHkgaXMgYWJvdXQgdHJ5aW5n
IHRvIGFkZCBhdHRyaWJ1dGVzIGJleW9uZCB0aGUgY3VycmVudCBsZW5ndGggb2YgYSBgTlNBdHRy
aWJ1dGVkU3RyaW5nYC4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bik6CisgICAgICAgIElu
IHRoZSBjYXNlIHRoYXQgYG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2VgLCB3
ZSBvbmx5IHdhbnQgdG8gYWRkIHRoZSByZW1haW5pbmcKKyAgICAgICAgdGV4dCBpZiB3ZSdyZSBz
dGlsbCB3aXRoaW4gdGhlIGRlc2lyZWQgcG9ydGlvbiBvZiB0aGUgYG1fdGV4dFJ1bmAuIE90aGVy
d2lzZSwgd2UnbGwgaXRlcmF0ZQorICAgICAgICBvdmVyIHRvbyBtdWNoIG9mIHRoZSB0ZXh0IGFu
ZCByZXN1bHQgaW4gYSBzdHJpbmcgdGhhdCdzIGxvbmdlciB0aGFuIHdoYXQgd291bGQgYmUgdGhl
IGNhc2UKKyAgICAgICAgaWYgb25lIG1hbnVhbGx5IGNhbGN1bGF0ZWQgaXQgZnJvbSB0aGUgZ2l2
ZW4gYG9mZnNldGAgYW5kIGBvZmZzZXRFbmRgLgorCiAyMDIyLTA0LTI3ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBjb21wbGV0aW9uIGhhbmRsZXIg
aXMgY2FsbGVkIGluIFNXU2VydmVyOjpjbGVhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCmluZGV4IDkyOTE0MDBlNzZhMy4uNWE0ODU5ZmE0NDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02MjMsNiArNjIzLDE4IEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAgICAgdW5zaWduZWQgdGV4dFJ1blN0YXJ0
ID0gbV90ZXh0UnVuLT5zdGFydCgpOwogICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6
bWF4KHRleHRSdW5TdGFydCwgc3RhcnQpOwogCisgICAgICAgIHVuc2lnbmVkIHRleHRSdW5FbmQg
PSB0ZXh0UnVuU3RhcnQgKyBtX3RleHRSdW4tPmxlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBy
dW5FbmQgPSBzdGQ6Om1pbih0ZXh0UnVuRW5kLCBlbmQpOworCisgICAgICAgIC8vIERldGVybWlu
ZSB3aGF0IHRoZSBuZXh0IHRleHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAor
ICAgICAgICBhdXRvIG5leHRUZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6Om5leHRUZXh0Qm94SW5M
b2dpY2FsT3JkZXIobV90ZXh0UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZSk7CisKKyAg
ICAgICAgaWYgKHJ1blN0YXJ0ID49IHJ1bkVuZCkgeworICAgICAgICAgICAgLy8gQWR2YW5jZSBh
bmQgY29udGludWUKKyAgICAgICAgICAgIG1fdGV4dFJ1biA9IG5leHRUZXh0UnVuOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFw
c2VkIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0aGlzIHJ1bi4KICAgICAgICAgYm9vbCBuZWVkU3Bh
Y2UgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlIHx8IChtX3RleHRSdW4g
PT0gZmlyc3RUZXh0UnVuICYmIHRleHRSdW5TdGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCk7
CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYgIXJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBzaWJs
ZVdoaXRlU3BhY2UobV9sYXN0Q2hhcmFjdGVyKSAmJiBtX2xhc3RDaGFyYWN0ZXIpIHsKQEAgLTYz
NSw1MSArNjQ3LDQyIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIHJ1blN0YXJ0
LCBydW5TdGFydCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdW5z
aWduZWQgdGV4dFJ1bkVuZCA9IHRleHRSdW5TdGFydCArIG1fdGV4dFJ1bi0+bGVuZ3RoKCk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJ1bkVuZCA9IHN0ZDo6bWluKHRleHRSdW5FbmQsIGVuZCk7Ci0gICAg
ICAgIAotICAgICAgICAvLyBEZXRlcm1pbmUgd2hhdCB0aGUgbmV4dCB0ZXh0IHJ1biB3aWxsIGJl
LCBidXQgZG9uJ3QgYWR2YW5jZSB5ZXQKLSAgICAgICAgYXV0byBuZXh0VGV4dFJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKG1fdGV4dFJ1biwgbV90ZXh0UnVu
TG9naWNhbE9yZGVyQ2FjaGUpOwogCi0gICAgICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkgewot
ICAgICAgICAgICAgYXV0byBpc05ld2xpbmVPclRhYiA9IFsmXShVQ2hhciBjaGFyYWN0ZXIpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICdcbicgfHwgY2hhcmFjdGVyID09
ICdcdCc7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgLy8gSGFuZGxlIGVpdGhlciBhIHNp
bmdsZSBuZXdsaW5lIG9yIHRhYiBjaGFyYWN0ZXIgKHdoaWNoIGJlY29tZXMgYSBzcGFjZSksCi0g
ICAgICAgICAgICAvLyBvciBhIHJ1biBvZiBjaGFyYWN0ZXJzIHRoYXQgZG9lcyBub3QgaW5jbHVk
ZSBuZXdsaW5lcyBvciB0YWJzLgotICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSB0cmFu
c2xhdGVzIG5ld2xpbmVzIGFuZCB0YWJzIHRvIHNwYWNlcyB3aXRob3V0IGNvcHlpbmcgdGhlIHRl
eHQuCi0gICAgICAgICAgICBpZiAoaXNOZXdsaW5lT3JUYWIocmVuZGVyZXJUZXh0W3J1blN0YXJ0
XSkpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxw
dHIsIHJ1blN0YXJ0LCBydW5TdGFydCArIDEpOwotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0g
cnVuU3RhcnQgKyAxOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRv
IHN1YnJ1bkVuZCA9IHJ1blN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICBmb3IgKDsgc3VicnVu
RW5kIDwgcnVuRW5kOyArK3N1YnJ1bkVuZCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNO
ZXdsaW5lT3JUYWIocmVuZGVyZXJUZXh0W3N1YnJ1bkVuZF0pKQotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzdWJy
dW5FbmQgPT0gcnVuRW5kICYmIG1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2
aW9yOjpCZWhhdmVzQXNJZk5vZGVzRm9sbG93aW5nKSkgewotICAgICAgICAgICAgICAgICAgICBi
b29sIGxhc3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRSdW4gPSAhbmV4dFRleHRSdW4gJiYg
cmVuZGVyZXJUZXh0Lmxlbmd0aCgpID4gc3VicnVuRW5kICYmIHJlbmRlcmVyVGV4dFtzdWJydW5F
bmRdID09ICcgJzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZUNvbGxhcHNlZEJ5
TmV4dE5vblRleHRSdW4pCi0gICAgICAgICAgICAgICAgICAgICAgICArK3N1YnJ1bkVuZDsgLy8g
cnVuRW5kIHN0b3BwZWQgYmVmb3JlIGxhc3Qgc3BhY2UuIEluY3JlbWVudCBieSBvbmUgdG8gcmVz
dG9yZSB0aGUgc3BhY2UuCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fb2Zm
c2V0ID0gc3VicnVuRW5kOwotICAgICAgICAgICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCByZW5k
ZXJlciwgcnVuU3RhcnQsIHN1YnJ1bkVuZCk7CisgICAgICAgIGF1dG8gaXNOZXdsaW5lT3JUYWIg
PSBbJl0oVUNoYXIgY2hhcmFjdGVyKSB7CisgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09
ICdcbicgfHwgY2hhcmFjdGVyID09ICdcdCc7CisgICAgICAgIH07CisgICAgICAgIC8vIEhhbmRs
ZSBlaXRoZXIgYSBzaW5nbGUgbmV3bGluZSBvciB0YWIgY2hhcmFjdGVyICh3aGljaCBiZWNvbWVz
IGEgc3BhY2UpLAorICAgICAgICAvLyBvciBhIHJ1biBvZiBjaGFyYWN0ZXJzIHRoYXQgZG9lcyBu
b3QgaW5jbHVkZSBuZXdsaW5lcyBvciB0YWJzLgorICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5
IHRyYW5zbGF0ZXMgbmV3bGluZXMgYW5kIHRhYnMgdG8gc3BhY2VzIHdpdGhvdXQgY29weWluZyB0
aGUgdGV4dC4KKyAgICAgICAgaWYgKGlzTmV3bGluZU9yVGFiKHJlbmRlcmVyVGV4dFtydW5TdGFy
dF0pKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIs
IHJ1blN0YXJ0LCBydW5TdGFydCArIDEpOworICAgICAgICAgICAgbV9vZmZzZXQgPSBydW5TdGFy
dCArIDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIHN1YnJ1bkVuZCA9IHJ1
blN0YXJ0ICsgMTsKKyAgICAgICAgICAgIGZvciAoOyBzdWJydW5FbmQgPCBydW5FbmQ7ICsrc3Vi
cnVuRW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzTmV3bGluZU9yVGFiKHJlbmRlcmVyVGV4
dFtzdWJydW5FbmRdKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkb2luZyBhIHN1YnJ1biB0aGF0IGRvZXNuJ3Qg
Z28gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dCBib3gsCi0gICAgICAgICAgICAvLyBjb21lIGJhY2sg
YWdhaW4gdG8gZmluaXNoIGhhbmRsaW5nIHRoaXMgdGV4dCBib3g7IGRvbid0IGFkdmFuY2UgdG8g
dGhlIG5leHQgb25lLgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Bv
c2l0aW9uRW5kT2Zmc2V0KSA8IHRleHRSdW5FbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICAvLyBBZHZhbmNlIGFuZCByZXR1cm4KLSAgICAgICAgICAgIHVuc2lnbmVk
IG5leHRSdW5TdGFydCA9IG5leHRUZXh0UnVuID8gbmV4dFRleHRSdW4tPnN0YXJ0KCkgOiByZW5k
ZXJlclRleHQubGVuZ3RoKCk7Ci0gICAgICAgICAgICBpZiAobmV4dFJ1blN0YXJ0ID4gcnVuRW5k
KQotICAgICAgICAgICAgICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2Ug
PSB0cnVlOyAvLyBjb2xsYXBzZWQgc3BhY2UgYmV0d2VlbiBydW5zIG9yIGF0IHRoZSBlbmQKLSAg
ICAgICAgICAgIG1fdGV4dFJ1biA9IG5leHRUZXh0UnVuOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgaWYgKHN1YnJ1bkVuZCA9PSBydW5FbmQgJiYgbV9iZWhhdmlvcnMuY29udGFp
bnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpKSB7Cisg
ICAgICAgICAgICAgICAgYm9vbCBsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25UZXh0UnVuID0g
IW5leHRUZXh0UnVuICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSA+IHN1YnJ1bkVuZCAmJiByZW5k
ZXJlclRleHRbc3VicnVuRW5kXSA9PSAnICc7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFj
ZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRSdW4pCisgICAgICAgICAgICAgICAgICAgICsrc3VicnVu
RW5kOyAvLyBydW5FbmQgc3RvcHBlZCBiZWZvcmUgbGFzdCBzcGFjZS4gSW5jcmVtZW50IGJ5IG9u
ZSB0byByZXN0b3JlIHRoZSBzcGFjZS4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fb2Zm
c2V0ID0gc3VicnVuRW5kOworICAgICAgICAgICAgZW1pdFRleHQodGV4dE5vZGUsIHJlbmRlcmVy
LCBydW5TdGFydCwgc3VicnVuRW5kKTsKICAgICAgICAgfQotICAgICAgICAvLyBBZHZhbmNlIGFu
ZCBjb250aW51ZQorCisgICAgICAgIC8vIElmIHdlIGFyZSBkb2luZyBhIHN1YnJ1biB0aGF0IGRv
ZXNuJ3QgZ28gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dCBib3gsCisgICAgICAgIC8vIGNvbWUgYmFj
ayBhZ2FpbiB0byBmaW5pc2ggaGFuZGxpbmcgdGhpcyB0ZXh0IGJveDsgZG9uJ3QgYWR2YW5jZSB0
byB0aGUgbmV4dCBvbmUuCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3Np
dGlvbkVuZE9mZnNldCkgPCB0ZXh0UnVuRW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIC8vIEFkdmFuY2UgYW5kIHJldHVybgorICAgICAgICB1bnNpZ25lZCBuZXh0UnVuU3RhcnQg
PSBuZXh0VGV4dFJ1biA/IG5leHRUZXh0UnVuLT5zdGFydCgpIDogcmVuZGVyZXJUZXh0Lmxlbmd0
aCgpOworICAgICAgICBpZiAobmV4dFJ1blN0YXJ0ID4gcnVuRW5kKQorICAgICAgICAgICAgbV9s
YXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBz
cGFjZSBiZXR3ZWVuIHJ1bnMgb3IgYXQgdGhlIGVuZAogICAgICAgICBtX3RleHRSdW4gPSBuZXh0
VGV4dFJ1bjsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW1fdGV4dFJ1biAmJiBt
X3JlbWFpbmluZ1RleHRSdW4pIHsKICAgICAgICAgcmV2ZXJ0VG9SZW1haW5pbmdUZXh0UnVuKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459466</attachid>
            <date>2022-05-16 17:27:30 -0700</date>
            <delta_ts>2022-05-16 20:04:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239909-20220516182729.patch</filename>
            <type>text/plain</type>
            <size>17642</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YzRiZjkzODZlZDFkZmNmNTBhOWJjY2U2N2Q4ZTdkYTA4Zjk2NDVlLi4y
YjgyNmUxN2I3NDg4MGM0YzYzYWY5MmNiMzFlZTI2MTE5ODJjZmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMjItMDUtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQg
Y29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFu
bm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODc4ODU3MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBleGNlcHRpb24gaGFwcGVucyB3aGVuIHRyeWluZyB0byBhZGQgYXR0cmlidXRlcyBm
b3IgdGV4dCB0aGF0IGNvbnRhaW5zIGNvbGxhcHNlZAorICAgICAgICB3aGl0ZXNwYWNlIGFuZCBo
YXMgYWxzbyBiZWVuIHdyYXBwZWQgZHVlIHRvIHRoZSBzaXplIG9mIGl0cyBwYXJlbnQgY29udGFp
bmVyLiBUaGUgZXhjZXB0aW9uCisgICAgICAgIHNwZWNpZmljYWxseSBpcyBhYm91dCB0cnlpbmcg
dG8gYWRkIGF0dHJpYnV0ZXMgYmV5b25kIHRoZSBjdXJyZW50IGxlbmd0aCBvZiBhIGBOU0F0dHJp
YnV0ZWRTdHJpbmdgLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJy
YW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLmh0bWwKKworICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRS
dW4pOgorICAgICAgICBJbiB0aGUgY2FzZSB0aGF0IGBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENv
bGxhcHNlZFNwYWNlYCwgd2Ugb25seSB3YW50IHRvIGFkZCB0aGUgcmVtYWluaW5nCisgICAgICAg
IHRleHQgaWYgd2UncmUgc3RpbGwgd2l0aGluIHRoZSBkZXNpcmVkIHBvcnRpb24gb2YgdGhlIGBt
X3RleHRSdW5gLiBPdGhlcndpc2UsIHdlJ2xsIGl0ZXJhdGUKKyAgICAgICAgb3ZlciB0b28gbXVj
aCBvZiB0aGUgdGV4dCBhbmQgcmVzdWx0IGluIGEgc3RyaW5nIHRoYXQncyBsb25nZXIgdGhhbiB3
aGF0IHdvdWxkIGJlIHRoZSBjYXNlCisgICAgICAgIGlmIG9uZSBtYW51YWxseSBjYWxjdWxhdGVk
IGl0IGZyb20gdGhlIGdpdmVuIGBvZmZzZXRgIGFuZCBgb2Zmc2V0RW5kYC4gQWRkIGEgbmV3Cisg
ICAgICAgIGBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1doaXRlU3BhY2VBdEVuZE9mUnVu
YCB0byBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKworICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVGV4dEl0
ZXJhdG9yQmVoYXZpb3JzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omxv
Y2F0aW9uRnJvbVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bGVuZ3RoRnJv
bVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c3RhdGVzT2ZUZXh0SXRlcmF0
b3IpOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgd2F5IHRvIHByb3ZpZGUgYFRleHRJdGVyYXRvckJl
aGF2aW9yc2AgdG8gbWV0aG9kcyB0aGF0IHVzZSBgVGV4dEl0ZXJhdG9yYC4KKyAgICAgICAgQWRk
IGEgbWV0aG9kIHRoYXQgZ2V0cyB0aGUgYHRleHRgIGFuZCBgcmFuZ2VgIG9mIGEgYFRleHRJdGVy
YXRvcmAgYWZ0ZXIgZXZlcnkgYGFkdmFuY2VgLgorCiAyMDIyLTA1LTE2ICBHYWJyaWVsIE5hdmEg
TWFyaW5vICA8Z25hdmFtYXJpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDk1NGQxNzU1ZGZiZmE2YTQxMzZjYzc3ZGE1OTRhMDJiNzJlYmRmNzMuLmEyMmVmNzI2MGFiYjk4
MGFjZTNlODcwMDI5NmFmOTcwN2RlOGU5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjItMDUtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIENy
YXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgY29tLmFwcGxlLldlYktp
dDogV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmlu
Z0JldHdlZW5Qb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc4ODU3MTc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleGNlcHRp
b24gaGFwcGVucyB3aGVuIHRyeWluZyB0byBhZGQgYXR0cmlidXRlcyBmb3IgdGV4dCB0aGF0IGNv
bnRhaW5zIGNvbGxhcHNlZAorICAgICAgICB3aGl0ZXNwYWNlIGFuZCBoYXMgYWxzbyBiZWVuIHdy
YXBwZWQgZHVlIHRvIHRoZSBzaXplIG9mIGl0cyBwYXJlbnQgY29udGFpbmVyLiBUaGUgZXhjZXB0
aW9uCisgICAgICAgIHNwZWNpZmljYWxseSBpcyBhYm91dCB0cnlpbmcgdG8gYWRkIGF0dHJpYnV0
ZXMgYmV5b25kIHRoZSBjdXJyZW50IGxlbmd0aCBvZiBhIGBOU0F0dHJpYnV0ZWRTdHJpbmdgLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
Ojphbm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRpb25zKToKKyAgICAgICAgVXNlIHRoZSBu
ZXcgYFdlYkNvcmU6OlRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzV2hpdGVTcGFjZUF0RW5k
T2ZSdW5gIHRvIG5vdCBpbmNsdWRlIHRoZQorICAgICAgICB0cmFpbGluZyB3aGl0ZXNwYWNlLiBB
bHNvIGFkZCBzb21lIGRlZmVuc2l2ZSBjaGVja3MganVzdCBpbiBjYXNlLgorCiAyMDIyLTA1LTE2
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI0OTE2Mik6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSgpIGNy
YXNoZXMgaWYgdGhlIGltYWdlIGlzIGFuaW1hdGVkIGFuZCB0aGUgZmlyc3QgZnJhbWUgY2Fubm90
IGJlIGRlY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA5
MjkxNDAwZTc2YTNkZTNjYTJhZWJhYmMxODhiY2EzY2ZhZDdhMzU1Li5kYzI1MTFiNDhiNThlYTBh
OTkwMDQwMzE3MWM4ZWY3Y2MyNzdmYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCkBAIC02MjMsOSArNjIzLDIwIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0UnVuKCkKICAgICAgICAgdW5zaWduZWQgdGV4dFJ1blN0YXJ0ID0gbV90ZXh0UnVuLT5zdGFy
dCgpOwogICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6bWF4KHRleHRSdW5TdGFydCwg
c3RhcnQpOwogCisgICAgICAgIHVuc2lnbmVkIHRleHRSdW5FbmQgPSB0ZXh0UnVuU3RhcnQgKyBt
X3RleHRSdW4tPmxlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbih0
ZXh0UnVuRW5kLCBlbmQpOworCisgICAgICAgIC8vIERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRl
eHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAorICAgICAgICBhdXRvIG5leHRU
ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6Om5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIobV90ZXh0
UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZSk7CisKICAgICAgICAgLy8gQ2hlY2sgZm9y
IGNvbGxhcHNlZCBzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhpcyBydW4uCiAgICAgICAgIGJvb2wg
bmVlZFNwYWNlID0gbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90
ZXh0UnVuID09IGZpcnN0VGV4dFJ1biAmJiB0ZXh0UnVuU3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVu
U3RhcnQpOwogICAgICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29s
bGFwc2libGVXaGl0ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7
CisgICAgICAgICAgICBpZiAocnVuU3RhcnQgPj0gcnVuRW5kICYmIG1fYmVoYXZpb3JzLmNvbnRh
aW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzV2hpdGVTcGFjZUF0RW5kT2ZSdW4pKSB7
CisgICAgICAgICAgICAgICAgbV90ZXh0UnVuID0gbmV4dFRleHRSdW47CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChtX2xhc3RUZXh0
Tm9kZSA9PSAmdGV4dE5vZGUgJiYgcnVuU3RhcnQgJiYgcmVuZGVyZXJUZXh0W3J1blN0YXJ0IC0g
MV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3BhY2VSdW5TdGFydCA9IHJ1
blN0YXJ0IC0gMTsKICAgICAgICAgICAgICAgICB3aGlsZSAoc3BhY2VSdW5TdGFydCAmJiByZW5k
ZXJlclRleHRbc3BhY2VSdW5TdGFydCAtIDFdID09ICcgJykKQEAgLTYzNSwxMSArNjQ2LDYgQEAg
dm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCB0ZXh0UnVuRW5k
ID0gdGV4dFJ1blN0YXJ0ICsgbV90ZXh0UnVuLT5sZW5ndGgoKTsKLSAgICAgICAgdW5zaWduZWQg
cnVuRW5kID0gc3RkOjptaW4odGV4dFJ1bkVuZCwgZW5kKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZh
bmNlIHlldAotICAgICAgICBhdXRvIG5leHRUZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6Om5leHRU
ZXh0Qm94SW5Mb2dpY2FsT3JkZXIobV90ZXh0UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNo
ZSk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0IDwgcnVuRW5kKSB7CiAgICAgICAgICAgICBhdXRv
IGlzTmV3bGluZU9yVGFiID0gWyZdKFVDaGFyIGNoYXJhY3RlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCmluZGV4IDZjY2JhZDA4YTM5Mzg1NGM5
NDFmZDNiZjk0YTg4OWZhODE1YWU2MTguLmMyMmYwZDIyYTJiMWE4YTczOGRjNDIzNjc5ZDQ2NWY3
MjcwZDRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
QmVoYXZpb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2
aW9yLmgKQEAgLTYxLDYgKzYxLDggQEAgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JCZWhhdmlvciA6
IHVpbnQxNl90IHsKICAgICBUcmF2ZXJzZXNGbGF0VHJlZSA9IDEgPDwgOSwKIAogICAgIEVudGVy
c0ltYWdlT3ZlcmxheXMgPSAxIDw8IDEwLAorCisgICAgSWdub3Jlc1doaXRlU3BhY2VBdEVuZE9m
UnVuID0gMSA8PCAxMSwKIH07CiAKIHVzaW5nIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9IE9wdGlv
blNldDxUZXh0SXRlcmF0b3JCZWhhdmlvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggYjIwMzhlMzg5YzA2Y2UyNzEwOTViMGE5MzIzODE2MTIzZWYxMWRmNy4uMDhiMmNj
NDY0OTRjMzU0NzM5Nzc4NzQ0NThmZGFkMzQ5ZTY0MWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMjE2MSwxOSArMjE2MSwyOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJ
bnRlcm5hbHM6OmludmFsaWRhdGVDb250cm9sVGludHMoKQogICAgIHJldHVybiB7IH07CiB9CiAK
K3N0YXRpYyBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgdG9UZXh0SXRlcmF0b3JCZWhhdmlvcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ0JlaGF2aW9ycykKK3sKKyAgICBUZXh0SXRlcmF0b3JC
ZWhhdmlvcnMgYmVoYXZpb3JzOworICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5nQmVoYXZpb3Ig
OiBzdHJpbmdCZWhhdmlvcnMpIHsKKyAgICAgICAgaWYgKHN0cmluZ0JlaGF2aW9yID09ICJJZ25v
cmVzV2hpdGVTcGFjZUF0RW5kT2ZSdW4iX3MpCisgICAgICAgICAgICBiZWhhdmlvcnMuYWRkKFRl
eHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzV2hpdGVTcGFjZUF0RW5kT2ZSdW4pOworICAgIH0K
KyAgICByZXR1cm4gYmVoYXZpb3JzOworfQorCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9j
YXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVMaXZlUmFu
Z2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhz
Y29wZSksIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGggfSkpOwogfQogCi11bnNpZ25lZCBJ
bnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYg
cmFuZ2UpCit1bnNpZ25lZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNj
b3BlLCBjb25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdCZWhh
dmlvcnMpCiB7Ci0gICAgcmV0dXJuIGNsYW1wVG88dW5zaWduZWQ+KGNoYXJhY3RlclJhbmdlKG1h
a2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKHNjb3BlKSwgbWFrZVNpbXBsZVJhbmdl
KHJhbmdlKSkubG9jYXRpb24pOworICAgIHJldHVybiBjbGFtcFRvPHVuc2lnbmVkPihjaGFyYWN0
ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cyhzY29wZSksIG1ha2VT
aW1wbGVSYW5nZShyYW5nZSksIHRvVGV4dEl0ZXJhdG9yQmVoYXZpb3JzKHN0cmluZ0JlaGF2aW9y
cykpLmxvY2F0aW9uKTsKIH0KIAotdW5zaWduZWQgSW50ZXJuYWxzOjpsZW5ndGhGcm9tUmFuZ2Uo
RWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJiByYW5nZSkKK3Vuc2lnbmVkIEludGVybmFsczo6
bGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdCZWhhdmlvcnMpCiB7Ci0gICAgcmV0dXJuIGNsYW1wVG88
dW5zaWduZWQ+KGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRl
bnRzKHNjb3BlKSwgbWFrZVNpbXBsZVJhbmdlKHJhbmdlKSkubGVuZ3RoKTsKKyAgICByZXR1cm4g
Y2xhbXBUbzx1bnNpZ25lZD4oY2hhcmFjdGVyUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVO
b2RlQ29udGVudHMoc2NvcGUpLCBtYWtlU2ltcGxlUmFuZ2UocmFuZ2UpLCB0b1RleHRJdGVyYXRv
ckJlaGF2aW9ycyhzdHJpbmdCZWhhdmlvcnMpKS5sZW5ndGgpOwogfQogCiBTdHJpbmcgSW50ZXJu
YWxzOjpyYW5nZUFzVGV4dChjb25zdCBSYW5nZSYgbGl2ZVJhbmdlKQpAQCAtMjIxNyw2ICsyMjI3
LDE3IEBAIFJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9u
KGNvbnN0IFJhbmdlJiBsaXZlUmFuZ2UsIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5n
ZShmaW5kQ2xvc2VzdFBsYWluVGV4dChyYW5nZSwgdGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpKTsK
IH0KIAorVmVjdG9yPEludGVybmFsczo6VGV4dEl0ZXJhdG9yU3RhdGU+IEludGVybmFsczo6c3Rh
dGVzT2ZUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmIGxpdmVSYW5nZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0cmluZ0JlaGF2aW9ycykKK3sKKyAgICBhdXRvIHNpbXBsZVJhbmdlID0gbWFrZVNp
bXBsZVJhbmdlKGxpdmVSYW5nZSk7CisgICAgc2ltcGxlUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXQoKTsKKworICAgIFZlY3RvcjxUZXh0SXRlcmF0b3JTdGF0ZT4gc3RhdGVzOwor
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHNpbXBsZVJhbmdlLCB0b1RleHRJdGVyYXRvckJlaGF2
aW9ycyhzdHJpbmdCZWhhdmlvcnMpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKKyAgICAg
ICAgc3RhdGVzLmFwcGVuZCh7IGl0LnRleHQoKS50b1N0cmluZygpLCBjcmVhdGVMaXZlUmFuZ2Uo
aXQucmFuZ2UoKSkgfSk7CisgICAgcmV0dXJuIHN0YXRlczsKK30KKwogI2lmICFQTEFURk9STShN
QUMpCiBFeGNlcHRpb25PcjxSZWZQdHI8UmFuZ2U+PiBJbnRlcm5hbHM6OnJhbmdlRm9yRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24oaW50LCBpbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCBiNGNhZGRkMjI0NDIzMzY2ZWJmNWM5ZWMyZjYzZWM3ZjUzMGU5MDdiLi41NTNk
N2Y1ZDYxNDk0YzQwNmNkMjcwODVlZDgyNzdiYWU5MTZhNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTM1MSwxNCArMzUxLDIwIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBpbnZhbGlkYXRlQ29udHJvbFRpbnRzKCk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxv
Y2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7Ci0gICAgdW5zaWduZWQgbG9jYXRpb25Gcm9t
UmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJik7Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
RnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYpOworICAgIHVuc2lnbmVkIGxv
Y2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBiZWhhdmlvcnMgPSB7IH0pOworICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5n
ZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmVo
YXZpb3JzID0geyB9KTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2UmKTsKICAg
ICBTdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5n
ZSYpOwogICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCB1bnNpZ25lZCByYW5nZUxvY2F0
aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFJhbmdl
Pj4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQgeCwgaW50IHkpOwogICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihjb25zdCBSYW5nZSYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkKTsKIAorICAgIHN0cnVjdCBUZXh0SXRlcmF0b3JTdGF0ZSB7
CisgICAgICAgIFN0cmluZyB0ZXh0OworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOworICAg
IH07CisgICAgVmVjdG9yPFRleHRJdGVyYXRvclN0YXRlPiBzdGF0ZXNPZlRleHRJdGVyYXRvcihj
b25zdCBSYW5nZSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBiZWhhdmlvcnMgPSB7IH0pOworCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZW5hYmxlZCk7
CiAKICAgICBFeGNlcHRpb25Pcjx1aW50NjRfdD4gbGFzdFNwZWxsQ2hlY2tSZXF1ZXN0U2VxdWVu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1NmZmNTAzYWJlMmQx
ZjA2ZGE1NjMwNjMzN2MwYjBkYjg2NGQ4YmRkLi5lYmI3NzZiNDU0ODMyYjA0ZWJhZWYxYTk1ZTZh
ZjQwODc5NGE2MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yODgs
NiArMjg4LDE0IEBAIGVudW0gSEVWQ1BhcmFtZXRlckNvZGVjIHsKICAgICBib29sZWFuIHJlc3Bl
Y3RUZXh0Q29sb3IgPSBmYWxzZTsKIH07CiAKK1sKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVCwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFy
eSBUZXh0SXRlcmF0b3JTdGF0ZSB7CisgICAgRE9NU3RyaW5nIHRleHQ7CisgICAgUmFuZ2UgcmFu
Z2U7Cit9OworCiBbCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQs
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCkBAIC00NzgsMTMgKzQ4NiwxNCBAQCB0eXBlZGVm
IChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZp
bmVkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwg
bG9uZyB3LCBsb25nIGgpOwogCiAgICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgbG9u
ZyByYW5nZUxlbmd0aCk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb2NhdGlvbkZyb21SYW5nZShFbGVt
ZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsZW5ndGhGcm9tUmFu
Z2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOworICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRp
b25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UsIG9wdGlvbmFsIHNlcXVlbmNl
PERPTVN0cmluZz4gYmVoYXZpb3JzID0gW10pOworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJv
bVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlLCBvcHRpb25hbCBzZXF1ZW5jZTxET01T
dHJpbmc+IGJlaGF2aW9ycyA9IFtdKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2Ug
cmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJh
dG9yKFJhbmdlIHJhbmdlKTsKICAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWdu
ZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBS
YW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxvbmcgeSk7
CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFuZ2UsIERPTVN0
cmluZyB0ZXh0LCBsb25nIHRhcmdldE9mZnNldCk7CisgICAgc2VxdWVuY2U8VGV4dEl0ZXJhdG9y
U3RhdGU+IHN0YXRlc09mVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlLCBvcHRpb25hbCBzZXF1ZW5j
ZTxET01TdHJpbmc+IGJlaGF2aW9ycyA9IFtdKTsKIAogICAgIHVuZGVmaW5lZCBzZXREZWxlZ2F0
ZXNTY3JvbGxpbmcoYm9vbGVhbiBlbmFibGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCmluZGV4IDA0MGYzMTM4ZDQ5ZTYyOWZhZjUxYWMxMjQ0ZWRhMzEyZGYz
OTBiMjIuLjA5N2FmNTI2ZTE0NThmNGFjNjdiODgwMTgxMzJkNTE5OTNkOWYwOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTE3MSwxNSArMTcxLDIwIEBA
IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojph
bm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuCiAKICAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7CiAKLSAgICBmb3IgKFRleHRJ
dGVyYXRvciBpdCgqZW50aXJlUmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Cisg
ICAgY29uc3RleHByIFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnMgeyBUZXh0SXRlcmF0
b3JCZWhhdmlvcjo6SWdub3Jlc1doaXRlU3BhY2VBdEVuZE9mUnVuIH07CisKKyAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdCgqZW50aXJlUmFuZ2UsIGJlaGF2aW9ycyk7ICFpdC5hdEVuZCgpOyBpdC5h
ZHZhbmNlKCkpIHsKICAgICAgICAgaWYgKCFpdC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOml0LnRleHQoKS5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldKS5nZXQoKV07CiAgICAgICAgIGF1
dG8gcmFuZ2UgPSBpdC5yYW5nZSgpOwogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IHJhbmdl
LnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLm1hcmtlcnNJblJhbmdlKHJhbmdlLCBEb2N1bWVu
dE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmcpKSB7CiAgICAgICAgICAgICBhdXRvJiBkYXRh
ID0gc3RkOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFy
a2VyLT5kYXRhKCkpOwotICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShyYW5nZSwgeyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0
KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgfSk7Ci0gICAgICAgICAgICBbc3RyaW5nIGFkZEF0
dHJpYnV0ZTpkYXRhLmtleSB2YWx1ZTpkYXRhLnZhbHVlIHJhbmdlOmNoYXJhY3RlclJhbmdlKCpl
bnRpcmVSYW5nZSwgc3VicmFuZ2UpXTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXIt
PmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgpIH0sIGJlaGF2aW9ycyk7CisgICAg
ICAgICAgICBhdXRvIGF0dHJpYnV0ZVJhbmdlID0gY2hhcmFjdGVyUmFuZ2UoKmVudGlyZVJhbmdl
LCBzdWJyYW5nZSwgYmVoYXZpb3JzKTsKKyAgICAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVSYW5n
ZS5sb2NhdGlvbiArIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCA8PSBbc3RyaW5nIGxlbmd0aF0pOwor
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVJhbmdlLmxvY2F0aW9uICsgYXR0cmlidXRlUmFuZ2Uu
bGVuZ3RoIDw9IFtzdHJpbmcgbGVuZ3RoXSkKKyAgICAgICAgICAgICAgICBbc3RyaW5nIGFkZEF0
dHJpYnV0ZTpkYXRhLmtleSB2YWx1ZTpkYXRhLnZhbHVlIHJhbmdlOldURk1vdmUoYXR0cmlidXRl
UmFuZ2UpXTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI4MWVhYWU5NWQyZjAyNzI4YzY4
YjA1YTMzYjk0MGM1ODU0OGQ0MzMuLjJmYWMzODg3NGEzODQ5YzdlMDhlZTg2YWZmMzI2NDQwMjNh
NzU1ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNS0xNiAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudCBhdCBjb20uYXBwbGUuV2ViS2l0OiBXZWJLaXQ6OlRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5OTA5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84Nzg4NTcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5nZS13aXRo
LXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0
ZXNwYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjItMDUtMTYgIEthcmwgUmFja2xlciAg
PHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRv
Y3VtZW50cy8wMDQuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNl
ZC13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9zdWJyYW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41Y2ZiYmQ2ZDhmMjdhODhhYmM5ZWY2MTEyOTM0ZGZiNWYyMjMxNDYy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3N1
YnJhbmdlLXdpdGgtdHJhaWxpbmctY29sbGFwc2VkLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNjaW5nIGVsaXQuIEFsaXF1YW0gZmF1Y2lidXMgZGlhbSBzaXQgYW1ldCBudW5jIHZlc3Rp
YnVsdW0gYXVjdG9yLgorCitEZWZhdWx0IGJlaGF2aW9yOgorICAnTG9yZW0gaXBzdW0nIChsb2Nh
dGlvbiAwIGxlbmd0aCAxMikKKyAgJyAnIChsb2NhdGlvbiAxMiBsZW5ndGggMCkKKworSWdub3Jl
c1doaXRlU3BhY2VBdEVuZE9mUnVuOgorICAnTG9yZW0gaXBzdW0nIChsb2NhdGlvbiAwIGxlbmd0
aCAxMSkKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5n
ZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtaXRlcmF0b3Ivc3VicmFuZ2Utd2l0aC10cmFpbGluZy1jb2xsYXBzZWQtd2hp
dGVzcGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0OWVmYWRiOGRmOWZlOTczYmI2MTA5MjhiZWJiMjYw
ODRlNWRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRl
cmF0b3Ivc3VicmFuZ2Utd2l0aC10cmFpbGluZy1jb2xsYXBzZWQtd2hpdGVzcGFjZS5odG1sCkBA
IC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDEwMHB4Ij5Mb3JlbSBpcHN1bSBk
b2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBBbGlxdWFtIGZhdWNp
YnVzIGRpYW0gc2l0IGFtZXQgbnVuYyB2ZXN0aWJ1bHVtIGF1Y3Rvci48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CisKK2xldCByYW5nZU9mRmlyc3RMaW5lID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKK3JhbmdlT2ZGaXJzdExpbmUuc2V0U3RhcnQoY29udGFpbmVyLmZpcnN0
Q2hpbGQsIDApOworcmFuZ2VPZkZpcnN0TGluZS5zZXRFbmQoY29udGFpbmVyLmZpcnN0Q2hpbGQs
IDExKTsKKworbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3NlbGVjdGlv
bi5yZW1vdmVBbGxSYW5nZXMoKTsKK3NlbGVjdGlvbi5hZGRSYW5nZShyYW5nZU9mRmlyc3RMaW5l
KTsKKworaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBpbnRlcm5hbHMgb2JqZWN0Jyk7CitlbHNlIHsKKyAgICBkZWJ1ZygiIik7CisKKyAg
ICBbCisgICAgICAgIFsgXSwKKyAgICAgICAgWyAiSWdub3Jlc1doaXRlU3BhY2VBdEVuZE9mUnVu
IiBdLAorICAgIF0uZm9yRWFjaCgoYmVoYXZpb3JzKSA9PiB7CisgICAgICAgIGRlYnVnKGJlaGF2
aW9ycy5qb2luKCJ8IikgfHwgIkRlZmF1bHQgYmVoYXZpb3IiKTsKKyAgICAgICAgZm9yIChsZXQg
e3RleHQsIHJhbmdlfSBvZiBpbnRlcm5hbHMuc3RhdGVzT2ZUZXh0SXRlcmF0b3IocmFuZ2VPZkZp
cnN0TGluZSwgYmVoYXZpb3JzKSkKKyAgICAgICAgICAgIGRlYnVnKGAgICcke3RleHR9JyAobG9j
YXRpb24gJHtpbnRlcm5hbHMubG9jYXRpb25Gcm9tUmFuZ2UoY29udGFpbmVyLCByYW5nZSwgYmVo
YXZpb3JzKX0gbGVuZ3RoICR7aW50ZXJuYWxzLmxlbmd0aEZyb21SYW5nZShjb250YWluZXIsIHJh
bmdlLCBiZWhhdmlvcnMpfSlgKTsKKworICAgICAgICBkZWJ1ZygiIik7CisgICAgfSk7Cit9CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459472</attachid>
            <date>2022-05-16 20:04:55 -0700</date>
            <delta_ts>2022-05-17 11:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239909-20220516210454.patch</filename>
            <type>text/plain</type>
            <size>17640</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YzRiZjkzODZlZDFkZmNmNTBhOWJjY2U2N2Q4ZTdkYTA4Zjk2NDVlLi4y
YjgyNmUxN2I3NDg4MGM0YzYzYWY5MmNiMzFlZTI2MTE5ODJjZmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMjItMDUtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQg
Y29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFu
bm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODc4ODU3MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBleGNlcHRpb24gaGFwcGVucyB3aGVuIHRyeWluZyB0byBhZGQgYXR0cmlidXRlcyBm
b3IgdGV4dCB0aGF0IGNvbnRhaW5zIGNvbGxhcHNlZAorICAgICAgICB3aGl0ZXNwYWNlIGFuZCBo
YXMgYWxzbyBiZWVuIHdyYXBwZWQgZHVlIHRvIHRoZSBzaXplIG9mIGl0cyBwYXJlbnQgY29udGFp
bmVyLiBUaGUgZXhjZXB0aW9uCisgICAgICAgIHNwZWNpZmljYWxseSBpcyBhYm91dCB0cnlpbmcg
dG8gYWRkIGF0dHJpYnV0ZXMgYmV5b25kIHRoZSBjdXJyZW50IGxlbmd0aCBvZiBhIGBOU0F0dHJp
YnV0ZWRTdHJpbmdgLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJy
YW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLmh0bWwKKworICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRS
dW4pOgorICAgICAgICBJbiB0aGUgY2FzZSB0aGF0IGBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENv
bGxhcHNlZFNwYWNlYCwgd2Ugb25seSB3YW50IHRvIGFkZCB0aGUgcmVtYWluaW5nCisgICAgICAg
IHRleHQgaWYgd2UncmUgc3RpbGwgd2l0aGluIHRoZSBkZXNpcmVkIHBvcnRpb24gb2YgdGhlIGBt
X3RleHRSdW5gLiBPdGhlcndpc2UsIHdlJ2xsIGl0ZXJhdGUKKyAgICAgICAgb3ZlciB0b28gbXVj
aCBvZiB0aGUgdGV4dCBhbmQgcmVzdWx0IGluIGEgc3RyaW5nIHRoYXQncyBsb25nZXIgdGhhbiB3
aGF0IHdvdWxkIGJlIHRoZSBjYXNlCisgICAgICAgIGlmIG9uZSBtYW51YWxseSBjYWxjdWxhdGVk
IGl0IGZyb20gdGhlIGdpdmVuIGBvZmZzZXRgIGFuZCBgb2Zmc2V0RW5kYC4gQWRkIGEgbmV3Cisg
ICAgICAgIGBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1doaXRlU3BhY2VBdEVuZE9mUnVu
YCB0byBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKworICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVGV4dEl0
ZXJhdG9yQmVoYXZpb3JzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omxv
Y2F0aW9uRnJvbVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bGVuZ3RoRnJv
bVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c3RhdGVzT2ZUZXh0SXRlcmF0
b3IpOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgd2F5IHRvIHByb3ZpZGUgYFRleHRJdGVyYXRvckJl
aGF2aW9yc2AgdG8gbWV0aG9kcyB0aGF0IHVzZSBgVGV4dEl0ZXJhdG9yYC4KKyAgICAgICAgQWRk
IGEgbWV0aG9kIHRoYXQgZ2V0cyB0aGUgYHRleHRgIGFuZCBgcmFuZ2VgIG9mIGEgYFRleHRJdGVy
YXRvcmAgYWZ0ZXIgZXZlcnkgYGFkdmFuY2VgLgorCiAyMDIyLTA1LTE2ICBHYWJyaWVsIE5hdmEg
TWFyaW5vICA8Z25hdmFtYXJpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDk1NGQxNzU1ZGZiZmE2YTQxMzZjYzc3ZGE1OTRhMDJiNzJlYmRmNzMuLmEyMmVmNzI2MGFiYjk4
MGFjZTNlODcwMDI5NmFmOTcwN2RlOGU5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjItMDUtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIENy
YXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgY29tLmFwcGxlLldlYktp
dDogV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmlu
Z0JldHdlZW5Qb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc4ODU3MTc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleGNlcHRp
b24gaGFwcGVucyB3aGVuIHRyeWluZyB0byBhZGQgYXR0cmlidXRlcyBmb3IgdGV4dCB0aGF0IGNv
bnRhaW5zIGNvbGxhcHNlZAorICAgICAgICB3aGl0ZXNwYWNlIGFuZCBoYXMgYWxzbyBiZWVuIHdy
YXBwZWQgZHVlIHRvIHRoZSBzaXplIG9mIGl0cyBwYXJlbnQgY29udGFpbmVyLiBUaGUgZXhjZXB0
aW9uCisgICAgICAgIHNwZWNpZmljYWxseSBpcyBhYm91dCB0cnlpbmcgdG8gYWRkIGF0dHJpYnV0
ZXMgYmV5b25kIHRoZSBjdXJyZW50IGxlbmd0aCBvZiBhIGBOU0F0dHJpYnV0ZWRTdHJpbmdgLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
Ojphbm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRpb25zKToKKyAgICAgICAgVXNlIHRoZSBu
ZXcgYFdlYkNvcmU6OlRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzV2hpdGVTcGFjZUF0RW5k
T2ZSdW5gIHRvIG5vdCBpbmNsdWRlIHRoZQorICAgICAgICB0cmFpbGluZyB3aGl0ZXNwYWNlLiBB
bHNvIGFkZCBzb21lIGRlZmVuc2l2ZSBjaGVja3MganVzdCBpbiBjYXNlLgorCiAyMDIyLTA1LTE2
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI0OTE2Mik6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSgpIGNy
YXNoZXMgaWYgdGhlIGltYWdlIGlzIGFuaW1hdGVkIGFuZCB0aGUgZmlyc3QgZnJhbWUgY2Fubm90
IGJlIGRlY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA5
MjkxNDAwZTc2YTNkZTNjYTJhZWJhYmMxODhiY2EzY2ZhZDdhMzU1Li5kYzI1MTFiNDhiNThlYTBh
OTkwMDQwMzE3MWM4ZWY3Y2MyNzdmYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCkBAIC02MjMsOSArNjIzLDIwIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0UnVuKCkKICAgICAgICAgdW5zaWduZWQgdGV4dFJ1blN0YXJ0ID0gbV90ZXh0UnVuLT5zdGFy
dCgpOwogICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6bWF4KHRleHRSdW5TdGFydCwg
c3RhcnQpOwogCisgICAgICAgIHVuc2lnbmVkIHRleHRSdW5FbmQgPSB0ZXh0UnVuU3RhcnQgKyBt
X3RleHRSdW4tPmxlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbih0
ZXh0UnVuRW5kLCBlbmQpOworCisgICAgICAgIC8vIERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRl
eHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAorICAgICAgICBhdXRvIG5leHRU
ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6Om5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIobV90ZXh0
UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZSk7CisKICAgICAgICAgLy8gQ2hlY2sgZm9y
IGNvbGxhcHNlZCBzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhpcyBydW4uCiAgICAgICAgIGJvb2wg
bmVlZFNwYWNlID0gbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90
ZXh0UnVuID09IGZpcnN0VGV4dFJ1biAmJiB0ZXh0UnVuU3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVu
U3RhcnQpOwogICAgICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29s
bGFwc2libGVXaGl0ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7
CisgICAgICAgICAgICBpZiAocnVuU3RhcnQgPj0gcnVuRW5kICYmIG1fYmVoYXZpb3JzLmNvbnRh
aW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzV2hpdGVTcGFjZUF0RW5kT2ZSdW4pKSB7
CisgICAgICAgICAgICAgICAgbV90ZXh0UnVuID0gbmV4dFRleHRSdW47CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChtX2xhc3RUZXh0
Tm9kZSA9PSAmdGV4dE5vZGUgJiYgcnVuU3RhcnQgJiYgcmVuZGVyZXJUZXh0W3J1blN0YXJ0IC0g
MV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3BhY2VSdW5TdGFydCA9IHJ1
blN0YXJ0IC0gMTsKICAgICAgICAgICAgICAgICB3aGlsZSAoc3BhY2VSdW5TdGFydCAmJiByZW5k
ZXJlclRleHRbc3BhY2VSdW5TdGFydCAtIDFdID09ICcgJykKQEAgLTYzNSwxMSArNjQ2LDYgQEAg
dm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCB0ZXh0UnVuRW5k
ID0gdGV4dFJ1blN0YXJ0ICsgbV90ZXh0UnVuLT5sZW5ndGgoKTsKLSAgICAgICAgdW5zaWduZWQg
cnVuRW5kID0gc3RkOjptaW4odGV4dFJ1bkVuZCwgZW5kKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZh
bmNlIHlldAotICAgICAgICBhdXRvIG5leHRUZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6Om5leHRU
ZXh0Qm94SW5Mb2dpY2FsT3JkZXIobV90ZXh0UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNo
ZSk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0IDwgcnVuRW5kKSB7CiAgICAgICAgICAgICBhdXRv
IGlzTmV3bGluZU9yVGFiID0gWyZdKFVDaGFyIGNoYXJhY3RlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCmluZGV4IDZjY2JhZDA4YTM5Mzg1NGM5
NDFmZDNiZjk0YTg4OWZhODE1YWU2MTguLmMyMmYwZDIyYTJiMWE4YTczOGRjNDIzNjc5ZDQ2NWY3
MjcwZDRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
QmVoYXZpb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2
aW9yLmgKQEAgLTYxLDYgKzYxLDggQEAgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JCZWhhdmlvciA6
IHVpbnQxNl90IHsKICAgICBUcmF2ZXJzZXNGbGF0VHJlZSA9IDEgPDwgOSwKIAogICAgIEVudGVy
c0ltYWdlT3ZlcmxheXMgPSAxIDw8IDEwLAorCisgICAgSWdub3Jlc1doaXRlU3BhY2VBdEVuZE9m
UnVuID0gMSA8PCAxMSwKIH07CiAKIHVzaW5nIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9IE9wdGlv
blNldDxUZXh0SXRlcmF0b3JCZWhhdmlvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggYjIwMzhlMzg5YzA2Y2UyNzEwOTViMGE5MzIzODE2MTIzZWYxMWRmNy4uMDhiMmNj
NDY0OTRjMzU0NzM5Nzc4NzQ0NThmZGFkMzQ5ZTY0MWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMjE2MSwxOSArMjE2MSwyOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJ
bnRlcm5hbHM6OmludmFsaWRhdGVDb250cm9sVGludHMoKQogICAgIHJldHVybiB7IH07CiB9CiAK
K3N0YXRpYyBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgdG9UZXh0SXRlcmF0b3JCZWhhdmlvcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ0JlaGF2aW9ycykKK3sKKyAgICBUZXh0SXRlcmF0b3JC
ZWhhdmlvcnMgYmVoYXZpb3JzOworICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5nQmVoYXZpb3Ig
OiBzdHJpbmdCZWhhdmlvcnMpIHsKKyAgICAgICAgaWYgKHN0cmluZ0JlaGF2aW9yID09ICJJZ25v
cmVzV2hpdGVTcGFjZUF0RW5kT2ZSdW4iX3MpCisgICAgICAgICAgICBiZWhhdmlvcnMuYWRkKFRl
eHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzV2hpdGVTcGFjZUF0RW5kT2ZSdW4pOworICAgIH0K
KyAgICByZXR1cm4gYmVoYXZpb3JzOworfQorCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9j
YXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVMaXZlUmFu
Z2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhz
Y29wZSksIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGggfSkpOwogfQogCi11bnNpZ25lZCBJ
bnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYg
cmFuZ2UpCit1bnNpZ25lZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNj
b3BlLCBjb25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdCZWhh
dmlvcnMpCiB7Ci0gICAgcmV0dXJuIGNsYW1wVG88dW5zaWduZWQ+KGNoYXJhY3RlclJhbmdlKG1h
a2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKHNjb3BlKSwgbWFrZVNpbXBsZVJhbmdl
KHJhbmdlKSkubG9jYXRpb24pOworICAgIHJldHVybiBjbGFtcFRvPHVuc2lnbmVkPihjaGFyYWN0
ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cyhzY29wZSksIG1ha2VT
aW1wbGVSYW5nZShyYW5nZSksIHRvVGV4dEl0ZXJhdG9yQmVoYXZpb3JzKHN0cmluZ0JlaGF2aW9y
cykpLmxvY2F0aW9uKTsKIH0KIAotdW5zaWduZWQgSW50ZXJuYWxzOjpsZW5ndGhGcm9tUmFuZ2Uo
RWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJiByYW5nZSkKK3Vuc2lnbmVkIEludGVybmFsczo6
bGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdCZWhhdmlvcnMpCiB7Ci0gICAgcmV0dXJuIGNsYW1wVG88
dW5zaWduZWQ+KGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRl
bnRzKHNjb3BlKSwgbWFrZVNpbXBsZVJhbmdlKHJhbmdlKSkubGVuZ3RoKTsKKyAgICByZXR1cm4g
Y2xhbXBUbzx1bnNpZ25lZD4oY2hhcmFjdGVyUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVO
b2RlQ29udGVudHMoc2NvcGUpLCBtYWtlU2ltcGxlUmFuZ2UocmFuZ2UpLCB0b1RleHRJdGVyYXRv
ckJlaGF2aW9ycyhzdHJpbmdCZWhhdmlvcnMpKS5sZW5ndGgpOwogfQogCiBTdHJpbmcgSW50ZXJu
YWxzOjpyYW5nZUFzVGV4dChjb25zdCBSYW5nZSYgbGl2ZVJhbmdlKQpAQCAtMjIxNyw2ICsyMjI3
LDE3IEBAIFJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9u
KGNvbnN0IFJhbmdlJiBsaXZlUmFuZ2UsIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5n
ZShmaW5kQ2xvc2VzdFBsYWluVGV4dChyYW5nZSwgdGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpKTsK
IH0KIAorVmVjdG9yPEludGVybmFsczo6VGV4dEl0ZXJhdG9yU3RhdGU+IEludGVybmFsczo6c3Rh
dGVzT2ZUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmIGxpdmVSYW5nZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0cmluZ0JlaGF2aW9ycykKK3sKKyAgICBhdXRvIHNpbXBsZVJhbmdlID0gbWFrZVNp
bXBsZVJhbmdlKGxpdmVSYW5nZSk7CisgICAgc2ltcGxlUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXQoKTsKKworICAgIFZlY3RvcjxUZXh0SXRlcmF0b3JTdGF0ZT4gc3RhdGVzOwor
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHNpbXBsZVJhbmdlLCB0b1RleHRJdGVyYXRvckJlaGF2
aW9ycyhzdHJpbmdCZWhhdmlvcnMpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKKyAgICAg
ICAgc3RhdGVzLmFwcGVuZCh7IGl0LnRleHQoKS50b1N0cmluZygpLCBjcmVhdGVMaXZlUmFuZ2Uo
aXQucmFuZ2UoKSkgfSk7CisgICAgcmV0dXJuIHN0YXRlczsKK30KKwogI2lmICFQTEFURk9STShN
QUMpCiBFeGNlcHRpb25PcjxSZWZQdHI8UmFuZ2U+PiBJbnRlcm5hbHM6OnJhbmdlRm9yRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24oaW50LCBpbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCBiNGNhZGRkMjI0NDIzMzY2ZWJmNWM5ZWMyZjYzZWM3ZjUzMGU5MDdiLi41NTNk
N2Y1ZDYxNDk0YzQwNmNkMjcwODVlZDgyNzdiYWU5MTZhNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTM1MSwxNCArMzUxLDIwIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBpbnZhbGlkYXRlQ29udHJvbFRpbnRzKCk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxv
Y2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7Ci0gICAgdW5zaWduZWQgbG9jYXRpb25Gcm9t
UmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJik7Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
RnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYpOworICAgIHVuc2lnbmVkIGxv
Y2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBiZWhhdmlvcnMgPSB7IH0pOworICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5n
ZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmVo
YXZpb3JzID0geyB9KTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2UmKTsKICAg
ICBTdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5n
ZSYpOwogICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCB1bnNpZ25lZCByYW5nZUxvY2F0
aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFJhbmdl
Pj4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQgeCwgaW50IHkpOwogICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihjb25zdCBSYW5nZSYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkKTsKIAorICAgIHN0cnVjdCBUZXh0SXRlcmF0b3JTdGF0ZSB7
CisgICAgICAgIFN0cmluZyB0ZXh0OworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOworICAg
IH07CisgICAgVmVjdG9yPFRleHRJdGVyYXRvclN0YXRlPiBzdGF0ZXNPZlRleHRJdGVyYXRvcihj
b25zdCBSYW5nZSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBiZWhhdmlvcnMgPSB7IH0pOworCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZW5hYmxlZCk7
CiAKICAgICBFeGNlcHRpb25Pcjx1aW50NjRfdD4gbGFzdFNwZWxsQ2hlY2tSZXF1ZXN0U2VxdWVu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1NmZmNTAzYWJlMmQx
ZjA2ZGE1NjMwNjMzN2MwYjBkYjg2NGQ4YmRkLi5lYmI3NzZiNDU0ODMyYjA0ZWJhZWYxYTk1ZTZh
ZjQwODc5NGE2MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yODgs
NiArMjg4LDE0IEBAIGVudW0gSEVWQ1BhcmFtZXRlckNvZGVjIHsKICAgICBib29sZWFuIHJlc3Bl
Y3RUZXh0Q29sb3IgPSBmYWxzZTsKIH07CiAKK1sKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVCwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFy
eSBUZXh0SXRlcmF0b3JTdGF0ZSB7CisgICAgRE9NU3RyaW5nIHRleHQ7CisgICAgUmFuZ2UgcmFu
Z2U7Cit9OworCiBbCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQs
CiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCkBAIC00NzgsMTMgKzQ4NiwxNCBAQCB0eXBlZGVm
IChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZp
bmVkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwg
bG9uZyB3LCBsb25nIGgpOwogCiAgICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgbG9u
ZyByYW5nZUxlbmd0aCk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb2NhdGlvbkZyb21SYW5nZShFbGVt
ZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsZW5ndGhGcm9tUmFu
Z2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOworICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRp
b25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UsIG9wdGlvbmFsIHNlcXVlbmNl
PERPTVN0cmluZz4gYmVoYXZpb3JzID0gW10pOworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJv
bVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlLCBvcHRpb25hbCBzZXF1ZW5jZTxET01T
dHJpbmc+IGJlaGF2aW9ycyA9IFtdKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2Ug
cmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJh
dG9yKFJhbmdlIHJhbmdlKTsKICAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWdu
ZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBS
YW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxvbmcgeSk7
CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFuZ2UsIERPTVN0
cmluZyB0ZXh0LCBsb25nIHRhcmdldE9mZnNldCk7CisgICAgc2VxdWVuY2U8VGV4dEl0ZXJhdG9y
U3RhdGU+IHN0YXRlc09mVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlLCBvcHRpb25hbCBzZXF1ZW5j
ZTxET01TdHJpbmc+IGJlaGF2aW9ycyA9IFtdKTsKIAogICAgIHVuZGVmaW5lZCBzZXREZWxlZ2F0
ZXNTY3JvbGxpbmcoYm9vbGVhbiBlbmFibGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCmluZGV4IDA0MGYzMTM4ZDQ5ZTYyOWZhZjUxYWMxMjQ0ZWRhMzEyZGYz
OTBiMjIuLjA5N2FmNTI2ZTE0NThmNGFjNjdiODgwMTgxMzJkNTE5OTNkOWYwOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTE3MSwxNSArMTcxLDIwIEBA
IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojph
bm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuCiAKICAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7CiAKLSAgICBmb3IgKFRleHRJ
dGVyYXRvciBpdCgqZW50aXJlUmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Cisg
ICAgY29uc3RleHByIFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnMgeyBUZXh0SXRlcmF0
b3JCZWhhdmlvcjo6SWdub3Jlc1doaXRlU3BhY2VBdEVuZE9mUnVuIH07CisKKyAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdCgqZW50aXJlUmFuZ2UsIGJlaGF2aW9ycyk7ICFpdC5hdEVuZCgpOyBpdC5h
ZHZhbmNlKCkpIHsKICAgICAgICAgaWYgKCFpdC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOml0LnRleHQoKS5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldKS5nZXQoKV07CiAgICAgICAgIGF1
dG8gcmFuZ2UgPSBpdC5yYW5nZSgpOwogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IHJhbmdl
LnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLm1hcmtlcnNJblJhbmdlKHJhbmdlLCBEb2N1bWVu
dE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmcpKSB7CiAgICAgICAgICAgICBhdXRvJiBkYXRh
ID0gc3RkOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFy
a2VyLT5kYXRhKCkpOwotICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShyYW5nZSwgeyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0
KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgfSk7Ci0gICAgICAgICAgICBbc3RyaW5nIGFkZEF0
dHJpYnV0ZTpkYXRhLmtleSB2YWx1ZTpkYXRhLnZhbHVlIHJhbmdlOmNoYXJhY3RlclJhbmdlKCpl
bnRpcmVSYW5nZSwgc3VicmFuZ2UpXTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXIt
PmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgpIH0sIGJlaGF2aW9ycyk7CisgICAg
ICAgICAgICBhdXRvIGF0dHJpYnV0ZVJhbmdlID0gY2hhcmFjdGVyUmFuZ2UoKmVudGlyZVJhbmdl
LCBzdWJyYW5nZSwgYmVoYXZpb3JzKTsKKyAgICAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVSYW5n
ZS5sb2NhdGlvbiArIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCA8PSBbc3RyaW5nIGxlbmd0aF0pOwor
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVJhbmdlLmxvY2F0aW9uICsgYXR0cmlidXRlUmFuZ2Uu
bGVuZ3RoIDw9IFtzdHJpbmcgbGVuZ3RoXSkKKyAgICAgICAgICAgICAgICBbc3RyaW5nIGFkZEF0
dHJpYnV0ZTpkYXRhLmtleSB2YWx1ZTpkYXRhLnZhbHVlIHJhbmdlOldURk1vdmUoYXR0cmlidXRl
UmFuZ2UpXTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI4MWVhYWU5NWQyZjAyNzI4YzY4
YjA1YTMzYjk0MGM1ODU0OGQ0MzMuLjJmYWMzODg3NGEzODQ5YzdlMDhlZTg2YWZmMzI2NDQwMjNh
NzU1ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNS0xNiAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudCBhdCBjb20uYXBwbGUuV2ViS2l0OiBXZWJLaXQ6OlRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5OTA5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84Nzg4NTcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5nZS13aXRo
LXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0
ZXNwYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjItMDUtMTYgIEthcmwgUmFja2xlciAg
PHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRv
Y3VtZW50cy8wMDQuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9zdWJyYW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNl
ZC13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9zdWJyYW5nZS13aXRoLXRyYWlsaW5nLWNvbGxhcHNlZC13aGl0ZXNwYWNlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMTNlZTdmMGMwNjMxYjY0OWE4Nzc0M2Y5NDY5Mzc2ZjVkNGQ3NDIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3N1
YnJhbmdlLXdpdGgtdHJhaWxpbmctY29sbGFwc2VkLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNjaW5nIGVsaXQuIEFsaXF1YW0gZmF1Y2lidXMgZGlhbSBzaXQgYW1ldCBudW5jIHZlc3Rp
YnVsdW0gYXVjdG9yLgorCitEZWZhdWx0IGJlaGF2aW9yCisgICdMb3JlbSBpcHN1bScgKGxvY2F0
aW9uIDAgbGVuZ3RoIDEyKQorICAnICcgKGxvY2F0aW9uIDEyIGxlbmd0aCAwKQorCitJZ25vcmVz
V2hpdGVTcGFjZUF0RW5kT2ZSdW4KKyAgJ0xvcmVtIGlwc3VtJyAobG9jYXRpb24gMCBsZW5ndGgg
MTEpCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3Ivc3VicmFuZ2Ut
d2l0aC10cmFpbGluZy1jb2xsYXBzZWQtd2hpdGVzcGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy90ZXh0LWl0ZXJhdG9yL3N1YnJhbmdlLXdpdGgtdHJhaWxpbmctY29sbGFwc2VkLXdoaXRl
c3BhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDllZmFkYjhkZjlmZTk3M2JiNjEwOTI4YmViYjI2MDg0
ZTVkYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJh
dG9yL3N1YnJhbmdlLXdpdGgtdHJhaWxpbmctY29sbGFwc2VkLXdoaXRlc3BhY2UuaHRtbApAQCAt
MCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0idGVzdCIgc3R5bGU9IndpZHRoOiAxMDBweCI+TG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQWxpcXVhbSBmYXVjaWJ1
cyBkaWFtIHNpdCBhbWV0IG51bmMgdmVzdGlidWx1bSBhdWN0b3IuPC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2xldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdCcpOworCitsZXQgcmFuZ2VPZkZpcnN0TGluZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CityYW5nZU9mRmlyc3RMaW5lLnNldFN0YXJ0KGNvbnRhaW5lci5maXJzdENo
aWxkLCAwKTsKK3JhbmdlT2ZGaXJzdExpbmUuc2V0RW5kKGNvbnRhaW5lci5maXJzdENoaWxkLCAx
MSk7CisKK2xldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CitzZWxlY3Rpb24u
cmVtb3ZlQWxsUmFuZ2VzKCk7CitzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2VPZkZpcnN0TGluZSk7
CisKK2lmICghd2luZG93LmludGVybmFscykKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVx
dWlyZXMgaW50ZXJuYWxzIG9iamVjdCcpOworZWxzZSB7CisgICAgZGVidWcoIiIpOworCisgICAg
WworICAgICAgICBbIF0sCisgICAgICAgIFsgIklnbm9yZXNXaGl0ZVNwYWNlQXRFbmRPZlJ1biIg
XSwKKyAgICBdLmZvckVhY2goKGJlaGF2aW9ycykgPT4geworICAgICAgICBkZWJ1ZyhiZWhhdmlv
cnMuam9pbigifCIpIHx8ICJEZWZhdWx0IGJlaGF2aW9yIik7CisgICAgICAgIGZvciAobGV0IHt0
ZXh0LCByYW5nZX0gb2YgaW50ZXJuYWxzLnN0YXRlc09mVGV4dEl0ZXJhdG9yKHJhbmdlT2ZGaXJz
dExpbmUsIGJlaGF2aW9ycykpCisgICAgICAgICAgICBkZWJ1ZyhgICAnJHt0ZXh0fScgKGxvY2F0
aW9uICR7aW50ZXJuYWxzLmxvY2F0aW9uRnJvbVJhbmdlKGNvbnRhaW5lciwgcmFuZ2UsIGJlaGF2
aW9ycyl9IGxlbmd0aCAke2ludGVybmFscy5sZW5ndGhGcm9tUmFuZ2UoY29udGFpbmVyLCByYW5n
ZSwgYmVoYXZpb3JzKX0pYCk7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0pOworfQorCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>