<?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>11197</bug_id>
          
          <creation_ts>2006-10-06 16:26:02 -0700</creation_ts>
          <short_desc>REGRESSION: Specifying a counter for a CODE tag&apos;s content style property on before or after causes a crash.</short_desc>
          <delta_ts>2007-01-22 09:48:25 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/2001/WD-css3-multicol-20010118/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Elliot">adam.elliot</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>53832</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Elliot">adam.elliot</who>
    <bug_when>2006-10-06 16:26:02 -0700</bug_when>
    <thetext>If you specify any counter, { content: counter(dummy,disc); }, on a code tag seems to crash the browser.  The crash does not occur on other tags.  Stable Safari does not crash, but the counters do not show up either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53833</commentid>
    <comment_count>1</comment_count>
      <attachid>10955</attachid>
    <who name="Adam Elliot">adam.elliot</who>
    <bug_when>2006-10-06 16:27:27 -0700</bug_when>
    <thetext>Created attachment 10955
Reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53879</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-10-07 13:52:16 -0700</bug_when>
    <thetext>Thread 0 Crashed:
0   com.apple.WebCore        	0x01e0c9bc WebCore::StringImpl::length() const + 20 (StringImpl.h:74)
1   com.apple.WebCore        	0x01b10dbc WebCore::RenderText::allAscii() const + 228 (RenderText.cpp:446)
2   com.apple.WebCore        	0x01b10e5c WebCore::RenderText::shouldUseMonospaceCache(WebCore::Font const*) const + 72 (RenderText.cpp:459)
3   com.apple.WebCore        	0x01b10f60 WebCore::RenderText::cacheWidths() + 56 (RenderText.cpp:468)
4   com.apple.WebCore        	0x01b13a08 WebCore::RenderText::setStyle(WebCore::RenderStyle*) + 532 (RenderText.cpp:128)
5   com.apple.WebCore        	0x01acecb4 WebCore::RenderContainer::updatePseudoChildForObject(WebCore::RenderStyle::PseudoId, WebCore::RenderObject*) + 2460 (RenderContainer.cpp:356)
6   com.apple.WebCore        	0x01acede8 WebCore::RenderContainer::updatePseudoChild(WebCore::RenderStyle::PseudoId) + 168 (RenderContainer.cpp:250)
7   com.apple.WebCore        	0x01adea84 WebCore::RenderInline::setStyle(WebCore::RenderStyle*) + 356 (RenderInline.cpp:68)
8   com.apple.WebCore        	0x01bdff1c WebCore::Node::createRendererIfNeeded() + 684 (Node.cpp:902)
9   com.apple.WebCore        	0x01be787c WebCore::Element::attach() + 44 (Element.cpp:560)
10  com.apple.WebCore        	0x018f46a0 WebCore::HTMLParser::insertNode(WebCore::Node*, bool) + 680 (HTMLParser.cpp:288)
11  com.apple.WebCore        	0x018f616c WebCore::HTMLParser::parseToken(WebCore::Token*) + 1388 (HTMLParser.cpp:220)
12  com.apple.WebCore        	0x018f9cb4 WebCore::HTMLTokenizer::processToken() + 624 (HTMLTokenizer.cpp:1645)
13  com.apple.WebCore        	0x018fd87c WebCore::HTMLTokenizer::parseTag(WebCore::SegmentedString&amp;, WebCore::HTMLTokenizer::State) + 7252 (HTMLTokenizer.cpp:1218)
14  com.apple.WebCore        	0x018fe384 WebCore::HTMLTokenizer::write(WebCore::SegmentedString const&amp;, bool) + 1444 (HTMLTokenizer.cpp:1444)
15  com.apple.WebCore        	0x019fe9fc WebCore::Frame::write(char const*, int) + 1200 (Frame.cpp:717)
16  com.apple.WebCore        	0x019f3014 WebCore::Frame::addData(char const*, int) + 340 (Frame.cpp:2787)
17  com.apple.WebCore        	0x01a3f1e8 -[WebCoreFrameBridge addData:] + 224 (WebCoreFrameBridge.mm:587)
18  com.apple.WebKit         	0x003351ac -[WebFrameBridge receivedData:textEncodingName:] + 276 (WebFrameBridge.m:502)
19  com.apple.WebKit         	0x0035365c -[WebHTMLRepresentation receivedData:withDataSource:] + 268 (WebHTMLRepresentation.m:150)
20  com.apple.WebKit         	0x0033f28c -[WebDataSource(WebInternal) _receivedData:] + 108 (WebDataSource.m:171)
21  com.apple.WebKit         	0x003d7878 -[WebFrameLoader committedLoadWithDocumentLoadState:data:] + 120 (WebFrameLoader.m:987)
22  com.apple.WebKit         	0x003e4704 -[WebDocumentLoadState commitLoadWithData:] + 140 (WebDocumentLoadState.m:299)
23  com.apple.WebKit         	0x003e489c -[WebDocumentLoadState receivedData:] + 168 (WebDocumentLoadState.m:313)
24  com.apple.WebKit         	0x003d4da0 -[WebFrameLoader _receivedData:] + 104 (WebFrameLoader.m:561)
25  com.apple.WebKit         	0x003dd2d0 -[WebMainResourceLoader addData:allAtOnce:] + 156 (WebMainResourceLoader.m:152)
26  com.apple.WebKit         	0x003db858 -[WebLoader didReceiveData:lengthReceived:allAtOnce:] + 128 (WebLoader.m:366)
27  com.apple.WebKit         	0x003de410 -[WebMainResourceLoader didReceiveData:lengthReceived:allAtOnce:] + 492 (WebMainResourceLoader.m:351)
28  com.apple.WebKit         	0x003dc1a4 -[WebLoader connection:didReceiveData:lengthReceived:] + 192 (WebLoader.m:466)
29  com.apple.Foundation     	0x929935d4 -[NSURLConnection(NSURLConnectionInternal) _sendDidReceiveDataCallback] + 564
30  com.apple.Foundation     	0x92991a74 -[NSURLConnection(NSURLConnectionInternal) _sendCallbacks] + 488
31  com.apple.Foundation     	0x92991810 _sendCallbacks + 156
32  com.apple.CoreFoundation 	0x907dd4cc __CFRunLoopDoSources0 + 384
33  com.apple.CoreFoundation 	0x907dc9fc __CFRunLoopRun + 452
34  com.apple.CoreFoundation 	0x907dc47c CFRunLoopRunSpecific + 268
35  com.apple.HIToolbox      	0x93208740 RunCurrentEventLoopInMode + 264
36  com.apple.HIToolbox      	0x93207dd4 ReceiveNextEventCommon + 380
37  com.apple.HIToolbox      	0x93207c40 BlockUntilNextEventMatchingListInMode + 96
38  com.apple.AppKit         	0x9370bae4 _DPSNextEvent + 384
39  com.apple.AppKit         	0x9370b7a8 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 116
40  com.apple.Safari         	0x00006740 0x1000 + 22336
41  com.apple.AppKit         	0x93707cec -[NSApplication run] + 472
42  com.apple.AppKit         	0x937f887c NSApplicationMain + 452
43  com.apple.Safari         	0x0005c77c 0x1000 + 374652
44  com.apple.Safari         	0x0005c624 0x1000 + 374308

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46471</commentid>
    <comment_count>3</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2006-11-08 14:41:05 -0800</bug_when>
    <thetext>4826798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34850</commentid>
    <comment_count>4</comment_count>
      <attachid>12451</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2007-01-15 03:45:35 -0800</bug_when>
    <thetext>Created attachment 12451
Proposed patch

A simple patch to resolve this issue.

Another possible point for this patch would be not calling cacheWidths() from RenderText::setStyle if setText was not called. This is probably not a good spot however as this is not the only place setText may be called to change m_str&apos;s value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34820</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-15 07:27:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=12451) [edit]
&gt; Proposed patch
&gt; 
&gt; A simple patch to resolve this issue.

FWIW, this probably doesn&apos;t need to be a pixel test since it&apos;s testing non-crashing behavior.  :)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34762</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-15 07:50:47 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; FWIW, this probably doesn&apos;t need to be a pixel test since it&apos;s testing
&gt; non-crashing behavior.  :)

Unless you&apos;re also testing the before/after rendering for &lt;code&gt; elements that&apos;s not included in other tests.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34768</commentid>
    <comment_count>7</comment_count>
      <attachid>12451</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-15 08:43:15 -0800</bug_when>
    <thetext>Comment on attachment 12451
Proposed patch

I believe a better fix is to fix allAscii() to work when m_str is 0. Just putting the for loop inside an if (m_str) would do the trick.

But this patch is also OK as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34787</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-15 11:11:05 -0800</bug_when>
    <thetext>My patch removed the call to cacheWidths that was done after changing the text and moved it to setStyle instead. That&apos;s a problem since the value of shouldUseMonospaceCache is based on the value of allAscii. So I think we have a bug now when some all-ASCII text is replaced with text that has some non-ASCII characters in it. The monospace cache will be used in cases where it&apos;s not appropriate.

Seems like we need to move the cacheWidths call back into setInternalString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33814</commentid>
    <comment_count>9</comment_count>
      <attachid>12590</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-21 16:49:04 -0800</bug_when>
    <thetext>Created attachment 12590
much larger patch, passes layout tests, I think we should land this one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33815</commentid>
    <comment_count>10</comment_count>
      <attachid>12451</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-21 17:23:00 -0800</bug_when>
    <thetext>Comment on attachment 12451
Proposed patch

Clearing the reviewed flag on this patch for now. Depending on feedback about my patch, might land this or mine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33610</commentid>
    <comment_count>11</comment_count>
      <attachid>12590</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-21 23:33:39 -0800</bug_when>
    <thetext>Comment on attachment 12590
much larger patch, passes layout tests, I think we should land this one

\ No newline at end of file

Please add a newline.

+                if (style()-&gt;collapseWhiteSpace() &amp;&amp; next &amp;&amp; !next-&gt;isBR() &amp;&amp; next-&gt;isText() &amp;&amp; static_cast&lt;RenderText*&gt;(next)-&gt;textLength() &gt; 0) {

The &gt; 0 is unnecessary.

+                    if (nextText-&gt;textLength() != 0) {

Should be &apos;if (nextText-&gt;textLength())&apos;.

+++ WebKitTools/Scripts/run-webkit-tests	(working copy)

Doesn&apos;t belong in this patch.

r=me w/o the run-webkit-tests changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33528</commentid>
    <comment_count>12</comment_count>
      <attachid>12603</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-22 06:56:03 -0800</bug_when>
    <thetext>Created attachment 12603
Test case for the monospace cache regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33446</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-22 09:48:25 -0800</bug_when>
    <thetext>Committed revision 19027.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10955</attachid>
            <date>2006-10-06 16:27:27 -0700</date>
            <delta_ts>2006-10-06 16:27:27 -0700</delta_ts>
            <desc>Reduction</desc>
            <filename>content-crash-reduction.html</filename>
            <type>text/html</type>
            <size>151</size>
            <attacher name="Adam Elliot">adam.elliot</attacher>
            
              <data encoding="base64">PGh0bWw+PGhlYWQ+PHRpdGxlPlNlbGVjdG9yczwvdGl0bGU+CjxzdHlsZT4KY29kZTpiZWZvcmUg
ewogIGNvbnRlbnQ6IGNvdW50ZXIoZHVtbXksZGlzYyk7Cn0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9k
eT4KPGNvZGU+dGVzdDwvY29kZT4KPC9ib2R5PjwvaHRtbD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12451</attachid>
            <date>2007-01-15 03:45:35 -0800</date>
            <delta_ts>2007-01-21 17:23:00 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug11197.patch</filename>
            <type>text/plain</type>
            <size>22092</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4ODU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDEtMTUgIEFuZHJldyBXZWxsaW5ndG9u
ICA8cHJvdG9uQHdpcmV0YXBwZWQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSB0ZXN0IGZvciBmaXggdG8gaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTcKKyAgICAgICAgICBSRUdSRVNTSU9OOiBT
cGVjaWZ5aW5nIGEgY291bnRlciBmb3IgYSBDT0RFIHRhZydzIGNvbnRlbnQgc3R5bGUKKyAgICAg
ICAgICBwcm9wZXJ0eSBvbiBiZWZvcmUgb3IgYWZ0ZXIgY2F1c2VzIGEgY3Jhc2guCisKKyAgICAg
ICAgKiBmYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVsZW1lbnQtZXhwZWN0ZWQuY2hlY2tz
dW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2RlRWxlbWVu
dC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2JlZm9yZVNlbGVjdG9y
T25Db2RlRWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2Jl
Zm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAwNy0wMS0xNSAgRXJp
YyBTZWlkZWwgIDxlcmljQGVzZWlkZWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG1qcy4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC1l
eHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZv
cmVTZWxlY3Rvck9uQ29kZUVsZW1lbnQtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVsZW1lbnQtZXhwZWN0
ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RkYzY3MGY3Yjk2OGFmYzgz
NTU2MjYxMjM1Njk4NWFjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MvYmVmb3JlU2VsZWN0b3JPbkNvZGVFbGVtZW50LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVs
ZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
YmVmb3JlU2VsZWN0b3JPbkNvZGVFbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDAp
IHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcy
OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcyOTogIlRoZSB3b3JkIFwi
UEFTU0VEXCIgc2hvdWxkIGJlIHNob3duIGJlbG93IHdpdGggYSBjaXJsY2UgYmVmb3JlIGFuZCBh
IHNxdWFyZSBhZnRlci4gVGhpcyBpcyBhIHRlc3QgZm9yIFdlYktpdCBidWcgIgorICAgICAgICBS
ZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgNDB4MTggW2NvbG9yPSMwMDAwRUVdCisgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg3MjksMCkgc2l6ZSA0MHgxOAorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDcyOSwwKSB3aWR0aCA0MDogIjExMTk3IgorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDc2OSwwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
NzY5LDApIHdpZHRoIDQ6ICIuIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
MzQpIHNpemUgNzg0eDE1CisgICAgICAgIFJlbmRlcklubGluZSB7Q09ERX0gYXQgKDAsMCkgc2l6
ZSA2NHgxNQorICAgICAgICAgIFJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSBhdCAoMCwwKSBzaXpl
IDh4MTUKKyAgICAgICAgICAgIFJlbmRlckNvdW50ZXIgYXQgKDAsMCkgc2l6ZSA4eDE1CisgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg6ICJceHsyNUU2fSIKKyAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDgsMCkgc2l6ZSA0OHgxNQorICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDgsMCkgd2lkdGggNDg6ICJQQVNTRUQiCisgICAgICAgICAgUmVuZGVySW5saW5l
IChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgOHgxNQorICAgICAgICAgICAgUmVuZGVyQ291bnRl
ciBhdCAoNTYsMCkgc2l6ZSA4eDE1CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1NiwwKSB3
aWR0aCA4OiAiXHh7MjVBMH0iCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2Rl
RWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvYmVmb3Jl
U2VsZWN0b3JPbkNvZGVFbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAK
KzxodG1sCis8aGVhZD4KKzxzdHlsZT4KKyAgICBjb2RlOmJlZm9yZSB7CisgICAgICBjb250ZW50
OiBjb3VudGVyKGR1bW15LGNpcmNsZSk7CisgICAgfQorICAgIGNvZGU6YWZ0ZXIgeworICAgICAg
Y29udGVudDogY291bnRlcihkdW1teSxzcXVhcmUpOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPgorVGhlIHdvcmQgIlBBU1NFRCIgc2hvdWxkIGJlIHNob3duIGJlbG93IHdp
dGggYSBjaXJsY2UgYmVmb3JlIGFuZCBhIHNxdWFyZSBhZnRlci4gVGhpcyBpcyBhIHRlc3QgZm9y
IFdlYktpdCBidWcgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExOTciPjExMTk3PC9hPi4KKzwvcD4KKzxjb2RlPlBBU1NFRDwvY29kZT4KKzwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTcpCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA3
LTAxLTE1ICBBbmRyZXcgV2VsbGluZ3RvbiAgPHByb3RvbkB3aXJldGFwcGVkLm5ldD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTk3CisgICAgICAgIFJFR1JFU1NJ
T046IFNwZWNpZnlpbmcgYSBjb3VudGVyIGZvciBhIENPREUgdGFnJ3MgY29udGVudCBzdHlsZSBw
cm9wZXJ0eQorICAgICAgICBvbiBiZWZvcmUgb3IgYWZ0ZXIgY2F1c2VzIGEgY3Jhc2guCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0OjpzaG91bGRVc2VNb25vc3BhY2VDYWNoZSk6CisKIDIwMDctMDEtMTUgIERhdmlkIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAgZm9yIDEyMjc1LCBuZWdhdGl2
ZSBtYXJnaW5zIGNvbmZ1c2UgcGFnZSBicmVha3MuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAkocmV2aXNpb24gMTg4NTcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgUmVuZGVyVGV4dDo6YWxs
QXNjaWkoKSBjb25zdAogCiBib29sIFJlbmRlclRleHQ6OnNob3VsZFVzZU1vbm9zcGFjZUNhY2hl
KGNvbnN0IEZvbnQqIGYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChmICYmIGYtPmlzRml4ZWRQaXRj
aCgpICYmIGFsbEFzY2lpKCkgJiYgIXN0eWxlKCktPmZvbnQoKS5pc1NtYWxsQ2FwcygpKTsKKyAg
ICByZXR1cm4gKGYgJiYgZi0+aXNGaXhlZFBpdGNoKCkgJiYgbV9zdHIgJiYgYWxsQXNjaWkoKSAm
JiAhc3R5bGUoKS0+Zm9udCgpLmlzU21hbGxDYXBzKCkpOwogfQogCiAvLyBXZSBjYWNoZSB0aGUg
d2lkdGggb2YgdGhlICcgJyBjaGFyYWN0ZXIgZm9yIDxwcmU+IHRleHQuICBXZSBjb3VsZCBnbyBm
dXJ0aGVyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVs
ZW1lbnQtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVj
dG9yT25Db2RlRWxlbWVudC1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10
eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVV
Z0FBQXlBQUFBSllDQVlBQUFDYWRvSndBQUFnQUVsRVFWUjRuTzNkZWJoVmRiMzQ4YzloVkJGUgpB
Um4wQ29vbERxQkplRk1zaGNRYzhBRUh4THhXZ2dNNDNOS2tycGFwdDVMVU5OTnVKbHpUUkRHRTFI
TDZvU0pxYUdoNXdTN2toT2FBCmVwa1VCRHh3NEJ5K3Z6LzRzZVBNZXgvTytlcnZ1YS9YOC9nODdy
UFdYbXZ0N3hyWTc3T0hVNVpTU2dFQUFKQkJxMDk2QXdBQWdQODkKQkFnQUFKQ05BQUVBQUxJUklB
QUFRRFlDQkFBQXlFYUFBQUFBMlFnUUFBQWdHd0VDQUFCa0kwQUFBSUJzbWpWQTFxeFpFNHNXTFdy
TwpSV1pWVlZVVnI3enlTcjNUeTh2TDQ0TVBQb2lJYUpiSHVXTEZpcUxtVzdWcVZiejk5dHNSRWJG
NjllcFl0MjVkaytacGJzMHhIaTE5CnpGUlVWTVNmL3ZTbmVxYzN0cy9YckZrVDc3MzNYa3RzV3JW
MWZKclBtNjBaZzhiRy81UDJ3UWNmeE1LRkMrdWQva250bThhMks2TGwKeHJZNWp2bWxTNWZHckZt
ejRzTVBQMnltcmNxanNlc0JuODU5MjloNVdzejUxSnozKzdUNk5PNjd1alQzdjd1bDdzY2MvKzdY
WiszYQpscHYrN3J1cDBmdm4xR2lBREJzMkxIYmFhYWM0K3VpajQ1UlRUb25XclZ2SEhudnNFU2Vm
ZkhJY2R0aGgwYnAxNjVnOGVYTGNmZmZkCjBhMWJ0N2p6emp0emJIZXorOHRmL2hJSEhuaGduSFBP
T2ZYTzg3T2YvU3pHamgwYnI3enlTdlR1M1RzMmJOZ1FFUkVQUHZoZzlPdlgKTDhyS3ltTElrQ0Z4
OHNrbng2QkJnK0tFRTA2STU1NTdydDdsZmZXclgyM3dIN3YzM25zdnZ2YTFyOFg0OGVQanhodHZq
SUVEQjhZaApoeHdTTDc3NFl0SHpUSnMyTGZiWlo1L0N0cDE5OXRseDFsbG54V21ublJaNzc3MTNE
QjgrUENJaUhuNzQ0Umd3WUVDVWxaWEZRUWNkCkZHZWVlV1pjY01FRjhhLy8rcS94aTEvOEl0NTY2
NjJpeDZOWUxYM01QUC84OC9INXozOCtUanp4eERxbk43YlBKMDZjR0owN2Q0N3AKMDZlM3lQWkZ0
UHdZYksydEdZUEd4di9UNFBMTEw0OFJJMGJVT2UyVDNEY05iVmRFeTQxdGN4enpreVpOaXFsVHA4
YlRUejhkKysyMwpYMVJVVkRUakZyYWNZdjROK044dTU3NXR6dWNlaloxUHpYMi9UNlBtM25jLytN
RVBvbDI3ZHRHcVZhdTQrZWFiSTJMVDlhTkRodzVSClZsWVdsMTEyV1N4YnRpd2lJcFl0V3habm5Y
Vld0R25USm43NXkxODJ1TnpHcmtHUFB2cG9ISGJZWVZGV1ZoYjkrL2VQcVZPblJrVEUKbi8vODV6
ajQ0SU9qVFpzMjhlMXZmenYrKzcvL3UzQ2ZVdlpqam4vMzY3SjRjWW9MTDF3Ync0YXRhZmJwTDd4
UUZWLys4cHI0UC85bgpRMXg1NWRvNDQ0enkyUHgwYmNPR2lGMTIrU2pLeWxaVSs2OVZxNVh4UC8r
VG11M3gxU2sxNHFpamprcC8vL3ZmQzdlMzJXYWJkTVlaClp4UnVYMy85OVduaXhJa3BwWlQyMldl
ZmROVlZWelcyeUUrdEN5NjRJQTBaTXFUZTZUZmRkRk02NDR3ejBudnZ2WmM2ZE9oUWJkclAKZi83
ekZCRnB6cHc1S2FXVUtpc3IwMWxublpYYXRXdVhacytlWFd0WkN4Y3VUR1ZsWmVtQ0N5Nm9kMzBq
UjQ1TXc0Y1BMOXhldjM1OQpPdUNBQTlMMDZkTkxtbWZDaEFuVnRtMnpsU3RYcGxHalJoVnVUNW8w
S1VWRWV2REJCd3MvVzdac1dUcnZ2UE5TNTg2ZGF6Mk9oc2FqCldDMTl6RngzM1hXcFc3ZHU5VTV2
Yko5MzY5WXQzWERERFMyeGFRV2Y5dk5tYThhZ3NmSC9wQzFmdmp5OTl0cHJoZHZyMXExTHMyYk4K
S3R6K3BQWk56ZTJxUzB1TjdkYnM3elZyMXFRT0hUcWtxcXFxbEZKS3p6NzdiSE51V290cjdIcnd2
MWxkKzdibStkS2Ntdk81UnpIbgpVM1BlcnhUTk1ZYU5MYU9senNzTExyZ2dSVVI2NTUxM0NqLzc2
VTkvbWlLaTF2T0YyYk5uTi9oOFowdU5YWU4rOTd2ZnBZaElOOTU0ClkrRm5peFl0U24zNzlrMlBQ
LzU0cmZrYnU4Nlh1djdtdG1wVlNrOC92U0VkY2NUcWRNZ2hxNXAxK3NxVkcxTzNiaXZUSTQ5c0tQ
enMKMkdOWHAvUE9LMDhwcFRSbFNrWDY0US9YcGovL3VUTDk5YStiL3J2Nzd2VnA0TURhNjJsdWpi
NEM4dTF2Znp2MjJHT1BlcWVQSFRzMgo5dHR2djRpSWFOdTJiWlNWbFRWSEYyVzFjZVBHaUlobzA2
Wk50R3BWLzVEc3VlZWUwYXRYcitqUm8wZnN2ZmZlMWFidHVPT09FUkdGCng5KzZkZXU0K09LTFkv
MzY5VEZseXBSYXk3cjExbHRqOU9qUk1Ybnk1Rml6cHU2aWZlV1ZWMkxSb2tXRlZ4YmF0bTBidDk5
K2U3V1gKVDR1WnArYTJiYmJ0dHR2R1RUZmRWR3UrMXExYkYzN1dwVXVYK09VdmZ4bkhIbnRzSEhu
a2tURm56cHlpeHFNK0tWVXY2cFkrWnRxMQphMWZuOG92ZDV5MnhmYm5IWUd0dHpmYlZOLzZmRnAw
N2Q0N1BmT1l6RVJHeFljT0crTnJYdmhhelo4OHVURy9xWTYrc3JHeTI3YXBQClM0M3QxdXp2K2ZQ
bngvcjE2d3ZuMUtHSEh0cWNtOWFnclJuellxOEhUVmxYemZPOXVXenRNVmJxc212dTI0RURCOVk2
WDVwVGN6NzMKcU85OGFtemZOUFYrbXpXMmorcTY1aFJqeS9VWHM0eVdPaTh2dlBEQ0tDc3JpN3Z1
dXF2d3MzUE9PU2UyMjI2N21EeDVjclY1Nzd2dgp2dmo2MTc5ZTFISWIyNStibjZ2c3ROTk9FUkd4
Y09IQ0dERmlSTngxMTExeDVKRkgxcHEvc2V0OHFlc3ZWckhIU2NlT0VWLzZVcHZvCjI3ZFYxTFhh
clpuK2h6OXNpR1hMVW56eGkyMEtQenY4OExZeGFWSkZMRjZjNHJERDJzUVBmckJOREJ6WU92cjMz
L1RmYTY5VnhmRGgKYlV0NXFFM1M2SlgySzEvNVNvUFRPM1RvRUlNR0RTcmMzcmh4WTF4KytlV3gr
KzY3eC83Nzd4OXZ2dmxtWWRxU0pVdmkyOS8rZGh4KworT0V4WU1DQWV0K2VkTjk5OTBYWHJsM2po
Qk5PaUpVclY4WnZmdk9iNk5xMWF3d2RPalJlZi8zMWlOajA5cDh2ZnZHTGhjODZyRm16CkppNjQ0
SUs0K09LTFk4U0lFZkhOYjM0ejF2Ni9ON3ZOblRzM3hvNGRHNWRkZGxsY2RkVlYwYlZyMS9qem4v
OGM1ZVhsY2Q1NTU4V1AKZi96akdEZHVYTHp3d2dzTlB0Yk5UN2pMeXNyaThNTVBiMnpvQ2k4L2R1
L2V2ZHJQMTYxYkYwdVhMbzBycnJnaTFxeFpVK3RFM2V6VQpVMCtOdVhQbnh0Q2hRMlBKa2lVUkVm
RzV6MzJ1MmxzRWlwbW5QdC85N25kamwxMTJhWFMraUlocnI3MDJLaW9xNHY3Nzd5LzhySlR4CnVP
ZWVlK0pYdi9wVlhIdnR0YlV1ZmcwZE13M3QxM3Z1dVNkMjNYWFgrTVV2ZmhFUkVWT25UbzI5OTk0
N3hvMGJWKzkybExyUE45OW4KL1BqeDBhMWJ0eGd3WUVDOC9QTExoV25GSHRNdE5RYWxuaXRQUHZs
a25IcnFxVEYrL1BqNDlhOS9IWDM2OUltK2ZmdFdXMTlMamtGegpQcGFhU3IzLy8velAvOFMxMTE0
Ymh4eHlTRVJFL1B6blA0OEhIbmdnZnYvNzM4YzN2dkdOK1Bqamp4dmROelU5OGNRVGNjMDExOFRQ
CmZ2YXpHRFJvVUN4WXNLRGVlZGV1WFJ2Zi8vNzM0NXBycm9sUm8wYkZkZGRkRnhGUmE3dnF1MzRW
dTd4UzkxRkUwL2IzcmJmZUdsZGUKZVdWVVZsYkcrZWVmSCtQSGo0K0lwbDJiUzluZStzYThtR085
MU90QktmdTN2dk45M2JwMU1YNzgrTGo2NnF2amhCTk9pTEZqeDhhcApwNTVhdUU5ajE3VDZ0cUVs
eDdLdWZWdlgrVkxmdW9vOWhyZlVYTTg5YXA1UERlMmJMVFgxZmcyTlkwMmxqR0Y5NjYvdnVyVlpj
NTZYCk5mWHAweWVPT3Vxb2FzOWhQdjc0NDlpd1lVTk1temF0Y0ozZXVIRmp6SnMzTHdZT0hGaVly
N0hqc3FGcjBKYm16NThmbzBhTmlzbVQKSjhlQUFRTnFUUy8yT2w5VGZlc3Y1aHd0THkrUEN5NjRJ
SDcwb3gvRlVVY2RGYWVlZW1wY2M4MDFMUmJyRFZtNk5NWEdqU25LeS84UgpRLy84ejYyanNqTEZY
LzlhRmJ2dlhqc0Q3cjkvUTR3WTBhN2xONjdVbDB4cXZneTZwZjc5KzZjRERqZ2d6Wnc1cy9CeTJG
bG5uWlZTCjJ2U1dwR09PT1NhdFdyVXFWVlZWcGJGang2YXVYYnVtRlN0VzFMbXNndzQ2S0kwWk02
WncrNGdqamtpalI0OHUzSDc0NFlmVDdiZmYKWHJqOXBTOTlLVTJlUERtbHRPbHRTQWNmZkhBYU5t
eFlTaW1sT1hQbXBKMTIyaWtkZU9DQjZYZS8rMTBhTzNac2V1MjExOUp4eHgyWApwazZkbWxKS3Fh
cXFLdlhzMlRNTkhUcTAzc2UrZnYzNnRHelpzcFJTU3UrOTkxNjFhYi81elc5U1JLVG5ubnN1cGJU
cEpiNmhRNGVtCm5YZmVPUzFjdUxEV3ZBODk5RkJLS2FYampqc3U3YnZ2dm5XdTc2T1BQa3BISEhG
RWlvalVwVXVYOU1BRER6UnBucHR2dmpsRlJMcjgKOHN2VDVNbVQwMjIzM1piT1AvLzhkTkJCQjFX
YmI5cTBhU2tpMGlPUFBGTG45blR1M0RsOTRRdGZLR284dHJSaHc0YjArYzkvdm5ENwpvb3N1S3J3
VTNOQXhrMUxEK3pXbGxIYmRkZGRxTDcwZmRkUlJhZVRJa1lYYk45MTBVK3Jldlh2aGRxbjdmTGZk
ZGt2NzdiZGZldUNCCkI5S3NXYk5TNzk2OTA1NTc3cGsyYk5oUTBqSGRrbU5ReXJteWVQSGk5Tm5Q
ZmpiMTdkczNQZmpnZyttdHQ5NUtlKys5ZHpyNzdMTmIKWkF4cWpuOXpQcGE2bEhML3BVdVhwbkhq
eHFVdVhib1VwdmZ1M1R0Tm1EQ2hjTHV4ZmJPbGlvcUt0T3V1dXhaZTJyL3l5aXZUU1NlZApWTysy
SG4zMDBZVzNSYjd3d2dzcEl0Si8vZGQvMWRxdStxNWZOY2UydnVXVmV1M2RtdjA5YmRxMDFLcFZx
MnJMSy9YYS9QTExMeGU5CnZRMk5lVEhIZWluWGcxTDJiMFBuKzdCaHc5SnZmL3Zid3JSaHc0YWxn
UU1IRm00M2RFMXJhQnRhY2l4VHFudmZibm0rTkhSczFIY00KbDZLcHp6MXFuazhON1pzdE5mVitw
VjRIaWgzRGh0WmY4N3BWVTNPY2wvWHRyOXR1dXkxRlJIcisrZWRUU2luZGVPT042VHZmK1U2Swpp
TUs1OWRSVFQ2VXJycmlpY0ovR3JpTU5YWU5TU21ubXpKa3BJdEw1NTUrZmR0NTU1M1RmZmZmVis5
aUx1YzdYMU5qNkczdmU4WXRmCi9DSmRmUEhGS2FXVTVzK2ZueUlpWFhQTk5lbXR0OTZxZDUwcHBU
UnUzTWZwMEVQcmYrdFRVNmJQbTFlWklqNU1NMmI4NHkxWWYvN3oKcHA4OStPRDZXc3Q0NDQycXRO
ZGVIelc0bmMybDJiK0dkOWl3WWZIbEwzODVkdHR0dHhnOGVIRGhROWJUcGsyTGxGTE1uajA3WnN5
WQpFVDE2OUlobHk1YkZILy80eHpxWE0zcjA2SGowMFVjTEw0MGZlZVNSOGVDRER4WmUwcHc1YzJh
TUhEa3lJaUptekpnUnp6enpUT0czClNHM2J0bzB4WThiRVF3ODlGSFBteklrdmZPRUwwYmR2Mzlo
bm4zM2lwSk5PaWx0dXVTVSsrT0NEZU9TUlJ3cS9aV25WcWxVY2UreXgKRFQ2MnRtM2JScGN1WFNJ
aW9tZlBublhPODkzdmZqY0dEeDRjL2Z2M2p5NWR1c1RzMmJOanI3MzJxamJQUXc4OUZFY2ZmWFJF
YkhvWgorYVdYWG9vbm4zeXkxckoyMkdHSGVPeXh4K0xTU3krTkZTdFd4SWdSSXdvZjlpcGxuaTIz
djEyN2R0RytmZnRvMzc1OWc0KzFMdDI3CmR5LzhKbm56OGhvYmo0aUlsU3RYeG9zdnZoaVBQUEpJ
UkVTY2ZmYloxVjZhck8rWWFXeS9SbXg2RzltV0w1VnV0OTEyOWI1MCt0eHoKejVXOHp5TWl2djcx
cjhmeHh4OGZnd2NQanF1dnZqcisvdmUveDh5Wk0wczZwbHR5REVvNVY3cDE2eFo5K3ZTSmZ2MzZ4
YkJodzZKWApyMTR4Wk1pUWVQWFZWMXQ4REpyN3NkU2xsUHQzN2RvMSt2WHJWK3RsOHBySFQzMzdw
cWEyYmR2R2lTZWVHQWNjY0VCRWJIclp2NzdmCjJzMmFOU3ZtelpzWC8velAveHdSRVFNR0RJaGJi
cmtsZXZYcVZXdTc2cnArMVh4YlNFUExLL1hhRzlFOCt6dWlhZGZtZWZQbUZiMk8KaHNhOHNXTzkx
T3RCS2Z1M3Z2UDltV2VlaVVjZWVTU09PZWFZd3J4OSt2U3BkdCtHcm1rTmJVTkxqbVZETm05YlE4
ZEdNY2Z3MXFydgpQSzE1UGpWMkxkNnNxZmRyeWpnV000YU5yYitVdHd3MTVieXNiMzhOSHo0ODJy
UnBVM2dWNUxISEhvc2YvdkNIMGJObno3ampqanNpCll0T3JCS2VkZGxyaFBzVmNSK3E3Qm0zcHFh
ZWVpc3JLeXZqV3Q3NVZlQWRJVGNWZTUydHFhUDJOUGUrNDg4NDdvM1BuemhFUnNmLysKKzBmWHJs
MGpJcUpYcjE0TnJyTWxISGhnNitqVnEzWGNmSE5GVkZWdCt0RDV0R25ySXlKaTMzMWIxNXIvL3Zz
M1pIbjdWVVFML0IyUQpMWGZDVGp2dFZQaDh3NXc1YzZKejU4N1JybDI3YU5ldVhRd2FOQ2dlZi96
eE9sOHlpOWowRFZITGxpMHJ2R1MxWU1HQytQampqK09KCko1NklkZXZXeGNhTkc2TkRodzRSc2Vu
YkQ3cDI3UnB0Mi81ajBBNCsrT0NJaUpnM2IxNUViRHBnTmg4RUVac08zTDU5K3hiZVN4Z1IKc2Yz
MjIyLzErLzUrOHBPZnhPT1BQeDZ2dnZwcTNIMzMzYkh2dnZ0V216NXYzcnhZdm54NS9Qclh2NDVK
a3liRm9rV0xvbDI3ZHZFZgovL0VmZFM2dmJkdTJNV0hDaEhqaWlTZWlhOWV1Y2Y3NTU5ZjZkb1pp
NW9tSUdEcDBhSXdhTlNwT08rMjB1UDc2NitOTFgvcFMwWStyCnNySXlYbi85OWRoLy8vMkx2czlt
WGJwMGlSTlBQREdPUC83NE9QLzg4Nk4zNzk3VlBtZFMzekZUekg0dFJWUDNlYWRPblFyLy80VXYK
ZkNFaU5yM250SlJqdWlYSG9KUnpaZk82dGx4Zng0NGRHLzNhNXVZWWc1WjRMRFZ0N1Zocy9sbDl0
N2ZjTnpXVmxaWEZUVGZkRkN0WApyb3hycnJrbW5uNzY2Vmk5ZW5XZDgvN3hqMytNUXc4OXROcXl4
NDRkVy9oSHErWjIxYngrbGJLOFVxKzlFYzJ6dnlPYWRtMHVaUjJOCmpYbER4M3FwMTROUzltOTk1
L3ZUVHo4ZGZmdjJyVGErZFIyRDlXbHNHMXB5TEJ2YXBtTFcxZGd4dkxVYU9rKzNIT1BHcnNVMWwx
bnEKL1pveWpzV01ZU24vaGpTbUtlZGxmWGJlZWVjWU1tUklUSjA2TlY1Ly9mWFlaWmRkWXB0dHRv
bFRUamtsSG52c3NWaTBhRkc4L3Zycgo4ZG5QZnJad24yS095L3F1UVZ2NnQzLzd0N2o3N3J2anZm
ZmVpeE5PT0tIZWIvWXE1anBmVXpIcnIwL0hqaDJyZlY2MmUvZnVoVjhPCmZSSisvL3NPc1dUSnh0
aHJyMVZ4empubDhlR0hLVHAwS0l2ZXZldDYrOVg2R0RFaVQ0QzBhWHlXNXJGOCtmSm8wNlpOblI4
UXFrdm4KenAxajJMQmhNV1hLbE5oeHh4M2o4NS8vZkxScTFTcW1UcDBhSDMzMFViV3ZWQ3N2TDQv
bHk1ZkhtalZyWXZ2dHQ0K0lpSDc5K2tXYgpObTNxZlgvZnUrKytHOHVYTDYvMTg2ME5rTmF0VzBl
Yk52VVA2eTIzM0JLalI0OHViR2RFeElnUkkrTGVlKytOUllzV3hULzkwejlGClJNUmJiNzBWblR0
M2pvNGRPMFpFeE9HSEh4NzMzWGRmREJvMEtLWlBueDRqUjQ0c2FwNkdYSHZ0dFVVL3J0ZGVleTBx
S2lvYWZOTFMKa0x2dnZqdDY5dXdaTjk1NFk4eWRPemNlZmZUUjJHR0hIUnE4VDFQMmEwT2FZNS8z
NnRVck9uYnNHQjA3ZGl6NW1HNnBNU2psWEdrTwpUUjJESEk4bDkxalVOSEhpeEhqbW1XZml0dHR1
aTF0dnZiWGU5N2t2V2JLa3djOFBsS3FoNVpWNm5OYTBOY2Q4VTg3aFV0ZFI3SmpYCjFKVHJRU25y
cXV0OGYvLzk5N2Y2YnpDVXNnMjV4cklwNi9va05lVmFYTXI5bWpxT2pZMWhVN2U3cHViK3QvWGtr
MCtPeHg1N0xNYU0KR1JPWFhucHBSR3o2WmREUGYvN3pHRE5tVEszUGlKWjZyR3g1RGFycHVPT09p
NnV1dWlvdXZmVFNPUHZzcyt2OVRPM1dhR2o5ZGJubwpvb3ZpakRQT2lQbno1MGY3OXUxanUrMjJL
K3B6d3kzbHdBTmJ4M1BQL1dQYkR6NTRkWXdiMXo1cWZ0L0draVVwM25oall4eDZhSjQwCnlQYVgw
UGZZWTQ5NC9QSEhxLzJtTmFVVVR6MzFWTDMzT2VPTU0yTDY5T254bi8vNW4zSFdXV2ZGNk5HajQv
Nzc3NCtaTTJkVzI1bDkKKy9hTnFxcXErTXRmL2xMNDJkS2xTNk95c2pMMjJXZWZPcGZkczJmUFdM
WnNXYnoyMm10Yi8rQ0t0SExseW5qNzdiZmo2MS8vZXB4NAo0b21GL3k2NzdMS29xcXFLaVJNbkZ1
WmRzbVJKM0hqampkWHVmK2loaDBidjNyMExmM0NwbUhrYTByWnQyM2p2dmZlcWZZTkZYVkpLCmNk
bGxsOFV1dSt3U0YxOThjYkVQdDJEeDRzV3hkT25TdU9HR0cyTEdqQmt4Zi83OHduZDNONlRZL2Jy
NTdUYU5hWTU5L3Y3Nzc4ZnEKMWF2amM1LzdYRW5IZEV1UFFiSG5Tbk5vNmhqa2VpeGJlLyttL2hM
aXBaZGVpdlBPT3krdXUrNjZhcjlackV1dlhyMWk0Y0tGOGNZYgpieFIrbGxKcTBpdDdqUzJ2S2Rm
ZUxUVjFmMGMwN2RwY3lqcEtHZk9hU3IwZWxMS3UrczczSGoxNnhPTEZpK09kZDk2cDl0aHFxdSth
ClZ1cmp6VEdXbTgrWHJUM09jbW5xdGJqWSt6VmxISXNadzhiV1g4cDFxeW5uWlVOT09PR0VhTjI2
ZFN4WXNLQVFGUWNmZkhEc3VlZWUKTVhQbXpEanBwSk9xelYvcXNiTGxOYWd1bDF4eVNaeDY2cWx4
NTUxM0Z2MkwxVkxHcTY3MU4vUzg0OWhqajQyenp6NDdac3lZRVMrOAo4RUtkYjdIL3BFeWV2RDVl
ZmJVcUxyMTBtMXJUL3ZDSERYSHNzVzFyaFVsTEtXazFHemR1alBYcjE5ZjdHNXp5OHZJb0x5OHYz
RjY3CmRtM2hXeFgrNVYvK0paWXNXUkpqeDQ2TkZTdFd4TktsUytPSFAveGhnKzhEUGVhWVk2Sjkr
L2JSdW5YcjZOU3BVd3daTWlSMjJHR0gKNk5HalI3V0RaK1RJa2JIYmJydkY0NDgvWHZqWkN5KzhF
SDM3OWkxODFxS3lzckt3TFJFUm8wYU5palp0MnNRdHQ5eFMrTmtycjd3Uwp5NWN2ajZxcXFsS0dK
U0wrOFkxWERmMTI2OVpiYjYzMjN0L04rdlhyRi8zNjlZdUpFeWZHcWxXckltTFROMHpkY01NTjFm
NXhYTHg0CmNiejc3cnVGOXlrWE0wL0VQLzdpK3ZyMTY2dXR0NktpSXNhTkcxZDRhWFR6ZkZzKy9q
ZmZmRE11dXVpaWVPaWhoK0t1dSs2S0hqMTYKRkRFYTFYM3d3UWR4enozM1JFVEVVVWNkRmNPSER5
LzgxcVdoWTZhWS9kcXZYNzk0L3ZublkvMzY5ZkgrKysvSEcyKzhVZmpyN0pzZgo4K2F2S0c3cVB0
OXkycXhaczJMRWlCRnh3QUVIbEhSTXQrUVlSQlIvcm13ZWt5MHZudVhsNVkwZTgwMGRneTNIdnlV
ZVMxMUt1WDk1CmVYbXNYYnUyOENSd3h4MTNqSGZmZlRjaU5wMFBEZTJibWw1KytlWFl1SEZqdlBU
U1MxRlZWUlZQUC8xMHJGdTNMbEpLdFo1a2pobzEKS3JiWlpwc1lQWHAwdlB6eXkvSHl5eS9IZDcv
NzNjSXJvRFczcStiMXErYllOclM4cGx4N203cS9WNjFhRlJzM2JpeU1XVk91emFWcwpiMk5qM3RD
eFh1cjFvSlQ5VzkvNXZ2a3hiMTVuUlVWRnpKOC92OXI5RzdxbU5iWU5MVG1XTmZkdFJQWHpaZGl3
WVEydXE2NWp1S0tpCklpWk1tRkJZUm4yMjVybkg1dW1iejZlR3JzVjFMYmZVKzVWeW5FUVVQNFlO
cmIvbWRhdW01amd2RzlLbFM1YzQvUEREWThTSUVkV2kKNjZ0Zi9XcnN2ZmZldGFLbW1PT3l2bXRR
eEQrZWIyMzVXRys3N2JiWWYvLzk0NUpMTHFuMXB3OGF1ODdYcGFIMU4vYTg0OS8vL2QvagpzNS85
Ykh6em05K00wMDQ3TGJiZGR0dkdoakFpSWlvcUlocjZmZXJXVG4vdHRZMXgxVlhyWXNxVUR0RzVj
KzEvUysrN3IrNjNYeFY3Cm5wYXMyRStyTDFpd0lJMGRPelpGUk9yVXFWTzYvdnJyMDBjZi9lT1Q4
ci83M2U5U3ExYXQwcjc3N3B2bXpadVg1czZkbS9iWlo1L1UKcGsyYndqY3ovZXBYdjBydDI3ZFBa
V1ZscVd2WHJ1bisrKzl2ZEwzang0OVByNy8rZXVIMkQzN3dnMnEzTjVzN2QyN2FkOTk5MDA5Lwor
dFAweUNPUHBGTlBQVFc5L1BMTEthV1Vwa3laa2pwMDZKQjY5T2lSN3Jubm5zSjlwa3laa2pwMjdK
ajIyV2VmZE1vcHA2VGpqejgrCkhYcm9vV25LbENuRkRrdEtLYVVISG5nZzdiLy8vaWtpMHVEQmc5
T01HVE5xelhQSEhYZWtUcDA2cGVIRGgxZjc0MG9wcGZUb280K20KUG4zNnBJaEl3NGNQVCsrLy8z
NUtLYVcrZmZ1bXdZTUhwNHN1dWloTm1EQWhIWERBQWVtY2M4NUo2OWYvNDVzTEdwdG4rdlRwcVcv
Zgp2aWtpMHY3Nzc1OU9QLzMwZFBycHA2ZmpqanN1ZGUzYU5lMnd3dzZwc3JJeVBmend3K21nZ3c1
S0VaSDY5KytmUm8wYWxRWU5HcFNHCkRoMmF2dld0YjlYNkpxOVNMRml3SVBYcDB5ZE5uRGd4L2VF
UGYwam5uWGRlMnJCaFExSEhURVA3TmFXVW5uamlpZFM1YytlMDU1NTcKcHU5ODV6dHAzTGh4NmN0
Zi9uS2FOV3RXZXY3NTU5T0FBUU5TUktTYmI3NDVWVlJVbEx6UHI3amlpdFN2WDc5MDlkVlhwNS84
NUNmcApXOS82VmxxMTZoL2ZNbEhzTWQyU1k3QlpNZWZLMDA4L25YYmNjY2ZVczJmUE5HZk9uUFRp
aXkrbXZmYmFLN1Z2M3o0OTl0aGp6VG9HCmRZMS9jejZXaGhSei8rZWZmejRkY3NnaEtTTFNEVGZj
a0NvcUt0TDN2dmU5VkZaV2xzYU1HWk4rL2V0Zk43cHZ0dlR4eHgrbkF3ODgKTUcyLy9mWnA5T2pS
NmVHSEgwN2JiYmRkT3YzMDAxTkZSVVd0K2UrLy8vN1V0V3ZYRkJHcFY2OWU2WmxubnFsenUrNjQ0
NDVhMTYrNgp4cmErNVRXMGorclMxUDM5M0hQUHBTOSs4WXNwSXRMNDhlUFRHMis4a1ZKcTJyVzUy
TzF0YU14bnpwelo2TEZleXZXZ2xQMWIzL21lClVrby8rdEdQVXF0V3JWTFBuajNUNmFlZm5rYU9I
Rm50VzdBYXVxWTF0QTExSFNmTk5aYXpaOCt1Yzk5dWViNHNXYktrM25YVnQ1OWYKZXVtbFZGWlds
dTY0NDQ0NnQybnpXRzdOYzQrYTU5TzhlZlBxM1RkYmF1cjlTcjBPRkR1R0RSMVROWmV4cGVZOEx4
dHk4ODAzMS9vRwp6UVVMRnFSTExybWt6dmtiT2k0YnVnYk5tREVqSFhyb29Ta2lVcjkrL2RLOTk5
NmJVa3JwcjMvOWF4bzJiRmlLaU5TNmRldDA0WVVYCnBuZmZmYmZSNjN6TjhXcHMvU2sxZkk2bWxO
S0ZGMTZZSXFLd0xkMjZkVXZublhkZW5mcy9wWlRXclV2cHpqc3JVcytlSzFQNzlpdlMKWFhkVnBB
OC8zTmhzMDk5K3V5cjkrNyt2VFdlZStYRmF2bnhqcXN2S2xSdlRUanV0VEd2WDFwNVd6SG5hRkdV
cHRkQmZTYXJIK3ZYcgpZOUdpUmRHclY2OEdQeXV4V1VWRlJiVnZiS3A1ZTBzcHBYajk5ZGVqVmF0
V3RiNVpwRDVWVlZXeFlzV0s2TktsUzZ4YnR5NjIyYWIyCnkxS2ZsQTgvL0RCMjNubm5LQzh2anpm
ZmZETjIzMzMzV3U5QkxHYWVUOXJHalJ1alZhdFdzWExseW1qYnRtMkRIeUt1UzJQN2RmMzYKOVZG
VlZSWGJicnR0Yk5pd29kR1h2WnV5enhjdlhoeGR1blNwODVndDVwaHU2VEdJS08xY2FZcXRIWVBO
Y2p5V3Jibi84dVhMQzkvdQoxaFJyMTY0dC9NYXJzZU14cFJSTGx5Nk5idDI2TlhsOXhTNnYxR3R2
YyszdnpkdFY2clc1bEhXVU11WTFsWG85S0daZGpaM3ZxMWF0CmlsYXRXc1gyMjI4ZjU1NTdic3lk
T3plZWYvNzV3dlRHcm1tbFB0NldITXVhNTB1cHg4YXlaY3RhOU1QcE5UWDFXbHpxL1VvWngyTEcK
c0xIMU4rVzYxWlR6c2o3bDVlWFJybDI3V3Z0ODFhcFY5WDVPcGJGanBhRnIwTllxWnJ3YXV3Yldk
NDcrNUNjL2laTlBQam5XclZzWApxMWV2anBVclY4YTBhZFBpOU5OUHovNFpxZlhySTU1OXRqSUdE
bXdUOWJ6UUZ4RVI2OVpGTEYyNnNjNi9DeExSTXVkcDlnQUJBRGFwCkswQ0EvejlObWpRcHBrMmJW
dXNyZ3g5OTlOSG8wNmRQclQvTFVGWlc5MXZBUGkxUzJxbkZscDN0VzdBQWdPcm16NThmSzFhc2lK
VFMKVm44TEkvREpPdVNRUStLYjMveG1qQnc1TWdZTUdCQnIxNjZOSlV1V3hMQmh3MnJGUjBUTFBz
SC90UE1LQ0FCOEFxWk1tUkp2dmZWVwpSR3o2ZzJYRGh3Ly9aRGNJMkdvZmZmUlIvUEdQZjR6Rml4
Zkg0TUdENnd3UEJBZ0FBSkJSdHI4REFnQUFJRUFBQUlCc0JBZ0FBSkNOCkFBRUFBTElSSUFBQVFE
WUNCQUFBeUVhQUFBQUEyUWdRQUFBZ0d3RUNBQUJrSTBBQUFJQnNCQWdBQUpDTkFBRUFBTElSSUFB
QVFEWUMKQkFBQXlFYUFBQUFBMlFnUUFBQWdHd0VDQUFCa0kwQUFBSUJzQkFnQUFKQk5tNjFkd1B6
NTgrUHV1Kzh1M1A3TVp6NFRnd2NQamozMgoyS1B3c3djZmZERG16SmtUS2FVNDRvZ2o0aXRmK1Vx
MVpWUlZWY1ZqanowVzk5NTdiNnhldlRwNjkrNGRYL25LVjJMSWtDR05Ubi9xCnFhZmkwVWNmcmJW
ZGUreXhSNXh6empteGNPSEN1UDMyMnlPbEZHVmxaZEc3ZCs4NDl0aGpZN2ZkZHR2YWh3NEFBSlNv
cUZkQUtpc3IKNDdycnJvdExMNzAwTHJ6d3duam5uWGNLMDNiYWFhZm8yRDFzdG5ZQUFCQldTVVJC
VkxGalRKNDhPZmJhYTY5NCsrMjM0L2pqajQrcgpyNzY2TUUrUEhqMmlUWnMyTVgzNjlEanp6RE9q
c3JLeTJ2Sy85NzN2eFkwMzNoaGp4b3lKY2VQR3hYMzMzUmV6Wjg4dWFucjM3dDNqCjNYZmZqZWVl
ZXk3MjJtdXYyR3V2dmFKWHIxNXg3YlhYUmtSRXAwNmQ0azkvK2xNc1g3NDhldlhxRmZQbno0K0JB
d2ZHckZtekNzdi8KNElNUDRyWFhYaXY4OSthYmJ6WmhLQUVBZ0VhbElseDg4Y1hweFJkZlRDbWw5
TUVISDZSenp6MDNMVisrdkREOWIzLzdXOXB2di8ycQozZTdldlh1cXJLd3MvT3p5eXk5UE45OThj
eG82ZEdpNjc3NzdxaTIvZi8vKzZja25ueXpjZnZIRkY5TWpqenhTOVBTYmI3NDVuWHZ1CnVTbWxs
SjU1NXBsVVdWbVpEanJvb01MME04ODhNOTEyMjIyRjI0OC8vbmphYzg4OVUxVlZWVW9wcGNzdXV5
eEZST0cvM3IxN0Z6TXMKQUFCQWlScDlCZVRqanorT3NyS3lPT0NBQXlJaVl1ZWRkNDV6emprbjdy
MzMzbnJ2ODg0NzcwVHYzcjJqZGV2V215TW5mdnZiMzhhbwpVYU5pM0xoeE1XblNwR3J6bjN6eXlY
SFJSUmZGcjM3MXEvalRuLzRVL2Z2M2oyT09PYWJvNlJFUmMrZk9qYXV2dmpxKzhZMXZSSGw1CmVm
emxMMytwZC91T1BQTElXTDE2ZGJ6OTl0dU5QWHdBQUtBWk5mb1prSTBiTjBiYnRtMnIvYXh0Mjdh
eGNlUEdhajlidEdoUm5ITEsKS2ZIKysrOUhXVmxaVEpnd29URHR5U2VmakU2ZE9zWDgrZk9qVTZk
TzhleXp6OFpiYjcwVnZYdjNqb2lJNzMvLyt6Rm8wS0NZT25WcQpUSm8wS1ZhdFdoVjMzWFZYSEhM
SUlVVk5qNGpvM0xsejlPdlhMenAxNmhTdFc3ZU9WcTBhYnFzZGQ5d3hQdnJvbzhZZVBnQUEwSXdh
CmZRV2tZOGVPc1diTm12ajczLzhlRVJIbDVlVnh5eTIzeElnUkk2ck4xN1ZyMTdqaWlpdGl4b3da
TVh2MjdCZzhlSEJoMnUyMzN4NjcKNzc1Ny9QYTN2NDNwMDZkSC8vNzk0OVpiYjQySVRSOHcvLzN2
Zng5RGhneUpTWk1teGJ4NTgrTENDeStNNjYrL3ZxanBtL1hxMVN1TwpPKzY0dVAvKysyTzc3YmFM
SC8vNHgvVStwbzgrK2lqZWYvLzkySHZ2dllzY0pnQUFvRGtVOVMxWTExNTdiVXlZTUNFMmJOZ1FL
MWFzCmlBc3Z2REM2ZCs5ZWJaNXR0dGttOXR0dnYxcjNYYlZxVlR6OTlOUHh4aHR2RkY1SmVlT05O
K0x3d3crUEs2KzhNbGF0V2hVbm5YUlMKeko0OU93NDc3TENJMlBTMnI4OTg1ak1Sc1NrV0dwcGUw
KzY3N3g3cjFxMkwzL3ptTjNIWlpaZlZtcjU4K2ZJWU4yNWNqQnMzTHJiZApkdHVJaURqMzNIT3JC
Vlc3ZHUyS0dSWUFBS0JFWlNtbHREVUxlUGpoaDJQTW1ESHg0WWNmeGk2NzdCS25uWFphL1BTblB5
MU1QK2lnCmcrSnZmL3RiN0xmZmZ2SENDeS9FaHg5K0dJY2RkbGdzWExnd1Jvd1lFZmZjYzA5c3Ur
MjIwYjE3OStqYnQyOTgvUEhIMGFGRGg3anoKemp1amUvZnVVVmxaMmVEMGlSTW54aVdYWEJJYk5t
eUlUcDA2RmRiYnJWdTNtRHQzYmp6NzdMTng5TkZIUi92MjdXTzc3YmFMZHUzYQp4V21ublJiZi8v
NzNvMzM3OWx2ejBBRUFnQkp0ZFlBMGh3VUxGa1Rmdm4zajFWZGZqVjEzM1RWMjNISEhrcVlYSTZV
VUthVkdQeHNDCkFBQzBuRTlGZ0FBQUFQODdlRGtBQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkEKTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJ
QUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWgpDQkFBQUNB
YkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqClFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEEKQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FB
QUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRQpBQURJ
Um9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBCkFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUEKZ0d3RUNBQUFrSTBBQVFBQXNoRWdB
QUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQQpz
aEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJClJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWIKQVFJQUFHUWpRQUFBZ0d3RUNB
QUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RQpDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnCkFBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUEKQUFEWkNCQUFBQ0FiQVFJ
QUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQQpBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBCmtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkEKTmdJRUFBRElSb0FB
QUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWgpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqClFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEEKQVFBQXNoRWdB
QUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWdBQUJBTmdJRQpBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBCkFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUEKZ0d3RUNB
QUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUFrSTBBQVFBQQpzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJClJvQUFBQURaQ0JBQUFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWIKQVFJ
QUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWpRQUFBZ0d3RQpDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnCkFBQkFOZ0lFQUFESVJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUEK
QUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWkNCQUFBQ0FiQVFJQQpBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBCmtJMEFBUUFBc2hFZ0FBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FB
QkEKTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWdBQUJBTmdJRUFBRElSb0FBQUFEWgpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqClFBQUFnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FB
QWtJMEEKQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRQpBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBCkFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlB
QUdRalFBQUEKZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQQpzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJClJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFB
QURaQ0JBQUFDQWIKQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RQpDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnCkFBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FB
QkFOZ0lFQUFESVJvQUEKQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQQpBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBCmtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FB
QWtJMEFBUUFBc2hFZ0FBQkEKTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWgpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1Fq
ClFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlB
QUdRalFBQUFnR3dFQ0FBQWtJMEEKQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRQpBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpD
QkFBCkFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFB
QURaQ0JBQUFDQWJBUUlBQUdRalFBQUEKZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQQpzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU52
OFhoMHhDCllkQkVBbllBQUFBQVNVVk9SSzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12590</attachid>
            <date>2007-01-21 16:49:04 -0800</date>
            <delta_ts>2007-01-21 23:33:39 -0800</delta_ts>
            <desc>much larger patch, passes layout tests, I think we should land this one</desc>
            <filename>RenderTextPatch.txt</filename>
            <type>text/plain</type>
            <size>96971</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MDE2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDEtMjEgIEFuZHJldyBXZWxsaW5ndG9u
ICA8cHJvdG9uQHdpcmV0YXBwZWQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSB0ZXN0IGZvciBmaXggdG8gaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTcKKyAgICAgICAgICBSRUdSRVNTSU9OOiBT
cGVjaWZ5aW5nIGEgY291bnRlciBmb3IgYSBDT0RFIHRhZydzIGNvbnRlbnQgc3R5bGUKKyAgICAg
ICAgICBwcm9wZXJ0eSBvbiBiZWZvcmUgb3IgYWZ0ZXIgY2F1c2VzIGEgY3Jhc2guCisKKyAgICAg
ICAgKiBmYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVsZW1lbnQtZXhwZWN0ZWQuY2hlY2tz
dW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2RlRWxlbWVu
dC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2JlZm9yZVNlbGVjdG9y
T25Db2RlRWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2Jl
Zm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAwNy0wMS0yMSAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGxpbmcgb3V0IHBhdGNoIGZv
ciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYwLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvYmVmb3JlU2VsZWN0b3JPbkNvZGVFbGVtZW50LWV4cGVjdGVkLmNo
ZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVjdG9y
T25Db2RlRWxlbWVudC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC1leHBlY3RlZC5jaGVja3N1
bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZGRjNjcwZjdiOTY4YWZjODM1NTYyNjEyMzU2
OTg1YWMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZvcmVTZWxl
Y3Rvck9uQ29kZUVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzI5OiAiVGhlIHdvcmQgXCJQQVNTRURcIiBz
aG91bGQgYmUgc2hvd24gYmVsb3cgd2l0aCBhIGNpcmxjZSBiZWZvcmUgYW5kIGEgc3F1YXJlIGFm
dGVyLiBUaGlzIGlzIGEgdGVzdCBmb3IgV2ViS2l0IGJ1ZyAiCisgICAgICAgIFJlbmRlcklubGlu
ZSB7QX0gYXQgKDAsMCkgc2l6ZSA0MHgxOCBbY29sb3I9IzAwMDBFRV0KKyAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDcyOSwwKSBzaXplIDQweDE4CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNzI5LDApIHdpZHRoIDQwOiAiMTExOTciCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoNzY5LDApIHNpemUgNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICg3NjksMCkgd2lk
dGggNDogIi4iCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSA3
ODR4MTUKKyAgICAgICAgUmVuZGVySW5saW5lIHtDT0RFfSBhdCAoMCwwKSBzaXplIDY0eDE1Cisg
ICAgICAgICAgUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgOHgxNQorICAg
ICAgICAgICAgUmVuZGVyQ291bnRlciBhdCAoMCwwKSBzaXplIDh4MTUKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggODogIlx4ezI1RTZ9IgorICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoOCwwKSBzaXplIDQ4eDE1CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
OCwwKSB3aWR0aCA0ODogIlBBU1NFRCIKKyAgICAgICAgICBSZW5kZXJJbmxpbmUgKGdlbmVyYXRl
ZCkgYXQgKDAsMCkgc2l6ZSA4eDE1CisgICAgICAgICAgICBSZW5kZXJDb3VudGVyIGF0ICg1Niww
KSBzaXplIDh4MTUKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDU2LDApIHdpZHRoIDg6ICJc
eHsyNUEwfSIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYmVmb3JlU2VsZWN0b3JPbkNvZGVFbGVtZW50
LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUK
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9uQ29kZUVsZW1lbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9iZWZvcmVTZWxlY3Rvck9u
Q29kZUVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Jl
Zm9yZVNlbGVjdG9yT25Db2RlRWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4
IEBACis8aHRtbAorPGhlYWQ+Cis8c3R5bGU+CisgICAgY29kZTpiZWZvcmUgeworICAgICAgY29u
dGVudDogY291bnRlcihkdW1teSxjaXJjbGUpOworICAgIH0KKyAgICBjb2RlOmFmdGVyIHsKKyAg
ICAgIGNvbnRlbnQ6IGNvdW50ZXIoZHVtbXksc3F1YXJlKTsKKyAgICB9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD4KK1RoZSB3b3JkICJQQVNTRUQiIHNob3VsZCBiZSBzaG93biBiZWxv
dyB3aXRoIGEgY2lybGNlIGJlZm9yZSBhbmQgYSBzcXVhcmUgYWZ0ZXIuIFRoaXMgaXMgYSB0ZXN0
IGZvciBXZWJLaXQgYnVnIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMTk3Ij4xMTE5NzwvYT4uCis8L3A+Cis8Y29kZT5QQVNTRUQ8L2NvZGU+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYmVmb3JlU2VsZWN0b3JPbkNvZGVFbGVtZW50Lmh0
bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCk5hbWU6IHN2
bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMTYpCisrKyBXZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NyBAQAorMjAwNy0wMS0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zcGlyZWQgYnkgYSBtdWNoIHNpbXBsZXIgcGF0Y2ggYnkg
QW5kcmV3IFdlbGxpbmd0b24gPHByb3RvbkB3aXJldGFwcGVkLm5ldD4uCisKKyAgICAgICAgLSBm
aXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTcKKyAgICAgICAg
ICBSRUdSRVNTSU9OOiBTcGVjaWZ5aW5nIGEgY291bnRlciBmb3IgYSBDT0RFIHRhZydzIGNvbnRl
bnQgc3R5bGUgcHJvcGVydHkKKyAgICAgICAgICBvbiBiZWZvcmUgb3IgYWZ0ZXIgY2F1c2VzIGEg
Y3Jhc2guCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvYmVmb3JlU2VsZWN0b3JPbkNvZGVFbGVt
ZW50Lmh0bWwKKworICAgICAgICAtIGZpeCByZWdyZXNzaW9uIEkgcmVjZW50bHkgaW50cm9kdWNl
ZCB3aGVyZSB0aGUgbW9ub3NwYWNlIGNhY2hlIGNvdWxkIGJlCisgICAgICAgICAgdXNlZCBmb3Ig
dGV4dCB0aGF0IHdhcyBub3QgQVNDSUksIGlmIHRleHQgd2FzIGNoYW5nZWQgYWZ0ZXIgdGhlIHN0
eWxlIHdhcyBzZXQKKworICAgICAgICBObyB0ZXN0IHlldC4KKworICAgICAgICAtIHN0cmVhbWxp
bmUgUmVuZGVyVGV4dC5oIC0tIHJlbW92ZSB1bm5lZWRlZCBmdW5jdGlvbnMsIG1ha2Ugc29tZSBu
ZWVkbGVzc2x5CisgICAgICAgICAgdmlydHVhbCBmdW5jdGlvbnMgbm9uLXZpcnR1YWwsIHJlbW92
ZSB1bm5lZWRlZCBoZWFkZXIgaW5jbHVkZXMsIHJlcGxhY2UgdXNlCisgICAgICAgICAgb2YgRm9u
dCogd2l0aCBGb250JiBmb3IgY29uc2lzdGVuY3kgd2l0aCBSZW5kZXJTdHlsZSwgdXNlICJ0ZXh0
IiBjb25zaXN0ZW50bHkKKyAgICAgICAgICBpbnN0ZWFkIG9mICJzdHJpbmciCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgIlRl
eHQuaCIsIGRlY2xhcmF0aW9ucyBvZgorICAgICAgICBTT0ZUX0hZUEhFTiwgRG9jdW1lbnRNYXJr
ZXIsIElubGluZUJveCwgUG9zaXRpb24sIFN0cmluZy4gR290IHJpZCBvZiBmcmllbmQKKyAgICAg
ICAgZGVjbGFyYXRpb24gZm9yIElubGluZVRleHRCb3guIENoYW5nZWQgY29uc3RydWN0b3IgdG8g
dGFrZSBhIFBhc3NSZWZQdHIgc2luY2UKKyAgICAgICAgd2UgZG8gdGFrZSBvd2Vyc2hpcCBvZiB0
aGUgcGFzc2VkLWluIHRleHQuIE1hZGUgZGVsZXRlVGV4dEJveGVzKCkgcHJpdmF0ZS4KKyAgICAg
ICAgUmVtb3ZlZCB1bm5lZWRlZCBkYXRhKCkuIE1hZGUgb3ZlcnJpZGUgb2YgbGVuZ3RoKCkgcHJp
dmF0ZSBzbyBwZW9wbGUgd2lsbCB1c2UKKyAgICAgICAgdGhlIGZhc3RlciB0ZXh0TGVuZ3RoKCkg
aW5zdGVhZC4gUmVuYW1lZCBzdHJpbmcoKSB0byB0ZXh0KCkgc28gaXQgbWF0Y2hlcyB1cAorICAg
ICAgICBiZXR0ZXIgd2l0aCBzZXRUZXh0KCkuIFNhbWUgZm9yIHN0cmluZ0xlbmd0aCgpLCBvcmln
aW5hbFN0cmluZygpLCBhbmQKKyAgICAgICAgc2V0SW50ZXJuYWxTdHJpbmcoKSwgd2hpY2ggYXJl
IG5vdyB0ZXh0TGVuZ3RoKCksIG9yaWdpbmFsVGV4dCgpLCBhbmQKKyAgICAgICAgc2V0VGV4dElu
dGVybmFsKCkuIFJlbmFtZWQgdGhlIG9sZCB0ZXh0KCkgZnVuY3Rpb24gdG8gY2hhcmFjdGVycygp
LCBzaW5jZSBpdAorICAgICAgICByZXR1cm5zIGEgcG9pbnRlciBhcyBTdHJpbmdJbXBsOjpjaGFy
YWN0ZXJzIGRvZXMuIENoYW5nZWQgRm9udCogdG8gRm9udCYgZXZlcnl3aGVyZS4KKyAgICAgICAg
UmVuYW1lZCB0aGUgaW50ZXJuYWwgY2FsY01pbk1heFdpZHRoKCkgZnVuY3Rpb24gdG8gY2FsY01p
bk1heFdpZHRoSW50ZXJuYWwoKSBhbmQKKyAgICAgICAgbWFkZSBpdCBub24tdmlydHVhbCBzaW5j
ZSBpdCdzIG5vdCBvdmVycmlkZW4gYW55d2hlcmUuIEFsc28gbWFkZSB0aGUKKyAgICAgICAgdHJp
bW1lZE1pbk1heFdpZHRoKCkgZnVuY3Rpb24gbm9uLXZpcnR1YWwuIE1hZGUgY29udGFpbnNPbmx5
V2hpdGVzcGFjZSgpIHByaXZhdGUuCisgICAgICAgIFJlbW92ZWQgYm90aCBmb250KCkgZnVuY3Rp
b25zIChvbmUgd2FzIG5lZWRsZXNzbHkgdmlydHVhbCkgYW5kIGVsZW1lbnQoKS4KKyAgICAgICAg
UmVuYW1lZCBjYWNoZVdpZHRocygpIHRvIHVwZGF0ZU1vbm9zcGFjZUNoYXJhY3RlcldpZHRoKCkg
YW5kIHJlbW92ZWQgdGhlCisgICAgICAgIHNob3VsZFVzZU1vbm9zcGFjZUNhY2hlKCkgZnVuY3Rp
b24uIFJlbmFtZWQgYWxsQXNjaWkoKSB0byBpc0FsbEFTQ0lJKCkgYW5kIG1hZGUKKyAgICAgICAg
aXQgYW4gaW5saW5lIGZ1bmN0aW9uLiBSZW1vdmVkIHRoZSBtX2FsbEFzY2lpQ2hlY2tlZCBmbGFn
IGFuZCByZW5hbWVkIHRoZQorICAgICAgICBtX2FsbEFzY2lpIGZsYWcgdG8gbV9pc0FsbEFTQ0lJ
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OlJlbmRlclRleHQpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1fYWxs
QXNjaWlDaGVja2VkLgorICAgICAgICBJbml0aWFsaXplIG1fYWxsQVNDSUkgdG8gdHJ1ZS4gQ2hh
bmdlZCBhbGwgb2NjdXJyZW5jZXMgb2YgbV9zdHItPmxlbmd0aCgpIGFuZAorICAgICAgICBtX3N0
ci0+Y2hhcmFjdGVycyAoKSB0byB1c2UgdGhlIHN0cmluZ0xlbmd0aCgpIGFuZCBjaGFyYWN0ZXJz
KCkgaW5saW5lIGZ1bmN0aW9ucworICAgICAgICBpbnN0ZWFkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6c2V0U3R5bGUpOiBSZXBsYWNlZCB0aGUgdW5jb25kaXRpb25hbCBjYWxsIHRv
IGNhY2hlV2lkdGhzCisgICAgICAgIHdpdGggYSBjb25kaXRpb25hbCBjYWxsIHRvIHVwZGF0ZU1v
bm9zcGFjZUNoYXJhY3RlcldpZHRoLiBUaGlzIHNwZWVkcyB1cCB0aGUgY29tbW9uCisgICAgICAg
IGNhc2Ugd2hlcmUgc3R5bGUgaXMgY2hhbmdlZCB3aXRob3V0IGNoYW5naW5nIHRoZSBmb250Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6b3JpZ2luYWxUZXh0KTogQ2hhbmdlZCBjb2Rl
IHRvIG5vdCBkZXBlbmQgb24gb3ZlcnJpZGRlbgorICAgICAgICBlbGVtZW50KCkgZnVuY3Rpb24g
d2l0aCBjYXN0cyB0byBhIFRleHQgbm9kZSAtLSB0aGlzIHdhcyBvbmUgb2Ygb25seSB0d28gY2Fs
bCBzaXRlcy4KKyAgICAgICAgQWxzbyByZW5hbWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyk6IE5hbWUgY2hhbmdlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Ojp1cGRhdGVNb25vc3BhY2VDaGFyYWN0ZXJXaWR0aCk6IFJlbmFtZWQgZnJvbSBj
YWNoZVdpZHRocyBhbmQKKyAgICAgICAgaW5jb3Jwb3JhdGUgdGhlIGNoZWNrIHRoYXQgd2FzIGZv
cm1lcmx5IGluIGEgc2VwYXJhdGUgc2hvdWxkVXNlTW9ub3NwYWNlQ2FjaGUKKyAgICAgICAgZnVu
Y3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZSk6IENo
YW5nZWQgdG8gdGFrZSBhIEZvbnQmIGluc3RlYWQgb2YgRm9udCouCisgICAgICAgIENoYW5nZWQg
dG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGUgc3RyaW5nIGlzIGtub3duIHRv
IGJlIGFsbCBBU0NJSSBpbgorICAgICAgICB0aGUgbV9tb25vc3BhY2VDaGFyYWN0ZXJXaWR0aCBj
b2RlIHBhdGguCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0cmltbWVkTWluTWF4V2lk
dGgpOiBEaXR0by4gQWxzbyB1c2Ugc3R5bGUoKS0+Zm9udCgpIGluc3RlYWQKKyAgICAgICAgb2Yg
Zm9udChmYWxzZSkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjYWxjTWluTWF4V2lk
dGgpOiBEaXR0by4gQWxzbyBjaGFuZ2VkIHRvIHVzZSBzb2Z0SHlwaGVuIGluc3RlYWQKKyAgICAg
ICAgb2YgU09GVF9IWVBIRU4uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb250YWlu
c09ubHlXaGl0ZXNwYWNlKTogTW9yZSBvZiB0aGUgc2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnNldFNlbGVjdGlvblN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0OjpzZXRUZXh0V2l0aE9mZnNldCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
aXNJbmxpbmVGbG93T3JFbXB0eVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OnNldFRleHRJbnRlcm5hbCk6IFVwZGF0ZWQgZm9yIG5hbWUgY2hhbmdlcy4gQWxzbyBj
aGFuZ2VkIHRvCisgICAgICAgIHNldCB0aGUgbV9pc0FsbEFTQ0lJIGZsYWcgZXZlcnkgdGltZSwg
aW4gdGhlIG1vcmUtZWZmaWNpZW50IHdheSB3ZSB1c2UgZWxzZXdoZXJlCisgICAgICAgIChvcidp
bmcgYWxsIHRoZSBjaGFyYWN0ZXJzIHRvZ2V0aGVyKSwgYW5kIHRvIGNhbGwgdXBkYXRlTW9ub3Nw
YWNlQ2hhcmFjdGVyV2lkdGgKKyAgICAgICAgaWYgdGhlICJhbGwgQVNDSUkiLW5lc3Mgb2YgdGhl
IHRleHQgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFRleHQpOiBV
cGRhdGVkIGZvciBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp3
aWR0aCk6IE1vcmUgbGlrZSBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNl
bGVjdGlvblJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNhcmV0
TWF4T2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpwcmV2aW91
c09mZnNldCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bmV4dE9mZnNl
dCk6IERpdHRvLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKiBkb20v
UmFuZ2UuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgICog
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUgb2YgIlRleHQuaCIgd2hpY2gg
aXMgbm8gbG9uZ2VyIGluY2x1ZGVkIGJ5ICJSZW5kZXJUZXh0LmgiLgorCisgICAgICAgICogZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlv
bkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRO
b2RlKToKKyAgICAgICAgVXBkYXRlIGZvciBuYW1lIGNoYW5nZXMgb2Ygc3RyaW5nTGVuZ3RoKCks
IHN0cmluZygpLCBhbmQgb3JpZ2luYWxTdHJpbmcoKSB0bworICAgICAgICB0ZXh0TGVuZ3RoKCks
IHRleHQoKSwgYW5kIG9yaWdpbmFsVGV4dCgpLCBhbmQgdG8gYWx3YXlzIHVzZSB0ZXh0TGVuZ3Ro
KCkgaW5zdGVhZAorICAgICAgICBvZiBsZW5ndGgoKSB3aGVuIHdlIGhhdmUgYSBSZW5kZXJUZXh0
KiByYXRoZXIgdGhhbiBhIFJlbmRlck9iamVjdCouCisgICAgICAgICogZWRpdGluZy92aXNpYmxl
X3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZQYXJhZ3JhcGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmVuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0hvcml6b250YWxseSk6IERpdHRvLiBBbHNvIHJlbW92ZWQgdXNlIG9mIHRo
ZQorICAgICAgICBSZW5kZXJPYmplY3Q6OmZvbnQoKSBmdW5jdGlvbiBhbmQgcmVwbGFjZWQgaXQg
d2l0aCBleHBsaWNpdCBhY2Nlc3MgdG8gdGhlIHN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkpOiBEaXR0by4KKyAgICAgICAgKiByZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpzZWxlY3Rpb25SZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
Ojppc0xpbmVCcmVhayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXJ0RW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRNYXJrZWRUZXh0QmFja2dyb3VuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
VGV4dEJveDo6cGFpbnRTcGVsbGluZ09yR3JhbW1hck1hcmtlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCk6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjphZGRDaGlsZCk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50
ZXI6Om9yaWdpbmFsVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRl
cjo6Y2FsY01pbk1heFdpZHRoKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuaDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6Om9yaWdpbmFsVGV4dCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaDogRGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhY2VQb3NpdGlvbmVkQm94ZXNIb3Jpem9udGFsbHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OnBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL2JpZGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUl0ZXJh
dG9yOjppbmNyZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlJdGVyYXRvcjo6
Y3VycmVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaUl0ZXJhdG9yOjpkaXJlY3Rp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFkZFJ1bik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Y2hlY2tNaWRwb2ludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpjb21wdXRlSG9yaXpvbnRhbFBvc2l0aW9uc0ZvckxpbmUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpza2lwV2hpdGVzcGFjZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyZWFrKTogRGl0dG8uCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQlIuaDogVXBkYXRlZCBzaWduYXR1cmUgb2Ygd2lkdGgg
ZnVuY3Rpb24gd2hpY2ggbm93IHRha2VzIGEKKyAgICAgICAgRm9udCYgaW5zdGVhZCBvZiBhIEZv
bnQqLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDogKFdlYkNvcmU6OnN0
cmlwVHJhaWxpbmdTcGFjZSk6IFVwZGF0ZWQgdG8gbm8gbG9uZ2VyCisgICAgICAgIHVzZSB0aGUg
UmVuZGVyT2JqZWN0Ojpmb250KCkgZnVuY3Rpb24sIGFuZCBhZGRlZCBhIGNvbW1lbnQgYWJvdXQg
Zmlyc3QtbGluZSwgd2hpY2gKKyAgICAgICAgaXMgbm90IGhhbmRsZWQgcHJvcGVybHkgaGVyZS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6IChXZWJDb3JlOjpSZW5k
ZXJNZW51TGlzdDo6dGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOiAoV2ViQ29yZTo6d3JpdGVUZXh0UnVuKToKKyAgICAgICAgRWxpbWluYXRlZCB1c2Ugb2Yg
UmVuZGVyVGV4dDo6ZGF0YSgpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
OiBSZW1vdmVkIFJlbmRlck9iamVjdDo6Zm9udCgpLiBUaGlzIGhhZCB0aGUgYmFkIGVmZmVjdCBv
ZgorICAgICAgICBoYXZpbmcgZXZlcnlvbmUgcGFzcyBpbiBhIGJvb2xlYW4gcmF0aGVyIHRoYW4g
dXNpbmcgdGhlIGNsZWFuZXIgc3R5bGUoKSBhbmQKKyAgICAgICAgZmlyc3RMaW5lU3R5bGUoKSBm
dW5jdGlvbnMgaW4gY2FzZXMgd2hlcmUgdGhlcmUncyBubyBhIGZpcnN0TGluZVN0eWxlIGJvb2xl
YW4uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmdldFZlcnRpY2FsUG9zaXRpb24pOiBSZXBsYWNlZCB1c2Ugb2Yg
UmVuZGVyT2JqZWN0Ojpmb250KCkKKyAgICAgICAgd2l0aCBkaXJlY3QgdXNlIG9mIHRoZSBzdHls
ZSBpbnN0ZWFkLCB3aGljaCBpcyBhcmd1YWJseSBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbnl3YXku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmJhc2VsaW5lUG9zaXRpb24pOiBEaXR0
by4KKwogMjAwNy0wMS0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJvbGxpbmcgb3V0IHBhdGNoIGZvciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzYwLgpJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMTkwMTYpCisrKyBXZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAgIApJbmRleDogV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1JhbmdlLmNwcAko
cmV2aXNpb24gMTkwMTYpCisrKyBXZWJDb3JlL2RvbS9SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNp
bmNsdWRlICJSYW5nZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5j
bHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTkwMTYpCisrKyBXZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3
IEBACiAjaW5jbHVkZSAiU3BsaXRFbGVtZW50Q29tbWFuZC5oIgogI2luY2x1ZGUgIlNwbGl0VGV4
dE5vZGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50
Q29tbWFuZC5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCIKICNpbmNsdWRlICJo
dG1sZWRpdGluZy5oIgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcAkocmV2aXNpb24gMTkwMTYpCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE5MDE2KQorKysgV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjQsMTQgKzky
NCwxNCBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIoCiAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiJXMlc1xuIiwgc2VsZWN0ZWQgPyAiPT0+ICIgOiAiICAgICIsIGVs
ZW1lbnQtPmxvY2FsTmFtZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKS5sYXRpbjEoKSk7CiAgICAgfQog
ICAgIGVsc2UgaWYgKHItPmlzVGV4dCgpKSB7Ci0gICAgICAgIFJlbmRlclRleHQgKnRleHRSZW5k
ZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4ocik7Ci0gICAgICAgIGlmICh0ZXh0UmVu
ZGVyZXItPnN0cmluZ0xlbmd0aCgpID09IDAgfHwgIXRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94
KCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGV4dCo+KHIpOworICAgICAgICBpZiAodGV4dFJlbmRlcmVyLT50ZXh0TGVuZ3RoKCkgPT0g
MCB8fCAhdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKSkgewogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIlcyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVkID8gIj09PiAiIDogIiAgICAi
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBtYXggPSAzNjsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyB0ZXh0ID0g
U3RyaW5nKHRleHRSZW5kZXJlci0+c3RyaW5nKCkpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAg
ICAgRGVwcmVjYXRlZFN0cmluZyB0ZXh0ID0gU3RyaW5nKHRleHRSZW5kZXJlci0+dGV4dCgpKS5k
ZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgICAgIGludCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGgo
KTsKICAgICAgICAgaWYgKHNlbGVjdGVkKSB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gMDsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOCArMjEy
LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKIHsKICAgICBtX2xhc3RU
ZXh0Tm9kZSA9IG1fbm9kZTsKIAotICAgIFJlbmRlclRleHQgKnJlbmRlcmVyID0gc3RhdGljX2Nh
c3Q8UmVuZGVyVGV4dCAqPihtX25vZGUtPnJlbmRlcmVyKCkpOwotICAgIFN0cmluZyBzdHIgPSBy
ZW5kZXJlci0+c3RyaW5nKCk7CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSBzdGF0aWNfY2Fz
dDxSZW5kZXJUZXh0Kj4obV9ub2RlLT5yZW5kZXJlcigpKTsKKyAgICBTdHJpbmcgc3RyID0gcmVu
ZGVyZXItPnRleHQoKTsKIAogICAgIC8vIGhhbmRsZSBwcmUtZm9ybWF0dGVkIHRleHQKICAgICBp
ZiAoIXJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewpAQCAtMjY0LDcg
KzI2NCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiB2b2lkIFRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiB7ICAgIAogICAgIFJlbmRlclRleHQgKnJlbmRlcmVy
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihtX25vZGUtPnJlbmRlcmVyKCkpOwotICAgIFN0
cmluZyBzdHIgPSByZW5kZXJlci0+c3RyaW5nKCk7CisgICAgU3RyaW5nIHN0ciA9IHJlbmRlcmVy
LT50ZXh0KCk7CiAgICAgaW50IHN0YXJ0ID0gbV9vZmZzZXQ7CiAgICAgaW50IGVuZCA9IChtX25v
ZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBMT05HX01BWDsKICAgICB3aGls
ZSAobV90ZXh0Qm94KSB7CkBAIC02ODIsNyArNjgyLDcgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dh
cmRzVGV4dEl0ZXJhdG9yOjpoYQogICAgIG1fbGFzdFRleHROb2RlID0gbV9ub2RlOwogCiAgICAg
UmVuZGVyVGV4dCAqcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KG1fbm9kZS0+
cmVuZGVyZXIoKSk7Ci0gICAgU3RyaW5nIHN0ciA9IHJlbmRlcmVyLT5zdHJpbmcoKTsKKyAgICBT
dHJpbmcgc3RyID0gcmVuZGVyZXItPnRleHQoKTsKIAogICAgIGlmICghcmVuZGVyZXItPmZpcnN0
VGV4dEJveCgpICYmIHN0ci5sZW5ndGgoKSA+IDApCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE5MDE2KQorKysgV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImh0bWxl
ZGl0aW5nLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNvcmUvZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI0LDEzICs2MjQsMTMgQEAgVmlzaWJs
ZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVgogICAgICAgICAgICAgCiAgICAgICAg
IGlmIChyLT5pc1RleHQoKSkgewogICAgICAgICAgICAgaWYgKHN0eWxlLT5wcmVzZXJ2ZU5ld2xp
bmUoKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiB0ZXh0ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyVGV4dCo+KHIpLT50ZXh0KCk7Ci0gICAgICAgICAgICAgICAgaW50IGkgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUZXh0Kj4ociktPmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiBjaGFycyA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihyKS0+Y2hhcmFjdGVycygpOwor
ICAgICAgICAgICAgICAgIGludCBpID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KHIpLT50ZXh0
TGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgaWYgKG4gPT0gc3RhcnROb2RlICYmIG8gPCBpKQogICAgICAgICAgICAgICAgICAgICBpID0g
bWF4KDAsIG8pOwogICAgICAgICAgICAgICAgIHdoaWxlICgtLWkgPj0gMCkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRleHRbaV0gPT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNo
YXJzW2ldID09ICdcbicpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKG4sIGkgKyAxLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IG5vZGUgPSBuOwpAQCAtNjg4LDEyICs2ODgsMTIgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUGFy
YWdyYXBoKGNvbnN0IFZpcwogICAgICAgICAvLyBGSVhNRTogV2UgYXZvaWQgcmV0dXJuaW5nIGEg
cG9zaXRpb24gd2hlcmUgdGhlIHJlbmRlcmVyIGNhbid0IGFjY2VwdCB0aGUgY2FyZXQuCiAgICAg
ICAgIC8vIFdlIHNob3VsZCBwcm9iYWJseSBkbyB0aGlzIGluIG90aGVyIGNhc2VzIHN1Y2ggYXMg
c3RhcnRPZlBhcmFncmFwaC4KICAgICAgICAgaWYgKHItPmlzVGV4dCgpICYmIHItPmNhcmV0TWF4
UmVuZGVyZWRPZmZzZXQoKSA+IDApIHsKLSAgICAgICAgICAgIGludCBsZW5ndGggPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUZXh0ICo+KHIpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGludCBsZW5ndGgg
PSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4ociktPnRleHRMZW5ndGgoKTsKICAgICAgICAgICAg
IGlmIChzdHlsZS0+cHJlc2VydmVOZXdsaW5lKCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBV
Q2hhciogdGV4dCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4ociktPnRleHQoKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4o
ciktPmNoYXJhY3RlcnMoKTsKICAgICAgICAgICAgICAgICBpbnQgbyA9IG4gPT0gc3RhcnROb2Rl
ID8gb2Zmc2V0IDogMDsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbzsgaSA8IGxlbmd0
aDsgKytpKQotICAgICAgICAgICAgICAgICAgICBpZiAodGV4dFtpXSA9PSAnXG4nKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hhcnNbaV0gPT0gJ1xuJykKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obiwgaSwgRE9XTlNUUkVBTSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBub2RlID0gbjsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNp
b24gMTkwMTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgorI2luY2x1ZGUg
IlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxUb2tlbml6
ZXIuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
TGlzdE1hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJv
b3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAKICNpbmNsdWRlIDxtYXRoLmg+CiAK
QEAgLTI1NiwxMCArMjU3LDEwIEBAIGludCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSG9yaXpv
bnRhbGwKICAgICAgICAgaWYgKGN1cnItPm9iamVjdCgpLT5pc1RleHQoKSkgewogICAgICAgICAg
ICAgSW5saW5lVGV4dEJveCogdGV4dCA9IHN0YXRpY19jYXN0PElubGluZVRleHRCb3gqPihjdXJy
KTsKICAgICAgICAgICAgIFJlbmRlclRleHQqIHJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KHRleHQtPm9iamVjdCgpKTsKLSAgICAgICAgICAgIGlmIChydC0+bGVuZ3RoKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAobmVlZHNXb3JkU3BhY2luZyAmJiBEZXByZWNhdGVkQ2hhcihydC0+dGV4
dCgpW3RleHQtPnN0YXJ0KCldKS5pc1NwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIHggKz0g
cnQtPmZvbnQobV9maXJzdExpbmUpLT53b3JkU3BhY2luZygpOwotICAgICAgICAgICAgICAgIG5l
ZWRzV29yZFNwYWNpbmcgPSAhRGVwcmVjYXRlZENoYXIocnQtPnRleHQoKVt0ZXh0LT5lbmQoKV0p
LmlzU3BhY2UoKTsKKyAgICAgICAgICAgIGlmIChydC0+dGV4dExlbmd0aCgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG5lZWRzV29yZFNwYWNpbmcgJiYgRGVwcmVjYXRlZENoYXIocnQtPmNoYXJh
Y3RlcnMoKVt0ZXh0LT5zdGFydCgpXSkuaXNTcGFjZSgpKQorICAgICAgICAgICAgICAgICAgICB4
ICs9IHJ0LT5zdHlsZShtX2ZpcnN0TGluZSktPmZvbnQoKS53b3JkU3BhY2luZygpOworICAgICAg
ICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhRGVwcmVjYXRlZENoYXIocnQtPmNoYXJhY3Rl
cnMoKVt0ZXh0LT5lbmQoKV0pLmlzU3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHRleHQtPnNldFhQb3MoeCk7CiAgICAgICAgICAgICAKQEAgLTQ2MSw3ICs0NjIsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNWZXJ0aWNhbGx5CiAgICAgICAgIGludCBvdmVyZmxv
d1RvcCA9IDA7CiAgICAgICAgIGludCBvdmVyZmxvd0JvdHRvbSA9IDA7CiAgICAgICAgIGlmIChj
dXJyLT5pc1RleHQoKSB8fCBjdXJyLT5pc0lubGluZUZsb3dCb3goKSkgewotICAgICAgICAgICAg
Y29uc3QgRm9udCYgZm9udCA9IGN1cnItPm9iamVjdCgpLT5mb250KG1fZmlyc3RMaW5lKTsKKyAg
ICAgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBjdXJyLT5vYmplY3QoKS0+c3R5bGUobV9maXJz
dExpbmUpLT5mb250KCk7CiAgICAgICAgICAgICBuZXdCYXNlbGluZSA9IGZvbnQuYXNjZW50KCk7
CiAgICAgICAgICAgICBuZXdZICs9IGN1cnItPmJhc2VsaW5lKCkgLSBuZXdCYXNlbGluZTsKICAg
ICAgICAgICAgIG5ld0hlaWdodCA9IG5ld0Jhc2VsaW5lICsgZm9udC5kZXNjZW50KCk7CkBAIC00
OTYsNyArNDk3LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzVmVydGljYWxseQog
ICAgIH0KIAogICAgIGlmIChpc1Jvb3RJbmxpbmVCb3goKSkgewotICAgICAgICBjb25zdCBGb250
JiBmb250ID0gb2JqZWN0KCktPmZvbnQobV9maXJzdExpbmUpOworICAgICAgICBjb25zdCBGb250
JiBmb250ID0gb2JqZWN0KCktPnN0eWxlKG1fZmlyc3RMaW5lKS0+Zm9udCgpOwogICAgICAgICBz
ZXRIZWlnaHQoZm9udC5hc2NlbnQoKSArIGZvbnQuZGVzY2VudCgpKTsKICAgICAgICAgc2V0WVBv
cyh5UG9zKCkgKyBiYXNlbGluZSgpIC0gZm9udC5hc2NlbnQoKSk7CiAgICAgICAgIHNldEJhc2Vs
aW5lKGZvbnQuYXNjZW50KCkpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJ
KHJldmlzaW9uIDE5MDE2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNiwxMSArMTE2LDExIEBAIEludFJlY3QgSW5saW5lVGV4dEJv
eDo6c2VsZWN0aW9uUmVjdChpbnQKICAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdGV4dE9iamVj
dCgpOwogICAgIGludCBzZWxUb3AgPSByb290Qm94LT5zZWxlY3Rpb25Ub3AoKTsKICAgICBpbnQg
c2VsSGVpZ2h0ID0gcm9vdEJveC0+c2VsZWN0aW9uSGVpZ2h0KCk7Ci0gICAgY29uc3QgRm9udCAq
ZiA9IHRleHRPYmotPmZvbnQobV9maXJzdExpbmUpOworICAgIGNvbnN0IEZvbnQmIGYgPSB0ZXh0
T2JqLT5zdHlsZShtX2ZpcnN0TGluZSktPmZvbnQoKTsKIAotICAgIEludFJlY3QgciA9IGVuY2xv
c2luZ0ludFJlY3QoZi0+c2VsZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bih0ZXh0T2JqLT5zdHJp
bmcoKSwgbV9zdGFydCwgbV9sZW4sIHNQb3MsIGVQb3MpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFN0eWxlKHRleHRPYmotPnRh
YldpZHRoKCksIHRleHRQb3MoKSwgbV90b0FkZCwgbV9yZXZlcnNlZCwgbV9kaXJPdmVycmlkZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRQb2ludCh0eCArIG1feCwgdHkgKyBzZWxUb3ApLCBzZWxIZWlnaHQpKTsKKyAgICBJbnRS
ZWN0IHIgPSBlbmNsb3NpbmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bih0
ZXh0T2JqLT50ZXh0KCksIG1fc3RhcnQsIG1fbGVuLCBzUG9zLCBlUG9zKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFN0eWxlKHRl
eHRPYmotPnRhYldpZHRoKCksIHRleHRQb3MoKSwgbV90b0FkZCwgbV9yZXZlcnNlZCwgbV9kaXJP
dmVycmlkZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEludFBvaW50KHR4ICsgbV94LCB0eSArIHNlbFRvcCksIHNlbEhlaWdodCkpOwog
ICAgIGlmIChyLngoKSA+IHR4ICsgbV94ICsgbV93aWR0aCkKICAgICAgICAgci5zZXRXaWR0aCgw
KTsKICAgICBlbHNlIGlmIChyLnJpZ2h0KCkgLSAxID4gdHggKyBtX3ggKyBtX3dpZHRoKQpAQCAt
MjM4LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGkK
IAogYm9vbCBJbmxpbmVUZXh0Qm94Ojppc0xpbmVCcmVhaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG9iamVjdCgpLT5pc0JSKCkgfHwgKG9iamVjdCgpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUo
KSAmJiBsZW4oKSA9PSAxICYmICgqdGV4dE9iamVjdCgpLT5zdHJpbmcoKSlbc3RhcnQoKV0gPT0g
J1xuJyk7CisgICAgcmV0dXJuIG9iamVjdCgpLT5pc0JSKCkgfHwgKG9iamVjdCgpLT5zdHlsZSgp
LT5wcmVzZXJ2ZU5ld2xpbmUoKSAmJiBsZW4oKSA9PSAxICYmICgqdGV4dE9iamVjdCgpLT50ZXh0
KCkpW3N0YXJ0KCldID09ICdcbicpOwogfQogCiBib29sIElubGluZVRleHRCb3g6Om5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQs
IGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkpCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgU3RyaW5nSW1wbCogdGV4dFN0ciA9IHRleHRPYmplY3QoKS0+c3RyaW5nKCk7CisgICAgU3Ry
aW5nSW1wbCogdGV4dFN0ciA9IHRleHRPYmplY3QoKS0+dGV4dCgpOwogCiAgICAgVGV4dFN0eWxl
IHRleHRTdHlsZSh0ZXh0T2JqZWN0KCktPnRhYldpZHRoKCksIHRleHRQb3MoKSwgbV90b0FkZCwg
bV9yZXZlcnNlZCwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZVRvVXNlLT52aXN1YWxseU9yZGVyZWQo
KSk7CiAKQEAgLTQ4OSwxMSArNDg5LDExIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9u
U3RhcnRFbmQoaW4KICAgICBpbnQgc3RhcnRQb3MsIGVuZFBvczsKICAgICBpZiAob2JqZWN0KCkt
PnNlbGVjdGlvblN0YXRlKCkgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUpIHsKICAg
ICAgICAgc3RhcnRQb3MgPSAwOwotICAgICAgICBlbmRQb3MgPSB0ZXh0T2JqZWN0KCktPnN0cmlu
ZygpLT5sZW5ndGgoKTsKKyAgICAgICAgZW5kUG9zID0gdGV4dE9iamVjdCgpLT50ZXh0TGVuZ3Ro
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGV4dE9iamVjdCgpLT5zZWxlY3Rpb25TdGFydEVu
ZChzdGFydFBvcywgZW5kUG9zKTsKICAgICAgICAgaWYgKG9iamVjdCgpLT5zZWxlY3Rpb25TdGF0
ZSgpID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCi0gICAgICAgICAgICBlbmRQb3Mg
PSB0ZXh0T2JqZWN0KCktPnN0cmluZygpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGVuZFBvcyA9
IHRleHRPYmplY3QoKS0+dGV4dExlbmd0aCgpOwogICAgICAgICBlbHNlIGlmIChvYmplY3QoKS0+
c2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCkKICAgICAgICAg
ICAgIHN0YXJ0UG9zID0gMDsKICAgICB9CkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaAogICAgIGludCB5ID0gci0+c2VsZWN0aW9uVG9w
KCk7CiAgICAgaW50IGggPSByLT5zZWxlY3Rpb25IZWlnaHQoKTsKICAgICBwLT5jbGlwKEludFJl
Y3QobV94ICsgdHgsIHkgKyB0eSwgbV93aWR0aCwgaCkpOwotICAgIHAtPmRyYXdIaWdobGlnaHRG
b3JUZXh0KFRleHRSdW4odGV4dE9iamVjdCgpLT5zdHJpbmcoKSwgbV9zdGFydCwgbV9sZW4sIHNQ
b3MsIGVQb3MpLCBJbnRQb2ludChtX3ggKyB0eCwgeSArIHR5KSwgaCwgCisgICAgcC0+ZHJhd0hp
Z2hsaWdodEZvclRleHQoVGV4dFJ1bih0ZXh0T2JqZWN0KCktPnRleHQoKSwgbV9zdGFydCwgbV9s
ZW4sIHNQb3MsIGVQb3MpLCBJbnRQb2ludChtX3ggKyB0eCwgeSArIHR5KSwgaCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dFN0eWxlKHRleHRPYmplY3QoKS0+dGFiV2lkdGgoKSwg
dGV4dFBvcygpLCBtX3RvQWRkLCBtX3JldmVyc2VkLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52
aXN1YWxseU9yZGVyZWQoKSksIGMpOwogICAgIHAtPnJlc3RvcmUoKTsKIH0KQEAgLTU0OSw3ICs1
NDksNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tnCiAgICAgUm9v
dElubGluZUJveCogciA9IHJvb3QoKTsKICAgICBpbnQgeSA9IHItPnNlbGVjdGlvblRvcCgpOwog
ICAgIGludCBoID0gci0+c2VsZWN0aW9uSGVpZ2h0KCk7Ci0gICAgcC0+ZHJhd0hpZ2hsaWdodEZv
clRleHQoVGV4dFJ1bih0ZXh0T2JqZWN0KCktPnN0cmluZygpLCBtX3N0YXJ0LCBtX2xlbiwgc1Bv
cywgZVBvcyksCisgICAgcC0+ZHJhd0hpZ2hsaWdodEZvclRleHQoVGV4dFJ1bih0ZXh0T2JqZWN0
KCktPnRleHQoKSwgbV9zdGFydCwgbV9sZW4sIHNQb3MsIGVQb3MpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFBvaW50KG1feCArIHR4LCB5ICsgdHkpLCBoLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0U3R5bGUodGV4dE9iamVjdCgpLT50YWJXaWR0aCgpLCB0ZXh0
UG9zKCksIG1fdG9BZGQsIG1fcmV2ZXJzZWQsIG1fZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3Vh
bGx5T3JkZXJlZCgpKSwgYyk7CiAgICAgcC0+cmVzdG9yZSgpOwpAQCAtNjM2LDcgKzYzNiw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTcGVsbGluZ09yR3JhbW0KICAgICAgICAgVGV4dFN0
eWxlIHRleHRTdHlsZSA9IFRleHRTdHlsZSh0ZXh0T2JqZWN0KCktPnRhYldpZHRoKCksIHRleHRQ
b3MoKSwgbV90b0FkZCwgbV9yZXZlcnNlZCwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlzdWFs
bHlPcmRlcmVkKCkpOwogICAgICAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IG1heChtYXJrZXIuc3Rh
cnRPZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpMCk7CiAgICAgICAgIGludCBlbmRQb3NpdGlv
biA9IG1pbihtYXJrZXIuZW5kT2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKW1fbGVuKTsgICAg
Ci0gICAgICAgIFRleHRSdW4gcnVuID0gVGV4dFJ1bih0ZXh0T2JqZWN0KCktPnN0cmluZygpLCBt
X3N0YXJ0LCBtX2xlbiwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworICAgICAgICBUZXh0
UnVuIHJ1biA9IFRleHRSdW4odGV4dE9iamVjdCgpLT50ZXh0KCksIG1fc3RhcnQsIG1fbGVuLCBz
dGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiAgICAgICAgIEludFJlY3QgbWFya2VyUmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QoZi0+c2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCB0ZXh0U3R5bGUs
IHN0YXJ0UG9pbnQsIHJvb3QoKS0+c2VsZWN0aW9uSGVpZ2h0KCkpKTsKICAgICAgICAgb2JqZWN0
KCktPmRvY3VtZW50KCktPnNldFJlbmRlcmVkUmVjdEZvck1hcmtlcihvYmplY3QoKS0+bm9kZSgp
LCBtYXJrZXIsIG1hcmtlclJlY3QpOwogICAgIH0KQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyCiAgICAgCiAgICAgaW50IHNQb3MgPSBt
YXgobWFya2VyLnN0YXJ0T2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwogICAgIGludCBl
UG9zID0gbWluKG1hcmtlci5lbmRPZmZzZXQgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOyAg
ICAKLSAgICBUZXh0UnVuIHJ1biA9IFRleHRSdW4odGV4dE9iamVjdCgpLT5zdHJpbmcoKSwgbV9z
dGFydCwgbV9sZW4sIHNQb3MsIGVQb3MpOworICAgIFRleHRSdW4gcnVuID0gVGV4dFJ1bih0ZXh0
T2JqZWN0KCktPnRleHQoKSwgbV9zdGFydCwgbV9sZW4sIHNQb3MsIGVQb3MpOwogICAgIFRleHRT
dHlsZSByZW5kZXJTdHlsZSA9IFRleHRTdHlsZSh0ZXh0T2JqZWN0KCktPnRhYldpZHRoKCksIHRl
eHRQb3MoKSwgbV90b0FkZCwgbV9yZXZlcnNlZCwgbV9kaXJPdmVycmlkZSB8fCBzdHlsZS0+dmlz
dWFsbHlPcmRlcmVkKCkpOwogICAgIEludFBvaW50IHN0YXJ0UG9pbnQgPSBJbnRQb2ludChtX3gg
KyBfdHgsIHkgKyBfdHkpOwogICAgIApAQCAtODE5LDcgKzgxOSw3IEBAIGludCBJbmxpbmVUZXh0
Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihpbnQKICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dCo+KG1fb2JqZWN0KTsKICAgICBSZW5kZXJTdHlsZSAqc3R5bGUgPSB0
ZXh0LT5zdHlsZShtX2ZpcnN0TGluZSk7CiAgICAgY29uc3QgRm9udCogZiA9ICZzdHlsZS0+Zm9u
dCgpOwotICAgIHJldHVybiBmLT5vZmZzZXRGb3JQb3NpdGlvbihUZXh0UnVuKHRleHRPYmplY3Qo
KS0+c3RyaW5nKCksIG1fc3RhcnQsIG1fbGVuKSwKKyAgICByZXR1cm4gZi0+b2Zmc2V0Rm9yUG9z
aXRpb24oVGV4dFJ1bih0ZXh0T2JqZWN0KCktPnRleHQoKSwgbV9zdGFydCwgbV9sZW4pLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0U3R5bGUodGV4dC0+dGFiV2lkdGgoKSwg
dGV4dFBvcygpLCBtX3RvQWRkLCBtX3JldmVyc2VkLCBtX2Rpck92ZXJyaWRlIHx8IHN0eWxlLT52
aXN1YWxseU9yZGVyZWQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF94IC0g
bV94LCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiB9CkBAIC04MjksMTQgKzgyOSwxNCBAQCBpbnQg
SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50CiAgICAgaWYgKGlzTGluZUJyZWFr
KCkpCiAgICAgICAgIHJldHVybiBtX3g7CiAKLSAgICBSZW5kZXJUZXh0ICp0ZXh0ID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dCAqPihtX29iamVjdCk7Ci0gICAgY29uc3QgRm9udCAqZiA9IHRleHQt
PmZvbnQobV9maXJzdExpbmUpOworICAgIFJlbmRlclRleHQqIHRleHQgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUZXh0Kj4obV9vYmplY3QpOworICAgIGNvbnN0IEZvbnQmIGYgPSB0ZXh0LT5zdHlsZSht
X2ZpcnN0TGluZSktPmZvbnQoKTsKICAgICBpbnQgZnJvbSA9IG1fcmV2ZXJzZWQgPyBvZmZzZXQg
LSBtX3N0YXJ0IDogMDsKICAgICBpbnQgdG8gPSBtX3JldmVyc2VkID8gbV9sZW4gOiBvZmZzZXQg
LSBtX3N0YXJ0OwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGFkZCByaWdodEJlYXJpbmcg
aGVyZT8KLSAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChmLT5zZWxlY3Rpb25SZWN0Rm9yVGV4
dChUZXh0UnVuKHRleHQtPnN0cmluZygpLCBtX3N0YXJ0LCBtX2xlbiwgZnJvbSwgdG8pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRTdHls
ZSh0ZXh0LT50YWJXaWR0aCgpLCB0ZXh0UG9zKCksIG1fdG9BZGQsIG1fcmV2ZXJzZWQsIG1fZGly
T3ZlcnJpZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEludFBvaW50KG1feCwgMCksIDApKS5yaWdodCgpOworICAgIHJldHVybiBlbmNsb3Np
bmdJbnRSZWN0KGYuc2VsZWN0aW9uUmVjdEZvclRleHQoVGV4dFJ1bih0ZXh0LT50ZXh0KCksIG1f
c3RhcnQsIG1fbGVuLCBmcm9tLCB0byksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0U3R5bGUodGV4dC0+dGFiV2lkdGgoKSwgdGV4dFBvcygp
LCBtX3RvQWRkLCBtX3JldmVyc2VkLCBtX2Rpck92ZXJyaWRlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KG1feCwgMCksIDApKS5y
aWdodCgpOwogfQogCiBib29sIElubGluZVRleHRCb3g6OmNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50
IG9mZnNldCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAkocmV2aXNpb24gMTkwMTYpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAKICAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9uUmVjdCgpIHsg
cmV0dXJuIEludFJlY3QoKTsgfQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCh1bnNpZ25l
ZCAvKmZyb20qLywgdW5zaWduZWQgLypsZW4qLywgY29uc3QgRm9udCosIGludCAvKnhwb3MqLykg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgodW5zaWduZWQg
Lypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGNvbnN0IEZvbnQmLCBpbnQgLyp4cG9zKi8pIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKHVuc2lnbmVkIC8q
ZnJvbSovLCB1bnNpZ25lZCAvKmxlbiovLCBpbnQgLyp4cG9zKi8sIGJvb2wgLypmaXJzdExpbmUg
PSBmYWxzZSovKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIHNob3J0IGxpbmVI
ZWlnaHQoYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNSb290TGluZUJveCA9IGZhbHNlKSBjb25zdDsK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDE5MDE2KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUwLDEw
ICszMzUwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHN0cmlwVHJhaWxpbmdTcGFjZShpbgogewog
ICAgIGlmICh0cmFpbGluZ1NwYWNlQ2hpbGQgJiYgdHJhaWxpbmdTcGFjZUNoaWxkLT5pc1RleHQo
KSkgewogICAgICAgICAvLyBDb2xsYXBzZSBhd2F5IHRoZSB0cmFpbGluZyBzcGFjZSBhdCB0aGUg
ZW5kIG9mIGEgYmxvY2suCi0gICAgICAgIFJlbmRlclRleHQqIHQgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUZXh0ICo+KHRyYWlsaW5nU3BhY2VDaGlsZCk7Ci0gICAgICAgIGNvbnN0IEZvbnQgKmYgPSB0
LT5mb250KGZhbHNlKTsgIC8vIEZJWE1FOiBXaHkgYXJlIHdlIGlnbm9yaW5nIGZpcnN0LWxpbmU/
CisgICAgICAgIFJlbmRlclRleHQqIHQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4odHJhaWxp
bmdTcGFjZUNoaWxkKTsKICAgICAgICAgY29uc3QgVUNoYXIgc3BhY2UgPSAnICc7Ci0gICAgICAg
IGludCBzcGFjZVdpZHRoID0gZi0+d2lkdGgoVGV4dFJ1bigmc3BhY2UsIDEpKTsKKyAgICAgICAg
aW50IHNwYWNlV2lkdGggPSB0LT5zdHlsZSgpLT5mb250KCkud2lkdGgoVGV4dFJ1bigmc3BhY2Us
IDEpKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgICAgICBpbmxpbmVN
YXggLT0gc3BhY2VXaWR0aDsKICAgICAgICAgaWYgKGlubGluZU1pbiA+IGlubGluZU1heCkKICAg
ICAgICAgICAgIGlubGluZU1pbiA9IGlubGluZU1heDsKQEAgLTM5MTUsNyArMzkxNCw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKCkKICAgICAgICAgLy8gVGhlIG9yaWdp
bmFsIHN0cmluZyBpcyBnb2luZyB0byBiZSBlaXRoZXIgYSBnZW5lcmF0ZWQgY29udGVudCBzdHJp
bmcgb3IgYSBET00gbm9kZSdzCiAgICAgICAgIC8vIHN0cmluZy4gIFdlIHdhbnQgdGhlIG9yaWdp
bmFsIHN0cmluZyBiZWZvcmUgaXQgZ290IHRyYW5zZm9ybWVkIGluIGNhc2UgZmlyc3QtbGV0dGVy
IGhhcwogICAgICAgICAvLyBubyB0ZXh0LXRyYW5zZm9ybSBvciBhIGRpZmZlcmVudCB0ZXh0LXRy
YW5zZm9ybSBhcHBsaWVkIHRvIGl0LgotICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gb2xkVGV4
dCA9IHRleHRPYmotPm9yaWdpbmFsU3RyaW5nKCk7CisgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiBvbGRUZXh0ID0gdGV4dE9iai0+b3JpZ2luYWxUZXh0KCk7CiAgICAgICAgIEFTU0VSVChvbGRU
ZXh0KTsKICAgICAgICAgCiAgICAgICAgIGlmIChvbGRUZXh0ICYmIG9sZFRleHQtPmxlbmd0aCgp
ID4gMCkgewpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCShyZXZpc2lv
biAxOTAxNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFJlbmRlckNvbnRhaW5lcjo6YWRkQ2hp
bGQoUmVuZGVyT2JqCiAgICAgfQogICAgIAogICAgIGlmIChuZXdDaGlsZC0+aXNUZXh0KCkgJiYg
bmV3Q2hpbGQtPnN0eWxlKCktPnRleHRUcmFuc2Zvcm0oKSA9PSBDQVBJVEFMSVpFKSB7Ci0gICAg
ICAgIFJlZlB0cjxTdHJpbmdJbXBsPiB0ZXh0VG9UcmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUZXh0Kj4obmV3Q2hpbGQpLT5vcmlnaW5hbFN0cmluZygpOworICAgICAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gdGV4dFRvVHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KG5ld0No
aWxkKS0+b3JpZ2luYWxUZXh0KCk7CiAgICAgICAgIGlmICh0ZXh0VG9UcmFuc2Zvcm0pCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4obmV3Q2hpbGQpLT5zZXRUZXh0KHRleHRU
b1RyYW5zZm9ybS5yZWxlYXNlKCksIHRydWUpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBS
ZW5kZXJDb3VudGVyOjppc1JlbmRlckNvdW50ZXIoKSBjbwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsU3RyaW5nKCkg
Y29uc3QKK1Bhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0
KCkgY29uc3QKIHsKICAgICBpZiAoIXBhcmVudCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI0
Niw3ICsyNDYsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlckNvdW50ZXI6Om9yCiAK
IHZvaWQgUmVuZGVyQ291bnRlcjo6Y2FsY01pbk1heFdpZHRoKCkKIHsKLSAgICBzZXRJbnRlcm5h
bFN0cmluZyhvcmlnaW5hbFN0cmluZygpKTsKKyAgICBzZXRUZXh0SW50ZXJuYWwob3JpZ2luYWxU
ZXh0KCkpOwogICAgIFJlbmRlclRleHQ6OmNhbGNNaW5NYXhXaWR0aCgpOwogfQogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJDb3VudGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsVGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBjYWxjTWluTWF4V2lkdGgoKTsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lDb3VudGVy
Tm9kZXMoUmVuZGVyT2JqZWN0Kik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVuZGVyTWVudUxp
c3Q6OnNldFRleHQoY29uc3QgU3RyaW4KIAogU3RyaW5nIFJlbmRlck1lbnVMaXN0Ojp0ZXh0KCkK
IHsKLSAgICByZXR1cm4gbV9idXR0b25UZXh0ID8gbV9idXR0b25UZXh0LT5kYXRhKCkgOiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gbV9idXR0b25UZXh0ID8gbV9idXR0b25UZXh0LT50ZXh0KCkgOiAw
OwogfQogCiBJbnRSZWN0IFJlbmRlck1lbnVMaXN0Ojpjb250cm9sQ2xpcFJlY3QoaW50IHR4LCBp
bnQgdHkpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9u
IDE5MDE2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU5Nyw3ICsyNTk3LDcgQEAgc2hvcnQgUmVuZGVyT2JqZWN0OjpnZXRWZXJ0aWNh
bFBvc2l0aW9uKAogICAgICAgICBpZiAodmEgPT0gQkFTRUxJTkUpCiAgICAgICAgICAgICByZXR1
cm4gdnBvczsKIAotICAgICAgICBjb25zdCBGb250JiBmID0gcGFyZW50KCktPmZvbnQoZmlyc3RM
aW5lKTsKKyAgICAgICAgY29uc3QgRm9udCYgZiA9IHBhcmVudCgpLT5zdHlsZShmaXJzdExpbmUp
LT5mb250KCk7CiAgICAgICAgIGludCBmb250c2l6ZSA9IGYucGl4ZWxTaXplKCk7CiAKICAgICAg
ICAgaWYgKHZhID09IFNVQikKQEAgLTI2MTEsNyArMjYxMSw3IEBAIHNob3J0IFJlbmRlck9iamVj
dDo6Z2V0VmVydGljYWxQb3NpdGlvbigKICAgICAgICAgZWxzZSBpZiAodmEgPT0gVEVYVF9CT1RU
T00pIHsKICAgICAgICAgICAgIHZwb3MgKz0gZi5kZXNjZW50KCk7CiAgICAgICAgICAgICBpZiAo
IWlzUmVwbGFjZWQoKSkKLSAgICAgICAgICAgICAgICB2cG9zIC09IGZvbnQoZmlyc3RMaW5lKS5k
ZXNjZW50KCk7CisgICAgICAgICAgICAgICAgdnBvcyAtPSBzdHlsZShmaXJzdExpbmUpLT5mb250
KCkuZGVzY2VudCgpOwogICAgICAgICB9IGVsc2UgaWYgKHZhID09IEJBU0VMSU5FX01JRERMRSkK
ICAgICAgICAgICAgIHZwb3MgKz0gLWxpbmVIZWlnaHQoZmlyc3RMaW5lKSAvIDIgKyBiYXNlbGlu
ZVBvc2l0aW9uKGZpcnN0TGluZSk7CiAgICAgfQpAQCAtMjYzOCw3ICsyNjM4LDcgQEAgc2hvcnQg
UmVuZGVyT2JqZWN0OjpsaW5lSGVpZ2h0KGJvb2wgZmlycwogCiBzaG9ydCBSZW5kZXJPYmplY3Q6
OmJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNSb290TGluZUJveCkgY29u
c3QKIHsKLSAgICBjb25zdCBGb250JiBmID0gZm9udChmaXJzdExpbmUpOworICAgIGNvbnN0IEZv
bnQmIGYgPSBzdHlsZShmaXJzdExpbmUpLT5mb250KCk7CiAgICAgcmV0dXJuIGYuYXNjZW50KCkg
KyAobGluZUhlaWdodChmaXJzdExpbmUsIGlzUm9vdExpbmVCb3gpIC0gZi5oZWlnaHQoKSkgLyAy
OwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTkwMTYpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODU0
LDggKzg1NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAKLSAg
ICBjb25zdCBGb250JiBmb250KGJvb2wgZmlyc3RMaW5lKSBjb25zdCB7IHJldHVybiBzdHlsZShm
aXJzdExpbmUpLT5mb250KCk7IH0KLQogICAgIC8vIFZpcnR1YWwgZnVuY3Rpb24gaGVscGVycyBm
b3IgQ1NTMyBGbGV4aWJsZSBCb3ggTGF5b3V0CiAgICAgdmlydHVhbCBib29sIGlzRmxleGlibGVC
b3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpbmdD
aGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAkocmV2aXNpb24gMTkwMTYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckFy
ZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIlRleHRTdHlsZS5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCkBAIC00Miw5ICs0
MywxOSBAQCB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUqIG5vZGUsIFN0cmluZ0ltcGwqIHN0cikKK3N0
YXRpYyBpbmxpbmUgYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29uc3QgU3RyaW5nSW1wbCog
dGV4dCkKK3sKKyAgICBjb25zdCBVQ2hhciogY2hhcnMgPSB0ZXh0LT5jaGFyYWN0ZXJzKCk7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC0+bGVuZ3RoKCk7CisgICAgVUNoYXIgb3JlZCA9IDA7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICBvcmVk
IHw9IGNoYXJzW2ldOworICAgIHJldHVybiAhKG9yZWQgJiAweEZGODApOworfQorCitSZW5kZXJU
ZXh0OjpSZW5kZXJUZXh0KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyKQog
ICAgICA6IFJlbmRlck9iamVjdChub2RlKQotICAgICAsIG1fc3RyKHN0cikKKyAgICAgLCBtX3Rl
eHQoc3RyKQogICAgICAsIG1fZmlyc3RUZXh0Qm94KDApCiAgICAgICwgbV9sYXN0VGV4dEJveCgw
KQogICAgICAsIG1fbWluV2lkdGgoLTEpCkBAIC01MiwxNCArNjMsMTMgQEAgUmVuZGVyVGV4dDo6
UmVuZGVyVGV4dChOb2RlKiBub2RlLCBTdHJpbgogICAgICAsIG1fc2VsZWN0aW9uU3RhdGUoU2Vs
ZWN0aW9uTm9uZSkKICAgICAgLCBtX2xpbmVzRGlydHkoZmFsc2UpCiAgICAgICwgbV9jb250YWlu
c1JldmVyc2VkVGV4dChmYWxzZSkKLSAgICAgLCBtX2FsbEFzY2lpQ2hlY2tlZChmYWxzZSkKLSAg
ICAgLCBtX2FsbEFzY2lpKGZhbHNlKQorICAgICAsIG1faXNBbGxBU0NJSShtX3RleHQgPyBjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkobV90ZXh0LmdldCgpKSA6IHRydWUpCiAgICAgICwgbV9tb25vc3Bh
Y2VDaGFyYWN0ZXJXaWR0aCgwKQogewogICAgIHNldFJlbmRlclRleHQoKTsKLSAgICBpZiAobV9z
dHIpCi0gICAgICAgIG1fc3RyID0gbV9zdHItPnJlcGxhY2UoJ1xcJywgYmFja3NsYXNoQXNDdXJy
ZW5jeVN5bWJvbCgpKTsKLSAgICBBU1NFUlQoIW1fc3RyIHx8ICFtX3N0ci0+bGVuZ3RoKCkgfHwg
bV9zdHItPmNoYXJhY3RlcnMoKSk7CisgICAgaWYgKG1fdGV4dCkKKyAgICAgICAgbV90ZXh0ID0g
bV90ZXh0LT5yZXBsYWNlKCdcXCcsIGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSk7CisgICAg
QVNTRVJUKCFtX3RleHQgfHwgIXRleHRMZW5ndGgoKSB8fCBjaGFyYWN0ZXJzKCkpOwogfQogCiB2
b2lkIFJlbmRlclRleHQ6OnNldFN0eWxlKFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKQEAgLTc0LDEw
ICs4NCwxMSBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFN0eWxlKFJlbmRlclN0eWxlKiBuCiAgICAg
UmVuZGVyT2JqZWN0OjpzZXRTdHlsZShuZXdTdHlsZSk7CiAKICAgICBpZiAob2xkVHJhbnNmb3Jt
ICE9IG5ld1N0eWxlLT50ZXh0VHJhbnNmb3JtKCkgfHwgb2xkU2VjdXJpdHkgIT0gbmV3U3R5bGUt
PnRleHRTZWN1cml0eSgpKQotICAgICAgICBpZiAoUmVmUHRyPFN0cmluZ0ltcGw+IHRleHRUb1Ry
YW5zZm9ybSA9IG9yaWdpbmFsU3RyaW5nKCkpCisgICAgICAgIGlmIChSZWZQdHI8U3RyaW5nSW1w
bD4gdGV4dFRvVHJhbnNmb3JtID0gb3JpZ2luYWxUZXh0KCkpCiAgICAgICAgICAgICBzZXRUZXh0
KHRleHRUb1RyYW5zZm9ybS5yZWxlYXNlKCksIHRydWUpOwogCi0gICAgY2FjaGVXaWR0aHMoKTsK
KyAgICBpZiAoIW9sZFN0eWxlIHx8IG9sZFN0eWxlLT5mb250KCkgIT0gbmV3U3R5bGUtPmZvbnQo
KSkKKyAgICAgICAgdXBkYXRlTW9ub3NwYWNlQ2hhcmFjdGVyV2lkdGgoKTsKIH0KIAogdm9pZCBS
ZW5kZXJUZXh0OjpkZXN0cm95KCkKQEAgLTE1MSw5ICsxNjIsMTAgQEAgdm9pZCBSZW5kZXJUZXh0
OjpkZWxldGVUZXh0Qm94ZXMoKQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBS
ZW5kZXJUZXh0OjpvcmlnaW5hbFN0cmluZygpIGNvbnN0CitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IFJlbmRlclRleHQ6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQo
KSA/IGVsZW1lbnQoKS0+c3RyaW5nKCkgOiAwOworICAgIE5vZGUqIGUgPSBlbGVtZW50KCk7Cisg
ICAgcmV0dXJuIGUgPyBzdGF0aWNfY2FzdDxUZXh0Kj4oZSktPnN0cmluZygpIDogMDsKIH0KIAog
dm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGlu
dCB0eCwgaW50IHR5KQpAQCAtMTg0LDcgKzE5Niw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6YWRkTGlu
ZUJveFJlY3RzKFZlY3RvcjwKIAogSW5saW5lVGV4dEJveCogUmVuZGVyVGV4dDo6ZmluZE5leHRJ
bmxpbmVUZXh0Qm94KGludCBvZmZzZXQsIGludCYgcG9zKSBjb25zdAogewotICAgIC8vIFRoZSB0
ZXh0IHJ1bnMgcG9pbnQgdG8gcGFydHMgb2YgdGhlIFJlbmRlclRleHQncyBtX3N0cgorICAgIC8v
IFRoZSB0ZXh0IHJ1bnMgcG9pbnQgdG8gcGFydHMgb2YgdGhlIFJlbmRlclRleHQncyBtX3RleHQK
ICAgICAvLyAodGhleSBkb24ndCBpbmNsdWRlICdcbicpCiAgICAgLy8gRmluZCB0aGUgdGV4dCBy
dW4gdGhhdCBpbmNsdWRlcyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldAogICAgIC8vIGFuZCByZXR1
cm4gcG9zLCB3aGljaCBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGNoYXIgaW4gdGhlIHJ1bi4KQEAg
LTIwNSw3ICsyMTcsNyBAQCBJbmxpbmVUZXh0Qm94KiBSZW5kZXJUZXh0OjpmaW5kTmV4dElubGlu
CiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGlu
dCB4LCBpbnQgeSkKIHsKLSAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8IHN0cmluZ0xlbmd0aCgp
ID09IDApCisgICAgaWYgKCFmaXJzdFRleHRCb3goKSB8fCB0ZXh0TGVuZ3RoKCkgPT0gMCkKICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihlbGVtZW50KCksIDAsIERPV05TVFJFQU0pOwog
CiAgICAgLy8gR2V0IHRoZSBvZmZzZXQgZm9yIHRoZSBwb3NpdGlvbiwgc2luY2UgdGhpcyB3aWxs
IHRha2UgcnRsIHRleHQgaW50byBhY2NvdW50LgpAQCAtMzE1LDcgKzMyNyw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBhdExpbmVXcmFwKElubGluZVRleHQKIAogSW50UmVjdCBSZW5kZXJUZXh0Ojpj
YXJldFJlY3QoaW50IG9mZnNldCwgRUFmZmluaXR5IGFmZmluaXR5LCBpbnQqIGV4dHJhV2lkdGhU
b0VuZE9mTGluZSkKIHsKLSAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8ICFzdHJpbmdMZW5ndGgo
KSkKKyAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8ICF0ZXh0TGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBJbnRSZWN0KCk7CiAKICAgICAvLyBGaW5kIHRoZSB0ZXh0IGJveCBmb3IgdGhlIGdpdmVu
IG9mZnNldApAQCAtMzc1LDY1ICszODcsNDEgQEAgSW50UmVjdCBSZW5kZXJUZXh0OjpjYXJldFJl
Y3QoaW50IG9mZnNldAogICAgIHJldHVybiBJbnRSZWN0KGxlZnQsIHRvcCwgMSwgaGVpZ2h0KTsK
IH0KIAotYm9vbCBSZW5kZXJUZXh0OjphbGxBc2NpaSgpIGNvbnN0Cit2b2lkIFJlbmRlclRleHQ6
OnVwZGF0ZU1vbm9zcGFjZUNoYXJhY3RlcldpZHRoKCkKIHsKLSAgICBpZiAobV9hbGxBc2NpaUNo
ZWNrZWQpCi0gICAgICAgIHJldHVybiBtX2FsbEFzY2lpOwotICAgIG1fYWxsQXNjaWlDaGVja2Vk
ID0gdHJ1ZTsKLQotICAgIHVuc2lnbmVkIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG1fc3RyLT5s
ZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIGlmICgoKm1fc3RyKVtpXSA+IDB4N2YpIHsKLSAgICAg
ICAgICAgIG1fYWxsQXNjaWkgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBtX2FsbEFzY2lp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9hbGxBc2NpaSA9IHRydWU7Ci0KLSAgICByZXR1
cm4gbV9hbGxBc2NpaTsKLX0KLQotYm9vbCBSZW5kZXJUZXh0OjpzaG91bGRVc2VNb25vc3BhY2VD
YWNoZShjb25zdCBGb250KiBmKSBjb25zdAotewotICAgIHJldHVybiAoZiAmJiBmLT5pc0ZpeGVk
UGl0Y2goKSAmJiBhbGxBc2NpaSgpICYmICFzdHlsZSgpLT5mb250KCkuaXNTbWFsbENhcHMoKSk7
Ci19Ci0KLS8vIFdlIGNhY2hlIHRoZSB3aWR0aCBvZiB0aGUgJyAnIGNoYXJhY3RlciBmb3IgPHBy
ZT4gdGV4dC4gIFdlIGNvdWxkIGdvIGZ1cnRoZXIKLS8vIGFuZCBjYWNoZSBhIHdpZHRocyBhcnJh
eSBmb3IgYWxsIHN0eWxlcywgYXQgdGhlIGV4cGVuc2Ugb2YgaW5jcmVhc2luZyB0aGUgc2l6ZSBv
ZiB0aGUKLS8vIFJlbmRlclRleHQuCi12b2lkIFJlbmRlclRleHQ6OmNhY2hlV2lkdGhzKCkKLXsK
LSAgICBjb25zdCBGb250KiBmID0gZm9udChmYWxzZSk7Ci0gICAgaWYgKHNob3VsZFVzZU1vbm9z
cGFjZUNhY2hlKGYpKSB7CisgICAgY29uc3QgRm9udCYgZiA9IHN0eWxlKCktPmZvbnQoKTsKKyAg
ICBpZiAoZi5pc0ZpeGVkUGl0Y2goKSAmJiAhZi5pc1NtYWxsQ2FwcygpICYmIG1faXNBbGxBU0NJ
SSkgewogICAgICAgICBjb25zdCBVQ2hhciBjID0gJyAnOwotICAgICAgICBtX21vbm9zcGFjZUNo
YXJhY3RlcldpZHRoID0gZi0+d2lkdGgoVGV4dFJ1bigmYywgMSkpOwotICAgIH0gZWxzZQotICAg
ICAgICBtX21vbm9zcGFjZUNoYXJhY3RlcldpZHRoID0gMDsKKyAgICAgICAgbV9tb25vc3BhY2VD
aGFyYWN0ZXJXaWR0aCA9IGYud2lkdGgoVGV4dFJ1bigmYywgMSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fbW9ub3NwYWNlQ2hhcmFjdGVyV2lkdGggPSAwOwogfQogCi1BTFdBWVNf
SU5MSU5FIGludCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShjb25zdCBGb250KiBmLCBpbnQg
c3RhcnQsIGludCBsZW4sIGludCB0YWJXaWR0aCwgaW50IHhQb3MpIGNvbnN0CitBTFdBWVNfSU5M
SU5FIGludCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShjb25zdCBGb250JiBmLCBpbnQgc3Rh
cnQsIGludCBsZW4sIGludCB0YWJXaWR0aCwgaW50IHhQb3MpIGNvbnN0CiB7CiAgICAgaWYgKG1f
bW9ub3NwYWNlQ2hhcmFjdGVyV2lkdGgpIHsKLSAgICAgICAgaW50IGk7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNpbXBsZmllZDsgaXQncyBvbmx5IHJ1biB3aGVuIG1f
dGV4dCBpcyBrbm93biB0byBiZSBhbGwgMDAwMC0wMDdGLAorICAgICAgICAvLyBidXQgaXMgdXNl
cyB0aGUgZ2VuZXJhbCBwdXJwb3NlIFVuaWNvZGUgZGlyZWN0aW9uIGZ1bmN0aW9uLgogICAgICAg
ICBpbnQgdyA9IDA7Ci0gICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgc3RhcnQgKyBsZW47IGkr
KykgewotICAgICAgICAgICAgVUNoYXIgYyA9ICgqbV9zdHIpW2ldOworICAgICAgICBjaGFyIHBy
ZXZpb3VzQ2hhciA9ICcgJzsgLy8gRklYTUU6IFByZXNlcnZlcyBoaXN0b3JpY2FsIGJlaGF2aW9y
LCBidXQgc2VlbXMgd3JvbmcgZm9yIHN0YXJ0ID4gMC4KKyAgICAgICAgZm9yIChpbnQgaSA9IHN0
YXJ0OyBpIDwgc3RhcnQgKyBsZW47IGkrKykgeworICAgICAgICAgICAgY2hhciBjID0gKCptX3Rl
eHQpW2ldOwogICAgICAgICAgICAgRGlyZWN0aW9uIGRpciA9IGRpcmVjdGlvbihjKTsKICAgICAg
ICAgICAgIGlmIChkaXIgIT0gTm9uU3BhY2luZ01hcmsgJiYgZGlyICE9IEJvdW5kYXJ5TmV1dHJh
bCkgewogICAgICAgICAgICAgICAgIGlmIChjID09ICdcdCcgJiYgdGFiV2lkdGgpCiAgICAgICAg
ICAgICAgICAgICAgIHcgKz0gdGFiV2lkdGggLSAoKHhQb3MgKyB3KSAlIHRhYldpZHRoKTsKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHcgKz0gbV9tb25vc3BhY2VD
aGFyYWN0ZXJXaWR0aDsKLSAgICAgICAgICAgICAgICBpZiAoRGVwcmVjYXRlZENoYXIoYykuaXNT
cGFjZSgpICYmIGkgPiBzdGFydCAmJiAhRGVwcmVjYXRlZENoYXIoKCptX3N0cilbaSAtIDFdKS5p
c1NwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIHcgKz0gZi0+d29yZFNwYWNpbmcoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNzcGFjZShjKSAmJiAhaXNzcGFjZShwcmV2aW91c0NoYXIpKQor
ICAgICAgICAgICAgICAgICAgICB3ICs9IGYud29yZFNwYWNpbmcoKTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHByZXZpb3VzQ2hhciA9IGM7CiAgICAgICAgIH0KLQogICAgICAgICByZXR1
cm4gdzsKICAgICB9CiAKLSAgICByZXR1cm4gZi0+d2lkdGgoVGV4dFJ1bihzdHJpbmcoKSwgc3Rh
cnQsIGxlbiwgMCksIFRleHRTdHlsZSh0YWJXaWR0aCwgeFBvcykpOworICAgIHJldHVybiBmLndp
ZHRoKFRleHRSdW4odGV4dCgpLCBzdGFydCwgbGVuLCAwKSwgVGV4dFN0eWxlKHRhYldpZHRoLCB4
UG9zKSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZE1pbk1heFdpZHRoKGludCBsZWFk
V2lkdGgsCkBAIC00NDcsMTUgKzQzNSwxNSBAQCB2b2lkIFJlbmRlclRleHQ6OnRyaW1tZWRNaW5N
YXhXaWR0aChpbnQgCiAgICAgaWYgKCFjb2xsYXBzZVdoaXRlU3BhY2UpCiAgICAgICAgIHN0cmlw
RnJvbnRTcGFjZXMgPSBmYWxzZTsKIAotICAgIGludCBsZW4gPSBtX3N0ci0+bGVuZ3RoKCk7Ci0g
ICAgaWYgKCFsZW4gfHwgKHN0cmlwRnJvbnRTcGFjZXMgJiYgbV9zdHItPmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKSkpIHsKKyAgICBpbnQgbGVuID0gdGV4dExlbmd0aCgpOworICAgIGlmICghbGVu
IHx8IChzdHJpcEZyb250U3BhY2VzICYmIG1fdGV4dC0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
KSkgewogICAgICAgICBtYXhXID0gMDsKICAgICAgICAgaGFzQnJlYWsgPSBmYWxzZTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2hhc1RhYikKLSAgICAgICAgY2FsY01pbk1h
eFdpZHRoKGxlYWRXaWR0aCk7CisgICAgICAgIGNhbGNNaW5NYXhXaWR0aEludGVybmFsKGxlYWRX
aWR0aCk7CiAKICAgICBtaW5XID0gbV9taW5XaWR0aDsKICAgICBtYXhXID0gbV9tYXhXaWR0aDsK
QEAgLTQ2OCwxMSArNDU2LDExIEBAIHZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZE1pbk1heFdpZHRo
KGludCAKICAgICBoYXNCcmVha2FibGVDaGFyID0gbV9oYXNCcmVha2FibGVDaGFyOwogICAgIGhh
c0JyZWFrID0gbV9oYXNCcmVhazsKIAotICAgIGlmIChzdHJpcEZyb250U3BhY2VzICYmICgoKm1f
c3RyKVswXSA9PSAnICcgfHwgKCgqbV9zdHIpWzBdID09ICdcbicgJiYgIXN0eWxlKCktPnByZXNl
cnZlTmV3bGluZSgpKSB8fCAoKm1fc3RyKVswXSA9PSAnXHQnKSkgewotICAgICAgICBjb25zdCBG
b250KiBmID0gZm9udChmYWxzZSk7IC8vIEZJWE1FOiBXaHkgaXMgaXQgb2sgdG8gaWdub3JlIGZp
cnN0LWxpbmUgaGVyZT8KKyAgICBpZiAoc3RyaXBGcm9udFNwYWNlcyAmJiAoKCptX3RleHQpWzBd
ID09ICcgJyB8fCAoKCptX3RleHQpWzBdID09ICdcbicgJiYgIXN0eWxlKCktPnByZXNlcnZlTmV3
bGluZSgpKSB8fCAoKm1fdGV4dClbMF0gPT0gJ1x0JykpIHsKKyAgICAgICAgY29uc3QgRm9udCYg
ZiA9IHN0eWxlKCktPmZvbnQoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgog
ICAgICAgICBjb25zdCBVQ2hhciBzcGFjZSA9ICcgJzsKLSAgICAgICAgaW50IHNwYWNlV2lkdGgg
PSBmLT53aWR0aChUZXh0UnVuKCZzcGFjZSwgMSkpOwotICAgICAgICBtYXhXIC09IHNwYWNlV2lk
dGggKyBmLT53b3JkU3BhY2luZygpOworICAgICAgICBpbnQgc3BhY2VXaWR0aCA9IGYud2lkdGgo
VGV4dFJ1bigmc3BhY2UsIDEpKTsKKyAgICAgICAgbWF4VyAtPSBzcGFjZVdpZHRoICsgZi53b3Jk
U3BhY2luZygpOwogICAgIH0KIAogICAgIHN0cmlwRnJvbnRTcGFjZXMgPSBjb2xsYXBzZVdoaXRl
U3BhY2UgJiYgbV9oYXNFbmRXUzsKQEAgLTQ4MiwxMyArNDcwLDEzIEBAIHZvaWQgUmVuZGVyVGV4
dDo6dHJpbW1lZE1pbk1heFdpZHRoKGludCAKIAogICAgIC8vIENvbXB1dGUgb3VyIG1heCB3aWR0
aHMgYnkgc2Nhbm5pbmcgdGhlIHN0cmluZyBmb3IgbmV3bGluZXMuCiAgICAgaWYgKGhhc0JyZWFr
KSB7Ci0gICAgICAgIGNvbnN0IEZvbnQqIGYgPSBmb250KGZhbHNlKTsKKyAgICAgICAgY29uc3Qg
Rm9udCYgZiA9IHN0eWxlKCktPmZvbnQoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1s
aW5lLgogICAgICAgICBib29sIGZpcnN0TGluZSA9IHRydWU7CiAgICAgICAgIGJlZ2luTWF4VyA9
IG1heFc7CiAgICAgICAgIGVuZE1heFcgPSBtYXhXOwogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICBpbnQgbGluZWxlbiA9IDA7Ci0gICAgICAgICAg
ICB3aGlsZSAoaSArIGxpbmVsZW4gPCBsZW4gJiYgKCptX3N0cilbaSArIGxpbmVsZW5dICE9ICdc
bicpCisgICAgICAgICAgICB3aGlsZSAoaSArIGxpbmVsZW4gPCBsZW4gJiYgKCptX3RleHQpW2kg
KyBsaW5lbGVuXSAhPSAnXG4nKQogICAgICAgICAgICAgICAgIGxpbmVsZW4rKzsKIAogICAgICAg
ICAgICAgaWYgKGxpbmVsZW4pIHsKQEAgLTUxNSwxMCArNTAzLDEwIEBAIHZvaWQgUmVuZGVyVGV4
dDo6dHJpbW1lZE1pbk1heFdpZHRoKGludCAKIAogdm9pZCBSZW5kZXJUZXh0OjpjYWxjTWluTWF4
V2lkdGgoKQogewotICAgIC8vIFVzZSAwIGZvciB0aGUgbGVhZFdpZHRoLiAgIElmIHRoZSB0ZXh0
IGNvbnRhaW5zIGEgdmFyaWFibGUgd2lkdGggdGFiLCB0aGUgcmVhbCB3aWR0aAorICAgIC8vIFVz
ZSAwIGZvciB0aGUgbGVhZFdpZHRoLiBJZiB0aGUgdGV4dCBjb250YWlucyBhIHZhcmlhYmxlIHdp
ZHRoIHRhYiwgdGhlIHJlYWwgd2lkdGgKICAgICAvLyB3aWxsIGdldCBtZWFzdXJlZCB3aGVuIHRy
aW1tZWRNaW5NYXhXaWR0aCBjYWxscyBhZ2FpbiB3aXRoIHRoZSByZWFsIGxlYWRXaWR0aC4KICAg
ICBBU1NFUlQoIW1pbk1heEtub3duKCkpOwotICAgIGNhbGNNaW5NYXhXaWR0aCgwKTsKKyAgICBj
YWxjTWluTWF4V2lkdGhJbnRlcm5hbCgwKTsKIH0KIAogaW5saW5lIGJvb2wgaXNTcGFjZUFjY29y
ZGluZ1RvU3R5bGUoVUNoYXIgYywgUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtNTI2LDkgKzUxNCw4
IEBAIGlubGluZSBib29sIGlzU3BhY2VBY2NvcmRpbmdUb1N0eWxlKFVDaGEKICAgICByZXR1cm4g
YyA9PSAnICcgfHwgKGMgPT0gbm9CcmVha1NwYWNlICYmIHN0eWxlLT5uYnNwTW9kZSgpID09IFNQ
QUNFKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0OjpjYWxjTWluTWF4V2lkdGgoaW50IGxlYWRXaWR0
aCkKK3ZvaWQgUmVuZGVyVGV4dDo6Y2FsY01pbk1heFdpZHRoSW50ZXJuYWwoaW50IGxlYWRXaWR0
aCkKIHsKLSAgICAvLyBGSVhNRTogY2FsYyBNaW4gYW5kIE1heCB3aWR0aC4uLgogICAgIG1fbWlu
V2lkdGggPSAwOwogICAgIG1fYmVnaW5NaW5XaWR0aCA9IDA7CiAgICAgbV9lbmRNaW5XaWR0aCA9
IDA7CkBAIC01NDUsMTEgKzUzMiwxMCBAQCB2b2lkIFJlbmRlclRleHQ6OmNhbGNNaW5NYXhXaWR0
aChpbnQgbGVhCiAgICAgbV9oYXNCZWdpbldTID0gZmFsc2U7CiAgICAgbV9oYXNFbmRXUyA9IGZh
bHNlOwogCi0gICAgLy8gRklYTUU6IG5vdCAxMDAlIGNvcnJlY3QgZm9yIGZpcnN0LWxpbmUKLSAg
ICBjb25zdCBGb250KiBmID0gZm9udChmYWxzZSk7CisgICAgY29uc3QgRm9udCYgZiA9IHN0eWxl
KCktPmZvbnQoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgIGludCB3
b3JkU3BhY2luZyA9IHN0eWxlKCktPndvcmRTcGFjaW5nKCk7Ci0gICAgaW50IGxlbiA9IG1fc3Ry
LT5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciogdHh0ID0gbV9zdHItPmNoYXJhY3RlcnMoKTsK
KyAgICBpbnQgbGVuID0gdGV4dExlbmd0aCgpOworICAgIGNvbnN0IFVDaGFyKiB0eHQgPSBjaGFy
YWN0ZXJzKCk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAgICAgYm9vbCBp
Z25vcmluZ1NwYWNlcyA9IGZhbHNlOwogICAgIGJvb2wgaXNTcGFjZSA9IGZhbHNlOwpAQCAtNTky
LDEyICs1NzgsMTIgQEAgdm9pZCBSZW5kZXJUZXh0OjpjYWxjTWluTWF4V2lkdGgoaW50IGxlYQog
ICAgICAgICAgICAgaWdub3JpbmdTcGFjZXMgPSBmYWxzZTsKIAogICAgICAgICAvLyBJZ25vcmUg
c3BhY2VzIGFuZCBzb2Z0IGh5cGhlbnMKLSAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzIHx8IGMg
PT0gU09GVF9IWVBIRU4pCisgICAgICAgIGlmIChpZ25vcmluZ1NwYWNlcyB8fCBjID09IHNvZnRI
eXBoZW4pCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBib29sIGhhc0JyZWFrID0g
aXNCcmVha2FibGUodHh0LCBpLCBsZW4sIG5leHRCcmVha2FibGUsIGJyZWFrTkJTUCk7CiAgICAg
ICAgIGludCBqID0gaTsKLSAgICAgICAgd2hpbGUgKGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29y
ZGluZ1RvU3R5bGUoYywgc3R5bGUoKSkgJiYgYyAhPSAnXHQnICYmIGMgIT0gU09GVF9IWVBIRU4p
IHsKKyAgICAgICAgd2hpbGUgKGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUo
Yywgc3R5bGUoKSkgJiYgYyAhPSAnXHQnICYmIGMgIT0gc29mdEh5cGhlbikgewogICAgICAgICAg
ICAgaisrOwogICAgICAgICAgICAgaWYgKGogPT0gbGVuKQogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNjU5LDcgKzY0NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y2FsY01pbk1heFdpZHRoKGlu
dCBsZWEKICAgICAgICAgICAgICAgICAgICAgbV9tYXhXaWR0aCA9IGN1cnJNYXhXaWR0aDsKICAg
ICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gZi0+d2lkdGgoVGV4dFJ1bih0eHQgKyBpLCAx
KSwgVGV4dFN0eWxlKHRhYldpZHRoKCksIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCkpOworICAg
ICAgICAgICAgICAgIGN1cnJNYXhXaWR0aCArPSBmLndpZHRoKFRleHRSdW4odHh0ICsgaSwgMSks
IFRleHRTdHlsZSh0YWJXaWR0aCgpLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgpKTsKICAgICAg
ICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gaXNTcGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0
ZXJJc1NwYWNlICYmIGkgPT0gbGVuIC0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
Njg5LDcgKzY3NSw3IEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgK
IHsKICAgICB1bnNpZ25lZCBjdXJyUG9zOwogICAgIGZvciAoY3VyclBvcyA9IGZyb207Ci0gICAg
ICAgICBjdXJyUG9zIDwgZnJvbSArIGxlbiAmJiAoKCptX3N0cilbY3VyclBvc10gPT0gJ1xuJyB8
fCAoKm1fc3RyKVtjdXJyUG9zXSA9PSAnICcgfHwgKCptX3N0cilbY3VyclBvc10gPT0gJ1x0Jyk7
CisgICAgICAgICBjdXJyUG9zIDwgZnJvbSArIGxlbiAmJiAoKCptX3RleHQpW2N1cnJQb3NdID09
ICdcbicgfHwgKCptX3RleHQpW2N1cnJQb3NdID09ICcgJyB8fCAoKm1fdGV4dClbY3VyclBvc10g
PT0gJ1x0Jyk7CiAgICAgICAgICBjdXJyUG9zKyspOwogICAgIHJldHVybiBjdXJyUG9zID49IChm
cm9tICsgbGVuKTsKIH0KQEAgLTcxNiwxMSArNzAyLDYgQEAgaW50IFJlbmRlclRleHQ6OnlQb3Mo
KSBjb25zdAogICAgIHJldHVybiBtX2ZpcnN0VGV4dEJveCA/IG1fZmlyc3RUZXh0Qm94LT5tX3kg
OiAwOwogfQogCi1jb25zdCBGb250JiBSZW5kZXJUZXh0Ojpmb250KCkKLXsKLSAgICByZXR1cm4g
c3R5bGUoKS0+Zm9udCgpOwotfQotCiB2b2lkIFJlbmRlclRleHQ6OnNldFNlbGVjdGlvblN0YXRl
KFNlbGVjdGlvblN0YXRlIHN0YXRlKQogewogICAgIElubGluZVRleHRCb3gqIGJveDsKQEAgLTcz
MCw3ICs3MTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjCiAg
ICAgICAgIGludCBzdGFydFBvcywgZW5kUG9zOwogICAgICAgICBzZWxlY3Rpb25TdGFydEVuZChz
dGFydFBvcywgZW5kUG9zKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0
aW9uU3RhcnQpIHsKLSAgICAgICAgICAgIGVuZFBvcyA9IG1fc3RyLT5sZW5ndGgoKTsKKyAgICAg
ICAgICAgIGVuZFBvcyA9IHRleHRMZW5ndGgoKTsKIAogICAgICAgICAgICAgLy8gdG8gaGFuZGxl
IHNlbGVjdGlvbiBmcm9tIGVuZCBvZiB0ZXh0IHRvIGVuZCBvZiBsaW5lCiAgICAgICAgICAgICBp
ZiAoc3RhcnRQb3MgIT0gMCAmJiBzdGFydFBvcyA9PSBlbmRQb3MpCkBAIC03NTgsNyArNzM5LDcg
QEAgdm9pZCBSZW5kZXJUZXh0OjpzZXRTZWxlY3Rpb25TdGF0ZShTZWxlYwogCiB2b2lkIFJlbmRl
clRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW4sIGJvb2wgZm9yY2UpCiB7Ci0gICAgdW5zaWduZWQg
b2xkTGVuID0gbV9zdHIgPyBtX3N0ci0+bGVuZ3RoKCkgOiAwOworICAgIHVuc2lnbmVkIG9sZExl
biA9IG1fdGV4dCA/IHRleHRMZW5ndGgoKSA6IDA7CiAgICAgdW5zaWduZWQgbmV3TGVuID0gdGV4
dCA/IHRleHQtPmxlbmd0aCgpIDogMDsKICAgICBpbnQgZGVsdGEgPSBuZXdMZW4gLSBvbGRMZW47
CiAgICAgdW5zaWduZWQgZW5kID0gbGVuID8gb2Zmc2V0ICsgbGVuIC0gMSA6IG9mZnNldDsKQEAg
LTgyNywyMCArODA4LDIxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lubGluZUZsb3dPckVtcHR5
VGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCFvLT5pc1RleHQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFJlbmRl
clRleHQqPihvKS0+c3RyaW5nKCk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgU3RyaW5nSW1wbCog
dGV4dCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihvKS0+dGV4dCgpOworICAgIGlmICghdGV4
dCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIHN0cmluZy0+bGVuZ3RoKCkgPT0g
MDsKKyAgICByZXR1cm4gIXRleHQtPmxlbmd0aCgpOwogfQogCi12b2lkIFJlbmRlclRleHQ6OnNl
dEludGVybmFsU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGV4dCkKK3ZvaWQgUmVuZGVy
VGV4dDo6c2V0VGV4dEludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGV4dCkKIHsKLSAg
ICBtX2FsbEFzY2lpQ2hlY2tlZCA9IGZhbHNlOworICAgIGJvb2wgd2FzQWxsQVNDSUkgPSBtX2lz
QWxsQVNDSUk7CisgICAgYm9vbCBpc0FsbEFTQ0lJID0gdHJ1ZTsKIAotICAgIG1fc3RyID0gdGV4
dDsKKyAgICBtX3RleHQgPSB0ZXh0OwogCi0gICAgaWYgKG1fc3RyKSB7Ci0gICAgICAgIG1fc3Ry
ID0gbV9zdHItPnJlcGxhY2UoJ1xcJywgYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpKTsKKyAg
ICBpZiAobV90ZXh0KSB7CisgICAgICAgIG1fdGV4dCA9IG1fdGV4dC0+cmVwbGFjZSgnXFwnLCBi
YWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpOwogICAgICAgICBpZiAoc3R5bGUoKSkgewogICAg
ICAgICAgICAgc3dpdGNoIChzdHlsZSgpLT50ZXh0VHJhbnNmb3JtKCkpIHsKICAgICAgICAgICAg
ICAgICBjYXNlIFRUTk9ORToKQEAgLTg1MywxNiArODM1LDE2IEBAIHZvaWQgUmVuZGVyVGV4dDo6
c2V0SW50ZXJuYWxTdHJpbmcoUGFzc1IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIgPSAnICc7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1RleHQgJiYgcHJldmlvdXNUZXh0LT5pc1Rl
eHQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmdJbXBsKiBwcmV2aW91c1N0
cmluZyA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihwcmV2aW91c1RleHQpLT5zdHJpbmcoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmdJbXBsKiBwcmV2aW91c1N0cmluZyA9
IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihwcmV2aW91c1RleHQpLT50ZXh0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSAoKnByZXZpb3VzU3RyaW5n
KVtwcmV2aW91c1N0cmluZy0+bGVuZ3RoKCkgLSAxXTsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dHIgPSBtX3N0ci0+Y2FwaXRhbGl6ZShwcmV2aW91c0NoYXJhY3Rlcik7CisgICAgICAgICAgICAg
ICAgICAgIG1fdGV4dCA9IG1fdGV4dC0+Y2FwaXRhbGl6ZShwcmV2aW91c0NoYXJhY3Rlcik7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBjYXNlIFVQUEVSQ0FTRToKLSAgICAgICAgICAgICAgICAgICAgbV9zdHIgPSBtX3N0ci0+
dXBwZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgbV90ZXh0ID0gbV90ZXh0LT51cHBlcigpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIExPV0VSQ0FT
RToKLSAgICAgICAgICAgICAgICAgICAgbV9zdHIgPSBtX3N0ci0+bG93ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV90ZXh0ID0gbV90ZXh0LT5sb3dlcigpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtODcyLDI5ICs4NTQsMzYgQEAgdm9pZCBSZW5k
ZXJUZXh0OjpzZXRJbnRlcm5hbFN0cmluZyhQYXNzUgogICAgICAgICAgICAgICAgIGNhc2UgVFNO
T05FOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFRT
Q0lSQ0xFOgotICAgICAgICAgICAgICAgICAgICBtX3N0ciA9IG1fc3RyLT5zZWN1cmUod2hpdGVC
dWxsZXQpOworICAgICAgICAgICAgICAgICAgICBtX3RleHQgPSBtX3RleHQtPnNlY3VyZSh3aGl0
ZUJ1bGxldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNh
c2UgVFNESVNDOgotICAgICAgICAgICAgICAgICAgICBtX3N0ciA9IG1fc3RyLT5zZWN1cmUoYnVs
bGV0KTsKKyAgICAgICAgICAgICAgICAgICAgbV90ZXh0ID0gbV90ZXh0LT5zZWN1cmUoYnVsbGV0
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBUU1NR
VUFSRToKLSAgICAgICAgICAgICAgICAgICAgbV9zdHIgPSBtX3N0ci0+c2VjdXJlKGJsYWNrU3F1
YXJlKTsKKyAgICAgICAgICAgICAgICAgICAgbV90ZXh0ID0gbV90ZXh0LT5zZWN1cmUoYmxhY2tT
cXVhcmUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaXNBbGxBU0NJSSA9
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3RleHQuZ2V0KCkpOwogICAgIH0KIAotICAgIEFTU0VS
VCghaXNCUigpIHx8IChtX3N0ci0+bGVuZ3RoKCkgPT0gMSAmJiAoKm1fc3RyKVswXSA9PSAnXG4n
KSk7Ci0gICAgQVNTRVJUKCFtX3N0ci0+bGVuZ3RoKCkgfHwgbV9zdHItPmNoYXJhY3RlcnMoKSk7
CisgICAgbV9pc0FsbEFTQ0lJID0gaXNBbGxBU0NJSTsKKworICAgIEFTU0VSVCghaXNCUigpIHx8
ICh0ZXh0TGVuZ3RoKCkgPT0gMSAmJiAoKm1fdGV4dClbMF0gPT0gJ1xuJykpOworICAgIEFTU0VS
VCghdGV4dExlbmd0aCgpIHx8IGNoYXJhY3RlcnMoKSk7CisKKyAgICBpZiAod2FzQWxsQVNDSUkg
IT0gaXNBbGxBU0NJSSkKKyAgICAgICAgdXBkYXRlTW9ub3NwYWNlQ2hhcmFjdGVyV2lkdGgoKTsK
IH0KIAogdm9pZCBSZW5kZXJUZXh0OjpzZXRUZXh0KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGV4
dCwgYm9vbCBmb3JjZSkKIHsKICAgICBpZiAoIXRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBp
ZiAoIWZvcmNlICYmIGVxdWFsKG1fc3RyLmdldCgpLCB0ZXh0LmdldCgpKSkKKyAgICBpZiAoIWZv
cmNlICYmIGVxdWFsKG1fdGV4dC5nZXQoKSwgdGV4dC5nZXQoKSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNldEludGVybmFsU3RyaW5nKHRleHQpOworICAgIHNldFRleHRJbnRlcm5hbCh0ZXh0
KTsKICAgICBzZXROZWVkc0xheW91dEFuZE1pbk1heFJlY2FsYygpOwogfQogCkBAIC05NTUsMzEg
Kzk0NCwzMSBAQCB2b2lkIFJlbmRlclRleHQ6OnBvc2l0aW9uKElubGluZUJveCogYm94CiAKIHVu
c2lnbmVkIGludCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBpbnQgZnJvbSwgdW5zaWduZWQg
aW50IGxlbiwgaW50IHhQb3MsIGJvb2wgZmlyc3RMaW5lKSBjb25zdAogewotICAgIGlmIChmcm9t
ID49IG1fc3RyLT5sZW5ndGgoKSkKKyAgICBpZiAoZnJvbSA+PSB0ZXh0TGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgaWYgKGZyb20gKyBsZW4gPiBtX3N0ci0+bGVuZ3RoKCkpCi0g
ICAgICAgIGxlbiA9IG1fc3RyLT5sZW5ndGgoKSAtIGZyb207CisgICAgaWYgKGZyb20gKyBsZW4g
PiB0ZXh0TGVuZ3RoKCkpCisgICAgICAgIGxlbiA9IHRleHRMZW5ndGgoKSAtIGZyb207CiAKLSAg
ICBjb25zdCBGb250KiBmID0gZm9udChmaXJzdExpbmUpOwotICAgIHJldHVybiB3aWR0aChmcm9t
LCBsZW4sIGYsIHhQb3MpOworICAgIHJldHVybiB3aWR0aChmcm9tLCBsZW4sIHN0eWxlKGZpcnN0
TGluZSktPmZvbnQoKSwgeFBvcyk7CiB9CiAKLXVuc2lnbmVkIGludCBSZW5kZXJUZXh0Ojp3aWR0
aCh1bnNpZ25lZCBpbnQgZnJvbSwgdW5zaWduZWQgaW50IGxlbiwgY29uc3QgRm9udCogZiwgaW50
IHhQb3MpIGNvbnN0Cit1bnNpZ25lZCBpbnQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWduZWQgaW50
IGZyb20sIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IEZvbnQmIGYsIGludCB4UG9zKSBjb25zdAog
ewotICAgIGlmICghbV9zdHItPmNoYXJhY3RlcnMoKSB8fCBmcm9tID4gbV9zdHItPmxlbmd0aCgp
KQorICAgIGlmICghY2hhcmFjdGVycygpIHx8IGZyb20gPiB0ZXh0TGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgaWYgKGZyb20gKyBsZW4gPiBtX3N0ci0+bGVuZ3RoKCkpCi0gICAg
ICAgIGxlbiA9IG1fc3RyLT5sZW5ndGgoKSAtIGZyb207CisgICAgaWYgKGZyb20gKyBsZW4gPiB0
ZXh0TGVuZ3RoKCkpCisgICAgICAgIGxlbiA9IHRleHRMZW5ndGgoKSAtIGZyb207CiAKICAgICBp
bnQgdzsKLSAgICBpZiAoIXN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpICYmIGYgPT0gJnN0eWxl
KCktPmZvbnQoKSAmJiAhZnJvbSAmJiBsZW4gPT0gbV9zdHItPmxlbmd0aCgpKQotICAgICAgICB3
ID0gbV9tYXhXaWR0aDsKLSAgICBlbHNlIGlmIChmID09ICZzdHlsZSgpLT5mb250KCkpCi0gICAg
ICAgIHcgPSB3aWR0aEZyb21DYWNoZShmLCBmcm9tLCBsZW4sIHRhYldpZHRoKCksIHhQb3MpOwot
ICAgIGVsc2UKLSAgICAgICAgdyA9IGYtPndpZHRoKFRleHRSdW4oc3RyaW5nKCksIGZyb20sIGxl
biwgMCksIFRleHRTdHlsZSh0YWJXaWR0aCgpLCB4UG9zKSk7CisgICAgaWYgKCZmID09ICZzdHls
ZSgpLT5mb250KCkpIHsKKyAgICAgICAgaWYgKCFzdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSAm
JiAhZnJvbSAmJiBsZW4gPT0gdGV4dExlbmd0aCgpKQorICAgICAgICAgICAgdyA9IG1fbWF4V2lk
dGg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHcgPSB3aWR0aEZyb21DYWNoZShmLCBmcm9t
LCBsZW4sIHRhYldpZHRoKCksIHhQb3MpOworICAgIH0gZWxzZQorICAgICAgICB3ID0gZi53aWR0
aChUZXh0UnVuKHRleHQoKSwgZnJvbSwgbGVuLCAwKSwgVGV4dFN0eWxlKHRhYldpZHRoKCksIHhQ
b3MpKTsKIAogICAgIHJldHVybiB3OwogfQpAQCAtMTAyMSwxMSArMTAxMCwxMSBAQCBJbnRSZWN0
IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3QoKQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpID09
IFNlbGVjdGlvbkluc2lkZSkgewogICAgICAgICAvLyBXZSBhcmUgZnVsbHkgc2VsZWN0ZWQuCiAg
ICAgICAgIHN0YXJ0UG9zID0gMDsKLSAgICAgICAgZW5kUG9zID0gbV9zdHItPmxlbmd0aCgpOwor
ICAgICAgICBlbmRQb3MgPSB0ZXh0TGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2Vs
ZWN0aW9uU3RhcnRFbmQoc3RhcnRQb3MsIGVuZFBvcyk7CiAgICAgICAgIGlmIChzZWxlY3Rpb25T
dGF0ZSgpID09IFNlbGVjdGlvblN0YXJ0KQotICAgICAgICAgICAgZW5kUG9zID0gbV9zdHItPmxl
bmd0aCgpOworICAgICAgICAgICAgZW5kUG9zID0gdGV4dExlbmd0aCgpOwogICAgICAgICBlbHNl
IGlmIChzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbkVuZCkKICAgICAgICAgICAgIHN0YXJ0
UG9zID0gMDsKICAgICB9CkBAIC0xMDU3LDExICsxMDQ2LDYgQEAgc2hvcnQgUmVuZGVyVGV4dDo6
dmVydGljYWxQb3NpdGlvbkhpbnQoYgogICAgIHJldHVybiBwYXJlbnQoKS0+dmVydGljYWxQb3Np
dGlvbkhpbnQoZmlyc3RMaW5lKTsKIH0KIAotY29uc3QgRm9udCogUmVuZGVyVGV4dDo6Zm9udChi
b29sIGZpcnN0TGluZSkgY29uc3QKLXsKLSAgICByZXR1cm4gJnN0eWxlKGZpcnN0TGluZSktPmZv
bnQoKTsKLX0KLQogaW50IFJlbmRlclRleHQ6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKIHsKICAg
ICBJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRleHRCb3goKTsKQEAgLTEwNzcsNyArMTA2MSw3
IEBAIGludCBSZW5kZXJUZXh0OjpjYXJldE1heE9mZnNldCgpIGNvbnN0CiB7CiAgICAgSW5saW5l
VGV4dEJveCogYm94ID0gbGFzdFRleHRCb3goKTsKICAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0
dXJuIG1fc3RyLT5sZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHRleHRMZW5ndGgoKTsKICAgICBp
bnQgbWF4T2Zmc2V0ID0gYm94LT5tX3N0YXJ0ICsgYm94LT5tX2xlbjsKICAgICBmb3IgKGJveCA9
IGJveC0+cHJldlRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPnByZXZUZXh0Qm94KCkpCiAgICAg
ICAgIG1heE9mZnNldCA9IG1heChtYXhPZmZzZXQsIGJveC0+bV9zdGFydCArIGJveC0+bV9sZW4p
OwpAQCAtMTA5NCw3ICsxMDc4LDcgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhSZW5k
ZXJlZE9mZgogCiBpbnQgUmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNv
bnN0CiB7Ci0gICAgU3RyaW5nSW1wbCogc2kgPSBtX3N0ci5nZXQoKTsKKyAgICBTdHJpbmdJbXBs
KiBzaSA9IG1fdGV4dC5nZXQoKTsKICAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBj
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgoKSk7CiAg
ICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwpAQCAtMTEwOCw3
ICsxMDkyLDcgQEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZQogCiBp
bnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKIHsKLSAgICBTdHJp
bmdJbXBsKiBzaSA9IG1fc3RyLmdldCgpOworICAgIFN0cmluZ0ltcGwqIHNpID0gbV90ZXh0Lmdl
dCgpOwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IGNoYXJhY3RlckJyZWFrSXRl
cmF0b3Ioc2ktPmNoYXJhY3RlcnMoKSwgc2ktPmxlbmd0aCgpKTsKICAgICBpZiAoIWl0ZXJhdG9y
KQogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CShyZXZpc2lvbiAxOTAxNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNDMgKzI0LDMzIEBACiAjZGVmaW5lIFJlbmRlclRleHRfaAogCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIERlZmluZSBhIGNvbnN0YW50IGZvciBzb2Z0IGh5cGhlbidzIHVuaWNv
ZGUgdmFsdWUuCi1jb25zdCB1bnNpZ25lZCBzaG9ydCBTT0ZUX0hZUEhFTiA9IDE3MzsKLQotY2xh
c3MgRG9jdW1lbnRNYXJrZXI7Ci1jbGFzcyBJbmxpbmVCb3g7CiBjbGFzcyBJbmxpbmVUZXh0Qm94
OwotY2xhc3MgUG9zaXRpb247Ci1jbGFzcyBTdHJpbmc7CiBjbGFzcyBTdHJpbmdJbXBsOwogCiBj
bGFzcyBSZW5kZXJUZXh0IDogcHVibGljIFJlbmRlck9iamVjdCB7Ci0gICAgZnJpZW5kIGNsYXNz
IElubGluZVRleHRCb3g7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dChOb2RlKiwgU3RyaW5nSW1w
bCopOworICAgIFJlbmRlclRleHQoTm9kZSosIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogCiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRl
clRleHQiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdp
bmFsU3RyaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9y
aWdpbmFsVGV4dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFJlbmRlclN0
eWxlKik7CiAKICAgICB2b2lkIGV4dHJhY3RUZXh0Qm94KElubGluZVRleHRCb3gqKTsKICAgICB2
b2lkIGF0dGFjaFRleHRCb3goSW5saW5lVGV4dEJveCopOwogICAgIHZvaWQgcmVtb3ZlVGV4dEJv
eChJbmxpbmVUZXh0Qm94Kik7Ci0gICAgdm9pZCBkZWxldGVUZXh0Qm94ZXMoKTsKKwogICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95KCk7CiAKLSAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyLmdldCgpOyB9Ci0gICAgU3RyaW5nSW1wbCogc3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdHIuZ2V0KCk7IH0KKyAgICBTdHJpbmdJbXBsKiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0LmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIElubGluZUJveCogY3JlYXRlSW5saW5lQm94KGJv
b2wsYm9vbCwgYm9vbCBpc09ubHlSdW4gPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbmxpbmVCb3gq
IGNyZWF0ZUlubGluZUJveChib29sIG1ha2VQbGFjZUhvbGRlckJveCwgYm9vbCBpc1Jvb3RMaW5l
Qm94LCBib29sIGlzT25seVJ1biA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5l
Qm94ZXMoYm9vbCBmdWxsTGF5b3V0LCBib29sIGlzUm9vdElubGluZUJveCA9IGZhbHNlKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtNzMsMzMgKzYzLDI3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5
KTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHIt
Pmxlbmd0aCgpOyB9Ci0gICAgY29uc3QgVUNoYXIqIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3N0
ci0+Y2hhcmFjdGVycygpOyB9Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHItPmxlbmd0aCgpOyB9IC8vIG5vbiB2aXJ0dWFsIGltcGxlbWVudGF0aW9uIG9m
IGxlbmd0aCgpCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBt
X3RleHQtPmNoYXJhY3RlcnMoKTsgfQorICAgIHVuc2lnbmVkIHRleHRMZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX3RleHQtPmxlbmd0aCgpOyB9IC8vIG5vbiB2aXJ0dWFsIGltcGxlbWVudGF0aW9u
IG9mIGxlbmd0aCgpCiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uKElubGluZUJveCopOwogCi0g
ICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNv
bnN0IEZvbnQqLCBpbnQgeFBvcykgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCh1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbnN0IEZvbnQmLCBpbnQgeFBvcykgY29uc3Q7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4s
IGludCB4UG9zLCBib29sIGZpcnN0TGluZSA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIGlu
dCB3aWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBzaG9ydCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBib29sIGlzUm9vdExpbmVC
b3ggPSBmYWxzZSkgY29uc3Q7CiAKLSAgICAvLyBvdmVycmlkZXMKICAgICB2aXJ0dWFsIHZvaWQg
Y2FsY01pbk1heFdpZHRoKCk7CiAgICAgdmlydHVhbCBpbnQgbWluV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX21pbldpZHRoOyB9CiAgICAgdmlydHVhbCBpbnQgbWF4V2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX21heFdpZHRoOyB9CiAKLSAgICAvLyB3aWR0aHMKLSAgICB2b2lkIGNhbGNNaW5NYXhX
aWR0aChpbnQgbGVhZFdpZHRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJpbW1lZE1pbk1heFdpZHRo
KGludCBsZWFkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQm
IGJlZ2luTWluVywgYm9vbCYgYmVnaW5XUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCYgZW5kTWluVywgYm9vbCYgZW5kV1MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sJiBoYXNCcmVha2FibGVDaGFyLCBib29sJiBoYXNCcmVhaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgYmVnaW5NYXhXLCBpbnQmIGVu
ZE1heFcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1pblcsIGlu
dCYgbWF4VywgYm9vbCYgc3RyaXBGcm9udFNwYWNlcyk7Ci0KLSAgICBib29sIGNvbnRhaW5zT25s
eVdoaXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSBjb25zdDsKKyAgICB2b2lk
IHRyaW1tZWRNaW5NYXhXaWR0aChpbnQgbGVhZFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCYgYmVnaW5NaW5XLCBib29sJiBiZWdpbldTLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCYgZW5kTWluVywgYm9vbCYgZW5kV1MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCYgaGFzQnJlYWthYmxlQ2hhciwgYm9vbCYgaGFzQnJlYWssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50JiBiZWdpbk1heFcsIGludCYgZW5kTWF4VywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1pblcsIGludCYgbWF4VywgYm9vbCYgc3RyaXBG
cm9udFNwYWNlcyk7CiAKICAgICAvLyByZXR1cm5zIHRoZSBtaW5pbXVtIHggcG9zaXRpb24gb2Yg
YWxsIHJ1bnMgcmVsYXRpdmUgdG8gdGhlIHBhcmVudC4KICAgICAvLyBkZWZhdWx0cyB0byAwLgpA
QCAtMTA4LDcgKzkyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHhQb3MoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGludCB5UG9zKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEZvbnQm
IGZvbnQoKTsKICAgICB2aXJ0dWFsIHNob3J0IHZlcnRpY2FsUG9zaXRpb25IaW50KGJvb2wgZmly
c3RMaW5lKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
LCBib29sIGZvcmNlID0gZmFsc2UpOwpAQCAtMTI1LDEwICsxMDgsNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEludFJlY3QgZ2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpOwogCi0gICAgY29uc3Qg
Rm9udCogZm9udChib29sIGZpcnN0TGluZSkgY29uc3Q7Ci0KLSAgICBUZXh0KiBlbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dCo+KFJlbmRlck9iamVjdDo6ZWxlbWVudCgp
KTsgfQotCiAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4g
bV9maXJzdFRleHRCb3g7IH0KICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0VGV4dEJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdFRleHRCb3g7IH0KIApAQCAtMTQ2LDE2ICsxMjUsMjMgQEAgcHVibGlj
OgogICAgIElubGluZVRleHRCb3gqIGZpbmROZXh0SW5saW5lVGV4dEJveChpbnQgb2Zmc2V0LCBp
bnQmIHBvcykgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHNldEludGVybmFsU3RyaW5n
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOworICAgIHZvaWQgc2V0VGV4dEludGVybmFsKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4pOwogCiBwcml2YXRlOgotICAgIHZvaWQgY2FjaGVXaWR0aHMoKTsK
LSAgICBpbnQgd2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udCosIGludCBzdGFydCwgaW50IGxlbiwg
aW50IHRhYldpZHRoLCBpbnQgeFBvcykgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRVc2VNb25vc3Bh
Y2VDYWNoZShjb25zdCBGb250KikgY29uc3Q7Ci0gICAgYm9vbCBhbGxBc2NpaSgpIGNvbnN0Owor
ICAgIC8vIE1ha2UgbGVuZ3RoKCkgcHJpdmF0ZSBzbyB0aGF0IGNhbGxlcnMgdGhhdCBoYXZlIGEg
UmVuZGVyVGV4dCoKKyAgICAvLyB3aWxsIHVzZSB0aGUgbW9yZSBlZmZpY2llbnQgdGV4dExlbmd0
aCgpIGluc3RlYWQsIHdoaWxlCisgICAgLy8gY2FsbGVycyB3aXRoIGEgUmVuZGVyT2JqZWN0KiBj
YW4gY29udGludWUgdG8gdXNlIGxlbmd0aCgpLgorICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gdGV4dExlbmd0aCgpOyB9CisKKyAgICB2b2lkIGRlbGV0ZVRleHRC
b3hlcygpOworICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCBsZW4pIGNvbnN0OworICAgIHZvaWQgY2FsY01pbk1heFdpZHRoSW50ZXJuYWwoaW50
IGxlYWRXaWR0aCk7CisKKyAgICB2b2lkIHVwZGF0ZU1vbm9zcGFjZUNoYXJhY3RlcldpZHRoKCk7
CisgICAgaW50IHdpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnQmLCBpbnQgc3RhcnQsIGludCBsZW4s
IGludCB0YWJXaWR0aCwgaW50IHhQb3MpIGNvbnN0OworICAgIGJvb2wgaXNBbGxBU0NJSSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBbGxBU0NJSTsgfQogCi0gICAgLy8gbWVtYmVycwotICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiBtX3N0cjsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV90ZXh0OwogCiAg
ICAgSW5saW5lVGV4dEJveCogbV9maXJzdFRleHRCb3g7CiAgICAgSW5saW5lVGV4dEJveCogbV9s
YXN0VGV4dEJveDsKQEAgLTE3MSwxNiArMTU3LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hh
c1RhYiA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYSB2YXJpYWJsZSB3aWR0aCB0YWIg
Y2hhcmFjdGVyIChlLmcuLCA8cHJlPiB3aXRoICdcdCcpLgogICAgIGJvb2wgbV9oYXNCZWdpbldT
IDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgYmVnaW4gd2l0aCBXUyAob25seSB0cnVlIGlmIHdl
IGFyZW4ndCBwcmUpCiAgICAgYm9vbCBtX2hhc0VuZFdTIDogMTsgLy8gV2hldGhlciBvciBub3Qg
d2UgZW5kIHdpdGggV1MgKG9ubHkgdHJ1ZSBpZiB3ZSBhcmVuJ3QgcHJlKQotCiAgICAgYm9vbCBt
X2xpbmVzRGlydHkgOiAxOyAvLyBUaGlzIGJpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBydW4g
aGFzIGFscmVhZHkgZGlydGllZCBzcGVjaWZpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbGluZSBib3hlcywgYW5kIHRoaXMgaGludCB3aWxsIGVuYWJsZSBsYXlvdXRJbmxpbmVDaGls
ZHJlbiB0byBhdm9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBkaXJ0eWlu
ZyBldmVyeXRoaW5nIHdoZW4gY2hhcmFjdGVyIGRhdGEgaXMgbW9kaWZpZWQgKGUuZy4sIGFwcGVu
ZGVkL2luc2VydGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciByZW1vdmVkKS4K
ICAgICBib29sIG1fY29udGFpbnNSZXZlcnNlZFRleHQgOiAxOworICAgIGJvb2wgbV9pc0FsbEFT
Q0lJIDogMTsKIAotICAgIC8vIDIyIGJpdHMgbGVmdAotICAgIG11dGFibGUgYm9vbCBtX2FsbEFz
Y2lpQ2hlY2tlZDoxOwotICAgIG11dGFibGUgYm9vbCBtX2FsbEFzY2lpOjE7CiAgICAgaW50IG1f
bW9ub3NwYWNlQ2hhcmFjdGVyV2lkdGg7CiB9OwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRGcmFnbWVudC5jcHAJKHJldmlzaW9uIDE5MDE2KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgog
CisjaW5jbHVkZSAiVGV4dC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclRleHRG
cmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqIG5vZGUsIFN0cmluZ0ltcGwqIHN0ciwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyKQpA
QCAtNDQsOSArNDYsMTAgQEAgUmVuZGVyVGV4dEZyYWdtZW50OjpSZW5kZXJUZXh0RnJhZ21lbnQo
TgogewogfQogCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlclRleHRGcmFnbWVudDo6b3Jp
Z2luYWxTdHJpbmcoKSBjb25zdAorUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJUZXh0RnJh
Z21lbnQ6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nSW1wbCogcmVzdWx0ID0g
KGVsZW1lbnQoKSA/IGVsZW1lbnQoKS0+c3RyaW5nKCkgOiBjb250ZW50U3RyaW5nKCkpOworICAg
IE5vZGUqIGUgPSBlbGVtZW50KCk7CisgICAgU3RyaW5nSW1wbCogcmVzdWx0ID0gKGUgPyBzdGF0
aWNfY2FzdDxUZXh0Kj4oZSktPnN0cmluZygpIDogY29udGVudFN0cmluZygpKTsKICAgICBpZiAo
cmVzdWx0ICYmIChzdGFydCgpID4gMCB8fCBzdGFydCgpIDwgcmVzdWx0LT5sZW5ndGgoKSkpCiAg
ICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+c3Vic3RyaW5nKHN0YXJ0KCksIGVuZCgpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgJ
KHJldmlzaW9uIDE5MDE2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIFJlbmRlck9i
amVjdCogZmlyc3RMZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGV0dGVyOyB9CiAKICAg
ICBTdHJpbmdJbXBsKiBjb250ZW50U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0ZWRD
b250ZW50U3RyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9y
aWdpbmFsU3RyaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IG9yaWdpbmFsVGV4dCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3RhcnQ7
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gMTkw
MTYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlVGV4dFJ1bihUZXh0U3Ry
ZWFtJiB0cywKICAgICAgICAgICAgIHRzIDw8ICIgb3ZlcnJpZGUiOwogICAgIH0KICAgICB0cyA8
PCAiOiAiCi0gICAgICAgIDw8IHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyhvLmRhdGEoKS5z
dWJzdHJpbmcocnVuLm1fc3RhcnQsIHJ1bi5tX2xlbikpCisgICAgICAgIDw8IHF1b3RlQW5kRXNj
YXBlTm9uUHJpbnRhYmxlcyhTdHJpbmcoby50ZXh0KCkpLnN1YnN0cmluZyhydW4ubV9zdGFydCwg
cnVuLm1fbGVuKSkKICAgICAgICAgPDwgIlxuIjsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE5MDE2KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMCArMTUxLDEw
IEBAIHN0YXRpYyBpbnQgcGxhY2VQb3NpdGlvbmVkQm94ZXNIb3Jpem9udGEKICAgICAgICAgICAg
IGFtbiA9IG1pbihhbW4sIHgpOwogICAgICAgICAgICAgSW5saW5lVGV4dEJveCogdGV4dCA9IHN0
YXRpY19jYXN0PElubGluZVRleHRCb3gqPihjdXJyKTsKICAgICAgICAgICAgIFJlbmRlclRleHQq
IHJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KHRleHQtPm9iamVjdCgpKTsKLSAgICAgICAg
ICAgIGlmIChydC0+bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobmVlZHNXb3JkU3Bh
Y2luZyAmJiBEZXByZWNhdGVkQ2hhcihydC0+dGV4dCgpW3RleHQtPnN0YXJ0KCldKS5pc1NwYWNl
KCkpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gcnQtPmZvbnQoZmxvdy0+aXNGaXJzdExpbmVT
dHlsZSgpKS0+d29yZFNwYWNpbmcoKTsKLSAgICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5n
ID0gIURlcHJlY2F0ZWRDaGFyKHJ0LT50ZXh0KClbdGV4dC0+ZW5kKCldKS5pc1NwYWNlKCk7Cisg
ICAgICAgICAgICBpZiAocnQtPnRleHRMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGlmIChu
ZWVkc1dvcmRTcGFjaW5nICYmIERlcHJlY2F0ZWRDaGFyKHJ0LT5jaGFyYWN0ZXJzKClbdGV4dC0+
c3RhcnQoKV0pLmlzU3BhY2UoKSkKKyAgICAgICAgICAgICAgICAgICAgeCArPSBydC0+c3R5bGUo
Zmxvdy0+aXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLndvcmRTcGFjaW5nKCk7CisgICAgICAg
ICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9ICFEZXByZWNhdGVkQ2hhcihydC0+Y2hhcmFjdGVy
cygpW3RleHQtPmVuZCgpXSkuaXNTcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
dGV4dC0+c2V0WFBvcyh4KTsKICAgICAgICAgICAgIHggKz0gdGV4dC0+d2lkdGgoKTsKQEAgLTIz
OSw3ICsyMzksNyBAQCBzdGF0aWMgdm9pZCBwbGFjZUJveGVzVmVydGljYWxseVdpdGhBYnNCCiAK
ICAgICAgICAgICAgIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKHN0YXRpY19j
YXN0PElubGluZUZsb3dCb3gqPihjdXJyKSwgaGVpZ2h0T2ZCbG9jaywgbWluWSwgbWF4WSwgYmFz
ZWxpbmUsIHlQb3MpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBjdXJy
LT5vYmplY3QoKS0+Zm9udCh0cnVlKTsKKyAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IGN1cnIt
Pm9iamVjdCgpLT5maXJzdExpbmVTdHlsZSgpLT5mb250KCk7IC8vIEZJWE1FOiBJcyBpdCByaWdo
dCB0byBhbHdheXMgdXNlIGZpcnN0TGluZVN0eWxlIGhlcmU/CiAgICAgICAgIGludCBhc2NlbnQg
PSBmb250LmFzY2VudCgpOwogICAgICAgICBpbnQgcG9zaXRpb24gPSBiYXNlbGluZSAtIGFzY2Vu
dDsKICAgICAgICAgaW50IGhlaWdodCA9IGFzY2VudCArIGZvbnQuZGVzY2VudCgpOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvYmlkaS5jcHAJKHJldmlzaW9uIDE5MDE2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw3ICszNzIsNyBAQCBpbmxpbmUgdm9pZCBCaWRpSXRl
cmF0b3I6OmluY3JlbWVudChCaWRpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAob2JqLT5pc1Rl
eHQoKSkgewogICAgICAgICBwb3MrKzsKLSAgICAgICAgaWYgKHBvcyA+PSBzdGF0aWNfY2FzdDxS
ZW5kZXJUZXh0ICo+KG9iaiktPnN0cmluZ0xlbmd0aCgpKSB7CisgICAgICAgIGlmIChwb3MgPj0g
c3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihvYmopLT50ZXh0TGVuZ3RoKCkpIHsKICAgICAgICAg
ICAgIG9iaiA9IGJpZGlOZXh0KGJsb2NrLCBvYmosIGJpZGkpOwogICAgICAgICAgICAgcG9zID0g
MDsKICAgICAgICAgfQpAQCAtMzkzLDEwICszOTMsMTAgQEAgVUNoYXIgQmlkaUl0ZXJhdG9yOjpj
dXJyZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgUmVuZGVyVGV4dCog
dGV4dCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihvYmopOwotICAgIGlmICghdGV4dC0+dGV4
dCgpKQorICAgIGlmICghdGV4dC0+Y2hhcmFjdGVycygpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKLSAgICByZXR1cm4gdGV4dC0+dGV4dCgpW3Bvc107CisgICAgcmV0dXJuIHRleHQtPmNoYXJh
Y3RlcnMoKVtwb3NdOwogfQogCiBBTFdBWVNfSU5MSU5FIERpcmVjdGlvbiBCaWRpSXRlcmF0b3I6
OmRpcmVjdGlvbigpIGNvbnN0CkBAIC00MDgsOSArNDA4LDkgQEAgQUxXQVlTX0lOTElORSBEaXJl
Y3Rpb24gQmlkaUl0ZXJhdG9yOjpkaQogICAgIGlmICghb2JqLT5pc1RleHQoKSkKICAgICAgICAg
cmV0dXJuIE90aGVyTmV1dHJhbDsKICAgICBSZW5kZXJUZXh0KiByZW5kZXJUeHQgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUZXh0Kj4ob2JqKTsKLSAgICBpZiAocG9zID49IHJlbmRlclR4dC0+c3RyaW5n
TGVuZ3RoKCkpCisgICAgaWYgKHBvcyA+PSByZW5kZXJUeHQtPnRleHRMZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIE90aGVyTmV1dHJhbDsKLSAgICByZXR1cm4gVW5pY29kZTo6ZGlyZWN0aW9uKHJl
bmRlclR4dC0+dGV4dCgpW3Bvc10pOworICAgIHJldHVybiBVbmljb2RlOjpkaXJlY3Rpb24ocmVu
ZGVyVHh0LT5jaGFyYWN0ZXJzKClbcG9zXSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyOSw5ICs0MjksOSBAQCBzdGF0aWMgdm9pZCBhZGRS
dW4oQmlkaVJ1biogYmlkaVJ1bikKICAgICAvLyBDb21wdXRlIHRoZSBudW1iZXIgb2Ygc3BhY2Vz
IGluIHRoaXMgcnVuLAogICAgIGlmIChiaWRpUnVuLT5vYmogJiYgYmlkaVJ1bi0+b2JqLT5pc1Rl
eHQoKSkgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4
dCo+KGJpZGlSdW4tPm9iaik7Ci0gICAgICAgIGlmICh0ZXh0LT50ZXh0KCkpIHsKKyAgICAgICAg
aWYgKHRleHQtPmNoYXJhY3RlcnMoKSkgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IGJpZGlS
dW4tPnN0YXJ0OyBpIDwgYmlkaVJ1bi0+c3RvcDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgVUNo
YXIgYyA9IHRleHQtPnRleHQoKVtpXTsKKyAgICAgICAgICAgICAgICBVQ2hhciBjID0gdGV4dC0+
Y2hhcmFjdGVycygpW2ldOwogICAgICAgICAgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdc
bicgfHwgYyA9PSAnXHQnKQogICAgICAgICAgICAgICAgICAgICBudW1TcGFjZXMrKzsKICAgICAg
ICAgICAgIH0KQEAgLTUyMSwxMiArNTIxLDEyIEBAIHN0YXRpYyB2b2lkIGNoZWNrTWlkcG9pbnRz
KEJpZGlJdGVyYXRvciYKICAgICAgICAgICAgICAgICBpZiAoZW5kcG9pbnQub2JqLT5pc1RleHQo
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBzaGF2ZSBhIGNoYXJhY3RlciBvZmYg
dGhlIGVuZHBvaW50IGlmIGl0IHdhcyBmcm9tIGEgc29mdCBoeXBoZW4uCiAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQqIHRleHRPYmogPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4oZW5k
cG9pbnQub2JqKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVuZHBvaW50LnBvcysxIDwgdGV4
dE9iai0+bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0T2JqLT50
ZXh0KClbZW5kcG9pbnQucG9zKzFdID09IFNPRlRfSFlQSEVOKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoZW5kcG9pbnQucG9zICsgMSA8IHRleHRPYmotPnRleHRMZW5ndGgoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRleHRPYmotPmNoYXJhY3RlcnMoKVtlbmRwb2ludC5wb3Mr
MV0gPT0gc29mdEh5cGhlbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRwb2ludC5vYmotPmlzVGV4dCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0ICpzdGFydFRleHQgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUZXh0Kj4oc3RhcnRwb2ludC5vYmopOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0YXJ0VGV4dC0+bGVuZ3RoKCkgPiAwICYmIHN0YXJ0VGV4dC0+dGV4dCgpWzBdID09
IFNPRlRfSFlQSEVOKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0VGV4dC0+dGV4
dExlbmd0aCgpICYmIHN0YXJ0VGV4dC0+Y2hhcmFjdGVycygpWzBdID09IHNvZnRIeXBoZW4pCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQpAQCAtODc1LDExICs4NzUsMTEgQEAgdm9pZCBSZW5kZXJCbG9j
azo6Y29tcHV0ZUhvcml6b250YWxQb3NpdAogICAgICAgICAgICAgUmVuZGVyVGV4dCogcnQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4oci0+b2JqKTsKICAgICAgICAgICAgIGludCB0ZXh0V2lk
dGggPSBydC0+d2lkdGgoci0+c3RhcnQsIHItPnN0b3Atci0+c3RhcnQsIHRvdFdpZHRoLCBtX2Zp
cnN0TGluZSk7CiAgICAgICAgICAgICBpbnQgZWZmZWN0aXZlV2lkdGggPSB0ZXh0V2lkdGg7Ci0g
ICAgICAgICAgICBpbnQgcnRMZW5ndGggPSBydC0+bGVuZ3RoKCk7CisgICAgICAgICAgICBpbnQg
cnRMZW5ndGggPSBydC0+dGV4dExlbmd0aCgpOwogICAgICAgICAgICAgaWYgKHJ0TGVuZ3RoICE9
IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoci0+c3RhcnQgPT0gMCAmJiBuZWVkc1dvcmRTcGFj
aW5nICYmIERlcHJlY2F0ZWRDaGFyKHJ0LT50ZXh0KClbci0+c3RhcnRdKS5pc1NwYWNlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVdpZHRoICs9IHJ0LT5mb250KG1fZmlyc3RMaW5l
KS0+d29yZFNwYWNpbmcoKTsKLSAgICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gIURl
cHJlY2F0ZWRDaGFyKHJ0LT50ZXh0KClbci0+c3RvcC0xXSkuaXNTcGFjZSgpICYmIHItPnN0b3Ag
PT0gcnRMZW5ndGg7ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChyLT5zdGFydCA9PSAw
ICYmIG5lZWRzV29yZFNwYWNpbmcgJiYgRGVwcmVjYXRlZENoYXIocnQtPmNoYXJhY3RlcnMoKVty
LT5zdGFydF0pLmlzU3BhY2UoKSkKKyAgICAgICAgICAgICAgICAgICAgZWZmZWN0aXZlV2lkdGgg
Kz0gcnQtPnN0eWxlKG1fZmlyc3RMaW5lKS0+Zm9udCgpLndvcmRTcGFjaW5nKCk7CisgICAgICAg
ICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9ICFEZXByZWNhdGVkQ2hhcihydC0+Y2hhcmFjdGVy
cygpW3ItPnN0b3AtMV0pLmlzU3BhY2UoKSAmJiByLT5zdG9wID09IHJ0TGVuZ3RoOyAgICAgICAg
ICAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHItPmJveC0+c2V0V2lkdGgodGV4dFdpZHRo
KTsKICAgICAgICAgfSBlbHNlIGlmICghci0+b2JqLT5pc0lubGluZUZsb3coKSkgewpAQCAtOTUw
LDcgKzk1MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVIb3Jpem9udGFsUG9zaXQKICAg
ICAgICAgICAgICAgICAvLyBnZXQgdGhlIG51bWJlciBvZiBzcGFjZXMgaW4gdGhlIHJ1bgogICAg
ICAgICAgICAgICAgIGludCBzcGFjZXMgPSAwOwogICAgICAgICAgICAgICAgIGZvciAoIGludCBp
ID0gci0+c3RhcnQ7IGkgPCByLT5zdG9wOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIFVD
aGFyIGMgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4oci0+b2JqKS0+dGV4dCgpW2ldOworICAg
ICAgICAgICAgICAgICAgICBVQ2hhciBjID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KHItPm9i
aiktPmNoYXJhY3RlcnMoKVtpXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyAnIHx8
IGMgPT0gJ1xuJyB8fCBjID09ICdcdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMr
KzsKICAgICAgICAgICAgICAgICB9CkBAIC0xOTIxLDcgKzE5MjEsNyBAQCBpbnQgUmVuZGVyQmxv
Y2s6OnNraXBXaGl0ZXNwYWNlKEJpZGlJdGVyCiAgICAgaW50IHcgPSBsaW5lV2lkdGgobV9oZWln
aHQpOwogICAgIHdoaWxlICghaXQuYXRFbmQoKSAmJiAoaXQub2JqLT5pc0lubGluZUZsb3coKSB8
fCAoc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGl0Lm9iai0+c3R5bGUoKSkgJiYgIWl0Lm9iai0+
aXNCUigpICYmCiAgICAgICAgICAgKGl0LmN1cnJlbnQoKSA9PSAnICcgfHwgaXQuY3VycmVudCgp
ID09ICdcdCcgfHwgKCFpdC5vYmotPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpICYmIGl0LmN1
cnJlbnQoKSA9PSAnXG4nKSB8fAotICAgICAgICAgIGl0LmN1cnJlbnQoKSA9PSBTT0ZUX0hZUEhF
TiB8fCBza2lwTm9uQnJlYWtpbmdTcGFjZShpdCkgfHwgaXQub2JqLT5pc0Zsb2F0aW5nT3JQb3Np
dGlvbmVkKCkpKSkpIHsKKyAgICAgICAgICBpdC5jdXJyZW50KCkgPT0gc29mdEh5cGhlbiB8fCBz
a2lwTm9uQnJlYWtpbmdTcGFjZShpdCkgfHwgaXQub2JqLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVk
KCkpKSkpIHsKICAgICAgICAgaWYgKGl0Lm9iai0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKSB7
CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QgKm8gPSBpdC5vYmo7CiAgICAgICAgICAgICAvLyBh
ZGQgdG8gc3BlY2lhbCBvYmplY3RzLi4uCkBAIC0yMTE1LDkgKzIxMTUsOSBAQCBCaWRpSXRlcmF0
b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyCiAgICAgICAgICAgICAgICAgLy8gT3B0aW1p
emUgZm9yIGEgY29tbW9uIGNhc2UuIElmIHdlIGNhbid0IGZpbmQgd2hpdGVzcGFjZSBhZnRlciB0
aGUgbGlzdAogICAgICAgICAgICAgICAgIC8vIGl0ZW0sIHRoZW4gdGhpcyBpcyBhbGwgbW9vdC4g
LWR3aAogICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbmV4dCA9IGJpZGlOZXh0KHN0YXJ0
LmJsb2NrLCBvLCBiaWRpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+Y29sbGFwc2VX
aGl0ZVNwYWNlKCkgJiYgbmV4dCAmJiAhbmV4dC0+aXNCUigpICYmIG5leHQtPmlzVGV4dCgpICYm
IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihuZXh0KS0+c3RyaW5nTGVuZ3RoKCkgPiAwKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpICYmIG5leHQg
JiYgIW5leHQtPmlzQlIoKSAmJiBuZXh0LT5pc1RleHQoKSAmJiBzdGF0aWNfY2FzdDxSZW5kZXJU
ZXh0Kj4obmV4dCktPnRleHRMZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCAqbmV4dFRleHQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4obmV4dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIFVDaGFyIG5leHRDaGFyID0gbmV4dFRleHQtPnRleHQoKVswXTsKKyAg
ICAgICAgICAgICAgICAgICAgVUNoYXIgbmV4dENoYXIgPSBuZXh0VGV4dC0+Y2hhcmFjdGVycygp
WzBdOwogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFRleHQtPnN0eWxlKCktPmlzQ29sbGFw
c2libGVXaGl0ZVNwYWNlKG5leHRDaGFyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudENoYXJhY3RlcklzU3BhY2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudENoYXJhY3RlcklzV1MgPSB0cnVlOwpAQCAtMjEzMCwxMSArMjEzMCwxMSBAQCBCaWRpSXRl
cmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyCiAgICAgICAgICAgICAgICAgdG1wVyAr
PSBvLT53aWR0aCgpICsgby0+bWFyZ2luTGVmdCgpICsgby0+bWFyZ2luUmlnaHQoKSArIGlubGlu
ZVdpZHRoKG8pOwogICAgICAgICB9IGVsc2UgaWYgKG8tPmlzVGV4dCgpKSB7CiAgICAgICAgICAg
ICBSZW5kZXJUZXh0ICp0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihvKTsKLSAgICAgICAg
ICAgIGludCBzdHJsZW4gPSB0LT5zdHJpbmdMZW5ndGgoKTsKKyAgICAgICAgICAgIGludCBzdHJs
ZW4gPSB0LT50ZXh0TGVuZ3RoKCk7CiAgICAgICAgICAgICBpbnQgbGVuID0gc3RybGVuIC0gcG9z
OwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0ciA9IHQtPnRleHQoKTsKKyAgICAgICAgICAg
IGNvbnN0IFVDaGFyKiBzdHIgPSB0LT5jaGFyYWN0ZXJzKCk7CiAKLSAgICAgICAgICAgIGNvbnN0
IEZvbnQgKmYgPSB0LT5mb250KG1fZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGNvbnN0IEZvbnQm
IGYgPSB0LT5zdHlsZShtX2ZpcnN0TGluZSktPmZvbnQoKTsKICAgICAgICAgICAgIC8vIHByb3Bv
cnRpb25hbCBmb250LCBuZWVkcyBhIGJpdCBtb3JlIHdvcmsuCiAgICAgICAgICAgICBpbnQgbGFz
dFNwYWNlID0gcG9zOwogICAgICAgICAgICAgaW50IHdvcmRTcGFjaW5nID0gby0+c3R5bGUoKS0+
d29yZFNwYWNpbmcoKTsKQEAgLTIxNTUsMTQgKzIxNTUsMTQgQEAgQmlkaUl0ZXJhdG9yIFJlbmRl
ckJsb2NrOjpmaW5kTmV4dExpbmVCcgogICAgICAgICAgICAgICAgICAgICBpc0xpbmVFbXB0eSA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBz
b2Z0IGh5cGhlbnMuICBHbyBhaGVhZCBhbmQgaWdub3JlIHRoZW0uCi0gICAgICAgICAgICAgICAg
aWYgKGMgPT0gU09GVF9IWVBIRU4pIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlw
aGVuKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaWdub3JpbmdTcGFjZXMpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBzb2Z0IGh5cGhlbnMKICAgICAgICAgICAgICAg
ICAgICAgICAgIEJpZGlJdGVyYXRvciBlbmRNaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocG9zID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRNaWQgPSBCaWRpSXRl
cmF0b3IoMCwgbywgcG9zLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZE1pZCA9IEJpZGlJdGVyYXRvcigwLCBwcmV2aW91cywg
cHJldmlvdXMtPmlzVGV4dCgpID8gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihwcmV2aW91cykt
PnN0cmluZ0xlbmd0aCgpIC0gMSA6IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
ZE1pZCA9IEJpZGlJdGVyYXRvcigwLCBwcmV2aW91cywgcHJldmlvdXMtPmlzVGV4dCgpID8gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihwcmV2aW91cyktPnRleHRMZW5ndGgoKSAtIDEgOiAwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR3byBjb25zZWN1dGl2ZSBzb2Z0IGh5cGhlbnMu
IEF2b2lkIG92ZXJsYXBwaW5nIG1pZHBvaW50cy4KICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzTnVtTWlkcG9pbnRzICYmIHNtaWRwb2ludHMtPmF0KHNOdW1NaWRwb2ludHMgLSAxKS5vYmog
PT0gZW5kTWlkLm9iaiAmJiBzbWlkcG9pbnRzLT5hdChzTnVtTWlkcG9pbnRzIC0gMSkucG9zID4g
ZW5kTWlkLnBvcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzTnVtTWlkcG9pbnRzLS07
CkBAIC0yMjczLDcgKzIyNzMsNyBAQCBCaWRpSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0
TGluZUJyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVXYXNUb29XaWRlIHx8IHcg
KyB0bXBXID4gd2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobEJyZWFr
Lm9iaiAmJiBsQnJlYWsub2JqLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSAmJiBsQnJlYWsu
b2JqLT5pc1RleHQoKSAmJiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4obEJyZWFrLm9iaiktPnRl
eHQoKVtsQnJlYWsucG9zXSA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxCcmVhay5vYmogJiYgbEJyZWFrLm9iai0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkg
JiYgbEJyZWFrLm9iai0+aXNUZXh0KCkgJiYgc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KGxCcmVh
ay5vYmopLT5jaGFyYWN0ZXJzKClbbEJyZWFrLnBvc10gPT0gJ1xuJykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3BwZWRJZ25vcmluZ1NwYWNlcyAmJiBwb3MgPiAw
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHN0
b3AgcmlnaHQgYmVmb3JlIHRoZSBuZXdsaW5lIGFuZCB0aGVuIHN0YXJ0IHVwIGFnYWluLgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIG1pZHBvaW50KDAs
IG8sIHBvcyk7CkBAIC0yMjg3LDcgKzIyODcsNyBAQCBCaWRpSXRlcmF0b3IgUmVuZGVyQmxvY2s6
OmZpbmROZXh0TGluZUJyCiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtaWRXb3JkQnJlYWspCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRtcFcgLT0gYWRkaXRpb25hbFRtcFc7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBvcyA+IDAgJiYgc3RyW3Bvcy0xXSA9PSBTT0ZUX0hZUEhFTikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID4gMCAmJiBzdHJbcG9zLTFdID09IHNv
ZnRIeXBoZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YnRyYWN0IHRo
ZSB3aWR0aCBvZiB0aGUgc29mdCBoeXBoZW4gb3V0IHNpbmNlIHdlIGZpdCBvbiBhIGxpbmUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFcgLT0gdC0+d2lkdGgocG9zLTEsIDEs
IGYsIHcrdG1wVyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzg4LDggKzIzODgs
OCBAQCBCaWRpSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyCiAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm9yQnJlYWsgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogbmV4dFRleHQgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUZXh0Kj4obmV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VGV4dC0+c3Ry
aW5nTGVuZ3RoKCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIgYyA9IG5l
eHRUZXh0LT50ZXh0KClbMF07CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VGV4dC0+dGV4
dExlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyIGMgPSBuZXh0
VGV4dC0+Y2hhcmFjdGVycygpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0g
JyAnIHx8IGMgPT0gJ1x0JyB8fCAoYyA9PSAnXG4nICYmICFuZXh0LT5zdHlsZSgpLT5wcmVzZXJ2
ZU5ld2xpbmUoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5leHQg
aXRlbSBvbiB0aGUgbGluZSBpcyB0ZXh0LCBhbmQgaWYgd2UgZGlkIG5vdCBlbmQgd2l0aAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgc3BhY2UsIHRoZW4gdGhlIG5leHQgdGV4dCBy
dW4gY29udGludWVzIG91ciB3b3JkIChhbmQgc28gaXQgbmVlZHMgdG8KQEAgLTI1MTAsNyArMjUx
MCw4IEBAIEJpZGlJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lQnIKICAgICAgICAg
ZWxzZSBpZiAobEJyZWFrLm9iaiA9PSAwICYmIHRyYWlsaW5nU3BhY2VPYmplY3QtPmlzVGV4dCgp
KSB7CiAgICAgICAgICAgICAvLyBBZGQgYSBuZXcgZW5kIG1pZHBvaW50IHRoYXQgc3RvcHMgcmln
aHQgYXQgdGhlIHZlcnkgZW5kLgogICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dCA9IHN0YXRp
Y19jYXN0PFJlbmRlclRleHQgKj4odHJhaWxpbmdTcGFjZU9iamVjdCk7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBwb3MgPSB0ZXh0LT5sZW5ndGgoKSA+PTIgPyB0ZXh0LT5sZW5ndGgoKSAtIDIgOiBV
SU5UX01BWDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQtPnRleHRMZW5ndGgo
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBvcyA9IGxlbmd0aCA+PSAyID8gbGVuZ3RoIC0gMiA6
IFVJTlRfTUFYOwogICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGVuZE1pZCgwLCB0cmFpbGluZ1Nw
YWNlT2JqZWN0LCBwb3MpOwogICAgICAgICAgICAgYWRkTWlkcG9pbnQoZW5kTWlkKTsKICAgICAg
ICAgfQpAQCAtMjUyOCw4ICsyNTI5LDggQEAgQmlkaUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5k
TmV4dExpbmVCcgogICAgIGlmIChsQnJlYWsub2JqICYmIGxCcmVhay5wb3MgPj0gMiAmJiBsQnJl
YWsub2JqLT5pc1RleHQoKSkgewogICAgICAgICAvLyBGb3Igc29mdCBoeXBoZW5zIG9uIGxpbmUg
YnJlYWtzLCB3ZSBoYXZlIHRvIGNob3Agb3V0IHRoZSBtaWRwb2ludHMgdGhhdCBtYWRlIHVzCiAg
ICAgICAgIC8vIGlnbm9yZSB0aGUgaHlwaGVuIHNvIHRoYXQgaXQgd2lsbCByZW5kZXIgYXQgdGhl
IGVuZCBvZiB0aGUgbGluZS4KLSAgICAgICAgVUNoYXIgYyA9IHN0YXRpY19jYXN0PFJlbmRlclRl
eHQqPihsQnJlYWsub2JqKS0+dGV4dCgpW2xCcmVhay5wb3MtMV07Ci0gICAgICAgIGlmIChjID09
IFNPRlRfSFlQSEVOKQorICAgICAgICBVQ2hhciBjID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KGxCcmVhay5vYmopLT5jaGFyYWN0ZXJzKClbbEJyZWFrLnBvcy0xXTsKKyAgICAgICAgaWYgKGMg
PT0gc29mdEh5cGhlbikKICAgICAgICAgICAgIGNob3BNaWRwb2ludHNBdChsQnJlYWsub2JqLCBs
QnJlYWsucG9zLTIpOwogICAgIH0KICAgICAKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVu
LXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMJKHJldmlzaW9uIDE5MDE2KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Vi
a2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJs
CiAKLSMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEzNCw3ICsxMzQs
NyBAQCBteSAkdXNhZ2UgPQogICAgICIgIC1xfC0tcXVpZXQgICAgICAgICAgICAgIExlc3MgdmVy
Ym9zZSBvdXRwdXRcbiIgLgogICAgICIgIC1yfC0tcmVwYWludC10ZXN0cyAgICAgIFJ1biByZXBh
aW50IHRlc3RzIChpbXBsaWVzIC0tcGl4ZWwtdGVzdHMpXG4iIC4KICAgICAiICAtLXJlc2V0LXJl
c3VsdHMgICAgICAgICBSZXNldCBBTEwgcmVzdWx0cyAoaW5jbHVkaW5nIHBpeGVsIHRlc3RzIGlm
IC0tcGl4ZWwtdGVzdHMgaXMgc2V0KVxuIiAuCi0gICAgIiAgLS1bbm8tXW5ldy10ZXN0LXJlc3Vs
dHMgIEdlbmVyYXRlIHJlc3VsdHMgZm9yIG5ldyB0ZXN0c1xuIiAuCisgICAgIiAgLS1bbm8tXW5l
dy10ZXN0LXJlc3VsdHMgR2VuZXJhdGUgcmVzdWx0cyBmb3IgbmV3IHRlc3RzXG4iIC4KICAgICAi
ICAtb3wtLXJlc3VsdHMtZGlyZWN0b3J5ICBPdXRwdXQgcmVzdWx0cyBkaXJlY3RvcnkgKGRlZmF1
bHQ6ICIgLiAkdGVzdFJlc3VsdHNEaXJlY3RvcnkgLiAiKVxuIiAuCiAgICAgIiAgLTF8LS1zaW5n
bHkgICAgICAgICAgICAgSXNvbGF0ZSBlYWNoIHRlc3QgY2FzZSBydW4gKGltcGxpZXMgLS12ZXJi
b3NlKVxuIiAuCiAgICAgIiAgLS1zbG93ZXN0ICAgICAgICAgICAgICAgUmVwb3J0IHRoZSAxMCBz
bG93ZXN0IHRlc3RzXG4iIC4KQEAgLTUwMyw3ICs1MDMsNyBAQCBmb3IgbXkgJHRlc3QgKEB0ZXN0
cykgewogICAgICAgICB9CiAgICAgICAgICRyZXN1bHQgPSAibmV3IjsKIAotICAgICAgICBpZiAo
JGdlbmVyYXRlTmV3UmVzdWx0cykgeworICAgICAgICBpZiAoJGdlbmVyYXRlTmV3UmVzdWx0cyB8
fCAkcmVzZXRSZXN1bHRzKSB7CiAgICAgICAgICAgICAjIENyZWF0ZSB0aGUgcGF0aCBpZiBuZWVk
ZWQKICAgICAgICAgICAgIG1rcGF0aChjYXRmaWxlKCRleHBlY3RlZFRlc3RSZXN1bHRzRGlyZWN0
b3J5LCBkaXJuYW1lKCRiYXNlKSkpIGlmICR0ZXN0RGlyZWN0b3J5IG5lICRleHBlY3RlZFRlc3RS
ZXN1bHRzRGlyZWN0b3J5OwogCkBAIC01MTMsMTMgKzUxMywxNSBAQCBmb3IgbXkgJHRlc3QgKEB0
ZXN0cykgewogICAgICAgICB9CiAgICAgICAgIHVubGluayAiJHRlc3RSZXN1bHRzRGlyZWN0b3J5
LyRiYXNlLSRhY3R1YWxUYWcudHh0IjsKICAgICAgICAgdW5saW5rICIkdGVzdFJlc3VsdHNEaXJl
Y3RvcnkvJGJhc2UtJGRpZmZzVGFnLnR4dCI7Ci0gICAgICAgICMgQWx3YXlzIHByaW50IHRoZSBm
aWxlIG5hbWUgZm9yIG5ldyB0ZXN0cywgYXMgdGhleSB3aWxsIHByb2JhYmx5IG5lZWQgc29tZSBt
YW51YWwgaW5zcGVjdGlvbi4KLSAgICAgICAgIyBpbiB2ZXJib3NlIG1vZGUgd2UgYWxyZWFkeSBw
cmludGVkIHRoZSB0ZXN0IGNhc2UsIHNvIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW4uCi0gICAgICAg
IHVubGVzcyAoJHZlcmJvc2UpIHsKLSAgICAgICAgICAgIHByaW50ICJcbiIgdW5sZXNzICRhdExp
bmVTdGFydDsKLSAgICAgICAgICAgIHByaW50ICIkdGVzdCAtPiAiOworICAgICAgICB1bmxlc3Mg
KCRyZXNldFJlc3VsdHMpIHsKKyAgICAgICAgICAgICMgQWx3YXlzIHByaW50IHRoZSBmaWxlIG5h
bWUgZm9yIG5ldyB0ZXN0cywgYXMgdGhleSB3aWxsIHByb2JhYmx5IG5lZWQgc29tZSBtYW51YWwg
aW5zcGVjdGlvbi4KKyAgICAgICAgICAgICMgaW4gdmVyYm9zZSBtb2RlIHdlIGFscmVhZHkgcHJp
bnRlZCB0aGUgdGVzdCBjYXNlLCBzbyBubyBuZWVkIHRvIGRvIGl0IGFnYWluLgorICAgICAgICAg
ICAgdW5sZXNzICgkdmVyYm9zZSkgeworICAgICAgICAgICAgICAgIHByaW50ICJcbiIgdW5sZXNz
ICRhdExpbmVTdGFydDsKKyAgICAgICAgICAgICAgICBwcmludCAiJHRlc3QgLT4gIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHByaW50ICJuZXdcbiI7CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnQgIm5ld1xuIjsKICAgICAgICAgJGF0TGluZVN0YXJ0ID0gMTsKICAgICB9IGVsc2lmICgk
YWN0dWFsIGVxICRleHBlY3RlZCAmJiAkZGlmZlJlc3VsdCBlcSAicGFzc2VkIikgewogICAgICAg
ICBpZiAoJHZlcmJvc2UpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2JlZm9yZVNlbGVj
dG9yT25Db2RlRWxlbWVudC1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jc3MvYmVmb3JlU2VsZWN0b3JP
bkNvZGVFbGVtZW50LWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUK
ICAgKyBpbWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFKWUNBWUFBQUNh
ZG9Kd0FBQWdBRWxFUVZSNG5PM2RlYmhWZGIzNDhjOWhWQkZSCkFSbjBDb29sRHFCSmVGTXNoY1Fj
OEFFSHhMeFdnZ000M05La3JwYXB0NUxVTk5OdUpselRSREdFMUhMNm9TSnFhR2g1d1M3a2hPYUEK
ZXBrVUJEeHc0QnkrdnovNHNlUE1leC9PK2VydnVhL1g4L2c4N3JQV1htdnQ3eHJZNzdPSFU1WlNT
Z0VBQUpCQnEwOTZBd0FBZ1A4OQpCQWdBQUpDTkFBRUFBTElSSUFBQVFEWUNCQUFBeUVhQUFBQUEy
UWdRQUFBZ0d3RUNBQUJrSTBBQUFJQnNtalZBMXF4WkU0c1dMV3JPClJXWlZWVlVWcjd6eVNyM1R5
OHZMNDRNUFBvaUlhSmJIdVdMRmlxTG1XN1ZxVmJ6OTl0c1JFYkY2OWVwWXQyNWRrK1pwYnMweEhp
MTkKekZSVVZNU2YvdlNuZXFjM3RzL1hyRmtUNzczM1hrdHNXclYxZkpyUG02MFpnOGJHLzVQMndR
Y2Z4TUtGQyt1ZC9rbnRtOGEySzZMbAp4clk1anZtbFM1ZkdyRm16NHNNUFAyeW1yY3Fqc2VzQm44
NTkyOWg1V3N6NTFKejMrN1Q2Tk82N3VqVDN2N3VsN3NjYy8rN1haKzNhCmxwdis3cnVwMGZ2bjFH
aUFEQnMyTEhiYWFhYzQrdWlqNDVSVFRvbldyVnZISG52c0VTZWZmSEljZHRoaDBicDE2NWc4ZVhM
Y2ZmZmQKMGExYnQ3anp6anR6Ykhleis4dGYvaElISG5oZ25IUE9PZlhPODdPZi9TekdqaDBicjd6
eVN2VHUzVHMyYk5nUUVSRVBQdmhnOU92WApMOHJLeW1MSWtDRng4c2tueDZCQmcrS0VFMDZJNTU1
N3J0N2xmZldyWDIzd0g3djMzbnN2dnZhMXI4WDQ4ZVBqeGh0dmpJRURCOFloCmh4d1NMNzc0WXRI
elRKczJMZmJaWjUvQ3RwMTk5dGx4MWxsbnhXbW5uUlo3NzcxM0RCOCtQQ0lpSG43NDRSZ3dZRUNV
bFpYRlFRY2QKRkdlZWVXWmNjTUVGOGEvLytxL3hpMS84SXQ1NjY2Mml4Nk5ZTFgzTVBQLzg4L0g1
ejM4K1Rqenh4RHFuTjdiUEowNmNHSjA3ZDQ3cAowNmUzeVBaRnRQd1liSzJ0R1lQR3h2L1Q0UExM
TDQ4UkkwYlVPZTJUM0RjTmJWZEV5NDF0Y3h6emt5Wk5pcWxUcDhiVFR6OGQrKzIzClgxUlVWRFRq
RnJhY1l2NE4rTjh1NTc1dHp1Y2VqWjFQelgyL1Q2UG0zbmMvK01FUG9sMjdkdEdxVmF1NCtlYWJJ
MkxUOWFORGh3NVIKVmxZV2wxMTJXU3hidGl3aUlwWXRXeFpublhWV3RHblRKbjc1eTE4MnVOekdy
a0dQUHZwb0hIYllZVkZXVmhiOSsvZVBxVk9uUmtURQpuLy84NXpqNDRJT2pUWnMyOGUxdmZ6disr
Ny8vdTNDZlV2Wmpqbi8zNjdKNGNZb0xMMXdidzRhdGFmYnBMN3hRRlYvKzhwcjRQLzluClExeDU1
ZG80NDR6eTJQeDBiY09HaUYxMitTakt5bFpVKzY5VnE1WHhQLytUbXUzeDFTazE0cWlqamtwLy8v
dmZDN2UzMldhYmRNWVoKWnhSdVgzLzk5V25peElrcHBaVDIyV2VmZE5WVlZ6VzJ5RSt0Q3k2NElB
MFpNcVRlNlRmZGRGTTY0NHd6MG52dnZaYzZkT2hRYmRyUApmLzd6RkJGcHpwdzVLYVdVS2lzcjAx
bG5uWlhhdFd1WFpzK2VYV3RaQ3hjdVRHVmxaZW1DQ3k2b2QzMGpSNDVNdzRjUEw5eGV2MzU5Ck91
Q0FBOUwwNmROTG1tZkNoQW5WdG0yemxTdFhwbEdqUmhWdVQ1bzBLVVZFZXZEQkJ3cy9XN1pzV1Ry
dnZQTlM1ODZkYXoyT2hzYWoKV0MxOXpGeDMzWFdwVzdkdTlVNXZiSjkzNjlZdDNYREREUzJ4YVFX
Zjl2Tm1hOGFnc2ZIL3BDMWZ2ank5OXRwcmhkdnIxcTFMczJiTgpLdHorcFBaTnplMnFTMHVON2Ri
czd6VnIxcVFPSFRxa3FxcXFsRkpLeno3N2JITnVXb3RyN0hyd3YxbGQrN2JtK2RLY212TzVSekhu
ClUzUGVyeFROTVlhTkxhT2x6c3NMTHJnZ1JVUjY1NTEzQ2ovNzZVOS9taUtpMXZPRjJiTm5OL2g4
WjB1TlhZTis5N3ZmcFloSU45NTQKWStGbml4WXRTbjM3OWsyUFAvNTRyZmtidTg2WHV2N210bXBW
U2s4L3ZTRWRjY1RxZE1naHE1cDErc3FWRzFPM2JpdlRJNDlzS1B6cwoyR05YcC9QT0swOHBwVFJs
U2tYNjRRL1hwai8vdVRMOTlhK2IvcnY3N3ZWcDRNRGE2Mmx1amI0Qzh1MXZmenYyMkdPUGVxZVBI
VHMyCjl0dHZ2NGlJYU51MmJaU1ZsVFZIRjJXMWNlUEdpSWhvMDZaTnRHcFYvNURzdWVlZTBhdFhy
K2pSbzBmc3ZmZmUxYWJ0dU9PT0VSR0YKeDkrNmRldTQrT0tMWS8zNjlURmx5cFJheTdyMTFsdGo5
T2pSTVhueTVGaXpwdTZpZmVXVlYyTFJva1dGVnhiYXRtMGJ0OTkrZTdXWApUNHVacCthMmJiYnR0
dHZHVFRmZFZHdSsxcTFiRjM3V3BVdVgrT1V2ZnhuSEhudHNISG5ra1RGbnpweWl4cU0rS1ZVdjZw
WStadHExCmExZm44b3ZkNXkyeGZibkhZR3R0emZiVk4vNmZGcDA3ZDQ3UGZPWXpFUkd4WWNPRytO
clh2aGF6Wjg4dVRHL3FZNitzckd5MjdhcFAKUzQzdDF1enYrZlBueC9yMTZ3dm4xS0dISHRxY205
YWdyUm56WXE4SFRWbFh6Zk85dVd6dE1WYnFzbXZ1MjRFREI5WTZYNXBUY3o3MwpxTzk4YW16Zk5Q
VittelcyaitxNjVoUmp5L1VYczR5V09pOHZ2UERDS0Nzcmk3dnV1cXZ3czNQT09TZTIyMjY3bUR4
NWNyVjU3N3Z2CnZ2ajYxNzllMUhJYjI1K2JuNnZzdE5OT0VSR3hjT0hDR0RGaVJOeDExMTF4NUpG
SDFwcS9zZXQ4cWVzdlZySEhTY2VPRVYvNlVwdm8KMjdkVjFMWGFyWm4raHo5c2lHWExVbnp4aTIw
S1B6djg4TFl4YVZKRkxGNmM0ckREMnNRUGZyQk5EQnpZT3ZyMzMvVGZhNjlWeGZEaApiVXQ1cUUz
UzZKWDJLMS81U29QVE8zVG9FSU1HRFNyYzNyaHhZMXgrK2VXeCsrNjd4Lzc3N3g5dnZ2bG1ZZHFT
SlV2aTI5LytkaHgrCitPRXhZTUNBZXQrZWROOTk5MFhYcmwzamhCTk9pSlVyVjhadmZ2T2I2TnEx
YXd3ZE9qUmVmLzMxaU5qMDlwOHZmdkdMaGM4NnJGbXoKSmk2NDRJSzQrT0tMWThTSUVmSE5iMzR6
MXY2L043dk5uVHMzeG80ZEc1ZGRkbGxjZGRWVjBiVnIxL2p6bi84YzVlWGxjZDU1NThXUApmL3pq
R0RkdVhMend3Z3NOUHRiTlQ3akx5c3JpOE1NUGIyem9DaTgvZHUvZXZkclAxNjFiRjB1WExvMHJy
cmdpMXF4WlUrdEUzZXpVClUwK051WFBueHRDaFEyUEpraVVSRWZHNXozMnUybHNFaXBtblB0Lzk3
bmRqbDExMmFYUytpSWhycjcwMktpb3E0djc3N3kvOHJKVHgKdU9lZWUrSlh2L3BWWEh2dHRiVXVm
ZzBkTXczdDEzdnV1U2QyM1hYWCtNVXZmaEVSRVZPblRvMjk5OTQ3eG8wYlYrOTJsTHJQTjk5bgov
UGp4MGExYnR4Z3dZRUM4L1BMTGhXbkZIdE10TlFhbG5pdFBQdmxrbkhycXFURisvUGo0OWE5L0hY
MzY5SW0rZmZ0V1cxOUxqa0Z6ClBwYWFTcjMvLy96UC84UzExMTRiaHh4eVNFUkUvUHpuUDQ4SEhu
Z2dmdi83MzhjM3Z2R04rUGpqanh2ZE56VTk4Y1FUY2MwMTE4VFAKZnZhekdEUm9VQ3hZc0tEZWVk
ZXVYUnZmLy83MzQ1cHJyb2xSbzBiRmRkZGRGeEZSYTd2cXUzNFZ1N3hTOTFGRTAvYjNyYmZlR2xk
ZQplV1ZVVmxiRytlZWZIK1BIajQrSXBsMmJTOW5lK3NhOG1HTzkxT3RCS2Z1M3Z2TjkzYnAxTVg3
OCtMajY2cXZqaEJOT2lMRmp4OGFwCnA1NWF1RTlqMTdUNnRxRWx4N0t1ZlZ2WCtWTGZ1b285aHJm
VVhNODlhcDVQRGUyYkxUWDFmZzJOWTAybGpHRjk2Ni92dXJWWmM1NlgKTmZYcDB5ZU9PdXFvYXM5
aFB2NzQ0OWl3WVVOTW16YXRjSjNldUhGanpKczNMd1lPSEZpWXI3SGpzcUZyMEpibXo1OGZvMGFO
aXNtVApKOGVBQVFOcVRTLzJPbDlUZmVzdjVod3RMeStQQ3k2NElINzBveC9GVVVjZEZhZWVlbXBj
YzgwMUxSYnJEVm02Tk1YR2pTbkt5LzhSClEvLzh6NjJqc2pMRlgvOWFGYnZ2WGpzRDdyOS9RNHdZ
MGE3bE42N1VsMHhxdmd5NnBmNzkrNmNERGpnZ3padzVzL0J5MkZsbm5aVlMKMnZTV3BHT09PU2F0
V3JVcVZWVlZwYkZqeDZhdVhidW1GU3RXMUxtc2d3NDZLSTBaTTZadys0Z2pqa2lqUjQ4dTNINzQ0
WWZUN2JmZgpYcmo5cFM5OUtVMmVQRG1sdE9sdFNBY2ZmSEFhTm14WVNpbWxPWFBtcEoxMjJpa2Rl
T0NCNlhlLysxMGFPM1pzZXUyMTE5Snh4eDJYCnBrNmRtbEpLcWFxcUt2WHMyVE1OSFRxMDNzZStm
djM2dEd6WnNwUlNTdSs5OTE2MWFiLzV6VzlTUktUbm5uc3VwYlRwSmI2aFE0ZW0KblhmZU9TMWN1
TERXdkE4OTlGQktLYVhqampzdTdidnZ2bld1NzZPUFBrcEhISEZFaW9qVXBVdVg5TUFERHpScG5w
dHZ2amxGUkxyOAo4c3ZUNU1tVDAyMjMzWmJPUC8vOGROQkJCMVdiYjlxMGFTa2kwaU9QUEZMbjlu
VHUzRGw5NFF0ZktHbzh0clJodzRiMCtjOS92bkQ3Cm9vc3VLcndVM05BeGsxTEQreldsbEhiZGRk
ZHFMNzBmZGRSUmFlVElrWVhiTjkxMFUrcmV2WHZoZHFuN2ZMZmRka3Y3N2JkZmV1Q0IKQjlLc1di
TlM3OTY5MDU1NzdwazJiTmhRMGpIZGttTlF5cm15ZVBIaTlOblBmamIxN2RzM1BmamdnK210dDk1
S2UrKzlkenI3N0xOYgpaQXhxam45elBwYTZsSEwvcFV1WHBuSGp4cVV1WGJvVXB2ZnUzVHRObURD
aGNMdXhmYk9saW9xS3RPdXV1eFplMnIveXlpdlRTU2VkClZPKzJIbjMwMFlXM1JiN3d3Z3NwSXRK
Ly9kZC8xZHF1K3E1Zk5jZTJ2dVdWZXUzZG12MDliZHEwMUtwVnEyckxLL1hhL1BMTEx4ZTkKdlEy
TmVUSEhlaW5YZzFMMmIwUG4rN0JodzlKdmYvdmJ3clJodzRhbGdRTUhGbTQzZEUxcmFCdGFjaXhU
cW52ZmJubStOSFJzMUhjTQpsNktwenoxcW5rOE43WnN0TmZWK3BWNEhpaDNEaHRaZjg3cFZVM09j
bC9YdHI5dHV1eTFGUkhyKytlZFRTaW5kZU9PTjZUdmYrVTZLCmlNSzU5ZFJUVDZVcnJyaWljSi9H
cmlNTlhZTlNTbW5tekprcEl0TDU1NStmZHQ1NTUzVGZmZmZWKzlpTHVjN1gxTmo2RzN2ZThZdGYK
L0NKZGZQSEZLYVdVNXMrZm55SWlYWFBOTmVtdHQ5NnFkNTBwcFRSdTNNZnAwRVByZit0VFU2YlBt
MWVaSWo1TU0yYjg0eTFZZi83egpwcDg5K09ENldzdDQ0NDJxdE5kZUh6VzRuYzJsMmIrR2Q5aXdZ
ZkhsTDM4NWR0dHR0eGc4ZUhEaFE5YlRwazJMbEZMTW5qMDdac3lZCkVUMTY5SWhseTViRkgvLzR4
enFYTTNyMDZIajAwVWNMTDQwZmVlU1I4ZUNERHhaZTBwdzVjMmFNSERreUlpSm16SmdSenp6elRP
RzMKU0czYnRvMHhZOGJFUXc4OUZIUG16SWt2Zk9FTDBiZHYzOWhubjMzaXBKTk9pbHR1dVNVKytP
Q0RlT1NSUndxL1pXblZxbFVjZSt5eApEVDYydG0zYlJwY3VYU0lpb21mUG5uWE84OTN2ZmpjR0R4
NGMvZnYzank1ZHVzVHMyYk5qcjczMnFqYlBRdzg5RkVjZmZYUkViSG9aCithV1hYb29ubjN5eTFy
SjIyR0dIZU95eHgrTFNTeStORlN0V3hJZ1JJd29mOWlwbG5pMjN2MTI3ZHRHK2ZmdG8zNzU5ZzQr
MUx0MjcKZHkvOEpubno4aG9iajRpSWxTdFh4b3N2dmhpUFBQSklSRVNjZmZiWjFWNmFyTytZYVd5
L1JteDZHOW1XTDVWdXQ5MTI5YjUwK3R4egp6NVc4enlNaXZ2NzFyOGZ4eHg4Zmd3Y1BqcXV2dmpy
Ky92ZS94OHlaTTBzNnBsdHlERW81VjdwMTZ4WjkrdlNKZnYzNnhiQmh3NkpYCnIxNHhaTWlRZVBY
VlYxdDhESnI3c2RTbGxQdDM3ZG8xK3ZYclYrdGw4cHJIVDMzN3BxYTJiZHZHaVNlZUdBY2NjRUJF
YkhyWnY3N2YKMnMyYU5Tdm16WnNYLy96UC94d1JFUU1HREloYmJya2xldlhxVld1NzZycCsxWHhi
U0VQTEsvWGFHOUU4K3p1aWFkZm1lZlBtRmIyTwpoc2E4c1dPOTFPdEJLZnUzdnZQOW1XZWVpVWNl
ZVNTT09lYVl3cng5K3ZTcGR0K0dybWtOYlVOTGptVkRObTliUThkR01jZncxcXJ2ClBLMTVQalYy
TGQ2c3FmZHJ5amdXTTRhTnJiK1V0d3cxNWJ5c2IzOE5IejQ4MnJScFUzZ1Y1TEhISG9zZi92Q0gw
Yk5uejdqampqc2kKWXRPckJLZWRkbHJoUHNWY1IrcTdCbTNwcWFlZWlzckt5dmpXdDc1VmVBZElU
Y1ZlNTJ0cWFQMk5QZSs0ODg0N28zUG56aEVSc2YvKworMGZYcmwwaklxSlhyMTROcnJNbEhIaGc2
K2pWcTNYY2ZITkZWRlZ0K3RENXRHbnJJeUppMzMxYjE1ci8vdnMzWkhuN1ZVUUwvQjJRCkxYZkNU
anZ0VlBoOHc1dzVjNkp6NTg3UnJsMjdhTmV1WFF3YU5DZ2VmL3p4T2w4eWk5ajBEVkhMbGkwcnZH
UzFZTUdDK1BqamorT0oKSjU2SWRldld4Y2FORzZORGh3NFJzZW5iRDdwMjdScHQyLzVqMEE0KytP
Q0lpSmczYjE1RWJEcGdOaDhFRVpzTzNMNTkreGJlU3hnUgpzZjMyMjIvMSsvNSs4cE9meE9PUFB4
NnZ2dnBxM0gzMzNiSHZ2dnRXbXo1djNyeFl2bng1L1ByWHY0NUpreWJGb2tXTG9sMjdkdkVmCi8v
RWZkUzZ2YmR1Mk1XSENoSGppaVNlaWE5ZXVjZjc1NTlmNmRvWmk1b21JR0RwMGFJd2FOU3BPTysy
MHVQNzY2K05MWC9wUzBZK3IKc3JJeVhuLzk5ZGgvLy8yTHZzOW1YYnAwaVJOUFBER09QLzc0T1Av
ODg2TjM3OTdWUG1kUzN6RlR6SDR0UlZQM2VhZE9uUXIvLzRVdgpmQ0VpTnIzbnRKUmp1aVhIb0pS
elpmTzZ0bHhmeDQ0ZEcvM2E1dVlZZzVaNExEVnQ3VmhzL2xsOXQ3ZmNOeldWbFpYRlRUZmRGQ3RY
CnJveHJycmttbm43NjZWaTllbldkOC83eGozK01Rdzg5dE5xeXg0NGRXL2hIcStaMjFieCtsYks4
VXErOUVjMnp2eU9hZG0wdVpSMk4KalhsRHgzcXAxNE5TOW05OTUvdlRUejhkZmZ2MnJUYStkUjJE
OVdsc0cxcHlMQnZhcG1MVzFkZ3h2TFVhT2srM0hPUEdyc1UxbDFucQovWm95anNXTVlTbi9oalNt
S2VkbGZYYmVlZWNZTW1SSVRKMDZOVjUvL2ZYWVpaZGRZcHR0dG9sVFRqa2xIbnZzc1ZpMGFGRzgv
dnJyCjhkblBmclp3bjJLT3kvcXVRVnY2dDMvN3Q3ajc3cnZqdmZmZWl4Tk9PS0hlYi9ZcTVqcGZV
ekhycjAvSGpoMnJmVjYyZS9mdWhWOE8KZlJKKy8vc09zV1RKeHRocnIxVnh6am5sOGVHSEtUcDBL
SXZldmV0Nis5WDZHREVpVDRDMGFYeVc1ckY4K2ZKbzA2Wk5uUjhRcWt2bgp6cDFqMkxCaE1XWEts
Tmh4eHgzajg1Ly9mTFJxMVNxbVRwMGFIMzMwVWJXdlZDc3ZMNC9seTVmSG1qVnJZdnZ0dDQrSWlI
Nzkra1diCk5tM3FmWC9mdSsrK0c4dVhMNi8xODYwTmtOYXRXMGViTnZVUDZ5MjMzQktqUjQ4dWJH
ZEV4SWdSSStMZWUrK05SWXNXeFQvOTB6OUYKUk1SYmI3MFZuVHQzam80ZE8wWkV4T0dISHg3MzNY
ZGZEQm8wS0taUG54NGpSNDRzYXA2R1hIdnR0VVUvcnRkZWV5MHFLaW9hZk5MUwprTHZ2dmp0Njl1
d1pOOTU0WTh5ZE96Y2VmZlRSMkdHSEhScThUMVAyYTBPYVk1LzM2dFVyT25ic0dCMDdkaXo1bUc2
cE1TamxYR2tPClRSMkRISThsOTFqVU5ISGl4SGptbVdmaXR0dHVpMXR2dmJYZTk3a3ZXYktrd2M4
UGxLcWg1WlY2bk5hME5jZDhVODdoVXRkUjdKalgKMUpUclFTbnJxdXQ4Zi8vOTk3ZjZiekNVc2cy
NXhySXA2L29rTmVWYVhNcjltanFPalkxaFU3ZTdwdWIrdC9Ya2swK094eDU3TE1hTQpHUk9YWG5w
cFJHejZaZERQZi83ekdETm1USzNQaUpaNnJHeDVEYXJwdU9PT2k2dXV1aW91dmZUU09QdnNzK3Y5
VE8zV2FHajlkYm5vCm9vdmlqRFBPaVBuejUwZjc5dTFqdSsyMksrcHp3eTNsd0FOYngzUFAvV1Bi
RHo1NGRZd2IxejVxZnQvR2tpVXAzbmhqWXh4NmFKNDAKeVBhWDBQZllZNDk0L1BISHEvMm1OYVVV
VHozMVZMMzNPZU9NTTJMNjlPbnhuLy81bjNIV1dXZkY2TkdqNC83Nzc0K1pNMmRXMjVsOQorL2FO
cXFxcStNdGYvbEw0MmRLbFM2T3lzakwyMldlZk9wZmRzMmZQV0xac1diejIybXRiLytDS3RITGx5
bmo3N2JmajYxLy9lcHg0CjRvbUYveTY3N0xLb3FxcUtpUk1uRnVaZHNtUkozSGpqamRYdWYraWho
MGJ2M3IwTGYzQ3BtSGthMHJadDIzanZ2ZmVxZllORlhWSksKY2RsbGw4VXV1K3dTRjE5OGNiRVB0
MkR4NHNXeGRPblN1T0dHRzJMR2pCa3hmLzc4d25kM042VFkvYnI1N1RhTmFZNTkvdjc3NzhmcQox
YXZqYzUvN1hFbkhkRXVQUWJIblNuTm82aGprZWl4YmUvK20vaExpcFpkZWl2UE9PeSt1dSs2NmFy
OVpyRXV2WHIxaTRjS0Y4Y1liCmJ4UitsbEpxMGl0N2pTMnZLZGZlTFRWMWYwYzA3ZHBjeWpwS0dm
T2FTcjBlbExLdStzNzNIajE2eE9MRmkrT2RkOTZwOXRocXF1K2EKVnVyanpUR1dtOCtYclQzT2Nt
bnF0YmpZK3pWbEhJc1p3OGJXWDhwMXF5bm5aVU5PT09HRWFOMjZkU3hZc0tBUUZRY2ZmSERzdWVl
ZQpNWFBtekRqcHBKT3F6Vi9xc2JMbE5hZ3VsMXh5U1p4NjZxbHg1NTEzRnYyTDFWTEdxNjcxTi9T
ODQ5aGpqNDJ6eno0N1pzeVlFUys4CjhFS2RiN0gvcEV5ZXZENWVmYlVxTHIxMG0xclQvdkNIRFhI
c3NXMXJoVWxMS1drMUd6ZHVqUFhyMTlmN0c1enk4dklvTHk4djNGNjcKZG0zaFd4WCs1Vi8rSlpZ
c1dSSmp4NDZORlN0V3hOS2xTK09IUC94aGcrOERQZWFZWTZKOSsvYlJ1blhyNk5TcFV3d1pNaVIy
MkdHSAo2TkdqUjdXRForVElrYkhiYnJ2RjQ0OC9YdmpaQ3krOEVIMzc5aTE4MXFLeXNyS3dMUkVS
bzBhTmlqWnQyc1F0dDl4UytOa3JyN3dTCnk1Y3ZqNnFxcWxLR0pTTCs4WTFYRGYxMjY5WmJiNjMy
M3QvTit2WHJGLzM2OVl1SkV5ZkdxbFdySW1MVE4wemRjTU1OMWY1eFhMeDQKY2J6NzdydUY5eWtY
TTAvRVAvN2krdnIxNjZ1dHQ2S2lJc2FORzFkNGFYVHpmRnMrL2pmZmZETXV1dWlpZU9paGgrS3V1
KzZLSGoxNgpGREVhMVgzd3dRZHh6ejMzUkVURVVVY2RGY09IRHkvODFxV2hZNmFZL2Rxdlg3OTQv
dm5uWS8zNjlmSCsrKy9IRzIrOFVmanI3SnNmCjgrYXZLRzdxUHQ5eTJxeFpzMkxFaUJGeHdBRUhs
SFJNdCtRWVJCUi9ybXdla3kwdm51WGw1WTBlODAwZGd5M0h2eVVlUzExS3VYOTUKZVhtc1hidTI4
Q1J3eHgxM2pIZmZmVGNpTnAwUERlMmJtbDUrK2VYWXVIRmp2UFRTUzFGVlZSVlBQLzEwckZ1M0xs
Skt0WjVramhvMQpLcmJaWnBzWVBYcDB2UHp5eS9IeXl5L0hkNy83M2NJcm9EVzNxK2IxcStiWU5y
UzhwbHg3bTdxL1Y2MWFGUnMzYml5TVdWT3V6YVZzCmIyTmozdEN4WHVyMW9KVDlXOS81dnZreGIx
NW5SVVZGeko4L3Y5cjlHN3FtTmJZTkxUbVdOZmR0UlBYelpkaXdZUTJ1cTY1anVLS2kKSWlaTW1G
QllSbjIyNXJuSDV1bWJ6NmVHcnNWMUxiZlUrNVZ5bkVRVVA0WU5yYi9tZGF1bTVqZ3ZHOUtsUzVj
NC9QRERZOFNJRWRXaQo2NnRmL1dyc3ZmZmV0YUttbU9PeXZtdFF4RCtlYjIzNVdHKzc3YmJZZi8v
OTQ1SkxMcW4xcHc4YXU4N1hwYUgxTi9hODQ5Ly8vZC9qCnM1LzliSHp6bTkrTTAwNDdMYmJkZHR2
R2hqQWlJaW9xSWhyNmZlcldUbi90dFkxeDFWWHJZc3FVRHRHNWMrMS9TKys3cis2M1h4VjcKbnBh
czJFK3JMMWl3SUkwZE96WkZST3JVcVZPNi92cnIwMGNmL2VPVDhyLzczZTlTcTFhdDByNzc3cHZt
elp1WDVzNmRtL2JaWjUvVQpwazJid2pjei9lcFh2MHJ0MjdkUFpXVmxxV3ZYcnVuKysrOXZkTDNq
eDQ5UHI3LytldUgyRDM3d2cycTNONXM3ZDI3YWQ5OTkwMDkvCit0UDB5Q09QcEZOUFBUVzkvUExM
S2FXVXBreVpranAwNkpCNjlPaVI3cm5ubnNKOXBreVpranAyN0pqMjJXZWZkTW9wcDZUamp6OCsK
SFhyb29XbktsQ25GRGt0S0thVUhIbmdnN2IvLy9pa2kwdURCZzlPTUdUTnF6WFBISFhla1RwMDZw
ZUhEaDFmNzQwb3BwZlRvbzQrbQpQbjM2cEloSXc0Y1BUKysvLzM1S0thVytmZnVtd1lNSHA0c3V1
aWhObURBaEhYREFBZW1jYzg1SjY5Zi80NXNMR3B0bit2VHBxVy9mCnZpa2kwdjc3NzU5T1AvMzBk
UHJwcDZmampqc3VkZTNhTmUyd3d3NnBzckl5UGZ6d3crbWdndzVLRVpINjkrK2ZSbzBhbFFZTkdw
U0cKRGgyYXZ2V3RiOVg2SnE5U0xGaXdJUFhwMHlkTm5EZ3gvZUVQZjBqbm5YZGUyckJoUTFISFRF
UDdOYVdVbm5qaWlkUzVjK2UwNTU1NwpwdTk4NXp0cDNMaHg2Y3RmL25LYU5XdFdldjc1NTlPQUFR
TlNSS1NiYjc0NVZWUlVsTHpQcjdqaWl0U3ZYNzkwOWRWWHA1Lzg1Q2ZwClc5LzZWbHExNmgvZk1s
SHNNZDJTWTdCWk1lZkswMDgvblhiY2NjZlVzMmZQTkdmT25QVGlpeSttdmZiYUs3VnYzejQ5OXRo
anpUb0cKZFkxL2N6NldoaFJ6LytlZmZ6NGRjc2doS1NMU0RUZmNrQ29xS3RMM3Z2ZTlWRlpXbHNh
TUdaTisvZXRmTjdwdnR2VHh4eCtuQXc4OApNRzIvL2ZacDlPalI2ZUdISDA3YmJiZGRPdjMwMDFO
RlJVV3QrZSsvLy83VXRXdlhGQkdwVjY5ZTZabG5ucWx6dSs2NDQ0NWExNis2CnhyYSs1VFcwaity
UzFQMzkzSFBQcFM5KzhZc3BJdEw0OGVQVEcyKzhrVkpxMnJXNTJPMXRhTXhuenB6WjZMRmV5dldn
bFAxYjMvbWUKVWtvLyt0R1BVcXRXclZMUG5qM1Q2YWVmbmthT0hGbnRXN0FhdXFZMXRBMTFIU2ZO
Tlphelo4K3VjOTl1ZWI0c1diS2szblhWdDU5ZgpldW1sVkZaV2x1NjQ0NDQ2dDJueldHN05jNCth
NTlPOGVmUHEzVGRiYXVyOVNyME9GRHVHRFIxVE5aZXhwZVk4THh0eTg4MDMxL29HCnpRVUxGcVJM
THJta3p2a2JPaTRidWdiTm1ERWpIWHJvb1NraVVyOSsvZEs5OTk2YlVrcnByMy85YXhvMmJGaUtp
TlM2ZGV0MDRZVVgKcG5mZmZiZlI2M3pOOFdwcy9TazFmSTZtbE5LRkYxNllJcUt3TGQyNmRVdm5u
WGRlbmZzL3BaVFdyVXZwempzclVzK2VLMVA3OWl2UwpYWGRWcEE4LzNOaHMwOTkrdXlyOSs3K3ZU
V2VlK1hGYXZueGpxc3ZLbFJ2VFRqdXRUR3ZYMXA1V3pIbmFGR1VwdGRCZlNhckgrdlhyClk5R2lS
ZEdyVjY4R1B5dXhXVVZGUmJWdmJLcDVlMHNwcFhqOTlkZWpWYXRXdGI1WnBENVZWVld4WXNXSzZO
S2xTNnhidHk2MjJhYjIKeTFLZmxBOC8vREIyM25ubktDOHZqemZmZkROMjMzMzNXdTlCTEdhZVQ5
ckdqUnVqVmF0V3NYTGx5bWpidG0yREh5S3VTMlA3ZGYzNgo5VkZWVlJYYmJydHRiTml3b2RHWHZa
dXl6eGN2WGh4ZHVuU3A4NWd0NXBodTZUR0lLTzFjYVlxdEhZUE5janlXcmJuLzh1WExDOS91CjFo
UnIxNjR0L01hcnNlTXhwUlJMbHk2TmJ0MjZOWGw5eFM2djFHdHZjKzN2emR0VjZyVzVsSFdVTXVZ
MWxYbzlLR1pkalozdnExYXQKaWxhdFdzWDIyMjhmNTU1N2JzeWRPemVlZi83NXd2VEdybW1sUHQ2
V0hNdWE1MHVweDhheVpjdGE5TVBwTlRYMVdsenEvVW9aeDJMRwpzTEgxTitXNjFaVHpzajdsNWVY
UnJsMjdXdnQ4MWFwVjlYNU9wYkZqcGFGcjBOWXFacndhdXdiV2Q0Nys1Q2MvaVpOUFBqbldyVnNY
CnExZXZqcFVyVjhhMGFkUGk5Tk5Qei80WnFmWHJJNTU5dGpJR0Rtd1Q5YnpRRnhFUjY5WkZMRjI2
c2M2L0N4TFJNdWRwOWdBQkFEYXAKSzBDQS96OU5talFwcGsyYlZ1c3JneDk5OU5IbzA2ZFByVC9M
VUZaVzkxdkFQaTFTMnFuRmxwM3RXN0FBZ09ybXo1OGZLMWFzaUpUUwpWbjhMSS9ESk91U1FRK0ti
My94bWpCdzVNZ1lNR0JCcjE2Nk5KVXVXeExCaHcyckZSMFRMUHNIL3RQTUtDQUI4QXFaTW1SSnZ2
ZlZXClJHejZnMlhEaHcvL1pEY0kyR29mZmZSUi9QR1BmNHpGaXhmSDRNR0Q2d3dQQkFnQUFKQlJ0
cjhEQWdBQUlFQUFBSUJzQkFnQUFKQ04KQUFFQUFMSVJJQUFBUURZQ0JBQUF5RWFBQUFBQTJRZ1FB
QUFnR3dFQ0FBQmtJMEFBQUlCc0JBZ0FBSkNOQUFFQUFMSVJJQUFBUURZQwpCQUFBeUVhQUFBQUEy
UWdRQUFBZ0d3RUNBQUJrSTBBQUFJQnNCQWdBQUpCTm02MWR3UHo1OCtQdXUrOHUzUDdNWno0VGd3
Y1BqajMyCjJLUHdzd2NmZkREbXpKa1RLYVU0NG9najRpdGYrVXExWlZSVlZjVmpqejBXOTk1N2I2
eGV2VHA2OSs0ZFgvbktWMkxJa0NHTlRuL3EKcWFmaTBVY2ZyYlZkZSt5eFI1eHp6am14Y09IQ3VQ
MzIyeU9sRkdWbFpkRzdkKzg0OXRoalk3ZmRkdHZhaHc0QUFKU29xRmRBS2lzcgo0N3Jycm90TEw3
MDBMcnp3d25qbm5YY0swM2JhYWFmbzJEMXN0bllBQUJCV1NVUkJWTEZqVEo0OE9mYmFhNjk0Kysy
MzQvampqNCtyCnI3NjZNRStQSGoyaVRaczJNWDM2OURqenpET2pzckt5MnZLLzk3M3Z4WTAzM2ho
anhveUpjZVBHeFgzMzNSZXpaODh1YW5yMzd0M2oKM1hmZmplZWVleTcyMm11djJHdXZ2YUpYcjE1
eDdiWFhSa1JFcDA2ZDRrOS8rbE1zWDc0OGV2WHFGZlBuejQrQkF3ZkdyRm16Q3N2Lwo0SU1QNHJY
WFhpdjg5K2FiYnpaaEtBRUFnRWFsSWx4ODhjWHB4UmRmVENtbDlNRUhINlJ6enowM0xWKyt2REQ5
YjMvN1c5cHZ2LzJxCjNlN2V2WHVxckt3cy9Penl5eTlQTjk5OGN4bzZkR2k2Nzc3N3FpMi9mLy8r
NmNrbm55emNmdkhGRjlNamp6eFM5UFNiYjc0NW5YdnUKdVNtbGxKNTU1cGxVV1ZtWkRqcm9vTUww
TTg4OE05MTIyMjJGMjQ4Ly9uamFjODg5VTFWVlZVb3BwY3N1dXl4RlJPRy8zcjE3RnpNcwpBQUJB
aVJwOUJlVGpqeitPc3JLeU9PQ0FBeUlpWXVlZGQ0NXp6amtuN3IzMzNucnY4ODQ3NzBUdjNyMmpk
ZXZXbXlNbmZ2dmIzOGFvClVhTmkzTGh4TVduU3BHcnpuM3p5eVhIUlJSZkZyMzcxcS9qVG4vNFUv
ZnYzajJPT09hYm82UkVSYytmT2phdXZ2anErOFkxdlJIbDUKZWZ6bEwzK3BkL3VPUFBMSVdMMTZk
Yno5OXR1TlBYd0FBS0FaTmZvWmtJMGJOMGJidG0yci9heHQyN2F4Y2VQR2FqOWJ0R2hSbkhMSwpL
ZkgrKys5SFdWbFpUSmd3b1REdHlTZWZqRTZkT3NYOCtmT2pVNmRPOGV5eno4WmJiNzBWdlh2M2pv
aUk3My8vK3pGbzBLQ1lPblZxClRKbzBLVmF0V2hWMzNYVlhISExJSVVWTmo0am8zTGx6OU92WEx6
cDE2aFN0VzdlT1ZxMGFicXNkZDl3eFB2cm9vOFllUGdBQTBJd2EKZlFXa1k4ZU9zV2JObXZqNzMv
OGVFUkhsNWVWeHl5MjN4SWdSSTZyTjE3VnIxN2ppaWl0aXhvd1pNWHYyN0JnOGVIQmgydTIzM3g2
Nwo3NzU3L1BhM3Y0M3AwNmRILy83OTQ5WmJiNDJJVFI4dy8vM3ZmeDlEaGd5SlNaTW14Yng1OCtM
Q0N5K002NisvdnFqcG0vWHExU3VPCk8rNjR1UC8rKzJPNzdiYUxILy80eC9VK3BvOCsraWplZi8v
OTJIdnZ2WXNjSmdBQW9Ea1U5UzFZMTE1N2JVeVlNQ0UyYk5nUUsxYXMKaUFzdnZEQzZkKzllYlo1
dHR0a205dHR2djFyM1hiVnFWVHo5OU5QeHhodHZGRjVKZWVPTk4rTHd3dytQSzYrOE1sYXRXaFVu
blhSUwp6SjQ5T3c0NzdMQ0kyUFMycjg5ODVqTVJzU2tXR3BwZTArNjc3eDdyMXEyTDMvem1OM0ha
WlpmVm1yNTgrZklZTjI1Y2pCczNMcmJkCmR0dUlpRGozM0hPckJWVzdkdTJLR1JZQUFLQkVaU21s
dERVTGVQamhoMlBNbURIeDRZY2Z4aTY3N0JLbm5YWmEvUFNuUHkxTVAraWcKZytKdmYvdGI3TGZm
ZnZIQ0N5L0VoeDkrR0ljZGRsZ3NYTGd3Um93WUVmZmNjMDlzdSsyMjBiMTc5K2pidDI5OC9QSEgw
YUZEaDdqegp6anVqZS9mdVVWbFoyZUQwaVJNbnhpV1hYQkliTm15SVRwMDZGZGJiclZ1M21EdDNi
ano3N0xOeDlORkhSL3YyN1dPNzdiYUxkdTNhCnhXbW5uUmJmLy83M28zMzc5bHZ6MEFFQWdCSnRk
WUEwaHdVTEZrVGZ2bjNqMVZkZmpWMTMzVFYyM0hISGtxWVhJNlVVS2FWR1B4c0MKQUFDMG5FOUZn
QUFBQVA4N2VEa0FBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQQpOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaCkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNB
QUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWoKUUFBQWdH
d0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQQpBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFCkFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJ
QUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUEKQUNB
YkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQQpnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBCnNoRWdBQUJBTmdJRUFBRElSb0FB
QUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBREkK
Um9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYgpBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFCkNBQUFrSTBBQVFBQXNoRWdB
QUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWcKQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQQpBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBCkFHUWpRQUFBZ0d3RUNB
QUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUEKa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQQpOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaCkNCQUFBQ0FiQVFJ
QUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWoKUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQQpBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFCkFBRElSb0FB
QUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWkNCQUEKQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQQpnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBCnNoRWdB
QUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWdBQUJBTmdJRUFBREkKUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYgpBUUlBQUdRalFBQUFnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFCkNB
QUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUFrSTBBQVFBQXNoRWcKQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQQpBQURaQ0JBQUFDQWJBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlB
CkFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWpRQUFBZ0d3RUNBQUEKa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQQpOZ0lFQUFESVJvQUFBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFB
QURaCkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWoKUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQQpBUUFBc2hFZ0FBQkFO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FB
QkFOZ0lFCkFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUEKQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQQpnR3dFQ0FBQWtJ
MEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FB
QWtJMEFBUUFBCnNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBREkKUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYgpBUUlBQUdR
alFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlB
QUdRalFBQUFnR3dFCkNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWcKQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFB
QUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQQpBQURa
Q0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFB
QURaQ0JBQUFDQWJBUUlBCkFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElS
b0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUEKa0kwQUFRQUFzaEVnQUFCQU5nSUVB
QURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQQpO
Z0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FB
QkFOZ0lFQUFESVJvQUFBQURaCkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNo
RWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWoKUUFBQWdHd0VDQUFBa0kwQUFR
QUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1FqUUFBQWdHd0VDQUFBa0kw
QQpBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlBQUdRalFBQUFnR3dFQ0FB
QWtJMEFBUUFBc2hFZ0FBQkFOZ0lFCkFBRElSb0FBQUFEWkNCQUFBQ0FiQVFJQUFHUWpRQUFBZ0d3
RUNBQUFrSTBBQVFBQXNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUEKQUNBYkFRSUFBR1FqUUFB
QWdHd0VDQUFBa0kwQUFRQUFzaEVnQUFCQU5nSUVBQURJUm9BQUFBRFpDQkFBQUNBYkFRSUFBR1Fq
UUFBQQpnR3dFQ0FBQWtJMEFBUUFBc2hFZ0FBQkFOZ0lFQUFESVJvQUFBQURaQ0JBQUFDQWJBUUlB
QUdRalFBQUFnR3dFQ0FBQWtJMEFBUUFBCnNoRWdBQUJBTmdJRUFBRElSb0FBQUFEWkNCQUFBQ0Fi
QVFJQUFHUWpRQUFBZ0d3RUNBQUFrSTBBQVFBQXNoRWdBQUJBTnY4WGgweEMKWWRCRUFuWUFBQUFB
U1VWT1JLNUNZSUk9Cgo=
</data>
<flag name="review"
          id="4778"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12603</attachid>
            <date>2007-01-22 06:56:03 -0800</date>
            <delta_ts>2007-01-22 06:56:03 -0800</delta_ts>
            <desc>Test case for the monospace cache regression</desc>
            <filename>font width cache test.html</filename>
            <type>text/html</type>
            <size>616</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogICAgPHRpdGxlPjwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8cD5U
ZXN0IGZvciA8aT48YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTE5NyI+aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTc8L2E+
IFJFR1JFU1NJT046IFNwZWNpZnlpbmcgYSBjb3VudGVyIGZvciBhIENPREUgdGFnJ3MgY29udGVu
dCBzdHlsZSBwcm9wZXJ0eSBvbiBiZWZvcmUgb3IgYWZ0ZXIgY2F1c2VzIGEgY3Jhc2guPC9pPi48
L3A+CiAgICBUaGUgYmx1ZSBsaW5lIGFuZCB0aGUgYmxhY2sgbGluZSBzaG91bGQgYmUgdGhlIHNh
bWUgbGVuZ3RoLgogICAgPHA+CiAgICA8c3BhbiBpZD0icSIgc3R5bGU9ImZvbnQtZmFtaWx5OiBt
b25vc3BhY2UsIFN5bWJvbDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7Ij4gPC9zcGFu
PgogICAgPHA+CiAgICA8c2NyaXB0PgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJx
IikuZmlyc3RDaGlsZC5kYXRhID0gIlx1MjNhZlx1MjNhZlx1MjNhZlx1MjNhZlx1MjNhZlx1MjNh
Zlx1MjNhZlx1MjNhZiI7CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>