<?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>234885</bug_id>
          
          <creation_ts>2022-01-05 09:26:40 -0800</creation_ts>
          <short_desc>AX: AccessibilityObject::setFocused(true) should make the webpage focused, and make web content the first responder</short_desc>
          <delta_ts>2023-01-02 12:44:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=249976</see_also>
          <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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828293</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-05 09:26:40 -0800</bug_when>
    <thetext>WebKit should set webpage focus and first respondership when an element is focused via accessibility. Because we don&apos;t currently do so, focus rings are not drawn around focused elements when these conditions are true:

1. A WKWebView is embedded in another app
2. An AX client drives focus into the webview (e.g. full keyboard access on iOS)
3. The hosting app does not make web content the first responder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828294</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-05 09:26:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/87149186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828326</commentid>
    <comment_count>2</comment_count>
      <attachid>448409</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-05 10:45:59 -0800</bug_when>
    <thetext>Created attachment 448409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828662</commentid>
    <comment_count>3</comment_count>
      <attachid>448409</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 10:34:16 -0800</bug_when>
    <thetext>Comment on attachment 448409
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2797
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +        // Mark the page as focused so the focus ring can be drawn immediately. The page is also marked
&gt; +        // as focused as part assistiveTechnologyMakeFirstResponder, but that requires some back-and-forth
&gt; +        // IPC between the web and UI processes, during which we can miss the drawing of the focus ring for the
&gt; +        // first focused element. Making the page focused is a requirement for making the page selection focused.
&gt; +        // This is iOS only until there&apos;s a demonstrated need for this preemptive focus on other platforms.
&gt; +        if (!page-&gt;focusController().isFocused())
&gt; +            page-&gt;focusController().setFocused(true);
&gt; +#endif

Once we call ChromeClient::focus, a lot of side effects may have happened; almost anything could happen including arbitrary code running on webpages and doing a lot. Not sure it’s OK to do more work after that using a page pointer which might now be a deallocated object. We may need to reorder things, or re-fetch document, frame, and page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828669</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-06 10:54:51 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 448409 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448409&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2797
&gt; &gt; +#if PLATFORM(IOS_FAMILY)
&gt; &gt; +        // Mark the page as focused so the focus ring can be drawn immediately. The page is also marked
&gt; &gt; +        // as focused as part assistiveTechnologyMakeFirstResponder, but that requires some back-and-forth
&gt; &gt; +        // IPC between the web and UI processes, during which we can miss the drawing of the focus ring for the
&gt; &gt; +        // first focused element. Making the page focused is a requirement for making the page selection focused.
&gt; &gt; +        // This is iOS only until there&apos;s a demonstrated need for this preemptive focus on other platforms.
&gt; &gt; +        if (!page-&gt;focusController().isFocused())
&gt; &gt; +            page-&gt;focusController().setFocused(true);
&gt; &gt; +#endif
&gt; 
&gt; Once we call ChromeClient::focus, a lot of side effects may have happened;
&gt; almost anything could happen including arbitrary code running on webpages
&gt; and doing a lot. Not sure it’s OK to do more work after that using a page
&gt; pointer which might now be a deallocated object. We may need to reorder
&gt; things, or re-fetch document, frame, and page.
Good point. I think re-ordering it such that this new block is before ChromeClient::focus will be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828672</commentid>
    <comment_count>5</comment_count>
      <attachid>448512</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-06 10:57:28 -0800</bug_when>
    <thetext>Created attachment 448512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828677</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 11:09:07 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; Good point. I think re-ordering it such that this new block is before
&gt; ChromeClient::focus will be fine.

Sadly I do not think that’s sufficient. FocusController::setFocused has side effects too, so the same problem happens in reverse.

The trick here is to:

1) First, decide what the policy is if a side effect navigates away and does things in the middle of this focusing process, like what it it focuses something else? Unclear how to get that exactly right.

2) Second, write the code so it doesn’t use pointers that could be stale across these; re-getting document, frame, page, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829067</commentid>
    <comment_count>7</comment_count>
      <attachid>448630</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-07 14:17:51 -0800</bug_when>
    <thetext>Created attachment 448630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829068</commentid>
    <comment_count>8</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-07 14:20:23 -0800</bug_when>
    <thetext>&gt; 1) First, decide what the policy is if a side effect navigates away and does things in the middle of this focusing process, like what it it focuses something else? Unclear how to get that exactly right.
If ChromeClient::focus() or FocusController::setFocused(true) were to create a side-effect that focused something else, it would be overridden by the last block in this function, assistiveTechnologyMakeFirstResponder, which focuses the page and makes web content the first responder.

I think this is reasonable behavior / policy. If we’ve gotten to this function call, it means the embedder has allowed focus to enter into web content, and an AX client is trying to focus an element, and thus we should make the page focused so focus rings can be drawn. If a webview embedder doesn’t want to allow focus into web content (maybe it’s intended to be visual but not interactive), they have knobs on the webview delegate they can tweak (i.e. _webViewCanBecomeFocused).

&gt; 2) Second, write the code so it doesn’t use pointers that could be stale across these; re-getting document, frame, page, etc.  
I think this should be better now if you wouldn&apos;t mind taking another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829131</commentid>
    <comment_count>9</comment_count>
      <attachid>448630</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-07 16:29:23 -0800</bug_when>
    <thetext>Comment on attachment 448630
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829221</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-08 08:41:41 -0800</bug_when>
    <thetext>Committed r287810 (245862@main): &lt;https://commits.webkit.org/245862@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448630.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448409</attachid>
            <date>2022-01-05 10:45:59 -0800</date>
            <delta_ts>2022-01-06 10:57:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234885-20220105124558.patch</filename>
            <type>text/plain</type>
            <size>22045</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM3ZWFjOGE5Zjg2ZmU2
YzY2MTBhODUzZjdmZjZiYjA1OTM2YmNmYy4uMmQwMjk3NzgwZDE2ZjI0YjllMGJlNDQ3YzI0Njc4
YzBkZGZhNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTA1ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldEZvY3VzZWQodHJ1ZSkgc2hvdWxkIG1ha2UgdGhlIHdlYnBhZ2UgZm9jdXNl
ZCwgYW5kIG1ha2Ugd2ViIGNvbnRlbnQgdGhlIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBmb2N1
c2luZyBhbiBlbGVtZW50IHZpYSBhbiBBWCBjbGllbnQgb24gaU9TIG1ha2VzCisgICAgICAgIHRo
ZSBwYWdlIGZvY3VzZWQgaW1tZWRpYXRlbHkuIFRoaXMgYWxsb3dzIGEgZm9jdXMgcmluZyB0byBi
ZSBkcmF3biwKKyAgICAgICAgZXZlbiB3aGVuIGFwcHMgdGhhdCBlbWJlZCBXS1dlYlZpZXdzIGRv
bid0IG1ha2Ugd2ViIGNvbnRlbnQgdGhlCisgICAgICAgIGZpcnN0IHJlc3BvbmRlciB0aGVtc2Vs
dmVzIChgW1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldl
YlZpZXddYAorICAgICAgICBtYWtlcyB0aGUgcGFnZSBmb2N1c2VkIGFmdGVyIGEgZGVsYXkgZHVl
IHRvIGFzeW5jIElQQyBiZXR3ZWVuIHRoZSBVSSBhbmQgd2ViIHByb2Nlc3NlcykuCisKKyAgICAg
ICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2Ut
Zmlyc3QtcmVzcG9uZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkvaW9zLXNp
bXVsYXRvci90YWtpbmctZm9jdXMtc2hvdWxkLXJlZm9jdXMtcGFnZS5odG1sCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCk6CisgICAgICAgIE1ha2UgdGhlIHdl
YnBhZ2UgZm9jdXNlZCBpZiBpdCBpc24ndCBhbHJlYWR5IGZvY3VzZWQuCisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBh
Z2VJc0ZvY3VzZWQpOgorICAgICAgICBBZGRlZCB0byBzaW11bGF0ZSB0aGUgc2NlbmFyaW8gd2hl
cmUgdGhlIHdlYnBhZ2UgZG9lc24ndCBnYWluIGZvY3VzCisgICAgICAgIHRocm91Z2ggYmVjb21p
bmcgZmlyc3QgcmVzcG9uZGVyLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAg
ICAgIEFkZCBzZXRQYWdlSXNGb2N1c2VkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgQWRkIHNldFBhZ2VJc0ZvY3VzZWQuCisKIDIwMjItMDEtMDUgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxk
IHN1cHBvcnQgdGhlIGJpdHNQZXJTZWNvbmQgb3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3NTZhY2M0OGJj
MGFlNTA3NGY0ZTE0Y2FjZTAxZmI5OTA5MjZkNTUuLjU4MjNlNWE3YTRlZjlhYzU1YTQ5Yzc5YzIw
ODM0ZTM0YTU2ZWQ1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDEtMDUgIFR5
bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2V0Rm9jdXNlZCh0cnVlKSBzaG91bGQgbWFrZSB0aGUgd2VicGFnZSBmb2N1
c2VkLCBhbmQgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4ODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIGZv
Y3VzaW5nIGFuIGVsZW1lbnQgdmlhIGFuIEFYIGNsaWVudCBvbiBpT1MgbWFrZXMgd2ViIGNvbnRl
bnQKKyAgICAgICAgdGhlIGZpcnN0IHJlc3BvbmRlci4gVGhpcyBhbGxvd3MgYSBmb2N1cyByaW5n
IHRvIGJlIGRyYXduIGFuZCBmb3Igd2ViIGNvbnRlbnQKKyAgICAgICAgdG8gcGVyZm9ybSBvdGhl
ciBpbXBvcnRhbnQgYWN0aW9ucyB1cG9uIHRha2luZyBmaXJzdCByZXNwb25kZXJzaGlwCisgICAg
ICAgIChzZWUgYFtXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24gYmVjb21lRmlyc3RSZXNwb25kZXJG
b3JXZWJWaWV3XWApLCBldmVuIHdoZW4gYXBwcworICAgICAgICB0aGF0IGVtYmVkIFdLV2ViVmll
d3MgZG9uJ3QgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyIHRoZW1zZWx2ZXMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJl
c3BvbmRlcik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJz
dFJlc3BvbmRlcik6CisKIDIwMjItMDEtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV1BdIEJsb2NrIHNhbmRib3ggYWNjZXNzIHRvIHN5
c2NhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCmluZGV4IDFkY2NkODZhYmEyMzljZDkzZDEwMmUwZmI0OTI2MjZlNWZiNDll
YjYuLjI0NjllNGJmMDczYmUyOTY2OWYwOWE4NzY0YjA4MDA5ZDQzZTNiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApA
QCAtMjc4Niw2ICsyNzg2LDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNl
ZChib29sIGZvY3VzKQogICAgICAgICBDaHJvbWVDbGllbnQmIGNocm9tZUNsaWVudCA9IHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpOwogICAgICAgICBjaHJvbWVDbGllbnQuZm9jdXMoKTsKIAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIC8vIE1hcmsgdGhlIHBhZ2UgYXMgZm9jdXNl
ZCBzbyB0aGUgZm9jdXMgcmluZyBjYW4gYmUgZHJhd24gaW1tZWRpYXRlbHkuIFRoZSBwYWdlIGlz
IGFsc28gbWFya2VkCisgICAgICAgIC8vIGFzIGZvY3VzZWQgYXMgcGFydCBhc3Npc3RpdmVUZWNo
bm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyLCBidXQgdGhhdCByZXF1aXJlcyBzb21lIGJhY2stYW5k
LWZvcnRoCisgICAgICAgIC8vIElQQyBiZXR3ZWVuIHRoZSB3ZWIgYW5kIFVJIHByb2Nlc3Nlcywg
ZHVyaW5nIHdoaWNoIHdlIGNhbiBtaXNzIHRoZSBkcmF3aW5nIG9mIHRoZSBmb2N1cyByaW5nIGZv
ciB0aGUKKyAgICAgICAgLy8gZmlyc3QgZm9jdXNlZCBlbGVtZW50LiBNYWtpbmcgdGhlIHBhZ2Ug
Zm9jdXNlZCBpcyBhIHJlcXVpcmVtZW50IGZvciBtYWtpbmcgdGhlIHBhZ2Ugc2VsZWN0aW9uIGZv
Y3VzZWQuCisgICAgICAgIC8vIFRoaXMgaXMgaU9TIG9ubHkgdW50aWwgdGhlcmUncyBhIGRlbW9u
c3RyYXRlZCBuZWVkIGZvciB0aGlzIHByZWVtcHRpdmUgZm9jdXMgb24gb3RoZXIgcGxhdGZvcm1z
LgorICAgICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmlzRm9jdXNlZCgpKQorICAg
ICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZCh0cnVlKTsKKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGF1dG8qIGZyYW1lVmlldyA9IGRvY3Vt
ZW50RnJhbWVWaWV3KCk7CiAgICAgICAgIGlmICghZnJhbWVWaWV3KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGM3NWY0ZTliMjI4YjkzZjQ4YTAxZDIwNDg0OTExZTVhNzRk
YzQzNTMuLmMxYWEyZGNjNjgxM2RlYWU5ZDU4MzU4Y2MyM2IzOGYxMzdiOTc4NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUzNjAsNiArNTM2MCwxMSBAQCB2b2lkIElu
dGVybmFsczo6c2V0UGFnZVZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiAgICAgdXBkYXRlUGFn
ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBpc1Zpc2libGUpOwogfQog
Cit2b2lkIEludGVybmFsczo6c2V0UGFnZUlzRm9jdXNlZChib29sIGlzRm9jdXNlZCkKK3sKKyAg
ICB1cGRhdGVQYWdlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIGlzRm9j
dXNlZCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGJv
b2wgaXNGb2N1c2VkQW5kQWN0aXZlKQogewogICAgIHVwZGF0ZVBhZ2VBY3Rpdml0eVN0YXRlKHsg
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9
LCBpc0ZvY3VzZWRBbmRBY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
MmE5ZGRjZjk3ZDA2MTI0NWI1ZTcxZWI0NTRiOWQ1N2M4ZmNmN2Q4OS4uMDM4NDBjMTZhMjdkYWJh
NWU0ZjQzMjdmNjYxOTgzYjVmN2FjNzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC04NDUsNiArODQ1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFBhZ2VW
aXNpYmlsaXR5KGJvb2wgaXNWaXNpYmxlKTsKKyAgICB2b2lkIHNldFBhZ2VJc0ZvY3VzZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGJvb2wpOwogICAgIHZvaWQg
c2V0UGFnZUlzSW5XaW5kb3coYm9vbCk7CiAgICAgYm9vbCBpc1BhZ2VBY3RpdmUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjOGNhZjE3NDYzMDNlZTMyZTc4
MWQyM2Y3Y2FlYjg2ZTIxY2U2MDkyLi43YWVmN2YxYmYwMjNiMGJhNTQwZmYzNjFmMmJmNzJiNjdm
OGFiYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04ODUsNiArODg1
LDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0
OwogICAgIFtDb25kaXRpb25hbD1XRUJHTF0gYm9vbGVhbiBwbGF0Zm9ybVN1cHBvcnRzTWV0YWwo
Ym9vbGVhbiBpc1dlYkdMMik7CiAKICAgICB1bmRlZmluZWQgc2V0UGFnZVZpc2liaWxpdHkoYm9v
bGVhbiBpc1Zpc2libGUpOworICAgIHVuZGVmaW5lZCBzZXRQYWdlSXNGb2N1c2VkKGJvb2xlYW4g
aXNGb2N1c2VkKTsKICAgICB1bmRlZmluZWQgc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShib29s
ZWFuIGlzRm9jdXNlZCk7CiAgICAgdW5kZWZpbmVkIHNldFBhZ2VJc0luV2luZG93KGJvb2xlYW4g
aXNJbldpbmRvdyk7CiAgICAgYm9vbGVhbiBpc1BhZ2VBY3RpdmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmYWM5ZTdmYjc4
YmVlMGY2Mjk0NTY3MmUzYmI3NGI5ZTA1MjBlMzBmLi45MjEyNmNkYzY5YTdmZDNjZGFlNmFhMGY0
YmU4NzQzZTJiMGM3MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6bm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpCiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgW21fY29udGVudFZpZXcgYmVjb21lRmlyc3RS
ZXNwb25kZXJdOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggODI5OGJlYjg1N2MyYzVhN2JmNjRjMTg0ZmFkOGEwZWVjZTMyMGExMC4uNTE2Yzg5OWRmOGU0
NzRiYThlMmM2ZTcyMzUxNGQ5YTIwZDM1YTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lN
YWtlRmlyc3RSZXNwb25kZXIoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcGFnZUNs
aWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIH0KICAgICAK
IHZvaWQgV2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyMDBjY2NmNWQyMDgxMmZjZTlj
MTE5YTcyZWJmMDg0NTNiYmRkMWEuLjk4ZjNhNmI2MTdiZmZmYjE0MTk1NTNlN2I5NWI2ZTQ2N2E5
NDcyMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMi0wMS0wNSAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKHRy
dWUpIHNob3VsZCBtYWtlIHRoZSB3ZWJwYWdlIGZvY3VzZWQsIGFuZCBtYWtlIHdlYiBjb250ZW50
IHRoZSBmaXJzdCByZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0aW5nIGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IHRvIGNoZWNr
IHRoYXQgd2ViIGNvbnRlbnQgaXMgdGhlCisgICAgICAgIGZpcnN0IHJlc3BvbmRlciBpbiB0aGUg
VUkgcHJvY2Vzcy4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6aXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXIgY29uc3QpOgor
ICAgICAgICBBZGRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIEltcGxlbWVudCB0aGlzIG1l
dGhvZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjppc1dlYkNvbnRl
bnRGaXJzdFJlc3BvbmRlciBjb25zdCk6CisgICAgICAgIEFkZGVkLgorCiAyMDIyLTAxLTA1ICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBSdW5uaW5nIGxh
eW91dCB0ZXN0cyBzb21ldGltZXMgdGhyb3dzIGFuIEFzc2VydGlvbkVycm9yIGluIHB5dGhvbjIu
Ny9tdWx0aXByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIu
aWRsCmluZGV4IDU1MTk3NGVlZTA5MTczMzBmOTAyMjdmZjljOGRlNGMxNGQ0MzA1NzMuLmMwZDc3
YTI3YmFiMmU2MmFkMDU3ZWVlZGI2ZDBlYWE3N2NjZTU0MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxl
ci5pZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGlu
Z3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApAQCAtMzU5LDYgKzM1OSw3IEBAIGludGVyZmFjZSBV
SVNjcmlwdENvbnRyb2xsZXIgewogICAgIHVuZGVmaW5lZCBmaXJzdFJlc3BvbmRlclN1cHByZXNz
aW9uRm9yV2ViVmlldyhib29sZWFuIHNob3VsZFN1cHByZXNzKTsKICAgICB1bmRlZmluZWQgbWFr
ZVdpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXI7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXI7CiAKICAgICB1
bmRlZmluZWQgc2V0SGFyZHdhcmVLZXlib2FyZEF0dGFjaGVkKGJvb2xlYW4gYXR0YWNoZWQpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDE0OTMyZDUxMDE0ZTRkMzhjMjdjNDcwZGM5ZGNk
Y2ZjMmYyNDk0MDcuLjhkZmNkMTY1YWIwMjU0MGNlZGFlOTM4ODA0MWVmYjIyYzdlYWQzYjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBmaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyhib29sKSB7IG5v
dEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWFrZVdpbmRvd0NvbnRlbnRWaWV3
Rmlyc3RSZXNwb25kZXIoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNXaW5kb3dDb250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCkgY29uc3QgeyBub3RJbXBsZW1lbnRl
ZCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJDb250ZW50Rmlyc3RS
ZXNwb25kZXIoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVZpZXdGcm9tV2luZG93KEpTVmFsdWVSZWYpIHsgbm90SW1w
bGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRWaWV3VG9XaW5kb3coSlNWYWx1ZVJl
ZikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQppbmRleCBiYTQ3NGY5NmMwYjZkZjM0YTI5ODVlMDUwNWU5MWRlNjg2NGI2NWVk
Li4xMGJmMTdiYzJhYTMyZThhMGVkNDQ4ZDBhMThmMzkzMWVkZGVjZGZmIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTcwLDYgKzcwLDcgQEAgdHlwZWRl
ZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJp
bmcqIG5vdGlmaWNhdGlvbiwKIC0gKENHRmxvYXQpX2FjY2Vzc2liaWxpdHlNaW5WYWx1ZTsKIC0g
KENHRmxvYXQpX2FjY2Vzc2liaWxpdHlNYXhWYWx1ZTsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlT
ZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKKy0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTZXRGb2N1
czooQk9PTClmb2N1czsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlBY3RpdmF0ZTsKIC0gKFVJQWNj
ZXNzaWJpbGl0eVRyYWl0cylfYXhTZWxlY3RlZFRyYWl0OwogLSAoVUlBY2Nlc3NpYmlsaXR5VHJh
aXRzKV9heFRleHRBcmVhVHJhaXQ7CkBAIC0xMTgxLDYgKzExODIsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCkgY29uc3QKIAogdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9jdXMoKQogeworICAgIFttX2VsZW1lbnQgX2Fj
Y2Vzc2liaWxpdHlTZXRGb2N1czpZRVNdOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRha2VTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MuaAppbmRleCAzNDNlN2JiNzQ4MTgyOTgyYTNkMDE4OTk3ODkw
MDYwNTZhNzA1NGVhLi43Njc4NzA3NzI4NWFmMjg4NDgxZTAzYjkxNGNhODBlMTYxOWIxNTE2IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MuaApAQCAtMTY4LDYgKzE2OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yU2luZ2xl
VGFwVG9SZXNldCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0Rm9yTWVudUFj
dGlvbihDRlN0cmluZ1JlZikgY29uc3Q7CiAgICAgdm9pZCBzaW5nbGVUYXBBdFBvaW50V2l0aE1v
ZGlmaWVycyhXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uLCBWZWN0b3I8U3RyaW5nPiYmIG1v
ZGlmaWVyRmxhZ3MsIEJsb2NrUHRyPHZvaWQoKT4mJik7CisKKyAgICBib29sIGlzV2ViQ29udGVu
dEZpcnN0UmVzcG9uZGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggM2Uz
YmUzMjI2OGNhYjY3MDAyM2M3OWE2YjdjNDFlMzZjNmUyZGVlYS4uNzk0N2ZiODFhOTFkNmUxMTBl
NDAwYzRmYjI1NGI0YzI0YTU0Mzg2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMTMyNiw2ICsxMzI2LDExIEBAIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRTdXBwcmVzc1NvZnR3YXJlS2V5Ym9hcmQoYm9v
bCBzdXBwcmVzc1NvZnR3YXJlS2V5CiAgICAgd2ViVmlldygpLl9zdXBwcmVzc1NvZnR3YXJlS2V5
Ym9hcmQgPSBzdXBwcmVzc1NvZnR3YXJlS2V5Ym9hcmQ7CiB9CiAKK2Jvb2wgVUlTY3JpcHRDb250
cm9sbGVySU9TOjppc1dlYkNvbnRlbnRGaXJzdFJlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFt3ZWJWaWV3KCkgX2NvbnRlbnRWaWV3SXNGaXJzdFJlc3BvbmRlcl07Cit9CisKIH0KIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODgzMzM0NTE1MDA4MGFlYjNk
NWRiYmY3MWJkYmU2MDQzOWNhOTIyOC4uZWI5Yjg0ODE0YmY5MDBjYTM0MjJiMjgzZmIwZDI1YzVm
YjY0YzAzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAxLTA1ICBUeWxlciBXaWxjb2Nr
ICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNldEZvY3VzZWQodHJ1ZSkgc2hvdWxkIG1ha2UgdGhlIHdlYnBhZ2UgZm9jdXNlZCwgYW5kIG1h
a2Ugd2ViIGNvbnRlbnQgdGhlIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHZlcmlmeWluZyB0aGF0IGZvY3Vz
aW5nIGFuIGVsZW1lbnQgdmlhIGFuIEFYIGNsaWVudDoKKworICAgICAgICAgIDEuIE1ha2VzIHRo
ZSBwYWdlIGZvY3VzZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgICAyLiBNYWtlcyB3ZWIgY29udGVu
dCB0aGUgZmlyc3QgcmVzcG9uZGVyCisKKyAgICAgICAgVGhpcyBhbGxvd3MgYSBmb2N1cyByaW5n
IHRvIGJlIGRyYXduLCBldmVuIHdoZW4gYXBwcyB0aGF0IGVtYmVkCisgICAgICAgIFdLV2ViVmll
d3MgZG9uJ3QgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyIHRoZW1zZWx2ZXMu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWNjZXNzaWJpbGl0eS1t
YWtlLWZpcnN0LXJlc3BvbmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci90YWtp
bmctZm9jdXMtc2hvdWxkLXJlZm9jdXMtcGFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci90YWtpbmctZm9jdXMtc2hvdWxkLXJlZm9j
dXMtcGFnZS5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCB0aGUg
Yml0c1BlclNlY29uZCBvcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3Np
YmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDZm
OTMxNDIyNjY5ZDViZWQwZmFmYjRiZTk4MThmYzJkZWQ0MGI5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFr
ZS1maXJzdC1yZXNwb25kZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgdGhh
dCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyIHdvcmtzIGNvcnJlY3RseSBv
biBpT1MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzV2ViQ29udGVu
dEZpcnN0UmVzcG9uZGVyIGlzIHRydWUKK1Jlc2lnbmluZyB3ZWIgY29udGVudCBmaXJzdCByZXNw
b25kZXJzaGlwCitQQVNTIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyIGlzIGZhbHNlCitQZXJm
b3JtaW5nIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvY3VzCitQQVNTIGlzV2ViQ29udGVudEZpcnN0
UmVzcG9uZGVyIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1z
aW11bGF0b3IvYWNjZXNzaWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJz
dC1yZXNwb25kZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmQ2MThjYjNmMWNmNDdmZGI1OTRjMDc0Y2I1
MDA2MDIwZDQyYWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbApA
QCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlciB3b3JrcyBjb3JyZWN0bHkgb24gaU9TLiIpOworICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIHBlcmZvcm1UZXN0KCkgeworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXdhaXQgdmVyaWZ5V2ViQ29udGVudElzRmly
c3RSZXNwb25kZXIodHJ1ZSk7CisgICAgICAgICAgICAgICAgZGVidWcoIlJlc2lnbmluZyB3ZWIg
Y29udGVudCBmaXJzdCByZXNwb25kZXJzaGlwIik7CisgICAgICAgICAgICAgICAgYXdhaXQgcmVz
aWduV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyKCk7CisgICAgICAgICAgICAgICAgYXdhaXQgdmVy
aWZ5V2ViQ29udGVudElzRmlyc3RSZXNwb25kZXIoZmFsc2UpOworCisgICAgICAgICAgICAgICAg
dmFyIGlucHV0T2JqID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJpbnB1dCIpOworICAgICAgICAgICAgICAgIGlucHV0T2JqLnRha2VGb2N1cygpOworICAg
ICAgICAgICAgICAgIGRlYnVnKCJQZXJmb3JtaW5nIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvY3Vz
Iik7CisKKyAgICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlXZWJDb250ZW50SXNGaXJzdFJlc3Bv
bmRlcih0cnVlKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
IH0sIDApOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGlzV2ViQ29udGVudEZpcnN0UmVz
cG9uZGVyOworICAgIGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVdlYkNvbnRlbnRJc0ZpcnN0UmVzcG9u
ZGVyKGV4cGVjdEZpcnN0UmVzcG9uZGVyc2hpcCkKKyAgICB7CisgICAgICAgIC8vIFNldCB0aGUg
Z2xvYmFsIHZhciB0byB0aGUgb3Bwb3NpdGUgb2Ygd2hhdCB3ZSBleHBlY3QgYW5kIGFsbG93IHRo
ZSBVSSBzY3JpcHQgdG8gZ2l2ZSB1cyB0aGUgZXhwZWN0ZWQgdmFsdWUuCisgICAgICAgIGlzV2Vi
Q29udGVudEZpcnN0UmVzcG9uZGVyID0gIWV4cGVjdEZpcnN0UmVzcG9uZGVyc2hpcDsKKworICAg
ICAgICAvLyBCZWNhdXNlIHRha2luZyBhbmQgcmVzaWduaW5nIGZpcnN0IHJlc3BvbmRlcnNoaXAg
cmVxdWlyZXMgYXN5bmMgSVBDIGJldHdlZW4gdGhlIHdlYiBhbmQgVUkgcHJvY2Vzc2VzLCB3ZQor
ICAgICAgICAvLyBtdXN0IGFsc28gYXN5bmNocm9ub3VzbHkgd2FpdCB0byBnZXQgb3VyIGV4cGVj
dGVkIHZhbHVlLgorICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGlzV2ViQ29udGVudEZpcnN0
UmVzcG9uZGVyID0gYXdhaXQgKG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuaXNXZWJDb250ZW50
Rmlyc3RSZXNwb25kZXJgLCByZXN1bHQgPT4gcmVzb2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOwor
ICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0sIDApCisgICAgICAgICAgICByZXR1
cm4gaXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXIgPT0gZXhwZWN0Rmlyc3RSZXNwb25kZXJzaGlw
OworICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxkQmUoImlzV2ViQ29udGVudEZpcnN0UmVzcG9u
ZGVyIiwgYCR7ZXhwZWN0Rmlyc3RSZXNwb25kZXJzaGlwfWApOworICAgIH0KKworICAgIGFzeW5j
IGZ1bmN0aW9uIHJlc2lnbldlYkNvbnRlbnRGaXJzdFJlc3BvbmRlcigpCisgICAgeworICAgICAg
ICBhd2FpdCAobmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmVzaWduRmlyc3RSZXNwb25kZXIoKWAsIHJlc29s
dmUpOworICAgICAgICB9KSk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBwZXJmb3JtVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGlucHV0IGlkPSJpbnB1dCIgdHlwZT0idGV4dCI+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdGFr
aW5nLWZvY3VzLXNob3VsZC1yZWZvY3VzLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1w
YWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjk3YmU4MjIyZDM4MGEzNmQ5NzcxM2MyNDg2
M2Q1YTA2NmM5M2RlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG1ha2luZyBhbiBl
bGVtZW50IGZvY3VzZWQgdmlhIGFjY2Vzc2liaWxpdHkgKGUuZy4gZnVsbCBrZXlib2FyZCBhY2Nl
c3MpIHJlLWZvY3VzZXMgdGhlIHBhZ2Ugc28gdGhhdCBhIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXdu
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGJ1dHRvbikuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIGlzICcwcHgnCitQQVNT
IGdldENvbXB1dGVkU3R5bGUodGV4dElucHV0KS5nZXRQcm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdp
ZHRoJykgaXMgJzBweCcKKworVGFraW5nIGZvY3VzIHZpYSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciBmb3IgaWQgI2J1dHRvbgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGJ1dHRvbikuZ2V0UHJvcGVy
dHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIGlzICczcHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUo
dGV4dElucHV0KS5nZXRQcm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykgaXMgJzBweCcKKwor
VGFraW5nIGZvY3VzIHZpYSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBmb3IgaWQgI3RleHQtaW5w
dXQKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxp
bmUtd2lkdGgnKSBpcyAnMHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKHRleHRJbnB1dCkuZ2V0
UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIGlzICczcHgnCisKK01ha2luZyB0aGUgZW50
aXJlIHBhZ2UgdW4tZm9jdXNlZAorCitUYWtpbmcgZm9jdXMgdmlhIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyIGZvciBpZCAjYnV0dG9uCitQQVNTIGdldENvbXB1dGVkU3R5bGUoYnV0dG9uKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykgaXMgJzNweCcKK1BBU1MgZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSBpcyAnMHB4
JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitDbGlj
ayBtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9y
L3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdGFraW5nLWZvY3VzLXNob3VsZC1yZWZvY3VzLXBhZ2Uu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMjU4MDc4Y2YwOTZiY2M3Y2JiZjRjZDNmYzA1YzAxY2VmOTI0NTlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLmh0bWwKQEAgLTAsMCArMSw1MyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8YnV0dG9uIGlkPSJidXR0b24iPkNsaWNr
IG1lPC9idXR0b24+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHQtaW5wdXQiPgorCis8c2Ny
aXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG1ha2luZyBhbiBl
bGVtZW50IGZvY3VzZWQgdmlhIGFjY2Vzc2liaWxpdHkgKGUuZy4gZnVsbCBrZXlib2FyZCBhY2Nl
c3MpIHJlLWZvY3VzZXMgdGhlIHBhZ2Ugc28gdGhhdCBhIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXdu
LiIpOworCisgICAgZnVuY3Rpb24gdGFrZUZvY3VzKGlkKSB7CisgICAgICAgIGRlYnVnKGBcblRh
a2luZyBmb2N1cyB2aWEgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgZm9yIGlkICMke2lkfWApOwor
ICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQp
LnRha2VGb2N1cygpOworICAgIH0KKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
dXR0b24iKTsKKyAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXh0LWlucHV0Iik7CisgICAgICAgIHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGJ1dHRv
bikuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIiwgIicwcHgnIik7CisgICAgICAg
IHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKHRleHRJbnB1dCkuZ2V0UHJvcGVydHlWYWx1ZSgn
b3V0bGluZS13aWR0aCcpIiwgIicwcHgnIik7CisKKyAgICAgICAgdGFrZUZvY3VzKCJidXR0b24i
KTsKKyAgICAgICAgLy8gRXhwZWN0IGZvY3VzIHJpbmcgdG8gaGF2ZSBiZWVuIGRyYXduIGZvciB0
aGUgYnV0dG9uLgorICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdl
dFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInM3B4JyIpOworICAgICAgICBzaG91
bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxp
bmUtd2lkdGgnKSIsICInMHB4JyIpOworCisgICAgICAgIHRha2VGb2N1cygidGV4dC1pbnB1dCIp
OworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5
VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInMHB4JyIpOworICAgICAgICBzaG91bGRCZSgiZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgn
KSIsICInM3B4JyIpOworCisgICAgICAgIGRlYnVnKCJcbk1ha2luZyB0aGUgZW50aXJlIHBhZ2Ug
dW4tZm9jdXNlZCIpOworICAgICAgICAvLyBUaGlzIHNpbXVsYXRlcyBzaXR1YXRpb25zIGluIHdo
aWNoIFdlYktpdCBpcyBlbWJlZGRlZCBpbiBhbm90aGVyIGFwcCBhbmQgZm9jdXMgaXMgbm90IHBy
b3Blcmx5IGhhbmRlZAorICAgICAgICAvLyBvdmVyIHRvIFdlYktpdCB3aGVuIG5lY2Vzc2FyeSwg
aS5lLiBhIGZ1bGwta2V5Ym9hcmQgYWNjZXNzIHVzZXIgdGFiYmluZyBpbnRvIHRoZSBlbWJlZGRl
ZCB3ZWIgdmlldy4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0UGFnZUlzRm9jdXNlZChmYWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGRlYnVnKCJGQUlMOiB3aW5kb3cuaW50ZXJuYWxzIG5vdCBhdmFpbGFibGUiKQorCisgICAg
ICAgIHRha2VGb2N1cygiYnV0dG9uIik7CisgICAgICAgIC8vIEZvY3VzaW5nIHRoZSBidXR0b24g
dmlhIGFjY2Vzc2liaWxpdHkgc2hvdWxkIHJlLWZvY3VzIHRoZSBwYWdlIGFuZCBhbGxvdyBhIGZv
Y3VzIHJpbmcgdG8gYmUgZHJhd24uCisgICAgICAgIC8vIFRoaXMgc2ltdWxhdGVzIGNvbmRpdGlv
bnMgd2hlcmUgZW1iZWRkZWQgV0tXZWJWaWV3J3MgYXJlIG5vdCBldmVyIG1hcmtlZCBhcyBmb2N1
c2VkIHZpYSB0aGVpciBob3N0aW5nCisgICAgICAgIC8vIGFwcCwgZS5nLiB2aWEgW1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddLgorICAgICAg
ICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291
dGxpbmUtd2lkdGgnKSIsICInM3B4JyIpOworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInMHB4
JyIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448512</attachid>
            <date>2022-01-06 10:57:28 -0800</date>
            <delta_ts>2022-01-07 14:17:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234885-20220106125727.patch</filename>
            <type>text/plain</type>
            <size>21982</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM3ZWFjOGE5Zjg2ZmU2
YzY2MTBhODUzZjdmZjZiYjA1OTM2YmNmYy4uYjM3ODNiMWRiYTBkYzFjZTQ0MjZhZDVmODkwNjgz
ZjU1ZWJhMmU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTA1ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldEZvY3VzZWQodHJ1ZSkgc2hvdWxkIG1ha2UgdGhlIHdlYnBhZ2UgZm9jdXNl
ZCwgYW5kIG1ha2Ugd2ViIGNvbnRlbnQgdGhlIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBmb2N1c2lu
ZyBhbiBlbGVtZW50IHZpYSBhbiBBWCBjbGllbnQgb24gaU9TIG1ha2VzCisgICAgICAgIHRoZSBw
YWdlIGZvY3VzZWQgaW1tZWRpYXRlbHkuIFRoaXMgYWxsb3dzIGEgZm9jdXMgcmluZyB0byBiZSBk
cmF3biwKKyAgICAgICAgZXZlbiB3aGVuIGFwcHMgdGhhdCBlbWJlZCBXS1dlYlZpZXdzIGRvbid0
IG1ha2Ugd2ViIGNvbnRlbnQgdGhlCisgICAgICAgIGZpcnN0IHJlc3BvbmRlciB0aGVtc2VsdmVz
IChgW1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZp
ZXddYAorICAgICAgICBtYWtlcyB0aGUgcGFnZSBmb2N1c2VkIGFmdGVyIGEgZGVsYXkgZHVlIHRv
IGFzeW5jIElQQyBiZXR3ZWVuIHRoZSBVSSBhbmQgd2ViIHByb2Nlc3NlcykuCisKKyAgICAgICAg
VGVzdHM6IGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmly
c3QtcmVzcG9uZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVs
YXRvci90YWtpbmctZm9jdXMtc2hvdWxkLXJlZm9jdXMtcGFnZS5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCk6CisgICAgICAgIE1ha2UgdGhlIHdlYnBh
Z2UgZm9jdXNlZCBpZiBpdCBpc24ndCBhbHJlYWR5IGZvY3VzZWQuCisKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBhZ2VJ
c0ZvY3VzZWQpOgorICAgICAgICBBZGRlZCB0byBzaW11bGF0ZSB0aGUgc2NlbmFyaW8gd2hlcmUg
dGhlIHdlYnBhZ2UgZG9lc24ndCBnYWluIGZvY3VzCisgICAgICAgIHRocm91Z2ggYmVjb21pbmcg
Zmlyc3QgcmVzcG9uZGVyLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
IEFkZCBzZXRQYWdlSXNGb2N1c2VkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KyAgICAgICAgQWRkIHNldFBhZ2VJc0ZvY3VzZWQuCisKIDIwMjItMDEtMDUgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxkIHN1
cHBvcnQgdGhlIGJpdHNQZXJTZWNvbmQgb3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3NTZhY2M0OGJjMGFl
NTA3NGY0ZTE0Y2FjZTAxZmI5OTA5MjZkNTUuLjYwYWU5MWE5NjE4N2RiODQxY2M1YmZiYTQ0ZjRi
YTJiZWM2ZWU2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDEtMDUgIFR5bGVy
IFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0Rm9jdXNlZCh0cnVlKSBzaG91bGQgbWFrZSB0aGUgd2VicGFnZSBmb2N1c2Vk
LCBhbmQgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIGZvY3VzaW5n
IGFuIGVsZW1lbnQgdmlhIGFuIEFYIGNsaWVudCBvbiBpT1MgbWFrZXMgd2ViIGNvbnRlbnQKKyAg
ICAgICAgdGhlIGZpcnN0IHJlc3BvbmRlci4gVGhpcyBhbGxvd3MgYSBmb2N1cyByaW5nIHRvIGJl
IGRyYXduIGFuZCBmb3Igd2ViIGNvbnRlbnQKKyAgICAgICAgdG8gcGVyZm9ybSBvdGhlciBpbXBv
cnRhbnQgYWN0aW9ucyB1cG9uIHRha2luZyBmaXJzdCByZXNwb25kZXJzaGlwCisgICAgICAgIChz
ZWUgYFtXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24gYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJW
aWV3XWApLCBldmVuIHdoZW4gYXBwcworICAgICAgICB0aGF0IGVtYmVkIFdLV2ViVmlld3MgZG9u
J3QgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyIHRoZW1zZWx2ZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3Bv
bmRlcik6CisKIDIwMjItMDEtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPU11bV1BdIEJsb2NrIHNhbmRib3ggYWNjZXNzIHRvIHN5c2NhbGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCmluZGV4IDFkY2NkODZhYmEyMzljZDkzZDEwMmUwZmI0OTI2MjZlNWZiNDllYjYuLjc1
NjUwMDIwMDAzMGJkN2U4YTBmYTgzYzBiOWM3MzQ2ZDA0ZjVmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjc4
Myw2ICsyNzgzLDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZChib29s
IGZvY3VzKQogICAgICAgICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICAvLyBNYXJrIHRoZSBwYWdlIGFzIGZvY3VzZWQg
c28gdGhlIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXduIGltbWVkaWF0ZWx5LiBUaGUgcGFnZSBpcyBh
bHNvIG1hcmtlZAorICAgICAgICAvLyBhcyBmb2N1c2VkIGFzIHBhcnQgYXNzaXN0aXZlVGVjaG5v
bG9neU1ha2VGaXJzdFJlc3BvbmRlciwgYnV0IHRoYXQgcmVxdWlyZXMgc29tZSBiYWNrLWFuZC1m
b3J0aAorICAgICAgICAvLyBJUEMgYmV0d2VlbiB0aGUgd2ViIGFuZCBVSSBwcm9jZXNzZXMsIGR1
cmluZyB3aGljaCB3ZSBjYW4gbWlzcyB0aGUgZHJhd2luZyBvZiB0aGUgZm9jdXMgcmluZyBmb3Ig
dGhlCisgICAgICAgIC8vIGZpcnN0IGZvY3VzZWQgZWxlbWVudC4gTWFraW5nIHRoZSBwYWdlIGZv
Y3VzZWQgaXMgYSByZXF1aXJlbWVudCBmb3IgbWFraW5nIHRoZSBwYWdlIHNlbGVjdGlvbiBmb2N1
c2VkLgorICAgICAgICAvLyBUaGlzIGlzIGlPUyBvbmx5IHVudGlsIHRoZXJlJ3MgYSBkZW1vbnN0
cmF0ZWQgbmVlZCBmb3IgdGhpcyBwcmVlbXB0aXZlIGZvY3VzIG9uIG90aGVyIHBsYXRmb3Jtcy4K
KyAgICAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5pc0ZvY3VzZWQoKSkKKyAgICAg
ICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWQodHJ1ZSk7CisjZW5kaWYK
KwogICAgICAgICBDaHJvbWVDbGllbnQmIGNocm9tZUNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpOwogICAgICAgICBjaHJvbWVDbGllbnQuZm9jdXMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGM3NWY0ZTliMjI4YjkzZjQ4YTAxZDIwNDg0OTExZTVhNzRk
YzQzNTMuLmMxYWEyZGNjNjgxM2RlYWU5ZDU4MzU4Y2MyM2IzOGYxMzdiOTc4NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUzNjAsNiArNTM2MCwxMSBAQCB2b2lkIElu
dGVybmFsczo6c2V0UGFnZVZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiAgICAgdXBkYXRlUGFn
ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBpc1Zpc2libGUpOwogfQog
Cit2b2lkIEludGVybmFsczo6c2V0UGFnZUlzRm9jdXNlZChib29sIGlzRm9jdXNlZCkKK3sKKyAg
ICB1cGRhdGVQYWdlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIGlzRm9j
dXNlZCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGJv
b2wgaXNGb2N1c2VkQW5kQWN0aXZlKQogewogICAgIHVwZGF0ZVBhZ2VBY3Rpdml0eVN0YXRlKHsg
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9
LCBpc0ZvY3VzZWRBbmRBY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
MmE5ZGRjZjk3ZDA2MTI0NWI1ZTcxZWI0NTRiOWQ1N2M4ZmNmN2Q4OS4uMDM4NDBjMTZhMjdkYWJh
NWU0ZjQzMjdmNjYxOTgzYjVmN2FjNzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC04NDUsNiArODQ1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFBhZ2VW
aXNpYmlsaXR5KGJvb2wgaXNWaXNpYmxlKTsKKyAgICB2b2lkIHNldFBhZ2VJc0ZvY3VzZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGJvb2wpOwogICAgIHZvaWQg
c2V0UGFnZUlzSW5XaW5kb3coYm9vbCk7CiAgICAgYm9vbCBpc1BhZ2VBY3RpdmUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjOGNhZjE3NDYzMDNlZTMyZTc4
MWQyM2Y3Y2FlYjg2ZTIxY2U2MDkyLi43YWVmN2YxYmYwMjNiMGJhNTQwZmYzNjFmMmJmNzJiNjdm
OGFiYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04ODUsNiArODg1
LDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0
OwogICAgIFtDb25kaXRpb25hbD1XRUJHTF0gYm9vbGVhbiBwbGF0Zm9ybVN1cHBvcnRzTWV0YWwo
Ym9vbGVhbiBpc1dlYkdMMik7CiAKICAgICB1bmRlZmluZWQgc2V0UGFnZVZpc2liaWxpdHkoYm9v
bGVhbiBpc1Zpc2libGUpOworICAgIHVuZGVmaW5lZCBzZXRQYWdlSXNGb2N1c2VkKGJvb2xlYW4g
aXNGb2N1c2VkKTsKICAgICB1bmRlZmluZWQgc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShib29s
ZWFuIGlzRm9jdXNlZCk7CiAgICAgdW5kZWZpbmVkIHNldFBhZ2VJc0luV2luZG93KGJvb2xlYW4g
aXNJbldpbmRvdyk7CiAgICAgYm9vbGVhbiBpc1BhZ2VBY3RpdmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmYWM5ZTdmYjc4
YmVlMGY2Mjk0NTY3MmUzYmI3NGI5ZTA1MjBlMzBmLi45MjEyNmNkYzY5YTdmZDNjZGFlNmFhMGY0
YmU4NzQzZTJiMGM3MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6bm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpCiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgW21fY29udGVudFZpZXcgYmVjb21lRmlyc3RS
ZXNwb25kZXJdOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggODI5OGJlYjg1N2MyYzVhN2JmNjRjMTg0ZmFkOGEwZWVjZTMyMGExMC4uNTE2Yzg5OWRmOGU0
NzRiYThlMmM2ZTcyMzUxNGQ5YTIwZDM1YTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lN
YWtlRmlyc3RSZXNwb25kZXIoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcGFnZUNs
aWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIH0KICAgICAK
IHZvaWQgV2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyMDBjY2NmNWQyMDgxMmZjZTlj
MTE5YTcyZWJmMDg0NTNiYmRkMWEuLmUyYjBjM2Y1NGNkYTMxZWYyMTA1YTNiOTMyNDM2ZmI3MmVh
YTRhNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMi0wMS0wNSAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRGb2N1c2VkKHRy
dWUpIHNob3VsZCBtYWtlIHRoZSB3ZWJwYWdlIGZvY3VzZWQsIGFuZCBtYWtlIHdlYiBjb250ZW50
IHRoZSBmaXJzdCByZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEFkZCB0ZXN0aW5nIGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IHRvIGNoZWNrIHRo
YXQgd2ViIGNvbnRlbnQgaXMgdGhlCisgICAgICAgIGZpcnN0IHJlc3BvbmRlciBpbiB0aGUgVUkg
cHJvY2Vzcy4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6aXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXIgY29uc3QpOgorICAg
ICAgICBBZGRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIEltcGxlbWVudCB0aGlzIG1ldGhv
ZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjppc1dlYkNvbnRlbnRG
aXJzdFJlc3BvbmRlciBjb25zdCk6CisgICAgICAgIEFkZGVkLgorCiAyMDIyLTAxLTA1ICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBSdW5uaW5nIGxheW91
dCB0ZXN0cyBzb21ldGltZXMgdGhyb3dzIGFuIEFzc2VydGlvbkVycm9yIGluIHB5dGhvbjIuNy9t
dWx0aXByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRs
CmluZGV4IDU1MTk3NGVlZTA5MTczMzBmOTAyMjdmZjljOGRlNGMxNGQ0MzA1NzMuLmMwZDc3YTI3
YmFiMmU2MmFkMDU3ZWVlZGI2ZDBlYWE3N2NjZTU0MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5p
ZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3Mv
VUlTY3JpcHRDb250cm9sbGVyLmlkbApAQCAtMzU5LDYgKzM1OSw3IEBAIGludGVyZmFjZSBVSVNj
cmlwdENvbnRyb2xsZXIgewogICAgIHVuZGVmaW5lZCBmaXJzdFJlc3BvbmRlclN1cHByZXNzaW9u
Rm9yV2ViVmlldyhib29sZWFuIHNob3VsZFN1cHByZXNzKTsKICAgICB1bmRlZmluZWQgbWFrZVdp
bmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBpc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXI7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXI7CiAKICAgICB1bmRl
ZmluZWQgc2V0SGFyZHdhcmVLZXlib2FyZEF0dGFjaGVkKGJvb2xlYW4gYXR0YWNoZWQpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDE0OTMyZDUxMDE0ZTRkMzhjMjdjNDcwZGM5ZGNkY2Zj
MmYyNDk0MDcuLjhkZmNkMTY1YWIwMjU0MGNlZGFlOTM4ODA0MWVmYjIyYzdlYWQzYjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBmaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyhib29sKSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWFrZVdpbmRvd0NvbnRlbnRWaWV3Rmly
c3RSZXNwb25kZXIoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNX
aW5kb3dDb250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJDb250ZW50Rmlyc3RSZXNw
b25kZXIoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZVZpZXdGcm9tV2luZG93KEpTVmFsdWVSZWYpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRWaWV3VG9XaW5kb3coSlNWYWx1ZVJlZikg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dElPUy5tbQppbmRleCBiYTQ3NGY5NmMwYjZkZjM0YTI5ODVlMDUwNWU5MWRlNjg2NGI2NWVkLi4x
MGJmMTdiYzJhYTMyZThhMGVkNDQ4ZDBhMThmMzkzMWVkZGVjZGZmIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTcwLDYgKzcwLDcgQEAgdHlwZWRlZiB2
b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcq
IG5vdGlmaWNhdGlvbiwKIC0gKENHRmxvYXQpX2FjY2Vzc2liaWxpdHlNaW5WYWx1ZTsKIC0gKENH
RmxvYXQpX2FjY2Vzc2liaWxpdHlNYXhWYWx1ZTsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTZXRW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKKy0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTZXRGb2N1czoo
Qk9PTClmb2N1czsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlBY3RpdmF0ZTsKIC0gKFVJQWNjZXNz
aWJpbGl0eVRyYWl0cylfYXhTZWxlY3RlZFRyYWl0OwogLSAoVUlBY2Nlc3NpYmlsaXR5VHJhaXRz
KV9heFRleHRBcmVhVHJhaXQ7CkBAIC0xMTgxLDYgKzExODIsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCkgY29uc3QKIAogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9jdXMoKQogeworICAgIFttX2VsZW1lbnQgX2FjY2Vz
c2liaWxpdHlTZXRGb2N1czpZRVNdOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRha2VTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VUlTY3JpcHRDb250cm9sbGVySU9TLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MuaAppbmRleCAzNDNlN2JiNzQ4MTgyOTgyYTNkMDE4OTk3ODkwMDYw
NTZhNzA1NGVhLi43Njc4NzA3NzI4NWFmMjg4NDgxZTAzYjkxNGNhODBlMTYxOWIxNTE2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
aApAQCAtMTY4LDYgKzE2OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yU2luZ2xlVGFw
VG9SZXNldCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0Rm9yTWVudUFjdGlv
bihDRlN0cmluZ1JlZikgY29uc3Q7CiAgICAgdm9pZCBzaW5nbGVUYXBBdFBvaW50V2l0aE1vZGlm
aWVycyhXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uLCBWZWN0b3I8U3RyaW5nPiYmIG1vZGlm
aWVyRmxhZ3MsIEJsb2NrUHRyPHZvaWQoKT4mJik7CisKKyAgICBib29sIGlzV2ViQ29udGVudEZp
cnN0UmVzcG9uZGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggM2UzYmUz
MjI2OGNhYjY3MDAyM2M3OWE2YjdjNDFlMzZjNmUyZGVlYS4uNzk0N2ZiODFhOTFkNmUxMTBlNDAw
YzRmYjI1NGI0YzI0YTU0Mzg2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMTMyNiw2ICsxMzI2LDExIEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRTdXBwcmVzc1NvZnR3YXJlS2V5Ym9hcmQoYm9vbCBz
dXBwcmVzc1NvZnR3YXJlS2V5CiAgICAgd2ViVmlldygpLl9zdXBwcmVzc1NvZnR3YXJlS2V5Ym9h
cmQgPSBzdXBwcmVzc1NvZnR3YXJlS2V5Ym9hcmQ7CiB9CiAKK2Jvb2wgVUlTY3JpcHRDb250cm9s
bGVySU9TOjppc1dlYkNvbnRlbnRGaXJzdFJlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFt3ZWJWaWV3KCkgX2NvbnRlbnRWaWV3SXNGaXJzdFJlc3BvbmRlcl07Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODgzMzM0NTE1MDA4MGFlYjNkNWRi
YmY3MWJkYmU2MDQzOWNhOTIyOC4uOTdjYmE5NmU1OGY3ZDdiMjA3ZDM4NmYxYjI0ZDJkMWMyMjlh
YWMyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAxLTA1ICBUeWxlciBXaWxjb2NrICA8
dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNl
dEZvY3VzZWQodHJ1ZSkgc2hvdWxkIG1ha2UgdGhlIHdlYnBhZ2UgZm9jdXNlZCwgYW5kIG1ha2Ug
d2ViIGNvbnRlbnQgdGhlIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHRlc3RzIHZlcmlmeWluZyB0aGF0IGZvY3VzaW5nIGFu
IGVsZW1lbnQgdmlhIGFuIEFYIGNsaWVudDoKKworICAgICAgICAgIDEuIE1ha2VzIHRoZSBwYWdl
IGZvY3VzZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgICAyLiBNYWtlcyB3ZWIgY29udGVudCB0aGUg
Zmlyc3QgcmVzcG9uZGVyCisKKyAgICAgICAgVGhpcyBhbGxvd3MgYSBmb2N1cyByaW5nIHRvIGJl
IGRyYXduLCBldmVuIHdoZW4gYXBwcyB0aGF0IGVtYmVkCisgICAgICAgIFdLV2ViVmlld3MgZG9u
J3QgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyIHRoZW1zZWx2ZXMuCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWNjZXNzaWJpbGl0eS1tYWtlLWZp
cnN0LXJlc3BvbmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci90YWtpbmctZm9j
dXMtc2hvdWxkLXJlZm9jdXMtcGFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci90YWtpbmctZm9jdXMtc2hvdWxkLXJlZm9jdXMtcGFn
ZS5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCB0aGUgYml0c1Bl
clNlY29uZCBvcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9z
LXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5
LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDZmOTMxNDIy
NjY5ZDViZWQwZmFmYjRiZTk4MThmYzJkZWQ0MGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJz
dC1yZXNwb25kZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgdGhhdCBhc3Np
c3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyIHdvcmtzIGNvcnJlY3RseSBvbiBpT1Mu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzV2ViQ29udGVudEZpcnN0
UmVzcG9uZGVyIGlzIHRydWUKK1Jlc2lnbmluZyB3ZWIgY29udGVudCBmaXJzdCByZXNwb25kZXJz
aGlwCitQQVNTIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyIGlzIGZhbHNlCitQZXJmb3JtaW5n
IGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvY3VzCitQQVNTIGlzV2ViQ29udGVudEZpcnN0UmVzcG9u
ZGVyIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvYWNjZXNzaWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNw
b25kZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmQ2MThjYjNmMWNmNDdmZGI1OTRjMDc0Y2I1MDA2MDIw
ZDQyYWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbApAQCAtMCww
ICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJl
c3BvbmRlciB3b3JrcyBjb3JyZWN0bHkgb24gaU9TLiIpOworICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIHBlcmZvcm1UZXN0KCkgeworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgYXdhaXQgdmVyaWZ5V2ViQ29udGVudElzRmlyc3RSZXNw
b25kZXIodHJ1ZSk7CisgICAgICAgICAgICAgICAgZGVidWcoIlJlc2lnbmluZyB3ZWIgY29udGVu
dCBmaXJzdCByZXNwb25kZXJzaGlwIik7CisgICAgICAgICAgICAgICAgYXdhaXQgcmVzaWduV2Vi
Q29udGVudEZpcnN0UmVzcG9uZGVyKCk7CisgICAgICAgICAgICAgICAgYXdhaXQgdmVyaWZ5V2Vi
Q29udGVudElzRmlyc3RSZXNwb25kZXIoZmFsc2UpOworCisgICAgICAgICAgICAgICAgdmFyIGlu
cHV0T2JqID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJp
bnB1dCIpOworICAgICAgICAgICAgICAgIGlucHV0T2JqLnRha2VGb2N1cygpOworICAgICAgICAg
ICAgICAgIGRlYnVnKCJQZXJmb3JtaW5nIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvY3VzIik7CisK
KyAgICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlXZWJDb250ZW50SXNGaXJzdFJlc3BvbmRlcih0
cnVlKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIDAp
OworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVy
OworICAgIGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVdlYkNvbnRlbnRJc0ZpcnN0UmVzcG9uZGVyKGV4
cGVjdEZpcnN0UmVzcG9uZGVyc2hpcCkKKyAgICB7CisgICAgICAgIC8vIFNldCB0aGUgZ2xvYmFs
IHZhciB0byB0aGUgb3Bwb3NpdGUgb2Ygd2hhdCB3ZSBleHBlY3QgYW5kIGFsbG93IHRoZSBVSSBz
Y3JpcHQgdG8gZ2l2ZSB1cyB0aGUgZXhwZWN0ZWQgdmFsdWUuCisgICAgICAgIGlzV2ViQ29udGVu
dEZpcnN0UmVzcG9uZGVyID0gIWV4cGVjdEZpcnN0UmVzcG9uZGVyc2hpcDsKKworICAgICAgICAv
LyBCZWNhdXNlIHRha2luZyBhbmQgcmVzaWduaW5nIGZpcnN0IHJlc3BvbmRlcnNoaXAgcmVxdWly
ZXMgYXN5bmMgSVBDIGJldHdlZW4gdGhlIHdlYiBhbmQgVUkgcHJvY2Vzc2VzLCB3ZQorICAgICAg
ICAvLyBtdXN0IGFsc28gYXN5bmNocm9ub3VzbHkgd2FpdCB0byBnZXQgb3VyIGV4cGVjdGVkIHZh
bHVlLgorICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGlzV2ViQ29udGVudEZpcnN0UmVzcG9u
ZGVyID0gYXdhaXQgKG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuaXNXZWJDb250ZW50Rmlyc3RS
ZXNwb25kZXJgLCByZXN1bHQgPT4gcmVzb2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOworICAgICAg
ICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0sIDApCisgICAgICAgICAgICByZXR1cm4gaXNX
ZWJDb250ZW50Rmlyc3RSZXNwb25kZXIgPT0gZXhwZWN0Rmlyc3RSZXNwb25kZXJzaGlwOworICAg
ICAgICB9KTsKKyAgICAgICAgc2hvdWxkQmUoImlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyIiwg
YCR7ZXhwZWN0Rmlyc3RSZXNwb25kZXJzaGlwfWApOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0
aW9uIHJlc2lnbldlYkNvbnRlbnRGaXJzdFJlc3BvbmRlcigpCisgICAgeworICAgICAgICBhd2Fp
dCAobmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJ
U2NyaXB0KGB1aUNvbnRyb2xsZXIucmVzaWduRmlyc3RSZXNwb25kZXIoKWAsIHJlc29sdmUpOwor
ICAgICAgICB9KSk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBwZXJmb3JtVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPGlucHV0IGlkPSJpbnB1dCIgdHlwZT0idGV4dCI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdGFraW5nLWZv
Y3VzLXNob3VsZC1yZWZvY3VzLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjk3YmU4MjIyZDM4MGEzNmQ5NzcxM2MyNDg2M2Q1YTA2
NmM5M2RlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG1ha2luZyBhbiBlbGVtZW50
IGZvY3VzZWQgdmlhIGFjY2Vzc2liaWxpdHkgKGUuZy4gZnVsbCBrZXlib2FyZCBhY2Nlc3MpIHJl
LWZvY3VzZXMgdGhlIHBhZ2Ugc28gdGhhdCBhIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXduLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGJ1dHRv
bikuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIGlzICcwcHgnCitQQVNTIGdldENv
bXB1dGVkU3R5bGUodGV4dElucHV0KS5nZXRQcm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykg
aXMgJzBweCcKKworVGFraW5nIGZvY3VzIHZpYSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBmb3Ig
aWQgI2J1dHRvbgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGJ1dHRvbikuZ2V0UHJvcGVydHlWYWx1
ZSgnb3V0bGluZS13aWR0aCcpIGlzICczcHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUodGV4dElu
cHV0KS5nZXRQcm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykgaXMgJzBweCcKKworVGFraW5n
IGZvY3VzIHZpYSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBmb3IgaWQgI3RleHQtaW5wdXQKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lk
dGgnKSBpcyAnMHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKHRleHRJbnB1dCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIGlzICczcHgnCisKK01ha2luZyB0aGUgZW50aXJlIHBh
Z2UgdW4tZm9jdXNlZAorCitUYWtpbmcgZm9jdXMgdmlhIGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IGZvciBpZCAjYnV0dG9uCitQQVNTIGdldENvbXB1dGVkU3R5bGUoYnV0dG9uKS5nZXRQcm9wZXJ0
eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykgaXMgJzNweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSBpcyAnMHB4JworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitDbGljayBtZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2lu
Zy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2lvcy1zaW11bGF0b3IvdGFraW5nLWZvY3VzLXNob3VsZC1yZWZvY3VzLXBhZ2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMjU4MDc4Y2YwOTZiY2M3Y2JiZjRjZDNmYzA1YzAxY2VmOTI0NTlkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rh
a2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8YnV0dG9uIGlkPSJidXR0b24iPkNsaWNrIG1lPC9i
dXR0b24+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHQtaW5wdXQiPgorCis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG1ha2luZyBhbiBlbGVtZW50
IGZvY3VzZWQgdmlhIGFjY2Vzc2liaWxpdHkgKGUuZy4gZnVsbCBrZXlib2FyZCBhY2Nlc3MpIHJl
LWZvY3VzZXMgdGhlIHBhZ2Ugc28gdGhhdCBhIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXduLiIpOwor
CisgICAgZnVuY3Rpb24gdGFrZUZvY3VzKGlkKSB7CisgICAgICAgIGRlYnVnKGBcblRha2luZyBm
b2N1cyB2aWEgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgZm9yIGlkICMke2lkfWApOworICAgICAg
ICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpLnRha2VG
b2N1cygpOworICAgIH0KKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKKyAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24i
KTsKKyAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0
LWlucHV0Iik7CisgICAgICAgIHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGJ1dHRvbikuZ2V0
UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIiwgIicwcHgnIik7CisgICAgICAgIHNob3Vs
ZEJlKCJnZXRDb21wdXRlZFN0eWxlKHRleHRJbnB1dCkuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGlu
ZS13aWR0aCcpIiwgIicwcHgnIik7CisKKyAgICAgICAgdGFrZUZvY3VzKCJidXR0b24iKTsKKyAg
ICAgICAgLy8gRXhwZWN0IGZvY3VzIHJpbmcgdG8gaGF2ZSBiZWVuIGRyYXduIGZvciB0aGUgYnV0
dG9uLgorICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3Bl
cnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInM3B4JyIpOworICAgICAgICBzaG91bGRCZSgi
Z2V0Q29tcHV0ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lk
dGgnKSIsICInMHB4JyIpOworCisgICAgICAgIHRha2VGb2N1cygidGV4dC1pbnB1dCIpOworICAg
ICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUo
J291dGxpbmUtd2lkdGgnKSIsICInMHB4JyIpOworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICIn
M3B4JyIpOworCisgICAgICAgIGRlYnVnKCJcbk1ha2luZyB0aGUgZW50aXJlIHBhZ2UgdW4tZm9j
dXNlZCIpOworICAgICAgICAvLyBUaGlzIHNpbXVsYXRlcyBzaXR1YXRpb25zIGluIHdoaWNoIFdl
YktpdCBpcyBlbWJlZGRlZCBpbiBhbm90aGVyIGFwcCBhbmQgZm9jdXMgaXMgbm90IHByb3Blcmx5
IGhhbmRlZAorICAgICAgICAvLyBvdmVyIHRvIFdlYktpdCB3aGVuIG5lY2Vzc2FyeSwgaS5lLiBh
IGZ1bGwta2V5Ym9hcmQgYWNjZXNzIHVzZXIgdGFiYmluZyBpbnRvIHRoZSBlbWJlZGRlZCB3ZWIg
dmlldy4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0UGFnZUlzRm9jdXNlZChmYWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRl
YnVnKCJGQUlMOiB3aW5kb3cuaW50ZXJuYWxzIG5vdCBhdmFpbGFibGUiKQorCisgICAgICAgIHRh
a2VGb2N1cygiYnV0dG9uIik7CisgICAgICAgIC8vIEZvY3VzaW5nIHRoZSBidXR0b24gdmlhIGFj
Y2Vzc2liaWxpdHkgc2hvdWxkIHJlLWZvY3VzIHRoZSBwYWdlIGFuZCBhbGxvdyBhIGZvY3VzIHJp
bmcgdG8gYmUgZHJhd24uCisgICAgICAgIC8vIFRoaXMgc2ltdWxhdGVzIGNvbmRpdGlvbnMgd2hl
cmUgZW1iZWRkZWQgV0tXZWJWaWV3J3MgYXJlIG5vdCBldmVyIG1hcmtlZCBhcyBmb2N1c2VkIHZp
YSB0aGVpciBob3N0aW5nCisgICAgICAgIC8vIGFwcCwgZS5nLiB2aWEgW1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddLgorICAgICAgICBzaG91
bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUt
d2lkdGgnKSIsICInM3B4JyIpOworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInMHB4JyIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448630</attachid>
            <date>2022-01-07 14:17:51 -0800</date>
            <delta_ts>2022-01-08 08:41:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234885-20220107161750.patch</filename>
            <type>text/plain</type>
            <size>23725</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5YWQwMzFhMDQ4MmQ4
NjMxYmY0MGMxNDllYWZlZWMyMjRlZTUyNi4uYzExZWVkN2JjZjc2NTU3Y2NjODU1ODk3NzZkOTJi
ZjQ4YzIzZWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTA3ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldEZvY3VzZWQodHJ1ZSkgc2hvdWxkIG1ha2UgdGhlIHdlYnBhZ2UgZm9jdXNl
ZCwgYW5kIG1ha2Ugd2ViIGNvbnRlbnQgdGhlIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBmb2N1c2lu
ZyBhbiBlbGVtZW50IHZpYSBhbiBBWCBjbGllbnQgb24gaU9TIG1ha2VzCisgICAgICAgIHRoZSBw
YWdlIGZvY3VzZWQgaW1tZWRpYXRlbHkuIFRoaXMgYWxsb3dzIGEgZm9jdXMgcmluZyB0byBiZSBk
cmF3biwKKyAgICAgICAgZXZlbiB3aGVuIGFwcHMgdGhhdCBlbWJlZCBXS1dlYlZpZXdzIGRvbid0
IG1ha2Ugd2ViIGNvbnRlbnQgdGhlCisgICAgICAgIGZpcnN0IHJlc3BvbmRlciB0aGVtc2VsdmVz
IChgW1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZp
ZXddYAorICAgICAgICBtYWtlcyB0aGUgcGFnZSBmb2N1c2VkIGFmdGVyIGEgZGVsYXkgZHVlIHRv
IGFzeW5jIElQQyBiZXR3ZWVuIHRoZSBVSSBhbmQgd2ViIHByb2Nlc3NlcykuCisKKyAgICAgICAg
VGVzdHM6IGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmly
c3QtcmVzcG9uZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVs
YXRvci90YWtpbmctZm9jdXMtc2hvdWxkLXJlZm9jdXMtcGFnZS5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCk6CisgICAgICAgIE1ha2UgdGhlIHdlYnBh
Z2UgZm9jdXNlZCBpZiBpdCBpc24ndCBhbHJlYWR5IGZvY3VzZWQuCisKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFBhZ2VJ
c0ZvY3VzZWQpOgorICAgICAgICBBZGRlZCB0byBzaW11bGF0ZSB0aGUgc2NlbmFyaW8gd2hlcmUg
dGhlIHdlYnBhZ2UgZG9lc24ndCBnYWluIGZvY3VzCisgICAgICAgIHRocm91Z2ggYmVjb21pbmcg
Zmlyc3QgcmVzcG9uZGVyLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
IEFkZCBzZXRQYWdlSXNGb2N1c2VkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KyAgICAgICAgQWRkIHNldFBhZ2VJc0ZvY3VzZWQuCisKIDIwMjItMDEtMDcgIEFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDbGVhbnVwXSBSZW5kZXJFbGVtZW50Ojpj
b250YWluaW5nQmxvY2tGb3IqKGZpeGVkL2Fic29sdXRlL2luZmxvdylQb3NpdGlvbiBpcyBzbGln
aHRseSBjb25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzc4MTFhODZmMjVhNmEzMmQzZDYxMjg4ODEzZjU1
N2I3MTFjOTVjZC4uMmE3YjY5MGE1M2FmZWQ3MTcwZDdlYTE0YzU3MGY1NjgwMDU1MWNiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wMS0wNyAgVHlsZXIgV2lsY29jayAgPHR5bGVy
X3dAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRGb2N1
c2VkKHRydWUpIHNob3VsZCBtYWtlIHRoZSB3ZWJwYWdlIGZvY3VzZWQsIGFuZCBtYWtlIHdlYiBj
b250ZW50IHRoZSBmaXJzdCByZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFdpdGggdGhpcyBwYXRjaCwgZm9jdXNpbmcgYW4gZWxlbWVudCB2aWEg
YW4gQVggY2xpZW50IG9uIGlPUyBtYWtlcyB3ZWIgY29udGVudAorICAgICAgICB0aGUgZmlyc3Qg
cmVzcG9uZGVyLiBUaGlzIGFsbG93cyBhIGZvY3VzIHJpbmcgdG8gYmUgZHJhd24gYW5kIGZvciB3
ZWIgY29udGVudAorICAgICAgICB0byBwZXJmb3JtIG90aGVyIGltcG9ydGFudCBhY3Rpb25zIHVw
b24gdGFraW5nIGZpcnN0IHJlc3BvbmRlcnNoaXAKKyAgICAgICAgKHNlZSBgW1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddYCksIGV2ZW4gd2hl
biBhcHBzCisgICAgICAgIHRoYXQgZW1iZWQgV0tXZWJWaWV3cyBkb24ndCBtYWtlIHdlYiBjb250
ZW50IHRoZSBmaXJzdCByZXNwb25kZXIgdGhlbXNlbHZlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKToKKwogMjAyMi0w
MS0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIGxpbmtlZE9uT3JBZnRlcigpIHRvIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWRjY2Q4NmFiYTIzOWNk
OTNkMTAyZTBmYjQ5MjYyNmU1ZmI0OWViNi4uNGVmODEzYTU1NjIxZmY2OWYyODJlOTFkOTM5Nzc5
OTliY2JlOTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yNzcxLDIwICsyNzcxLDM0IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZChib29sIGZvY3VzKQogewogICAgIGlmIChmb2N1cykg
ewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdmlldyBpcyBmb2N1c2VkIGFuZCBhY3RpdmUs
IG90aGVyd2lzZSwgYW55IGF0dGVtcHQgdG8gc2V0IGZvY3VzIHRvIGFuIG9iamVjdCBpbnNpZGUg
aXQgd2lsbCBmYWlsLgotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
YXV0byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICAgICAgYXV0byogZnJhbWUgPSBk
b2N1bWVudCgpID8gZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+c2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAg
ICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG8sIGFscmVhZHkgZm9jdXNlZCBhbmQgYWN0aXZl
LgogCi0gICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnBhZ2UoKSA6IG51bGxwdHI7CisgICAg
ICAgIGlmICghcGFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5mb2N1cygpOworICAgICAgICAvLyBSZXNldCB0aGUgcGFnZSBwb2ludGVy
IGluIGNhc2UgQ2hyb21lQ2xpZW50Ojpmb2N1cygpIGNhdXNlZCBhIHNpZGUgZWZmZWN0IHRoYXQg
aW52YWxpZGF0ZWQgb3VyIG9sZCBvbmUuCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudCgpID8gZG9j
dW1lbnQoKS0+cGFnZSgpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIENocm9tZUNsaWVudCYgY2hyb21lQ2xpZW50ID0gcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCk7Ci0gICAgICAgIGNocm9tZUNsaWVudC5mb2N1cygpOworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIC8vIE1hcmsgdGhlIHBhZ2UgYXMgZm9jdXNlZCBz
byB0aGUgZm9jdXMgcmluZyBjYW4gYmUgZHJhd24gaW1tZWRpYXRlbHkuIFRoZSBwYWdlIGlzIGFs
c28gbWFya2VkCisgICAgICAgIC8vIGFzIGZvY3VzZWQgYXMgcGFydCBhc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyLCBidXQgdGhhdCByZXF1aXJlcyBzb21lIGJhY2stYW5kLWZv
cnRoCisgICAgICAgIC8vIElQQyBiZXR3ZWVuIHRoZSB3ZWIgYW5kIFVJIHByb2Nlc3NlcywgZHVy
aW5nIHdoaWNoIHdlIGNhbiBtaXNzIHRoZSBkcmF3aW5nIG9mIHRoZSBmb2N1cyByaW5nIGZvciB0
aGUKKyAgICAgICAgLy8gZmlyc3QgZm9jdXNlZCBlbGVtZW50LiBNYWtpbmcgdGhlIHBhZ2UgZm9j
dXNlZCBpcyBhIHJlcXVpcmVtZW50IGZvciBtYWtpbmcgdGhlIHBhZ2Ugc2VsZWN0aW9uIGZvY3Vz
ZWQuCisgICAgICAgIC8vIFRoaXMgaXMgaU9TIG9ubHkgdW50aWwgdGhlcmUncyBhIGRlbW9uc3Ry
YXRlZCBuZWVkIGZvciB0aGlzIHByZWVtcHRpdmUgZm9jdXMgb24gb3RoZXIgcGxhdGZvcm1zLgor
ICAgICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmlzRm9jdXNlZCgpKQorICAgICAg
ICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZCh0cnVlKTsKKworICAgICAg
ICAvLyBSZXNldCB0aGUgcGFnZSBwb2ludGVyIGluIGNhc2UgRm9jdXNDb250cm9sbGVyOjpzZXRG
b2N1c2VkKHRydWUpIGNhdXNlZCBhIHNpZGUgZWZmZWN0IHRoYXQgaW52YWxpZGF0ZWQgb3VyIG9s
ZCBvbmUuCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cGFnZSgpIDog
bnVsbHB0cjsKKyAgICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgcmV0dXJuOworI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1l
bnRGcmFtZVZpZXcoKTsKQEAgLTI3OTMsOSArMjgwNyw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c2V0Rm9jdXNlZChib29sIGZvY3VzKQogCiAgICAgICAgIC8vIExlZ2FjeSBXZWJLaXQx
IGNhc2UuCiAgICAgICAgIGlmIChmcmFtZVZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAg
ICAgICBjaHJvbWVDbGllbnQubWFrZUZpcnN0UmVzcG9uZGVyKChOU1Jlc3BvbmRlciAqKWZyYW1l
Vmlldy0+cGxhdGZvcm1XaWRnZXQoKSk7CisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5tYWtlRmlyc3RSZXNwb25kZXIoKE5TUmVzcG9uZGVyICopZnJhbWVWaWV3LT5wbGF0Zm9y
bVdpZGdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hyb21lQ2xpZW50LmFzc2lz
dGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKKyAgICAgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsK
ICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4
N2RlZTViYTljODEzZGJmZGVkOTgzM2EwNWM0NzBlYTMwYTUyYTI0Li5iMDQ2Mjc1MWE0NDY1ZjQy
OWI5Nzg0YjE0MzdjM2IzZGJmYTA2NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC01MzYwLDYgKzUzNjAsMTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VWaXNpYmls
aXR5KGJvb2wgaXNWaXNpYmxlKQogICAgIHVwZGF0ZVBhZ2VBY3Rpdml0eVN0YXRlKEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgaXNWaXNpYmxlKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldFBh
Z2VJc0ZvY3VzZWQoYm9vbCBpc0ZvY3VzZWQpCit7CisgICAgdXBkYXRlUGFnZUFjdGl2aXR5U3Rh
dGUoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBpc0ZvY3VzZWQpOworfQorCiB2b2lkIEludGVy
bmFsczo6c2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShib29sIGlzRm9jdXNlZEFuZEFjdGl2ZSkK
IHsKICAgICB1cGRhdGVQYWdlQWN0aXZpdHlTdGF0ZSh7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNl
ZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSwgaXNGb2N1c2VkQW5kQWN0aXZlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGM4MmYxZTI0YTg3Mzg1ZGRlNjBjYWVk
YjQ0MjQzYjE1ZDIxZmM5MGEuLjI2ZjU3M2UwMGM1NTExMzRiOGIyY2Q3YjYxNjMzZjExMDhiMzFk
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODQ1LDYgKzg0NSw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRQYWdlVmlzaWJpbGl0eShib29sIGlzVmlzaWJs
ZSk7CisgICAgdm9pZCBzZXRQYWdlSXNGb2N1c2VkKGJvb2wpOwogICAgIHZvaWQgc2V0UGFnZUlz
Rm9jdXNlZEFuZEFjdGl2ZShib29sKTsKICAgICB2b2lkIHNldFBhZ2VJc0luV2luZG93KGJvb2wp
OwogICAgIGJvb2wgaXNQYWdlQWN0aXZlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggZTAyZTM0YThiNGM2MWU3ZjIzOGRlOWEzOTNkYzMzN2RmYWFmYzkwNS4u
MjEyNjI2ODkzMDMyZDAzNzhlYzkwZDE3MjZhYmY1OThjNmQ4YjY1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODg1LDYgKzg4NSw3IEBAIHR5cGVkZWYgKEZldGNoUmVx
dWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKICAgICBbQ29uZGl0aW9uYWw9V0VC
R0xdIGJvb2xlYW4gcGxhdGZvcm1TdXBwb3J0c01ldGFsKGJvb2xlYW4gaXNXZWJHTDIpOwogCiAg
ICAgdW5kZWZpbmVkIHNldFBhZ2VWaXNpYmlsaXR5KGJvb2xlYW4gaXNWaXNpYmxlKTsKKyAgICB1
bmRlZmluZWQgc2V0UGFnZUlzRm9jdXNlZChib29sZWFuIGlzRm9jdXNlZCk7CiAgICAgdW5kZWZp
bmVkIHNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUoYm9vbGVhbiBpc0ZvY3VzZWQpOwogICAgIHVu
ZGVmaW5lZCBzZXRQYWdlSXNJbldpbmRvdyhib29sZWFuIGlzSW5XaW5kb3cpOwogICAgIGJvb2xl
YW4gaXNQYWdlQWN0aXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KaW5kZXggZmFjOWU3ZmI3OGJlZTBmNjI5NDU2NzJlM2JiNzRiOWUw
NTIwZTMwZi4uOTIxMjZjZGM2OWE3ZmQzY2RhZTZhYTBmNGJlODc0M2UyYjBjNzBiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAt
MzkxLDcgKzM5MSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6Om5vdGlmeUlucHV0Q29udGV4dEFi
b3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjphc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIFttX2NvbnRlbnRWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDA2NDc2MmM0ODNmNGUxNjQxMDM4
YWJjMDRiNDRkMmE5ZmUxOTExOWQuLjk2ZmU2ODk0ZWFjMDM0NzA3OTFjODQ2Y2YyM2E4MDU1M2Vh
NTVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlCiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHBhZ2VDbGllbnQoKS5hc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFr
ZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA4YWFlMjg3YTBjNWZkYmI1NjVlNjNkMzBkZjlhZmNiMjc1YzEyN2Q3Li4z
ZTgwY2Y5ZmQ0M2FlZWI5Nzg3MDU0NDYzZGQyZTE5YmQ3NGI0ZTk4IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjIt
MDEtMDcgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWDog
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCh0cnVlKSBzaG91bGQgbWFrZSB0aGUgd2Vi
cGFnZSBmb2N1c2VkLCBhbmQgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4ODUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdGVzdGluZyBm
dW5jdGlvbmFsaXR5IG5lY2Vzc2FyeSB0byBjaGVjayB0aGF0IHdlYiBjb250ZW50IGlzIHRoZQor
ICAgICAgICBmaXJzdCByZXNwb25kZXIgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBU
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xs
ZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmlzV2Vi
Q29udGVudEZpcnN0UmVzcG9uZGVyIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9j
dXMpOgorICAgICAgICBJbXBsZW1lbnQgdGhpcyBtZXRob2QuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcklPUzo6aXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXIgY29uc3QpOgor
ICAgICAgICBBZGRlZC4KKwogMjAyMi0wMS0wNiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR0xJQl0gTWFrZSBBUEkgdGVzdCBpbml0aWFsaXplIGxvY2Fsc3Rv
cmFnZSB0byBlbnN1cmUgdGhlIGRhdGFiYXNlIGZpbGUgaXMgY3JlYXRlZApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggNTUxOTc0ZWVlMDkxNzMzMGY5MDIy
N2ZmOWM4ZGU0YzE0ZDQzMDU3My4uYzBkNzdhMjdiYWIyZTYyYWQwNTdlZWVkYjZkMGVhYTc3Y2Nl
NTQxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
QmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0z
NTksNiArMzU5LDcgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAgICAgdW5kZWZp
bmVkIGZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25Gb3JXZWJWaWV3KGJvb2xlYW4gc2hvdWxkU3Vw
cHJlc3MpOwogICAgIHVuZGVmaW5lZCBtYWtlV2luZG93Q29udGVudFZpZXdGaXJzdFJlc3BvbmRl
cigpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzV2luZG93Q29udGVudFZpZXdG
aXJzdFJlc3BvbmRlcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1dlYkNvbnRl
bnRGaXJzdFJlc3BvbmRlcjsKIAogICAgIHVuZGVmaW5lZCBzZXRIYXJkd2FyZUtleWJvYXJkQXR0
YWNoZWQoYm9vbGVhbiBhdHRhY2hlZCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTQ5
MzJkNTEwMTRlNGQzOGMyN2M0NzBkYzlkY2RjZmMyZjI0OTQwNy4uOGRmY2QxNjVhYjAyNTQwY2Vk
YWU5Mzg4MDQxZWZiMjJjN2VhZDNiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTExOCw2
ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcnN0UmVzcG9uZGVyU3VwcHJl
c3Npb25Gb3JXZWJWaWV3KGJvb2wpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBtYWtlV2luZG93Q29udGVudFZpZXdGaXJzdFJlc3BvbmRlcigpIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25k
ZXIoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1dlYkNvbnRlbnRGaXJzdFJlc3BvbmRlcigpIGNvbnN0IHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVmlld0Zyb21X
aW5kb3coSlNWYWx1ZVJlZikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGFkZFZpZXdUb1dpbmRvdyhKU1ZhbHVlUmVmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IGJhNDc0Zjk2YzBiNmRm
MzRhMjk4NWUwNTA1ZTkxZGU2ODY0YjY1ZWQuLjEwYmYxN2JjMmFhMzJlOGEwZWQ0NDhkMGExOGYz
OTMxZWRkZWNkZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bQpAQCAtNzAsNiArNzAsNyBAQCB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNh
bGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLAogLSAoQ0dGbG9hdClf
YWNjZXNzaWJpbGl0eU1pblZhbHVlOwogLSAoQ0dGbG9hdClfYWNjZXNzaWJpbGl0eU1heFZhbHVl
OwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOworLSAo
dm9pZClfYWNjZXNzaWJpbGl0eVNldEZvY3VzOihCT09MKWZvY3VzOwogLSAodm9pZClfYWNjZXNz
aWJpbGl0eUFjdGl2YXRlOwogLSAoVUlBY2Nlc3NpYmlsaXR5VHJhaXRzKV9heFNlbGVjdGVkVHJh
aXQ7CiAtIChVSUFjY2Vzc2liaWxpdHlUcmFpdHMpX2F4VGV4dEFyZWFUcmFpdDsKQEAgLTExODEs
NiArMTE4Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9u
TGlzdFRlcm0oKSBjb25zdAogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1
cygpCiB7CisgICAgW21fZWxlbWVudCBfYWNjZXNzaWJpbGl0eVNldEZvY3VzOllFU107CiB9CiAK
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbigpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCmluZGV4IDM0
M2U3YmI3NDgxODI5ODJhM2QwMTg5OTc4OTAwNjA1NmE3MDU0ZWEuLjc2Nzg3MDc3Mjg1YWYyODg0
ODFlMDNiOTE0Y2E4MGUxNjE5YjE1MTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCkBAIC0xNjgsNiArMTY4LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdhaXRGb3JTaW5nbGVUYXBUb1Jlc2V0KCkgY29uc3Q7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHJlY3RGb3JNZW51QWN0aW9uKENGU3RyaW5nUmVmKSBjb25zdDsKICAgICB2
b2lkIHNpbmdsZVRhcEF0UG9pbnRXaXRoTW9kaWZpZXJzKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9j
YXRpb24sIFZlY3RvcjxTdHJpbmc+JiYgbW9kaWZpZXJGbGFncywgQmxvY2tQdHI8dm9pZCgpPiYm
KTsKKworICAgIGJvb2wgaXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXIoKSBjb25zdCBvdmVycmlk
ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQppbmRleCAzZTNiZTMyMjY4Y2FiNjcwMDIzYzc5YTZiN2M0MWUzNmM2
ZTJkZWVhLi43OTQ3ZmI4MWE5MWQ2ZTExMGU0MDBjNGZiMjU0YjRjMjRhNTQzODYwIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1t
CkBAIC0xMzI2LDYgKzEzMjYsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldFN1
cHByZXNzU29mdHdhcmVLZXlib2FyZChib29sIHN1cHByZXNzU29mdHdhcmVLZXkKICAgICB3ZWJW
aWV3KCkuX3N1cHByZXNzU29mdHdhcmVLZXlib2FyZCA9IHN1cHByZXNzU29mdHdhcmVLZXlib2Fy
ZDsKIH0KIAorYm9vbCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmlzV2ViQ29udGVudEZpcnN0UmVz
cG9uZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW3dlYlZpZXcoKSBfY29udGVudFZpZXdJc0Zp
cnN0UmVzcG9uZGVyXTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YzY2YzA1NjA3ZjNjNDA5NjRmOWY1NmQ1ZDc4Mjg5YzNlZDQ3MTNkLi5lZmU0ZDgw
MjE3Y2UxMzMyY2VkMTlmNzY3MzdlMjY0ZGRjMjY3NGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMjItMDEtMDcgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAg
ICBBWDogQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Rm9jdXNlZCh0cnVlKSBzaG91bGQgbWFrZSB0
aGUgd2VicGFnZSBmb2N1c2VkLCBhbmQgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9u
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdGVz
dHMgdmVyaWZ5aW5nIHRoYXQgZm9jdXNpbmcgYW4gZWxlbWVudCB2aWEgYW4gQVggY2xpZW50Ogor
CisgICAgICAgICAgMS4gTWFrZXMgdGhlIHBhZ2UgZm9jdXNlZCBpbW1lZGlhdGVseQorICAgICAg
ICAgIDIuIE1ha2VzIHdlYiBjb250ZW50IHRoZSBmaXJzdCByZXNwb25kZXIKKworICAgICAgICBU
aGlzIGFsbG93cyBhIGZvY3VzIHJpbmcgdG8gYmUgZHJhd24sIGV2ZW4gd2hlbiBhcHBzIHRoYXQg
ZW1iZWQKKyAgICAgICAgV0tXZWJWaWV3cyBkb24ndCBtYWtlIHdlYiBjb250ZW50IHRoZSBmaXJz
dCByZXNwb25kZXIgdGhlbXNlbHZlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zLXNp
bXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxp
dHktbWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rh
a2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAxLTA3
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXaGVu
IHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QgaXMgdXNlZCB3aXRoIGEgZ3JvdXBpbmcgcHJv
cGVydHkgaXQgc2hvdWxkIHN0aWxsIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2sKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5
LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDZmOTMxNDIyNjY5ZDViZWQwZmFmYjRiZTk4MThmYzJk
ZWQ0MGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgdGhhdCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0
UmVzcG9uZGVyIHdvcmtzIGNvcnJlY3RseSBvbiBpT1MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyIGlzIHRydWUKK1Jlc2ln
bmluZyB3ZWIgY29udGVudCBmaXJzdCByZXNwb25kZXJzaGlwCitQQVNTIGlzV2ViQ29udGVudEZp
cnN0UmVzcG9uZGVyIGlzIGZhbHNlCitQZXJmb3JtaW5nIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZv
Y3VzCitQQVNTIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWNjZXNzaWJpbGl0eS1tYWtlLWZp
cnN0LXJlc3BvbmRlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MmQ2MThjYjNmMWNmNDdmZGI1OTRjMDc0Y2I1MDA2MDIwZDQyYWYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHkt
bWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbApAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRo
YXQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlciB3b3JrcyBjb3JyZWN0bHkg
b24gaU9TLiIpOworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0
aW9uIHBlcmZvcm1UZXN0KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
YXdhaXQgdmVyaWZ5V2ViQ29udGVudElzRmlyc3RSZXNwb25kZXIodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgZGVidWcoIlJlc2lnbmluZyB3ZWIgY29udGVudCBmaXJzdCByZXNwb25kZXJzaGlwIik7
CisgICAgICAgICAgICAgICAgYXdhaXQgcmVzaWduV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyKCk7
CisgICAgICAgICAgICAgICAgYXdhaXQgdmVyaWZ5V2ViQ29udGVudElzRmlyc3RSZXNwb25kZXIo
ZmFsc2UpOworCisgICAgICAgICAgICAgICAgdmFyIGlucHV0T2JqID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgICAgICAgICAgICAg
IGlucHV0T2JqLnRha2VGb2N1cygpOworICAgICAgICAgICAgICAgIGRlYnVnKCJQZXJmb3JtaW5n
IGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvY3VzIik7CisKKyAgICAgICAgICAgICAgICBhd2FpdCB2
ZXJpZnlXZWJDb250ZW50SXNGaXJzdFJlc3BvbmRlcih0cnVlKTsKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyOworICAgIGFzeW5jIGZ1bmN0aW9uIHZl
cmlmeVdlYkNvbnRlbnRJc0ZpcnN0UmVzcG9uZGVyKGV4cGVjdEZpcnN0UmVzcG9uZGVyc2hpcCkK
KyAgICB7CisgICAgICAgIC8vIFNldCB0aGUgZ2xvYmFsIHZhciB0byB0aGUgb3Bwb3NpdGUgb2Yg
d2hhdCB3ZSBleHBlY3QgYW5kIGFsbG93IHRoZSBVSSBzY3JpcHQgdG8gZ2l2ZSB1cyB0aGUgZXhw
ZWN0ZWQgdmFsdWUuCisgICAgICAgIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyID0gIWV4cGVj
dEZpcnN0UmVzcG9uZGVyc2hpcDsKKworICAgICAgICAvLyBCZWNhdXNlIHRha2luZyBhbmQgcmVz
aWduaW5nIGZpcnN0IHJlc3BvbmRlcnNoaXAgcmVxdWlyZXMgYXN5bmMgSVBDIGJldHdlZW4gdGhl
IHdlYiBhbmQgVUkgcHJvY2Vzc2VzLCB3ZQorICAgICAgICAvLyBtdXN0IGFsc28gYXN5bmNocm9u
b3VzbHkgd2FpdCB0byBnZXQgb3VyIGV4cGVjdGVkIHZhbHVlLgorICAgICAgICBhd2FpdCB3YWl0
Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4geworICAgICAg
ICAgICAgICAgIGlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyID0gYXdhaXQgKG5ldyBQcm9taXNl
KHJlc29sdmUgPT4geworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0
KGB1aUNvbnRyb2xsZXIuaXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXJgLCByZXN1bHQgPT4gcmVz
b2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOworICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAg
ICAgIH0sIDApCisgICAgICAgICAgICByZXR1cm4gaXNXZWJDb250ZW50Rmlyc3RSZXNwb25kZXIg
PT0gZXhwZWN0Rmlyc3RSZXNwb25kZXJzaGlwOworICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxk
QmUoImlzV2ViQ29udGVudEZpcnN0UmVzcG9uZGVyIiwgYCR7ZXhwZWN0Rmlyc3RSZXNwb25kZXJz
aGlwfWApOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHJlc2lnbldlYkNvbnRlbnRGaXJz
dFJlc3BvbmRlcigpCisgICAgeworICAgICAgICBhd2FpdCAobmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmVz
aWduRmlyc3RSZXNwb25kZXIoKWAsIHJlc29sdmUpOworICAgICAgICB9KSk7CisgICAgfQorCisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBwZXJmb3JtVGVzdCwgZmFsc2UpOwor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IGlkPSJpbnB1dCIgdHlw
ZT0idGV4dCI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdGFraW5nLWZvY3VzLXNob3VsZC1yZWZvY3VzLXBhZ2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rh
a2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1wYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Njk3YmU4MjIyZDM4MGEzNmQ5NzcxM2MyNDg2M2Q1YTA2NmM5M2RlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1z
aG91bGQtcmVmb2N1cy1wYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IG1ha2luZyBhbiBlbGVtZW50IGZvY3VzZWQgdmlhIGFjY2Vzc2liaWxp
dHkgKGUuZy4gZnVsbCBrZXlib2FyZCBhY2Nlc3MpIHJlLWZvY3VzZXMgdGhlIHBhZ2Ugc28gdGhh
dCBhIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXduLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGJ1dHRvbikuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0
bGluZS13aWR0aCcpIGlzICcwcHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUodGV4dElucHV0KS5n
ZXRQcm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykgaXMgJzBweCcKKworVGFraW5nIGZvY3Vz
IHZpYSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBmb3IgaWQgI2J1dHRvbgorUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGJ1dHRvbikuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIGlzICcz
cHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUodGV4dElucHV0KS5nZXRQcm9wZXJ0eVZhbHVlKCdv
dXRsaW5lLXdpZHRoJykgaXMgJzBweCcKKworVGFraW5nIGZvY3VzIHZpYSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciBmb3IgaWQgI3RleHQtaW5wdXQKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShidXR0
b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSBpcyAnMHB4JworUEFTUyBnZXRD
b21wdXRlZFN0eWxlKHRleHRJbnB1dCkuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcp
IGlzICczcHgnCisKK01ha2luZyB0aGUgZW50aXJlIHBhZ2UgdW4tZm9jdXNlZAorCitUYWtpbmcg
Zm9jdXMgdmlhIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyIGZvciBpZCAjYnV0dG9uCitQQVNTIGdl
dENvbXB1dGVkU3R5bGUoYnV0dG9uKS5nZXRQcm9wZXJ0eVZhbHVlKCdvdXRsaW5lLXdpZHRoJykg
aXMgJzNweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFs
dWUoJ291dGxpbmUtd2lkdGgnKSBpcyAnMHB4JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitDbGljayBtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1cy1w
YWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdGFraW5n
LWZvY3VzLXNob3VsZC1yZWZvY3VzLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjU4MDc4Y2YwOTZi
Y2M3Y2JiZjRjZDNmYzA1YzAxY2VmOTI0NTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Rha2luZy1mb2N1cy1zaG91bGQtcmVmb2N1
cy1wYWdlLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8YnV0dG9uIGlkPSJidXR0b24iPkNsaWNrIG1lPC9idXR0b24+Cis8aW5wdXQgdHlwZT0idGV4
dCIgaWQ9InRleHQtaW5wdXQiPgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IG1ha2luZyBhbiBlbGVtZW50IGZvY3VzZWQgdmlhIGFjY2Vzc2liaWxp
dHkgKGUuZy4gZnVsbCBrZXlib2FyZCBhY2Nlc3MpIHJlLWZvY3VzZXMgdGhlIHBhZ2Ugc28gdGhh
dCBhIGZvY3VzIHJpbmcgY2FuIGJlIGRyYXduLiIpOworCisgICAgZnVuY3Rpb24gdGFrZUZvY3Vz
KGlkKSB7CisgICAgICAgIGRlYnVnKGBcblRha2luZyBmb2N1cyB2aWEgYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIgZm9yIGlkICMke2lkfWApOworICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpLnRha2VGb2N1cygpOworICAgIH0KKworICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdmFyIGJ1dHRvbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKTsKKyAgICAgICAgdmFyIHRleHRJbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0LWlucHV0Iik7CisgICAgICAgIHNob3Vs
ZEJlKCJnZXRDb21wdXRlZFN0eWxlKGJ1dHRvbikuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13
aWR0aCcpIiwgIicwcHgnIik7CisgICAgICAgIHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKHRl
eHRJbnB1dCkuZ2V0UHJvcGVydHlWYWx1ZSgnb3V0bGluZS13aWR0aCcpIiwgIicwcHgnIik7CisK
KyAgICAgICAgdGFrZUZvY3VzKCJidXR0b24iKTsKKyAgICAgICAgLy8gRXhwZWN0IGZvY3VzIHJp
bmcgdG8gaGF2ZSBiZWVuIGRyYXduIGZvciB0aGUgYnV0dG9uLgorICAgICAgICBzaG91bGRCZSgi
Z2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgn
KSIsICInM3B4JyIpOworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0SW5w
dXQpLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInMHB4JyIpOworCisgICAg
ICAgIHRha2VGb2N1cygidGV4dC1pbnB1dCIpOworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0
ZWRTdHlsZShidXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInMHB4
JyIpOworICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFBy
b3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInM3B4JyIpOworCisgICAgICAgIGRlYnVn
KCJcbk1ha2luZyB0aGUgZW50aXJlIHBhZ2UgdW4tZm9jdXNlZCIpOworICAgICAgICAvLyBUaGlz
IHNpbXVsYXRlcyBzaXR1YXRpb25zIGluIHdoaWNoIFdlYktpdCBpcyBlbWJlZGRlZCBpbiBhbm90
aGVyIGFwcCBhbmQgZm9jdXMgaXMgbm90IHByb3Blcmx5IGhhbmRlZAorICAgICAgICAvLyBvdmVy
IHRvIFdlYktpdCB3aGVuIG5lY2Vzc2FyeSwgaS5lLiBhIGZ1bGwta2V5Ym9hcmQgYWNjZXNzIHVz
ZXIgdGFiYmluZyBpbnRvIHRoZSBlbWJlZGRlZCB3ZWIgdmlldy4KKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZUlzRm9jdXNlZChmYWxz
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlYnVnKCJGQUlMOiB3aW5kb3cuaW50ZXJu
YWxzIG5vdCBhdmFpbGFibGUiKQorCisgICAgICAgIHRha2VGb2N1cygiYnV0dG9uIik7CisgICAg
ICAgIC8vIEZvY3VzaW5nIHRoZSBidXR0b24gdmlhIGFjY2Vzc2liaWxpdHkgc2hvdWxkIHJlLWZv
Y3VzIHRoZSBwYWdlIGFuZCBhbGxvdyBhIGZvY3VzIHJpbmcgdG8gYmUgZHJhd24uCisgICAgICAg
IC8vIFRoaXMgc2ltdWxhdGVzIGNvbmRpdGlvbnMgd2hlcmUgZW1iZWRkZWQgV0tXZWJWaWV3J3Mg
YXJlIG5vdCBldmVyIG1hcmtlZCBhcyBmb2N1c2VkIHZpYSB0aGVpciBob3N0aW5nCisgICAgICAg
IC8vIGFwcCwgZS5nLiB2aWEgW1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbiBiZWNvbWVGaXJzdFJl
c3BvbmRlckZvcldlYlZpZXddLgorICAgICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShi
dXR0b24pLmdldFByb3BlcnR5VmFsdWUoJ291dGxpbmUtd2lkdGgnKSIsICInM3B4JyIpOworICAg
ICAgICBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0SW5wdXQpLmdldFByb3BlcnR5VmFs
dWUoJ291dGxpbmUtd2lkdGgnKSIsICInMHB4JyIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>