<?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>3560</bug_id>
          
          <creation_ts>2005-06-15 23:12:34 -0700</creation_ts>
          <short_desc>page with use of first-letter crashes reproducibly in RenderObject::renderArena()</short_desc>
          <delta_ts>2006-03-17 14:18:15 -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>Layout and Rendering</component>
          <version>312.x</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.3</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://hol.istic.net/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jens Ayton">DHKIJUMWNCDB</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alice.barraclough</cc>
    
    <cc>bdakin</cc>
    
    <cc>dacarson</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>nicholas</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12202</commentid>
    <comment_count>0</comment_count>
    <who name="Jens Ayton">DHKIJUMWNCDB</who>
    <bug_when>2005-06-15 23:12:34 -0700</bug_when>
    <thetext>When page is opened, it initially displays correctly. The application is unresponsive. After a couple of 
seconds, it crashes. This is known to occur in Safari 1.2, 1.3 and 2.0, and in Xyle scope 1.0.1, and has 
been observed on a number of machines, and is consistent.

This has been reported before via Safari&apos;s bug report button, but there doesn&apos;t appear to be a 
corresponding report in Bugzilla.

The maintainer of the page recently bought a Powerbook. I&apos;ll try to poke him into adjusting it and trying 
to isolate the crash.

Backtrace and stuff:

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_INVALID_ADDRESS (0x0001) at 0x7c4002aa

Thread 0 Crashed:
0   com.apple.WebCore        	0x962f81e4 khtml::RenderObject::renderArena() const + 0x18
1   com.apple.WebCore        	0x9645bb64 khtml::appendRunsForObject(int, int, khtml::
RenderObject*, khtml::BidiState&amp;) + 0x210
2   com.apple.WebCore        	0x9645bc38 khtml::appendRun(khtml::BidiState&amp;) + 0x80
3   com.apple.WebCore        	0x9645cdc4 khtml::RenderBlock::bidiReorderLine(khtml::BidiIterator 
const&amp;, khtml::BidiIterator const&amp;, khtml::BidiState&amp;) + 0x9a8
4   com.apple.WebCore        	0x962f13c4 khtml::RenderBlock::layoutInlineChildren(bool) + 0x7f0
5   com.apple.WebCore        	0x962f56f8 khtml::RenderBlock::layoutBlock(bool) + 0x2b4
6   com.apple.WebCore        	0x962ee918 khtml::RenderBlock::layoutBlockChildren(bool) + 0x2b8
7   com.apple.WebCore        	0x962f5710 khtml::RenderBlock::layoutBlock(bool) + 0x2cc
8   com.apple.WebCore        	0x962ee918 khtml::RenderBlock::layoutBlockChildren(bool) + 0x2b8
9   com.apple.WebCore        	0x962f5710 khtml::RenderBlock::layoutBlock(bool) + 0x2cc
10  com.apple.WebCore        	0x962ee918 khtml::RenderBlock::layoutBlockChildren(bool) + 0x2b8
11  com.apple.WebCore        	0x962f5710 khtml::RenderBlock::layoutBlock(bool) + 0x2cc
12  com.apple.WebCore        	0x962ee918 khtml::RenderBlock::layoutBlockChildren(bool) + 0x2b8
13  com.apple.WebCore        	0x962f5710 khtml::RenderBlock::layoutBlock(bool) + 0x2cc
14  com.apple.WebCore        	0x962ee918 khtml::RenderBlock::layoutBlockChildren(bool) + 0x2b8
15  com.apple.WebCore        	0x962f5710 khtml::RenderBlock::layoutBlock(bool) + 0x2cc
16  com.apple.WebCore        	0x9631291c khtml::RenderCanvas::layout() + 0xfc
17  com.apple.WebCore        	0x9631a234 KHTMLView::layout() + 0x318
18  com.apple.WebCore        	0x9647bd30 DOM::DocumentImpl::implicitClose() + 0x310
19  com.apple.WebCore        	0x9632fff8 KHTMLPart::checkEmitLoadEvent() + 0x22c
20  com.apple.WebCore        	0x963171d4 KHTMLPart::checkCompleted() + 0xe4
21  com.apple.WebCore        	0x96303084 KWQSignal::call(khtml::DocLoader*, khtml::CachedObject*) 
const + 0x90
22  com.apple.WebCore        	0x9645a45c khtml::Loader::slotFinished(KIO::Job*, NSData*) + 0x1ac
23  com.apple.WebCore        	0x964950d8 KWQSignal::call(KIO::Job*, NSData*) const + 0x90
24  com.apple.WebCore        	0x9649aa1c -[KWQResourceLoader finishJobAndHandle:] + 0x3c
25  com.apple.WebKit         	0x9605cb78 -[WebSubresourceClient didFinishLoading] + 0x48
26  com.apple.Foundation     	0x90a6dea4 -[NSURLConnection(NSURLConnectionInternal) 
_sendDidFinishLoadingCallback] + 0x4c
27  com.apple.Foundation     	0x90a3d354 -[NSURLConnection(NSURLConnectionInternal) 
_sendCallbacks] + 0x1f8
28  com.apple.Foundation     	0x90a279e4 -[NSArray makeObjectsPerformSelector:withObject:] + 
0x108
29  com.apple.Foundation     	0x90a51b7c _sendCallbacks + 0xd4
30  com.apple.CoreFoundation 	0x901c3c88 __CFRunLoopDoSources0 + 0x1fc
31  com.apple.CoreFoundation 	0x901c1540 __CFRunLoopRun + 0x1b0
32  com.apple.CoreFoundation 	0x901c5e6c CFRunLoopRunSpecific + 0x148
33  com.apple.HIToolbox      	0x92885f60 RunCurrentEventLoopInMode + 0xac
34  com.apple.HIToolbox      	0x9288c6c8 ReceiveNextEventCommon + 0x17c
35  com.apple.HIToolbox      	0x928ae6a0 BlockUntilNextEventMatchingListInMode + 0x60
36  com.apple.AppKit         	0x92e826dc _DPSNextEvent + 0x180
37  com.apple.AppKit         	0x92e9915c -[NSApplication nextEventMatchingMask:untilDate:inMode:
dequeue:] + 0x74
38  com.apple.Safari         	0x0000bd24 0x1000 + 0xad24
39  com.apple.AppKit         	0x92ead4dc -[NSApplication run] + 0x21c
40  com.apple.AppKit         	0x92f69bec NSApplicationMain + 0x1d0
41  com.apple.Safari         	0x00007fc4 0x1000 + 0x6fc4
42  com.apple.Safari         	0x000546e8 0x1000 + 0x536e8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12203</commentid>
    <comment_count>1</comment_count>
    <who name="Jens Ayton">DHKIJUMWNCDB</who>
    <bug_when>2005-06-15 23:14:29 -0700</bug_when>
    <thetext>Clarification: the page in question is that specified in the &quot;URL&quot; field of the report, i.e. http://
hol.istic.net/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12223</commentid>
    <comment_count>2</comment_count>
    <who name="Nicholas &apos;Aquarion&apos; Avenell">nicholas</who>
    <bug_when>2005-06-16 01:37:39 -0700</bug_when>
    <thetext>The page with the example on it is mine. I&apos;m going to leave that precise page
alone until I can reproduce the exact bug on a static page (Downloading to
desktop apparently stops the thing from crashing) for the purposes of debugging.
If move the broken page (Pretty likely, as Jens mentioned I&apos;m now on a
powerbook, and my site crashing it is annoying ;-) I&apos;ll note here where it&apos;s gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12298</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2005-06-16 15:51:12 -0700</bug_when>
    <thetext>I&apos;m getting a crash when I load the page in both TOT Webkit and Safari 2.0 (v412).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12299</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2005-06-16 15:56:24 -0700</bug_when>
    <thetext>Setting to P1 since this is a crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12309</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2005-06-16 17:23:49 -0700</bug_when>
    <thetext>Attaching test case of problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12310</commentid>
    <comment_count>6</comment_count>
      <attachid>2411</attachid>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2005-06-16 17:25:40 -0700</bug_when>
    <thetext>Created attachment 2411
Reduced test case from hol.istic.net

Opening this test case in Safari 2.0 or TOT Webkit results in a crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12311</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2005-06-16 17:39:46 -0700</bug_when>
    <thetext>The test case uses a script  that affects several H3 elements in the BODY. The crash occurs when the 
first-letter pseudo selector is applied to one of these heading :

&lt;h3 id=&quot;versionsTitle&quot;&gt;versionsTitle&lt;/h3&gt;.

 When the script attempts to manipulating this element , a crash occurs.

function versionsInit(){
	thing = document.getElementById(&quot;revisionsList&quot;);
	content = thing.innerHTML;
	
	if (content == &quot;&quot;){
		 document.getElementById(&quot;revisions&quot;).style.display = &quot;none&quot;;
	} else {
		header = document.getElementById(&quot;versionsTitle&quot;);
		header.onclick = toggleVersions;
		header.content = header.innerHTML
			thing.style.display = &quot;none&quot;;
			header.innerHTML = &quot;+ &quot;+header.content;
		}
	}

If you remove this first-letter pseudo selector, the crash no longer occurs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23730</commentid>
    <comment_count>8</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2005-11-04 11:28:06 -0800</bug_when>
    <thetext>unable to reproduce</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23732</commentid>
    <comment_count>9</comment_count>
    <who name="Nicholas &apos;Aquarion&apos; Avenell">nicholas</who>
    <bug_when>2005-11-04 12:04:49 -0800</bug_when>
    <thetext>Okay, From here (Safari 2.0.2 (416.12)) Clicking on the reduced test case crashes it out still (It no longer 
applies to Hol.istic.net itself since I Saw The Light, bought a Powerbook and started to care a lot more 
about being able to visit my own website in Safari) </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25844</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-11 20:15:55 -0800</bug_when>
    <thetext>After a little debugging, the problem is obvious, but the solution is not yet obvious. The 
RenderTextFragment created for the first letter points to the same text node as the RenderTextFragment 
for the remaining text. But the text node only points to the remaining text renderer. Thus the text node&apos;s 
detach method only destroys the remaining text RenderTextFragment, orphaning a RenderTextFragment 
that now points to a non-existent node.

We have to change something so that both renderers get destroyed. Maybe this can be special code in 
RenderTextFragment that knows about the other RenderTextFragment so that destroying one will destroy 
both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28083</commentid>
    <comment_count>11</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-01-09 17:40:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/4330356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28085</commentid>
    <comment_count>12</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-01-09 17:41:44 -0800</bug_when>
    <thetext>*** Bug 4269 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35213</commentid>
    <comment_count>13</comment_count>
      <attachid>6892</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-06 00:36:37 -0800</bug_when>
    <thetext>Created attachment 6892
no test case yet, but would like a first pass of review anyway</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35214</commentid>
    <comment_count>14</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-06 00:43:17 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=6892) [edit]

Wrong patch or wrong bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35265</commentid>
    <comment_count>15</comment_count>
      <attachid>6892</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-06 09:00:03 -0800</bug_when>
    <thetext>Comment on attachment 6892
no test case yet, but would like a first pass of review anyway

Oops. Attached this patch to the wrong bug!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35922</commentid>
    <comment_count>16</comment_count>
      <attachid>7012</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-11 15:39:07 -0800</bug_when>
    <thetext>Created attachment 7012
Proposed fix, no test and change log yet

I didn&apos;t bother with anything more generic than the first-letter case as it seems to be unique. Do you think firstLetter() belongs in a subclass (RenderTextFragmentRemaining?)?

Please r- since there&apos;s no test and change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35961</commentid>
    <comment_count>17</comment_count>
      <attachid>7012</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-11 22:13:23 -0800</bug_when>
    <thetext>Comment on attachment 7012
Proposed fix, no test and change log yet

Looks like a good fix to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36000</commentid>
    <comment_count>18</comment_count>
      <attachid>7024</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-12 07:24:54 -0800</bug_when>
    <thetext>Created attachment 7024
Same patch, with layout test and change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36754</commentid>
    <comment_count>19</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-03-17 09:45:51 -0800</bug_when>
    <thetext>I committed this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36786</commentid>
    <comment_count>20</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-17 14:18:15 -0800</bug_when>
    <thetext>http://build.webkit.org/results/post-commit-leaks-powerpc-mac-os-x/598/DumpRenderTree-leaks.txt
This patched causes RenderTextFragments to leak. Investigating...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2411</attachid>
            <date>2005-06-16 17:25:40 -0700</date>
            <delta_ts>2005-06-16 17:25:40 -0700</delta_ts>
            <desc>Reduced test case from hol.istic.net</desc>
            <filename>holistic_reduction.html</filename>
            <type>text/html</type>
            <size>1398</size>
            <attacher name="Chris Petersen">c.petersen87</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4KPGh0bWw+CjxoZWFkPgo8dGl0bGU+IGhvbC5pc3RpYy5uZXQgLSBmcm9udFBhZ2UgPC90
aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCgojdmVyc2lvbnNUaXRsZTpmaXJzdC1sZXR0
ZXIgewoJZm9udC1mYW1pbHk6IEFyaWFsOwoJfQoKCgoKPC9zdHlsZT4KCjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KCmZ1bmN0aW9uIGFkZEV2ZW50KGVsbSwgZXZUeXBlLCBmbiwgdXNl
Q2FwdHVyZSkKLy8gYWRkRXZlbnQgYW5kIHJlbW92ZUV2ZW50Ci8vIGNyb3NzLWJyb3dzZXIgZXZl
bnQgaGFuZGxpbmcgZm9yIElFNSssICBOUzYgYW5kIE1vemlsbGEKLy8gQnkgU2NvdHQgQW5kcmV3
CnsKICBpZiAoZWxtLmFkZEV2ZW50TGlzdGVuZXIpewogICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIo
ZXZUeXBlLCBmbiwgdXNlQ2FwdHVyZSk7CiAgICByZXR1cm4gdHJ1ZTsKICB9IGVsc2UgaWYgKGVs
bS5hdHRhY2hFdmVudCl7CiAgICB2YXIgciA9IGVsbS5hdHRhY2hFdmVudCgib24iK2V2VHlwZSwg
Zm4pOwogICAgcmV0dXJuIHI7CiAgfQp9IAoKZnVuY3Rpb24gdG9nZ2xlVmVyc2lvbnMoKXsKCXRo
aW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldmlzaW9uc0xpc3QnKTsKCWlmICh0aGlu
Zy5zdHlsZS5kaXNwbGF5ID09ICdub25lJyl7CgkJdGhpbmcuc3R5bGUuZGlzcGxheSA9ICcnOwoJ
CXRoaXMuaW5uZXJIVE1MID0gIi0gIit0aGlzLmNvbnRlbnQ7Cgl9Cn0KCgpmdW5jdGlvbiB2ZXJz
aW9uc0luaXQoKXsKCXRoaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldmlzaW9uc0xp
c3QiKTsKCWNvbnRlbnQgPSB0aGluZy5pbm5lckhUTUw7CgkKCWlmIChjb250ZW50ID09ICIiKXsK
CQkgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldmlzaW9ucyIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7Cgl9IGVsc2UgewoJCWhlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZXJz
aW9uc1RpdGxlIik7CgkJaGVhZGVyLm9uY2xpY2sgPSB0b2dnbGVWZXJzaW9uczsKCQloZWFkZXIu
Y29udGVudCA9IGhlYWRlci5pbm5lckhUTUwKCQkJdGhpbmcuc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKCQkJaGVhZGVyLmlubmVySFRNTCA9ICIrICIraGVhZGVyLmNvbnRlbnQ7CgkJfQoJfQphZGRF
dmVudCh3aW5kb3csICJsb2FkIiwgdmVyc2lvbnNJbml0KTsKPC9zY3JpcHQ+Cgo8L2hlYWQ+Cjxi
b2R5PgoKPGgzIGlkPSJ2ZXJzaW9uc1RpdGxlIj52ZXJzaW9uc1RpdGxlPC9oMz4KCjxoMyBpZD0i
cmV2aXNpb25zIj5SZXZpc2lvbnM8L2gzPgoKPGgzIGlkPSJyZXZpc2lvbnNMaXN0Ij5yZXZpc2lv
bnNMaXN0PC9oMz4KCgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6892</attachid>
            <date>2006-03-06 00:36:37 -0800</date>
            <delta_ts>2006-03-06 09:00:34 -0800</delta_ts>
            <desc>no test case yet, but would like a first pass of review anyway</desc>
            <filename>FrameNamePatch.txt</filename>
            <type>text/plain</type>
            <size>64820</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2Jhc2VpbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9iYXNlaW1wbC5jcHAJKHJldmlzaW9uIDEzMTYyKQor
KysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfYmFzZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01LDcgKzUsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIFNpbW9uIEhhdXNtYW5uIChoYXVz
bWFubkBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjcsMjcgKzI3LDI2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiaHRtbF9iYXNlaW1wbC5oIgogCi0jaW5jbHVkZSAiaHRtbC9odG1sX2RvY3VtZW50aW1w
bC5oIgotCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCi0KLSNpbmNsdWRlICJy
ZW5kZXJpbmcvcmVuZGVyX2ZyYW1lcy5oIgotI2luY2x1ZGUgImNzcy9jc3NzdHlsZXNlbGVjdG9y
LmgiCi0jaW5jbHVkZSAiY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIgorI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJjc3Nfc3R5bGVzaGVldGltcGwuaCIKKyNpbmNs
dWRlICJjc3NoZWxwZXIuaCIKICNpbmNsdWRlICJjc3Nwcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAi
Y3Nzc3R5bGVzZWxlY3Rvci5oIgogI2luY2x1ZGUgImNzc3ZhbHVlcy5oIgotI2luY2x1ZGUgImNz
cy9jc3NoZWxwZXIuaCIKLSNpbmNsdWRlICJsb2FkZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgImRvbTJfZXZlbnRzaW1wbC5oIgotI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJodG1sX2RvY3VtZW50aW1wbC5oIgogI2luY2x1ZGUgImh0bWxuYW1l
cy5oIgorI2luY2x1ZGUgImxvYWRlci5oIgorI2luY2x1ZGUgInJlbmRlcl9mcmFtZXMuaCIKIAot
I2luY2x1ZGUgPEtVUkwuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgeworCiB1c2luZyBuYW1lc3Bh
Y2UgRXZlbnROYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKQEAgLTI5OSw3ICsy
OTgsNyBAQAogICAgIC8vIEZJWE1FOiBUaGlzIGxpbWl0IGNvdWxkIGJlIGhpZ2hlciwgYnV0IFdl
YktpdCBoYXMgc29tZQogICAgIC8vIGFsZ29yaXRobXMgdGhhdCBoYXBwZW4gd2hpbGUgbG9hZGlu
ZyB3aGljaCBhcHBlYXIgdG8gYmUgTl4yIG9yCiAgICAgLy8gd29yc2UgaW4gdGhlIG51bWJlciBv
ZiBmcmFtZXMKLSAgICBpZiAody0+ZnJhbWUoKS0+dG9wTGV2ZWxGcmFtZUNvdW50KCkgPj0gMjAw
KSB7CisgICAgaWYgKHctPmZyYW1lKCktPnBhZ2UoKS0+ZnJhbWVDb3VudCgpID49IDIwMCkgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zMjQsMjMgKzMyMywyMCBAQAogewog
ICAgIERvY3VtZW50SW1wbCAqZCA9IGdldERvY3VtZW50KCk7CiAgICAgRnJhbWVWaWV3ICp3ID0g
ZCA/IGQtPnZpZXcoKSA6IDA7Ci0gICAgaWYgKCF3KSB7CisgICAgaWYgKCF3KQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogICAgIAogICAgIEF0b21pY1N0cmluZyByZWxhdGl2ZVVSTCA9IG1fVVJM
OwotICAgIGlmIChyZWxhdGl2ZVVSTC5pc0VtcHR5KCkpIHsKKyAgICBpZiAocmVsYXRpdmVVUkwu
aXNFbXB0eSgpKQogICAgICAgICByZWxhdGl2ZVVSTCA9ICJhYm91dDpibGFuayI7Ci0gICAgfQog
CiAgICAgLy8gTG9hZCB0aGUgZnJhbWUgY29udGVudHMuCi0gICAgRnJhbWUgKmZyYW1lID0gdy0+
ZnJhbWUoKTsKLSAgICBGcmFtZSAqZnJhbWVQYXJ0ID0gZnJhbWUtPmZpbmRGcmFtZShtX25hbWUu
cXN0cmluZygpKTsKLSAgICBpZiAoZnJhbWVQYXJ0KSB7Ci0gICAgICAgIGZyYW1lUGFydC0+b3Bl
blVSTChnZXREb2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTC5xc3RyaW5nKCkpKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBmcmFtZS0+cmVxdWVzdEZyYW1lKHN0YXRpY19jYXN0PFJl
bmRlckZyYW1lICo+KHJlbmRlcmVyKCkpLCByZWxhdGl2ZVVSTC5xc3RyaW5nKCksIG1fbmFtZS5x
c3RyaW5nKCkpOwotICAgIH0KKyAgICBGcmFtZSogcGFyZW50RnJhbWUgPSB3LT5mcmFtZSgpOwor
ICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gcGFyZW50RnJhbWUtPnRyZWUoKS0+Y2hpbGQobV9uYW1l
KTsKKyAgICBpZiAoY2hpbGRGcmFtZSkKKyAgICAgICAgY2hpbGRGcmFtZS0+b3BlblVSTChnZXRE
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTC5xc3RyaW5nKCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHBhcmVudEZyYW1lLT5yZXF1ZXN0RnJhbWUoc3RhdGljX2Nhc3Q8UmVuZGVyRnJh
bWUgKj4ocmVuZGVyZXIoKSksIHJlbGF0aXZlVVJMLnFzdHJpbmcoKSwgbV9uYW1lLnFzdHJpbmco
KSk7CiB9CiAKIApAQCAtNDIxLDIxICs0MTcsMTggQEAKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lICpmcmFtZSA9IGdldERvY3VtZW50KCktPmZyYW1l
KCk7CisgICAgRnJhbWUqIGZyYW1lID0gZ2V0RG9jdW1lbnQoKS0+ZnJhbWUoKTsKIAogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5pbmNyZW1lbnRGcmFtZUNv
dW50KCk7CisgICAgZnJhbWUtPnBhZ2UoKS0+aW5jcmVtZW50RnJhbWVDb3VudCgpOwogICAgIAog
ICAgIEF0b21pY1N0cmluZyByZWxhdGl2ZVVSTCA9IG1fVVJMOwotICAgIGlmIChyZWxhdGl2ZVVS
TC5pc0VtcHR5KCkpIHsKKyAgICBpZiAocmVsYXRpdmVVUkwuaXNFbXB0eSgpKQogICAgICAgICBy
ZWxhdGl2ZVVSTCA9ICJhYm91dDpibGFuayI7Ci0gICAgfQogCi0gICAgLy8gd2UgbmVlZCBhIHVu
aXF1ZSBuYW1lIGZvciBldmVyeSBmcmFtZSBpbiB0aGUgZnJhbWVzZXQuIEhvcGUgdGhhdCdzIHVu
aXF1ZSBlbm91Z2guCi0gICAgaWYgKG1fbmFtZS5pc0VtcHR5KCkgfHwgZnJhbWUtPmZyYW1lRXhp
c3RzKG1fbmFtZS5xc3RyaW5nKCkpKQotICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcoZnJh
bWUtPnJlcXVlc3RGcmFtZU5hbWUoKSk7CisgICAgbV9uYW1lID0gZnJhbWUtPnRyZWUoKS0+bmFt
ZUZvck5ld0NoaWxkKG1fbmFtZSk7CiAKICAgICAvLyBsb2FkIHRoZSBmcmFtZSBjb250ZW50cwog
ICAgIGZyYW1lLT5yZXF1ZXN0RnJhbWUoc3RhdGljX2Nhc3Q8UmVuZGVyRnJhbWUqPihyZW5kZXJl
cigpKSwgcmVsYXRpdmVVUkwucXN0cmluZygpLCBtX25hbWUucXN0cmluZygpKTsKQEAgLTQ0Mywx
MyArNDM2LDExIEBACiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVudEltcGw6OmNsb3NlKCkKIHsKLSAg
ICBGcmFtZSAqZnJhbWUgPSBnZXREb2N1bWVudCgpLT5mcmFtZSgpOwotCisgICAgRnJhbWUqIGZy
YW1lID0gZ2V0RG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAocmVuZGVyZXIoKSAmJiBmcmFt
ZSkgewotICAgICAgICBmcmFtZS0+ZGVjcmVtZW50RnJhbWVDb3VudCgpOwotICAgICAgICBGcmFt
ZSAqZnJhbWVQYXJ0ID0gZnJhbWUtPmZpbmRGcmFtZShtX25hbWUucXN0cmluZygpKTsKLSAgICAg
ICAgaWYgKGZyYW1lUGFydCkKLSAgICAgICAgICAgIGZyYW1lUGFydC0+ZnJhbWVEZXRhY2hlZCgp
OworICAgICAgICBmcmFtZS0+cGFnZSgpLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7CisgICAgICAg
IGlmIChGcmFtZSogY2hpbGRGcmFtZSA9IGZyYW1lLT50cmVlKCktPmNoaWxkKG1fbmFtZSkpCisg
ICAgICAgICAgICBjaGlsZEZyYW1lLT5mcmFtZURldGFjaGVkKCk7CiAgICAgfQogfQogCkBAIC01
MTMsMjYgKzUwNCwyMiBAQAogICAgICAgICByZW5kZXJGcmFtZS0+d2lkZ2V0KCktPmNsZWFyRm9j
dXMoKTsKIH0KIAotRnJhbWUqIEhUTUxGcmFtZUVsZW1lbnRJbXBsOjpjb250ZW50UGFydCgpIGNv
bnN0CitGcmFtZSogSFRNTEZyYW1lRWxlbWVudEltcGw6OmNvbnRlbnRGcmFtZSgpIGNvbnN0CiB7
CiAgICAgLy8gU3RhcnQgd2l0aCB0aGUgcGFydCB0aGF0IGNvbnRhaW5zIHRoaXMgZWxlbWVudCwg
b3VyIG93bmVyRG9jdW1lbnQuCi0gICAgRnJhbWUqIG93bmVyRG9jdW1lbnRQYXJ0ID0gZ2V0RG9j
dW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIW93bmVyRG9jdW1lbnRQYXJ0KSB7CisgICAgRnJh
bWUqIHBhcmVudEZyYW1lID0gZ2V0RG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIXBhcmVu
dEZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKICAgICAvLyBGaW5kIHRoZSBwYXJ0
IGZvciB0aGUgc3ViZnJhbWUgdGhhdCB0aGlzIGVsZW1lbnQgcmVwcmVzZW50cy4KLSAgICByZXR1
cm4gb3duZXJEb2N1bWVudFBhcnQtPmZpbmRGcmFtZShtX25hbWUucXN0cmluZygpKTsKKyAgICBy
ZXR1cm4gcGFyZW50RnJhbWUtPnRyZWUoKS0+Y2hpbGQobV9uYW1lKTsKIH0KIAogRG9jdW1lbnRJ
bXBsKiBIVE1MRnJhbWVFbGVtZW50SW1wbDo6Y29udGVudERvY3VtZW50KCkgY29uc3QKIHsKLSAg
ICBGcmFtZSAqZnJhbWUgPSBjb250ZW50UGFydCgpOwotICAgIGlmICghZnJhbWUpIHsKKyAgICBG
cmFtZSogZnJhbWUgPSBjb250ZW50RnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gdGhlIGRvY3VtZW50IGZvciB0aGF0IHBh
cnQsIHdoaWNoIGlzIG91ciBjb250ZW50RG9jdW1lbnQuCiAgICAgcmV0dXJuIGZyYW1lLT5kb2N1
bWVudCgpOwogfQogCkBAIC05MTYsMTYgKzkwMywxMyBAQAogICAgIG1fbmFtZSA9IGdldEF0dHJp
YnV0ZShuYW1lQXR0cik7CiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKICAgICAgICAgbV9uYW1l
ID0gZ2V0QXR0cmlidXRlKGlkQXR0cik7Ci0gICAgCisKICAgICBIVE1MRWxlbWVudEltcGw6OmF0
dGFjaCgpOwogCi0gICAgRnJhbWUgKmZyYW1lID0gZ2V0RG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAg
ICBpZiAocmVuZGVyZXIoKSAmJiBmcmFtZSkgewotICAgICAgICAvLyB3ZSBuZWVkIGEgdW5pcXVl
IG5hbWUgZm9yIGV2ZXJ5IGZyYW1lIGluIHRoZSBmcmFtZXNldC4gSG9wZSB0aGF0J3MgdW5pcXVl
IGVub3VnaC4KLSAgICAgICAgZnJhbWUtPmluY3JlbWVudEZyYW1lQ291bnQoKTsKLSAgICAgICAg
aWYgKG1fbmFtZS5pc0VtcHR5KCkgfHwgZnJhbWUtPmZyYW1lRXhpc3RzKG1fbmFtZS5xc3RyaW5n
KCkpKQotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKGZyYW1lLT5yZXF1ZXN0RnJh
bWVOYW1lKCkpOwotCisgICAgRnJhbWUqIHBhcmVudEZyYW1lID0gZ2V0RG9jdW1lbnQoKS0+ZnJh
bWUoKTsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiBwYXJlbnRGcmFtZSkgeworICAgICAgICBwYXJl
bnRGcmFtZS0+cGFnZSgpLT5pbmNyZW1lbnRGcmFtZUNvdW50KCk7CisgICAgICAgIG1fbmFtZSA9
IHBhcmVudEZyYW1lLT50cmVlKCktPm5hbWVGb3JOZXdDaGlsZChtX25hbWUpOwogICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJQYXJ0T2JqZWN0Kj4ocmVuZGVyZXIoKSktPnVwZGF0ZVdpZGdldCgp
OwogICAgICAgICBuZWVkV2lkZ2V0VXBkYXRlID0gZmFsc2U7CiAgICAgfQpJbmRleDogV2ViQ29y
ZS9raHRtbC9odG1sL2h0bWxfYmFzZWltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1s
L2h0bWwvaHRtbF9iYXNlaW1wbC5oCShyZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2Jhc2VpbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQAog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb2N1cyhib29sKTsKIAotICAgIEZyYW1lKiBjb250ZW50UGFydCgpIGNvbnN0OworICAgIEZy
YW1lKiBjb250ZW50RnJhbWUoKSBjb25zdDsKICAgICBEb2N1bWVudEltcGwqIGNvbnRlbnREb2N1
bWVudCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRy
aWJ1dGVJbXBsICphdHRyKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfaHRt
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcAkocmV2
aXNpb24gMTMxNjIpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksMTIgKzIwOSwxMCBAQAogICBSZWZQdHI8RE9NOjpIVE1MQ29sbGVjdGlv
bkltcGw+IGNvbGxlY3Rpb24gPSBkb2MuZG9jdW1lbnROYW1lZEl0ZW1zKG5hbWUpOwogCiAgIGlm
IChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKSB7Ci0gICAgTm9kZUltcGwgKm5vZGUgPSBjb2xs
ZWN0aW9uLT5maXJzdEl0ZW0oKTsKKyAgICBOb2RlSW1wbCogbm9kZSA9IGNvbGxlY3Rpb24tPmZp
cnN0SXRlbSgpOwogICAgIEZyYW1lICpmcmFtZTsKLSAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShp
ZnJhbWVUYWcpICYmIAotICAgICAgICAoZnJhbWUgPSBzdGF0aWNfY2FzdDxET006OkhUTUxJRnJh
bWVFbGVtZW50SW1wbCAqPihub2RlKS0+Y29udGVudFBhcnQoKSkpCisgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoaWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxET006OkhUTUxJRnJh
bWVFbGVtZW50SW1wbCAqPihub2RlKS0+Y29udGVudEZyYW1lKCkpKQogICAgICAgcmV0dXJuIFdp
bmRvdzo6cmV0cmlldmUoZnJhbWUpOwotCiAgICAgcmV0dXJuIGdldERPTU5vZGUoZXhlYywgbm9k
ZSk7CiAgIH0KIApAQCAtMjA5Miw3ICsyMDkwLDcgQEAKICAgICAgICAgY2FzZSBGcmFtZUNvbnRl
bnREb2N1bWVudDogcmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsZnJhbWVFbGVtZW50LmNv
bnRlbnREb2N1bWVudCgpKSA/IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2V0RE9NTm9kZShleGVjLCBmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50KCkpIDog
anNVbmRlZmluZWQoKTsKICAgICAgICAgY2FzZSBGcmFtZUNvbnRlbnRXaW5kb3c6ICAgcmV0dXJu
IGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudCgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gV2luZG93OjpyZXRyaWV2
ZShmcmFtZUVsZW1lbnQuY29udGVudFBhcnQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA/IFdpbmRvdzo6cmV0cmlldmUoZnJhbWVFbGVtZW50LmNvbnRlbnRGcmFt
ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoganNVbmRlZmlu
ZWQoKTsKICAgICAgICAgY2FzZSBGcmFtZUZyYW1lQm9yZGVyOiAgICAgcmV0dXJuIGpzU3RyaW5n
KGZyYW1lRWxlbWVudC5mcmFtZUJvcmRlcigpKTsKICAgICAgICAgY2FzZSBGcmFtZUxvbmdEZXNj
OiAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGZyYW1lRWxlbWVudC5sb25nRGVzYygpKTsKQEAgLTIx
MTgsOCArMjExNiw4IEBACiAgICAgICAgIGNhc2UgSUZyYW1lRG9jdW1lbnQ6IC8vIG5vbi1zdGFu
ZGFyZCwgbWFwcGVkIHRvIGNvbnRlbnREb2N1bWVudAogICAgICAgICBjYXNlIElGcmFtZUNvbnRl
bnREb2N1bWVudDogcmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsaUZyYW1lLmNvbnRlbnRE
b2N1bWVudCgpKSA/IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRE
T01Ob2RlKGV4ZWMsIGlGcmFtZS5jb250ZW50RG9jdW1lbnQoKSkgOiBqc1VuZGVmaW5lZCgpOwot
ICAgICAgICBjYXNlIElGcmFtZUNvbnRlbnRXaW5kb3c6ICAgICAgIHJldHVybiBjaGVja05vZGVT
ZWN1cml0eShleGVjLGlGcmFtZS5jb250ZW50RG9jdW1lbnQoKSkgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPyBXaW5kb3c6OnJldHJpZXZlKGlGcmFtZS5jb250ZW50
UGFydCgpKQorICAgICAgICBjYXNlIElGcmFtZUNvbnRlbnRXaW5kb3c6ICAgcmV0dXJuIGNoZWNr
Tm9kZVNlY3VyaXR5KGV4ZWMsaUZyYW1lLmNvbnRlbnREb2N1bWVudCgpKSAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvdzo6cmV0cmlldmUoaUZyYW1lLmNv
bnRlbnRGcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
anNVbmRlZmluZWQoKTsKICAgICAgICAgY2FzZSBJRnJhbWVGcmFtZUJvcmRlcjogICAgIHJldHVy
biBqc1N0cmluZyhpRnJhbWUuZnJhbWVCb3JkZXIoKSk7CiAgICAgICAgIGNhc2UgSUZyYW1lSGVp
Z2h0OiAgICAgICAgICByZXR1cm4ganNTdHJpbmcoaUZyYW1lLmhlaWdodCgpKTsKSW5kZXg6IFdl
YkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2to
dG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHJldmlzaW9uIDEzMTYyKQorKysgV2ViQ29yZS9raHRt
bC9lY21hL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsNyArNzAxLDcgQEAK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICByZXR1cm4ganNOdW1iZXIobV9m
cmFtZS0+dmlldygpLT52aXNpYmxlV2lkdGgoKSk7CiAgICAgY2FzZSBMZW5ndGg6Ci0gICAgICBy
ZXR1cm4ganNOdW1iZXIobV9mcmFtZS0+ZnJhbWVzKCkuY291bnQoKSk7CisgICAgICByZXR1cm4g
anNOdW1iZXIobV9mcmFtZS0+dHJlZSgpLT5jaGlsZENvdW50KCkpOwogICAgIGNhc2UgX0xvY2F0
aW9uOgogICAgICAgcmV0dXJuIGxvY2F0aW9uKCk7CiAgICAgY2FzZSBOYW1lOgpAQCAtODkyLDI3
ICs4OTIsMTkgQEAKICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1KU1ZhbHVlICpXaW5k
b3c6OmNoaWxkRnJhbWVHZXR0ZXIoRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqb3JpZ2luYWxP
YmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQorSlNWYWx1ZSogV2luZG93OjpjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gIFdpbmRvdyAqdGhpc09iaiA9IHN0YXRpY19jYXN0PFdpbmRvdyAqPihz
bG90LnNsb3RCYXNlKCkpOwotICByZXR1cm4gcmV0cmlldmUodGhpc09iai0+bV9mcmFtZS0+Y2hp
bGRGcmFtZU5hbWVkKHByb3BlcnR5TmFtZS5xc3RyaW5nKCkpKTsKKyAgcmV0dXJuIHJldHJpZXZl
KHN0YXRpY19jYXN0PFdpbmRvdyo+KHNsb3Quc2xvdEJhc2UoKSktPm1fZnJhbWUtPnRyZWUoKS0+
Y2hpbGQoQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSkpKTsKIH0KIAotSlNW
YWx1ZSAqV2luZG93OjpuYW1lZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3Qg
Km9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCkKK0pTVmFsdWUgKldpbmRvdzo6bmFtZWRGcmFtZUdldHRlcihFeGVj
U3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90KQogewotICBXaW5kb3cgKnRoaXNPYmogPSBzdGF0aWNfY2FzdDxX
aW5kb3cgKj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJuIHJldHJpZXZlKHRoaXNPYmotPm1f
ZnJhbWUtPmZpbmRGcmFtZShwcm9wZXJ0eU5hbWUucXN0cmluZygpKSk7CisgIHJldHVybiByZXRy
aWV2ZShzdGF0aWNfY2FzdDxXaW5kb3cqPihzbG90LnNsb3RCYXNlKCkpLT5tX2ZyYW1lLT50cmVl
KCktPmZpbmQoQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSkpKTsKIH0KIAot
SlNWYWx1ZSogV2luZG93OjppbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
cmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitKU1ZhbHVlKiBXaW5kb3c6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgV2luZG93KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8V2luZG93Kj4oc2xvdC5zbG90QmFz
ZSgpKTsKLSAgCi0gIFFQdHJMaXN0PEZyYW1lPiBmcmFtZXMgPSB0aGlzT2JqLT5tX2ZyYW1lLT5m
cmFtZXMoKTsKLSAgRnJhbWUqIGZyYW1lID0gZnJhbWVzLmF0KHNsb3QuaW5kZXgoKSk7Ci0gIEFT
U0VSVChmcmFtZSk7Ci0KLSAgcmV0dXJuIHJldHJpZXZlKGZyYW1lKTsKKyAgcmV0dXJuIHJldHJp
ZXZlKHN0YXRpY19jYXN0PFdpbmRvdyo+KHNsb3Quc2xvdEJhc2UoKSktPm1fZnJhbWUtPnRyZWUo
KS0+Y2hpbGQoc2xvdC5pbmRleCgpKSk7CiB9CiAKIEpTVmFsdWUgKldpbmRvdzo6bmFtZWRJdGVt
R2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTk2
Miw4ICs5NTQsNyBAQAogICAvLyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdp
dGggd2luZG93IHByb3BlcnRpZXMgdGhhdAogICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNp
bmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAvLyBpdCB0aGUgTW96
IHdheS4KLSAgRnJhbWUgKmNoaWxkRnJhbWUgPSBtX2ZyYW1lLT5jaGlsZEZyYW1lTmFtZWQocHJv
cGVydHlOYW1lLnFzdHJpbmcoKSk7Ci0gIGlmIChjaGlsZEZyYW1lKSB7CisgIGlmIChtX2ZyYW1l
LT50cmVlKCktPmNoaWxkKEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCkpKSkg
ewogICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgIHJldHVy
biB0cnVlOwogICB9CkBAIC05OTIsMjUgKzk4MywxNyBAQAogICAgIHJldHVybiB0cnVlOwogICB9
CiAKLSAgRnJhbWUgKmtwID0gbV9mcmFtZS0+ZmluZEZyYW1lKHByb3BlcnR5TmFtZS5xc3RyaW5n
KCkpOwotICBpZiAoa3ApIHsKKyAgaWYgKG1fZnJhbWUtPnRyZWUoKS0+ZmluZChBdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKSkpIHsKICAgICBzbG90LnNldEN1c3RvbSh0aGlz
LCBuYW1lZEZyYW1lR2V0dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIC8vIGFsbG93
IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQogICBib29sIG9rOwotICB1bnNp
Z25lZCBpbnQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoJm9rKTsKLSAgaWYgKG9rKSB7
Ci0gICAgUVB0ckxpc3Q8RnJhbWU+IGZyYW1lcyA9IG1fZnJhbWUtPmZyYW1lcygpOwotICAgIHVu
c2lnbmVkIGludCBsZW4gPSBmcmFtZXMuY291bnQoKTsKLSAgICBpZiAoaSA8IGxlbikgewotICAg
ICAgRnJhbWUqIGZyYW1lID0gZnJhbWVzLmF0KGkpOwotICAgICAgaWYgKGZyYW1lKSB7Ci0gICAg
ICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaSwgaW5kZXhHZXR0ZXIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9CisgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUu
dG9BcnJheUluZGV4KCZvayk7CisgIGlmIChvayAmJiBpIDwgbV9mcmFtZS0+dHJlZSgpLT5jaGls
ZENvdW50KCkpIHsKKyAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIGksIGluZGV4R2V0dGVy
KTsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIC8vIGFsbG93IHNob3J0Y3V0cyBsaWtlICdJ
bWFnZTEnIGluc3RlYWQgb2YgZG9jdW1lbnQuaW1hZ2VzLkltYWdlMQpAQCAtMTU4NSw5ICsxNTY4
LDkgQEAKICAgfQogICBjYXNlIFdpbmRvdzo6T3BlbjoKICAgewotICAgICAgUVN0cmluZyBmcmFt
ZU5hbWUgPSBhcmdzWzFdLT5pc1VuZGVmaW5lZE9yTnVsbCgpID8gUVN0cmluZygiX2JsYW5rIikg
OiBhcmdzWzFdLT50b1N0cmluZyhleGVjKS5xc3RyaW5nKCk7Ci0gICAgICBpZiAoIWFsbG93UG9w
VXAoZXhlYywgd2luZG93KQotICAgICAgICAgICAgJiYgIShmcmFtZU5hbWUgPT0gIl90b3AiIHx8
IGZyYW1lTmFtZSA9PSAiX3BhcmVudCIgfHwgZnJhbWVOYW1lID09ICJfc2VsZiIgfHwgZnJhbWUt
PmZpbmRGcmFtZShmcmFtZU5hbWUpKSkKKyAgICAgIEF0b21pY1N0cmluZyBmcmFtZU5hbWUgPSBh
cmdzWzFdLT5pc1VuZGVmaW5lZE9yTnVsbCgpCisgICAgICAgID8gIl9ibGFuayIgOiBBdG9taWNT
dHJpbmcoYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpOworICAgICAgaWYgKCFh
bGxvd1BvcFVwKGV4ZWMsIHdpbmRvdykgJiYgIWZyYW1lLT50cmVlKCktPmZpbmQoZnJhbWVOYW1l
KSkKICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgIAogICAgICAgV2luZG93
QXJncyB3aW5kb3dBcmdzOwpAQCAtMTYwMiw3ICsxNTg1LDcgQEAKICAgICAgICAgICB1cmwgPSBh
Y3RpdmVQYXJ0LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHIucXN0cmluZygpKTsKIAogICAg
ICAgVVJMQXJncyB1YXJnczsKLSAgICAgIHVhcmdzLmZyYW1lTmFtZSA9IGZyYW1lTmFtZTsKKyAg
ICAgIHVhcmdzLmZyYW1lTmFtZSA9IGZyYW1lTmFtZS5xc3RyaW5nKCk7CiAgICAgICBpZiAodWFy
Z3MuZnJhbWVOYW1lID09ICJfdG9wIikgewogICAgICAgICAgIHdoaWxlIChmcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKSkKICAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQo
KTsKQEAgLTIwMjUsMTEgKzIwMDgsOCBAQAogSlNWYWx1ZSAqRnJhbWVBcnJheTo6Z2V0VmFsdWVQ
cm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikKIHsKICAgc3dpdGNoICh0b2tlbikg
ewotICBjYXNlIExlbmd0aDogewotICAgIFFQdHJMaXN0PEZyYW1lPiBmcmFtZXMgPSBtX2ZyYW1l
LT5mcmFtZXMoKTsKLSAgICB1bnNpZ25lZCBpbnQgbGVuID0gZnJhbWVzLmNvdW50KCk7Ci0gICAg
cmV0dXJuIGpzTnVtYmVyKGxlbik7Ci0gIH0KKyAgY2FzZSBMZW5ndGg6CisgICAgcmV0dXJuIGpz
TnVtYmVyKG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGRDb3VudCgpKTsKICAgY2FzZSBMb2NhdGlvbjoK
ICAgICAvLyBub24tc3RhbmRhcmQgcHJvcGVydHksIGJ1dCB3b3JrcyBpbiBOUyBhbmQgSUUKICAg
ICBpZiAoSlNPYmplY3QgKm9iaiA9IFdpbmRvdzo6cmV0cmlldmVXaW5kb3cobV9mcmFtZSkpCkBA
IC0yMDQxLDI2ICsyMDIxLDE0IEBACiAgIH0KIH0KIAotSlNWYWx1ZSAqRnJhbWVBcnJheTo6aW5k
ZXhHZXR0ZXIoRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorSlNW
YWx1ZSogRnJhbWVBcnJheTo6aW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewotICBGcmFtZUFycmF5
ICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8RnJhbWVBcnJheSAqPihzbG90LnNsb3RCYXNlKCkpOwot
ICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqLT5tX2ZyYW1lLT5mcmFtZXMoKS5hdChzbG90LmluZGV4
KCkpOwotCi0gIGlmIChmcmFtZSAmJiBmcmFtZS0+aXNGcmFtZSgpKQotICAgIHJldHVybiBXaW5k
b3c6OnJldHJpZXZlKHN0YXRpY19jYXN0PEZyYW1lKj4oZnJhbWUpKTsKLQotICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgcmV0dXJuIFdpbmRvdzo6cmV0cmlldmUoc3RhdGljX2Nhc3Q8RnJhbWVB
cnJheSo+KHNsb3Quc2xvdEJhc2UoKSktPm1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQoc2xvdC5pbmRl
eCgpKSk7CiB9CiAKLUpTVmFsdWUgKkZyYW1lQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlICpl
eGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorSlNWYWx1ZSAqRnJhbWVBcnJheTo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewotICBGcmFtZUFycmF5ICp0aGlzT2Jq
ID0gc3RhdGljX2Nhc3Q8RnJhbWVBcnJheSAqPihzbG90LnNsb3RCYXNlKCkpOwotICBGcmFtZSog
ZnJhbWUgPSB0aGlzT2JqLT5tX2ZyYW1lLT5maW5kRnJhbWUocHJvcGVydHlOYW1lLnFzdHJpbmco
KSk7Ci0KLSAgaWYgKGZyYW1lICYmIGZyYW1lLT5pc0ZyYW1lKCkpCi0gICAgcmV0dXJuIFdpbmRv
dzo6cmV0cmlldmUoc3RhdGljX2Nhc3Q8RnJhbWUqPihmcmFtZSkpOwotCi0gIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICByZXR1cm4gV2luZG93OjpyZXRyaWV2ZShzdGF0aWNfY2FzdDxGcmFtZUFy
cmF5Kj4oc2xvdC5zbG90QmFzZSgpKS0+bV9mcmFtZS0+dHJlZSgpLT5jaGlsZChBdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKSkpOwogfQogCiBib29sIEZyYW1lQXJyYXk6Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjA3NywxNSArMjA0NSwxNCBAQAogICB9
CiAKICAgLy8gY2hlY2sgZm9yIHRoZSBuYW1lIG9yIG51bWJlcgotICBGcmFtZSogZnJhbWUgPSBt
X2ZyYW1lLT5maW5kRnJhbWUocHJvcGVydHlOYW1lLnFzdHJpbmcoKSk7Ci0gIGlmIChmcmFtZSkg
eworICBpZiAobV9mcmFtZS0+dHJlZSgpLT5jaGlsZChBdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
LmRvbVN0cmluZygpKSkpIHsKICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBuYW1lR2V0dGVyKTsK
ICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIGJvb2wgb2s7Ci0gIHVuc2lnbmVkIGludCBpID0g
cHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleCgmb2spOwotICBpZiAob2sgJiYgaSA8IG1fZnJhbWUt
PmZyYW1lcygpLmNvdW50KCkpIHsKKyAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5
SW5kZXgoJm9rKTsKKyAgaWYgKG9rICYmIGkgPCBtX2ZyYW1lLT50cmVlKCktPmNoaWxkQ291bnQo
KSkgewogICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaSwgaW5kZXhHZXR0ZXIpOwogICAg
IHJldHVybiB0cnVlOwogICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFy
eUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDEzMTYyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4v
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw2IEBA
CiB2b2lkIEZyYW1lV2luOjphZGRNZXNzYWdlVG9Db25zb2xlKFN0cmluZyBjb25zdCYsdW5zaWdu
ZWQgaW50LFN0cmluZyBjb25zdCYpIHsgfQogYm9vbCBGcmFtZVdpbjo6c2hvdWxkQ2hhbmdlU2Vs
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXIgY29uc3QmLFNlbGVjdGlvbkNvbnRyb2xsZXIgY29u
c3QmLFdlYkNvcmU6OkVBZmZpbml0eSxib29sKSBjb25zdCB7IHJldHVybiAwOyB9CiBzdGF0aWMg
aW50IGZyYW1lTnVtYmVyID0gMDsKLVN0cmluZyBGcmFtZVdpbjo6Z2VuZXJhdGVGcmFtZU5hbWUo
KSB7IHJldHVybiBRU3RyaW5nOjpudW1iZXIoZnJhbWVOdW1iZXIrKyk7IH0KIEZyYW1lKiBGcmFt
ZVdpbjo6Y3JlYXRlRnJhbWUoS1VSTCBjb25zdCYsUVN0cmluZyBjb25zdCYsUmVuZGVyUGFydCos
U3RyaW5nIGNvbnN0JikgeyByZXR1cm4gMDsgfQogdm9pZCBGcmFtZVdpbjo6c2F2ZURvY3VtZW50
U3RhdGUodm9pZCkgeyB9CiB2b2lkIEZyYW1lV2luOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyh2
b2lkKSB7fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2ZyYW1lcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2ZyYW1lcy5jcHAJKHJldmlzaW9uIDEz
MTYyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2ZyYW1lcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiVGV4dEltcGwuaCIKICNpbmNsdWRlICJkb20yX2V2ZW50c2ltcGwuaCIK
ICNpbmNsdWRlICJodG1sX2Jhc2VpbXBsLmgiCkBAIC02NjMsNyArNjY0LDcgQEAKICAgICBLVVJM
IG5ld1VSTChkb2MtPmNvbXBsZXRlVVJMKHVybCkpOwogICAgIG5ld1VSTC5zZXRSZWYoUVN0cmlu
Zzo6bnVsbCk7CiAgICAgCi0gICAgaWYgKGRvYy0+ZnJhbWUoKS0+dG9wTGV2ZWxGcmFtZUNvdW50
KCkgPj0gMjAwKQorICAgIGlmIChkb2MtPmZyYW1lKCktPnBhZ2UoKS0+ZnJhbWVDb3VudCgpID49
IDIwMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV2UgYWxsb3cgb25lIGxldmVs
IG9mIHNlbGYtcmVmZXJlbmNlIGJlY2F1c2Ugc29tZSBzaXRlcyBkZXBlbmQgb24gdGhhdC4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzE2MikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAJCTY1NTBCNkE1MDk5REYwMjcwMDkwRDc4MSAv
KiBUZXh0SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dEltcGwuY3BwICovOyB9OwogCQk2
NTUwQjZBNjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjlDMDk5REYwMjcwMDkwRDc4MSAvKiBU
ZXh0SW1wbC5oICovOyB9OwogCQk2NTUyRTdBQTA5NkFBMTFCMDAwNkYyNDggLyogV2ViQ29yZUZy
YW1lTmFtZXNwYWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU1MkU3QTgwOTZBQTExQjAwMDZGMjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2NTUy
RTdBQjA5NkFBMTFCMDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MkU3QTkwOTZBQTExQjAw
MDZGMjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMubSAqLzsgfTsKKwkJNjU1MkU3QUIwOTZB
QTExQjAwMDZGMjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUyRTdBOTA5NkFBMTFCMDAwNkYyNDgg
LyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tbSAqLzsgfTsKIAkJNjU3NDNCNTIwOTcwNzZGODAw
MUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU3NDNCNTAwOTcwNzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1Rl
eHQuY3BwICovOyB9OwogCQk2NTc0M0I1MzA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3NDNC
NTEwOTcwNzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuaCAqLzsgfTsKIAkJNjU3NkY5RDYw
OUIyNDg0QTAwMDA0MUY3IC8qIFRleHRFbmNvZGluZ01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTc2RjlENTA5QjI0ODRBMDAwMDQxRjcgLyog
VGV4dEVuY29kaW5nTWFjLmNwcCAqLzsgfTsKQEAgLTExNTEsNyArMTE1MSw3IEBACiAJCTY1NTBC
NjlCMDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGV4dEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTUwQjY5QzA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dEltcGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1NTJFN0E4MDk2QUExMUIwMDA2RjI0OCAvKiBXZWJDb3JlRnJhbWVOYW1lc3BhY2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnJhbWVOYW1lc3Bh
Y2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1NTJFN0E5MDk2QUExMUIwMDA2
RjI0OCAvKiBXZWJDb3JlRnJhbWVOYW1lc3BhY2VzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lm9iamM7IHBhdGggPSBXZWJDb3JlRnJhbWVOYW1lc3BhY2VzLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTY1NTJFN0E5MDk2QUExMUIwMDA2RjI0OCAvKiBXZWJDb3JlRnJhbWVOYW1l
c3BhY2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNv
cmVGcmFtZU5hbWVzcGFjZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NzQz
QjUwMDk3MDc2RjgwMDFFN0NFRiAvKiBSZW5kZXJTVkdUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjU3NDNCNTEwOTcwNzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1RleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3NkY5RDUwOUIyNDg0QTAwMDA0MUY3IC8qIFRl
eHRFbmNvZGluZ01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGV4dEVuY29kaW5nTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0ODUs
NyArMjQ4NSw3IEBACiAJCQkJNjU0RUM2MEYwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFt
ZUJyaWRnZS5oICovLAogCQkJCTY1NEVDNjEwMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJh
bWVCcmlkZ2UubW0gKi8sCiAJCQkJNjU1MkU3QTgwOTZBQTExQjAwMDZGMjQ4IC8qIFdlYkNvcmVG
cmFtZU5hbWVzcGFjZXMuaCAqLywKLQkJCQk2NTUyRTdBOTA5NkFBMTFCMDAwNkYyNDggLyogV2Vi
Q29yZUZyYW1lTmFtZXNwYWNlcy5tICovLAorCQkJCTY1NTJFN0E5MDk2QUExMUIwMDA2RjI0OCAv
KiBXZWJDb3JlRnJhbWVOYW1lc3BhY2VzLm1tICovLAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVB
NDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8sCiAJCQkJRjVCMkE1MkIwMkUyMjU3MzAxODYz
NUNCIC8qIFdlYkNvcmVKYXZhU2NyaXB0LmggKi8sCiAJCQkJRjVCMkE1MkMwMkUyMjU3MzAxODYz
NUNCIC8qIFdlYkNvcmVKYXZhU2NyaXB0Lm1tICovLApAQCAtNTMyNiw3ICs1MzI2LDcgQEAKIAkJ
CQlBODhBRDUxRDA5NTI0OTlGMDAxREQxOTYgLyogWExpbmtOYW1lc1dyYXBwZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg4QUQ1MUUwOTUyNDk5RjAwMUREMTk2IC8qIFNWR05hbWVzV3JhcHBl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDVBQTA5NTI1MTMxMDAxREQxOTYgLyogU1ZH
Q1NTU3R5bGVTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NTUyRTdBQjA5NkFBMTFC
MDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NjU1MkU3QUIwOTZBQTExQjAwMDZGMjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBODE2NTVENTA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tl
clF1YXJ0ei5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4MTY1NUU0MDk2QkMxMzkwMDYwMTA1OCAv
KiBTVkdNYXNrRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU3NDNCNTIwOTcw
NzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTMxNjIpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDExNyBAQAogMjAwNi0wMy0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBmaXggaHR0cDov
L2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzA4CisgICAgICAgICAg
UG9wLXVwIGJsb2NraW5nIGJsb2NrcyB3aW5kb3cub3BlbiBmb3IgYWxyZWFkeSBvcGVuIHdpbmRv
d3MKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogVXBkYXRl
IGZvciByZW5hbWUuCisgICAgICAgICogYnJpZGdlL21hYy9NYWNGcmFtZS5oOiBSZW1vdmUgZ2Vu
ZXJhdGVGcmFtZU5hbWUuCisgICAgICAgICogYnJpZGdlL21hYy9NYWNGcmFtZS5tbTogRGl0dG8u
CisgICAgICAgICogYnJpZGdlL21hYy9QYWdlTWFjLmg6IEFkZGVkIGEgZGVjbGFyYXRpb24gZm9y
IFdlYkNvcmVQYWdlQnJpZGdlLgorCisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVC
cmlkZ2UuaDogUmVtb3ZlIF9mcmFtZU5hbWVzcGFjZSwgZ2VuZXJhdGVGcmFtZU5hbWUsCisgICAg
ICAgIHNldEZyYW1lTmFtZXNwYWNlLCBmcmFtZU5hbWVzcGFjZS4KKyAgICAgICAgKiBicmlkZ2Uv
bWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdl
IGNoaWxkRnJhbWVOYW1lZDpdKTogQ2hhbmdlIHRvIGNhbGwgdGhlIG5ldyBjaGlsZAorICAgICAg
ICBmdW5jdGlvbiBvbiB0aGUgRnJhbWVUcmVlLgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlk
Z2UgZmluZEZyYW1lTmFtZWQ6XSk6IENoYW5nZSB0byBjYWxsIHRoZSBuZXcgZmluZAorICAgICAg
ICBmdW5jdGlvbiBvbiB0aGUgRnJhbWVUcmVlLgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlk
Z2UgUmVuZGVyT2JqZWN0Ojpub2RlSW5mb0F0UG9pbnQ6XSk6IENoYW5nZSBzaW5jZSB0aGUKKyAg
ICAgICAgY29udGVudFBhcnQgZnVuY3Rpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBjb250ZW50RnJh
bWUuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMuaDogUmVt
b3ZlZCBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgdGhlCisgICAgICAgIG9uZSBtZXRob2Qgc3RpbGwg
dXNlZCBvbiB0aGUgV2ViS2l0IHNpZGUsIGZyYW1lc0luTmFtZXNwYWNlOi4KKyAgICAgICAgKiBi
cmlkZ2UvbWFjL1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMubTogUmVuYW1lZC4KKyAgICAgICAgKiBi
cmlkZ2UvbWFjL1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMubW06IEFkZGVkLiBSZWltcGxlbWVudGVk
IHRoZQorICAgICAgICBmcmFtZXNJbk5hbWVzcGFjZSBtZXRob2QgdG8gdXNlIHRoZSBuYW1lc3Bh
Y2UgaW4gV2ViQ29yZTo6UGFnZS4KKworICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VC
cmlkZ2UuaDogQWRkZWQgc2V0R3JvdXBOYW1lIGFuZCBncm91cE5hbWUuCisgICAgICAgICogYnJp
ZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVBhZ2VCcmlk
Z2Ugc2V0R3JvdXBOYW1lOl0pOiBBZGRlZC4gQ2FsbHMgdGhyb3VnaCB0byBQYWdlLgorICAgICAg
ICAoLVtXZWJDb3JlUGFnZUJyaWRnZSBncm91cE5hbWVdKTogRGl0dG8uCisKKyAgICAgICAgKiBr
aHRtbC9lY21hL2tqc19odG1sLmNwcDoKKyAgICAgICAgKEtKUzo6SFRNTERvY3VtZW50OjpuYW1l
ZEl0ZW1HZXR0ZXIpOiBDaGFuZ2VkIHRvIGNhbGwgY29udGVudEZyYW1lIGJ5IGl0cyBuZXcgbmFt
ZS4KKyAgICAgICAgKEtKUzo6SFRNTEVsZW1lbnQ6OmZyYW1lR2V0dGVyKTogRGl0dG8uCisgICAg
ICAgIChLSlM6OkhUTUxFbGVtZW50OjppRnJhbWVHZXR0ZXIpOiBEaXR0by4KKworICAgICAgICAq
IGtodG1sL2VjbWEva2pzX3dpbmRvdy5jcHA6CisgICAgICAgIChLSlM6OldpbmRvdzo6Z2V0VmFs
dWVQcm9wZXJ0eSk6IENoYW5nZWQgdG8gY2FsbCBGcmFtZVRyZWU6OmNoaWxkQ291bnQKKyAgICAg
ICAgaW5zdGVhZCBvZiBGcmFtZTo6ZnJhbWVzLgorICAgICAgICAoS0pTOjpXaW5kb3c6OmNoaWxk
RnJhbWVHZXR0ZXIpOiBDaGFuZ2VkIHRvIGNhbGwgRnJhbWVUcmVlOjpjaGlsZAorICAgICAgICBp
bnN0ZWFkIG9mIEZyYW1lOjpjaGlsZEZyYW1lTmFtZWQuCisgICAgICAgIChLSlM6OldpbmRvdzo6
bmFtZWRGcmFtZUdldHRlcik6IENoYW5nZWQgdG8gY2FsbCBGcmFtZVRyZWU6OmZpbmQKKyAgICAg
ICAgaW5zdGVhZCBvZiBGcmFtZTo6ZmluZEZyYW1lLgorICAgICAgICAoS0pTOjpXaW5kb3c6Omlu
ZGV4R2V0dGVyKTogQ2hhbmdlZCB0byBjYWxsIEZyYW1lVHJlZTo6Y2hpbGQKKyAgICAgICAgaW5z
dGVhZCBvZiBGcmFtZTo6ZnJhbWVzLgorICAgICAgICAoS0pTOjpXaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdCk6IENoYW5nZWQgdG8gY2FsbCBGcmFtZVRyZWU6OmNoaWxkLAorICAgICAgICBGcmFt
ZVRyZWU6OmZpbmQsIGFuZCBGcmFtZVRyZWU6OmNoaWxkQ291bnQgaW5zdGVhZCBvZiBGcmFtZTo6
Y2hpbGRGcmFtZU5hbWVkLAorICAgICAgICBhbmQgRnJhbWU6OmZpbmRGcmFtZSwgYW5kIEZyYW1l
OjpmcmFtZXMuCisgICAgICAgIChLSlM6OldpbmRvd0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKTogQ2Fs
bCBGcmFtZVRyZWU6OmZpbmQgdG8gY2hlY2sgaWYgdGhlIHdpbmRvdworICAgICAgICBpcyBhbHJl
YWR5IG9wZW4gd2hlbiBjb25zaWRlcmluZyB3aGV0aGVyIHRvIGJsb2NrIGEgcG9wLXVwLgorICAg
ICAgICAoS0pTOjpGcmFtZUFycmF5OjpnZXRWYWx1ZVByb3BlcnR5KTogQ2hhbmdlZCB0byBjYWxs
IEZyYW1lVHJlZTo6Y2hpbGRDb3VudAorICAgICAgICBpbnN0ZWFkIG9mIEZyYW1lOjpmcmFtZXMu
CisgICAgICAgIChLSlM6OkZyYW1lQXJyYXk6OmluZGV4R2V0dGVyKTogQ2hhbmdlZCB0byBjYWxs
IEZyYW1lVHJlZTo6Y2hpbGQKKyAgICAgICAgaW5zdGVhZCBvZiBGcmFtZTo6ZnJhbWVzLgorICAg
ICAgICAoS0pTOjpGcmFtZUFycmF5OjpuYW1lR2V0dGVyKTogQ2hhbmdlZCB0byBjYWxsIEZyYW1l
VHJlZTo6Y2hpbGQKKyAgICAgICAgaW5zdGVhZCBvZiBGcmFtZTo6ZmluZEZyYW1lLgorICAgICAg
ICAoS0pTOjpGcmFtZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBDaGFuZ2VkIHRvIGNhbGwg
RnJhbWVUcmVlOjpjaGlsZCwKKyAgICAgICAgYW5kIEZyYW1lVHJlZTo6Y2hpbGRDb3VudCBpbnN0
ZWFkIG9mIEZyYW1lOjpmaW5kRnJhbWUgYW5kIEZyYW1lOjpmcmFtZXMuCisKKyAgICAgICAgKiBr
aHRtbC9odG1sL2h0bWxfYmFzZWltcGwuaDoKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfYmFz
ZWltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEltcGw6OmlzVVJM
QWxsb3dlZCk6IENoYW5nZWQgdG8gY2FsbCBQYWdlOjpmcmFtZUNvdW50CisgICAgICAgIGluc3Rl
YWQgb2YgRnJhbWU6OnRvcExldmVsRnJhbWVDb3VudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
cmFtZUVsZW1lbnRJbXBsOjpvcGVuVVJMKTogQ2hhbmdlZCB0byBjYWxsIEZyYW1lVHJlZTo6Y2hp
bGQKKyAgICAgICAgaW5zdGVhZCBvZiBGcmFtZTo6ZmluZEZyYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudEltcGw6OmF0dGFjaCk6IENoYW5nZWQgdG8gY2FsbCBQYWdlOjpp
bmNyZW1lbnRGcmFtZUNvdW50CisgICAgICAgIGluc3RlYWQgb2YgRnJhbWU6OmluY3JlbWVudEZy
YW1lQ291bnQuIENoYW5nZWQgdG8gY2FsbCBGcmFtZVRyZWU6Om5hbWVGb3JOZXdDaGlsZAorICAg
ICAgICBpbnN0ZWFkIG9mIEZyYW1lOjpyZXF1ZXN0RnJhbWVOYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudEltcGw6OmNsb3NlKTogQ2hhbmdlZCB0byBjYWxsIFBhZ2U6OmRl
Y3JlbWVudEZyYW1lQ291bnQKKyAgICAgICAgaW5zdGVhZCBvZiBGcmFtZTo6ZGVjcmVtZW50RnJh
bWVDb3VudC4gQ2hhbmdlZCB0byBjYWxsIEZyYW1lVHJlZTo6Y2hpbGQKKyAgICAgICAgaW5zdGVh
ZCBvZiBGcmFtZTo6ZmluZEZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVu
dEltcGw6OmNvbnRlbnRGcmFtZSk6IFJlbmFtZWQgZnJvbSBjb250ZW50UGFydC4gQWxzbworICAg
ICAgICBjaGFuZ2VkIHRvIGNhbGwgRnJhbWVUcmVlOjpjaGlsZCBpbnN0ZWFkIG9mIEZyYW1lOjpm
aW5kRnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50SW1wbDo6Y29udGVu
dERvY3VtZW50KTogVXBkYXRlZCBmb3IgbmFtZSBjaGFuZ2Ugb2YKKyAgICAgICAgY29udGVudEZy
YW1lIGZyb20gY29udGVudFBhcnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVu
dEltcGw6OmF0dGFjaCk6IENoYW5nZWQgdG8gY2FsbCBQYWdlOjppbmNyZW1lbnRGcmFtZUNvdW50
CisgICAgICAgIGluc3RlYWQgb2YgRnJhbWU6OmluY3JlbWVudEZyYW1lQ291bnQuIENoYW5nZWQg
dG8gY2FsbCBGcmFtZVRyZWU6Om5hbWVGb3JOZXdDaGlsZAorICAgICAgICBpbnN0ZWFkIG9mIEZy
YW1lOjpyZXF1ZXN0RnJhbWVOYW1lLgorCisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9mcmFt
ZXMuY3BwOiAoV2ViQ29yZTo6aXNVUkxBbGxvd2VkKTogQ2hhbmdlZCB0byBjYWxsIFBhZ2U6OmZy
YW1lQ291bnQKKyAgICAgICAgaW5zdGVhZCBvZiBGcmFtZTo6dG9wTGV2ZWxGcmFtZUNvdW50Lgor
CisgICAgICAgICogcGFnZS9GcmFtZS5oOiBSZW1vdmVkIGZyYW1lTmFtZXMsIGZyYW1lcywgY2hp
bGRGcmFtZU5hbWVkLCBmaW5kRnJhbWUsIGN1cnJlbnRGcmFtZSwKKyAgICAgICAgZnJhbWVFeGlz
dHMsIGluY3JlbWVudEZyYW1lQ291bnQsIGRlY3JlbWVudEZyYW1lQ291bnQsIHRvcExldmVsRnJh
bWVDb3VudCwKKyAgICAgICAgZ2VuZXJhdGVGcmFtZU5hbWUsIGFuZCByZXF1ZXN0RnJhbWVOYW1l
IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDogKFdlYkNvcmU6OkZyYW1lOjpy
ZXF1ZXN0RnJhbWUpOiBDaGFuZ2VkIHRvIHVzZSBGcmFtZVRyZWU6OmNoaWxkCisgICAgICAgIGlu
c3RlYWQgb2YgRnJhbWU6OmNoaWxkRnJhbWVOYW1lZC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVU
cmVlLmg6IENoYW5nZWQgbmFtZSB0byBhbiBhdG9taWMgc3RyaW5nLiBDaGFuZ2VkIGNoaWxkQ291
bnQgdG8gdW5zaWduZWQuCisgICAgICAgIEFkZGVkIGlzRGVzY2VuZGFudE9mLCB0cmF2ZXJzZU5l
eHQsIGNoaWxkLCBmaW5kLCBuYW1lRm9yTmV3Q2hpbGQuCisgICAgICAgICogcGFnZS9GcmFtZVRy
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpzZXROYW1lKTogQ2hhbmdlZCB0
byBjYWxsIG5hbWVGb3JOZXdDaGlsZCB0byBoYW5kbGUgbmFtZQorICAgICAgICBkdXBsaWNhdGlv
biBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6bmFtZUZvck5ld0NoaWxkKTog
QWRkZWQuIENoZWNrcyBmb3IgZHVwbGljYXRpb24gYW5kIGdlbmVyYXRlcworICAgICAgICBhbiBh
cHByb3ByaWF0ZSBmcmFtZSBuYW1lIGlmIHRoZXJlIGlzIGEgZHVwbGljYXRlLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVUcmVlOjpjaGlsZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVUcmVlOjpmaW5kKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmlzRGVz
Y2VuZGFudE9mKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnRyYXZlcnNl
TmV4dCk6IEFkZGVkLgorCisgICAgICAgICogcGFnZS9QYWdlLmg6IEFkZGVkIHNldEdyb3VwTmFt
ZSwgZ3JvdXBOYW1lLCBmcmFtZU5hbWVzcGFjZSwgaW5jcmVtZW50RnJhbWVDb3VudCwKKyAgICAg
ICAgZGVjcmVtZW50RnJhbWVDb3VudCwgYW5kIGZyYW1lQ291bnQuCisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOiBJbml0aWFsaXplIG1fZnJh
bWVDb3VudCB0byAwLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6flBhZ2UpOiBDYWxsIHNldEdy
b3VwTmFtZSB0byByZW1vdmUgdGhlIHBhZ2UgZnJvbSBhbnkgZ3JvdXAgaXQncyBpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnNldEdyb3VwTmFtZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZnJhbWVOYW1lc3BhY2UpOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL3dp
bi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOiBSZW1vdmVkIEZyYW1lV2luOjpnZW5lcmF0ZUZyYW1l
TmFtZS4KKworMjAwNi0wMy0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgogCiAgICAgICAgIC0gZml4IGZhaWx1cmUgc2VlbiBy
dW5uaW5nIGVkaXRpbmcgbGF5b3V0IHRlc3RzCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvTWFj
RnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLm1tCShy
ZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9NYWNGcmFtZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTUyLDE1ICsxNTIsNiBAQAogICAgICAgICBfZHJhZ0NsaXBib2FyZC0+c2V0
QWNjZXNzUG9saWN5KEtXUUNsaXBib2FyZDo6TnVtYik7CiB9CiAKLURPTVN0cmluZyBNYWNGcmFt
ZTo6Z2VuZXJhdGVGcmFtZU5hbWUoKQotewotICAgIEtXUV9CTE9DS19FWENFUFRJT05TOwotICAg
IHJldHVybiBbX2JyaWRnZSBnZW5lcmF0ZUZyYW1lTmFtZV07Ci0gICAgS1dRX1VOQkxPQ0tfRVhD
RVBUSU9OUzsKLQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19Ci0KIGJvb2wgTWFjRnJhbWU6Om9w
ZW5VUkwoY29uc3QgS1VSTCAmdXJsKQogewogICAgIEtXUV9CTE9DS19FWENFUFRJT05TOwpJbmRl
eDogV2ViQ29yZS9icmlkZ2UvbWFjL1BhZ2VNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9tYWMvUGFnZU1hYy5oCShyZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUvYnJpZGdlL21h
Yy9QYWdlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDEyIEBACiAKICNpbmNsdWRl
ICJQYWdlLmgiCiAKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIFdlYkNvcmVQYWdlQnJpZGdlOwor
I2Vsc2UKK2NsYXNzIFdlYkNvcmVQYWdlQnJpZGdlOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFBhZ2VNYWMgOiBwdWJsaWMgUGFnZSB7CkluZGV4OiBXZWJDb3Jl
L2JyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLm1tCShyZXZpc2lvbiAxMzE2MikKKysrIFdlYkNv
cmUvYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODks
NiArODksMTYgQEAKICAgICByZXR1cm4gTWFjKF9wYWdlLT5tYWluRnJhbWUoKSktPmJyaWRnZSgp
OwogfQogCistICh2b2lkKXNldEdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUKK3sKKyAg
ICBfcGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7Cit9CisKKy0gKE5TU3RyaW5nICopZ3Jv
dXBOYW1lCit7CisgICAgcmV0dXJuIF9wYWdlLT5ncm91cE5hbWUoKTsKK30KKwogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViQ29yZVBhZ2VCcmlkZ2UgKFdlYkNvcmVJbnRlcm5hbFVzZSkKSW5k
ZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMTMx
NjIpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw2IEBACiAjaW1wb3J0ICJOb2RlSW1wbC5oIgogI2ltcG9ydCAi
UGFnZU1hYy5oIgogI2ltcG9ydCAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgotI2ltcG9ydCAiV2Vi
Q29yZUZyYW1lTmFtZXNwYWNlcy5oIgogI2ltcG9ydCAiV2ViQ29yZVBhZ2VCcmlkZ2UuaCIKICNp
bXBvcnQgIldlYkNvcmVTZXR0aW5ncy5oIgogI2ltcG9ydCAiV2ViQ29yZVRleHRSZW5kZXJlckZh
Y3RvcnkuaCIKQEAgLTMzMiwxMyArMzMxLDcgQEAKIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdlICop
Y2hpbGRGcmFtZU5hbWVkOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICAvLyBGSVhNRTogd2l0aCBh
IGJldHRlciBkYXRhIHN0cnVjdHVyZSB0aGlzIGNvdWxkIGJlIE8oMSkgaW5zdGVhZCBvZiBPKG4p
IGluIG51bWJlciAKLSAgICAvLyBvZiBjaGlsZCBmcmFtZXMKLSAgICBmb3IgKFdlYkNvcmVGcmFt
ZUJyaWRnZSAqY2hpbGQgPSBbc2VsZiBmaXJzdENoaWxkXTsgY2hpbGQ7IGNoaWxkID0gW2NoaWxk
IG5leHRTaWJsaW5nXSkKLSAgICAgICAgaWYgKFtbY2hpbGQgbmFtZV0gaXNFcXVhbFRvU3RyaW5n
Om5hbWVdKQotICAgICAgICAgICAgcmV0dXJuIGNoaWxkOwotCi0gICAgcmV0dXJuIG5pbDsKKyAg
ICByZXR1cm4gYnJpZGdlKG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQobmFtZSkpOwogfQogCiAvLyBS
ZXR1cm5zIHRoZSBsYXN0IGNoaWxkIG9mIHVzIGFuZCBhbnkgY2hpbGRyZW4sIG9yIHNlbGYKQEAg
LTM3OSwyNSArMzcyLDYgQEAKICAgICByZXR1cm4gbmlsOwogfQogCi0tICh2b2lkKXNldEZyYW1l
TmFtZXNwYWNlOihOU1N0cmluZyAqKW5zCi17Ci0gICAgQVNTRVJUKHNlbGYgPT0gW1tzZWxmIHBh
Z2VdIG1haW5GcmFtZV0pOwotCi0gICAgaWYgKG5zICE9IF9mcmFtZU5hbWVzcGFjZSl7Ci0gICAg
ICAgIFtXZWJDb3JlRnJhbWVOYW1lc3BhY2VzIHJlbW92ZUZyYW1lOnNlbGYgZnJvbU5hbWVzcGFj
ZTpfZnJhbWVOYW1lc3BhY2VdOwotICAgICAgICBucyA9IFtucyBjb3B5XTsKLSAgICAgICAgW19m
cmFtZU5hbWVzcGFjZSByZWxlYXNlXTsKLSAgICAgICAgX2ZyYW1lTmFtZXNwYWNlID0gbnM7Ci0g
ICAgICAgIFtXZWJDb3JlRnJhbWVOYW1lc3BhY2VzIGFkZEZyYW1lOnNlbGYgdG9OYW1lc3BhY2U6
X2ZyYW1lTmFtZXNwYWNlXTsKLSAgICB9Ci19Ci0KLS0gKE5TU3RyaW5nICopZnJhbWVOYW1lc3Bh
Y2UKLXsKLSAgICBBU1NFUlQoc2VsZiA9PSBbW3NlbGYgcGFnZV0gbWFpbkZyYW1lXSk7Ci0gICAg
cmV0dXJuIF9mcmFtZU5hbWVzcGFjZTsKLX0KLQogLSAoQk9PTClfc2hvdWxkQWxsb3dBY2Nlc3NG
cm9tOihXZWJDb3JlRnJhbWVCcmlkZ2UgKilzb3VyY2UKIHsKICAgICAvLyBpZiBubyBzb3VyY2Ug
ZnJhbWUsIGFsbG93IGFjY2VzcwpAQCAtNDM3LDY0ICs0MTEsOSBAQAogICAgIHJldHVybiBOTzsK
IH0KIAotLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopX2Rlc2NlbmRhbnRGcmFtZU5hbWVkOihOU1N0
cmluZyAqKW5hbWUgc291cmNlRnJhbWU6KFdlYkNvcmVGcmFtZUJyaWRnZSAqKXNvdXJjZQotewot
ICAgIGZvciAoV2ViQ29yZUZyYW1lQnJpZGdlICpmcmFtZSA9IHNlbGY7IGZyYW1lOyBmcmFtZSA9
IFtmcmFtZSB0cmF2ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pCi0gICAgICAgIC8vIGZv
ciBzZWN1cml0eSByZWFzb25zLCB3ZSBkbyBub3Qgd2FudCB0byBldmVuIG1ha2UgZnJhbWVzIHZp
c2libGUgdG8gZnJhbWVzIHRoYXQKLSAgICAgICAgLy8gY2FuJ3QgYWNjZXNzIHRoZW0gCi0gICAg
ICAgIGlmIChbW2ZyYW1lIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpuYW1lXSAmJiBbZnJhbWUgX3No
b3VsZEFsbG93QWNjZXNzRnJvbTpzb3VyY2VdKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwot
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopX2ZyYW1lSW5B
bnlXaW5kb3dOYW1lZDooTlNTdHJpbmcgKiluYW1lIHNvdXJjZUZyYW1lOihXZWJDb3JlRnJhbWVC
cmlkZ2UgKilzb3VyY2UKLXsKLSAgICBBU1NFUlQoc2VsZiA9PSBbW3NlbGYgcGFnZV0gbWFpbkZy
YW1lXSk7Ci0KLSAgICAvLyBUcnkgdGhpcyBXZWJWaWV3IGZpcnN0LgotICAgIFdlYkNvcmVGcmFt
ZUJyaWRnZSAqZnJhbWUgPSBbc2VsZiBfZGVzY2VuZGFudEZyYW1lTmFtZWQ6bmFtZSBzb3VyY2VG
cmFtZTpzb3VyY2VdOwotCi0gICAgaWYgKGZyYW1lICE9IG5pbCkKLSAgICAgICAgcmV0dXJuIGZy
YW1lOwotCi0gICAgLy8gVHJ5IG90aGVyIFdlYlZpZXdzIGluIHRoZSBzYW1lIHNldAotCi0gICAg
aWYgKFtzZWxmIGZyYW1lTmFtZXNwYWNlXSAhPSBuaWwpIHsKLSAgICAgICAgTlNFbnVtZXJhdG9y
ICplbnVtZXJhdG9yID0gW1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMgZnJhbWVzSW5OYW1lc3BhY2U6
W3NlbGYgZnJhbWVOYW1lc3BhY2VdXTsKLSAgICAgICAgV2ViQ29yZUZyYW1lQnJpZGdlICpzZWFy
Y2hGcmFtZTsKLSAgICAgICAgd2hpbGUgKChzZWFyY2hGcmFtZSA9IFtlbnVtZXJhdG9yIG5leHRP
YmplY3RdKSkKLSAgICAgICAgICAgIGZyYW1lID0gW3NlYXJjaEZyYW1lIF9kZXNjZW5kYW50RnJh
bWVOYW1lZDpuYW1lIHNvdXJjZUZyYW1lOnNvdXJjZV07Ci0gICAgfQotCi0gICAgcmV0dXJuIGZy
YW1lOwotfQotCiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKilmaW5kRnJhbWVOYW1lZDooTlNTdHJp
bmcgKiluYW1lCiB7Ci0gICAgLy8gRmlyc3QsIGRlYWwgd2l0aCAnc3BlY2lhbCcgbmFtZXMuCi0g
ICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIl9zZWxmIl0gfHwgW25hbWUgaXNFcXVhbFRv
U3RyaW5nOkAiX2N1cnJlbnQiXSkKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCi0gICAgaWYg
KFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIl90b3AiXSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBw
YWdlXSBtYWluRnJhbWVdOwotICAgIAotICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJf
cGFyZW50Il0pIHsKLSAgICAgICAgV2ViQ29yZUZyYW1lQnJpZGdlICpwYXJlbnQgPSBbc2VsZiBw
YXJlbnRdOwotICAgICAgICByZXR1cm4gcGFyZW50ID8gcGFyZW50IDogc2VsZjsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIl9ibGFuayJdKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgLy8gU2VhcmNoIGZyb20gdGhpcyBmcmFtZSBkb3duLgotICAgIFdl
YkNvcmVGcmFtZUJyaWRnZSAqZnJhbWUgPSBbc2VsZiBfZGVzY2VuZGFudEZyYW1lTmFtZWQ6bmFt
ZSBzb3VyY2VGcmFtZTpzZWxmXTsKLQotICAgIC8vIFNlYXJjaCBpbiB0aGUgbWFpbiBmcmFtZSBm
b3IgdGhpcyB3aW5kb3cgdGhlbiBpbiBvdGhlcnMuCi0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
ZnJhbWUgPSBbW1tzZWxmIHBhZ2VdIG1haW5GcmFtZV0gX2ZyYW1lSW5BbnlXaW5kb3dOYW1lZDpu
YW1lIHNvdXJjZUZyYW1lOnNlbGZdOwotCi0gICAgcmV0dXJuIGZyYW1lOworICAgIHJldHVybiBi
cmlkZ2UobV9mcmFtZS0+dHJlZSgpLT5maW5kKG5hbWUpKTsKIH0KIAogKyAoTlNBcnJheSAqKXN1
cHBvcnRlZE1JTUVUeXBlcwpAQCAtMTQ5NywzOCArMTQxNiw2IEBACiAgICAgcmV0dXJuIG1fZnJh
bWUtPnRyZWUoKS0+bmFtZSgpOwogfQogCi0tICh2b2lkKV9hZGRGcmFtZVBhdGhUb1N0cmluZzoo
TlNNdXRhYmxlU3RyaW5nICopcGF0aAotewotICAgIE5TU3RyaW5nICpuYW1lID0gW3NlbGYgbmFt
ZV07Ci0gICAgaWYgKFtuYW1lIGhhc1ByZWZpeDpAIjwhLS1mcmFtZVBhdGggIl0pIHsKLSAgICAg
ICAgLy8gd2UgaGF2ZSBhIGdlbmVyYXRlZCBuYW1lIC0gdGFrZSB0aGUgcGF0aCBmcm9tIG91ciBu
YW1lCi0gICAgICAgIE5TUmFuZ2Ugb3VyUGF0aFJhbmdlID0gezE0LCBbbmFtZSBsZW5ndGhdIC0g
MTQgLSAzfTsKLSAgICAgICAgW3BhdGggYXBwZW5kU3RyaW5nOltuYW1lIHN1YnN0cmluZ1dpdGhS
YW5nZTpvdXJQYXRoUmFuZ2VdXTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyB3ZSBkb24ndCBo
YXZlIGEgZ2VuZXJhdGVkIG5hbWUgLSBqdXN0IGFkZCBvdXIgc2ltcGxlIG5hbWUgdG8gdGhlIGVu
ZAotICAgICAgICBbW3NlbGYgcGFyZW50XSBfYWRkRnJhbWVQYXRoVG9TdHJpbmc6cGF0aF07Ci0g
ICAgICAgIFtwYXRoIGFwcGVuZFN0cmluZzpAIi8iXTsKLSAgICAgICAgaWYgKG5hbWUpCi0gICAg
ICAgICAgICBbcGF0aCBhcHBlbmRTdHJpbmc6bmFtZV07Ci0gICAgfQotfQotCi0vLyBHZW5lcmF0
ZSBhIHJlcGVhdGFibGUgbmFtZSBmb3IgYSBjaGlsZCBhYm91dCB0byBiZSBhZGRlZCB0byB1cy4g
IFRoZSBuYW1lIG11c3QgYmUKLS8vIHVuaXF1ZSB3aXRoaW4gdGhlIGZyYW1lIHRyZWUuICBUaGUg
c3RyaW5nIHdlIGdlbmVyYXRlIGluY2x1ZGVzIGEgInBhdGgiIG9mIG5hbWVzCi0vLyBmcm9tIHRo
ZSByb290IGZyYW1lIGRvd24gdG8gdXMuICBGb3IgdGhpcyBwYXRoIHRvIGJlIHVuaXF1ZSwgZWFj
aCBzZXQgb2Ygc2libGluZ3MgbXVzdAotLy8gY29udHJpYnV0ZSBhIHVuaXF1ZSBuYW1lIHRvIHRo
ZSBwYXRoLCB3aGljaCBjYW4ndCBjb2xsaWRlIHdpdGggYW55IEhUTUwtYXNzaWduZWQgbmFtZXMu
Ci0vLyBXZSBnZW5lcmF0ZSB0aGlzIHBhdGggY29tcG9uZW50IGJ5IGluZGV4IGluIHRoZSBjaGls
ZCBsaXN0IGFsb25nIHdpdGggYW4gdW5saWtlbHkgZnJhbWUgbmFtZS4KLS0gKE5TU3RyaW5nICop
Z2VuZXJhdGVGcmFtZU5hbWUKLXsKLSAgICBOU011dGFibGVTdHJpbmcgKnBhdGggPSBbTlNNdXRh
YmxlU3RyaW5nIHN0cmluZ1dpdGhDYXBhY2l0eToyNTZdOwotICAgIFtwYXRoIGluc2VydFN0cmlu
ZzpAIjwhLS1mcmFtZVBhdGggIiBhdEluZGV4OjBdOwotICAgIFtzZWxmIF9hZGRGcmFtZVBhdGhU
b1N0cmluZzpwYXRoXTsKLSAgICAvLyBUaGUgbmV3IGNoaWxkJ3MgcGF0aCBjb21wb25lbnQgaXMg
YWxsIGJ1dCB0aGUgMXN0IGNoYXIgYW5kIHRoZSBsYXN0IDMgY2hhcnMKLSAgICAvLyBGSVhNRTog
U2hvdWxkbid0IHRoaXMgbnVtYmVyIGJlIHRoZSBpbmRleCBvZiB0aGlzIGZyYW1lIGluIGl0cyBw
YXJlbnQgcmF0aGVyIHRoYW4gdGhlIGNoaWxkIGNvdW50PwotICAgIFtwYXRoIGFwcGVuZEZvcm1h
dDpAIi88IS0tZnJhbWUlZC0tPi0tPiIsIFtzZWxmIGNoaWxkQ291bnRdXTsKLSAgICByZXR1cm4g
cGF0aDsKLX0KLQogLSAoTlNVUkwgKilVUkwKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+dXJsKCku
Z2V0TlNVUkwoKTsKQEAgLTE5OTIsNyArMTg3OSw3IEBACiB9CiAKIC8vIERldGVybWluZXMgd2hl
dGhlciB3aGl0ZXNwYWNlIG5lZWRzIHRvIGJlIGFkZGVkIGFyb3VuZCBhU3RyaW5nIHRvIHByZXNl
cnZlIHByb3BlciBzcGFjaW5nIGFuZAotLy8gcHVuY3R1YXRpb24gd2hlbiBpdOKAmXMgaW5zZXJ0
ZWQgaW50byB0aGUgcmVjZWl2ZXLigJlzIHRleHQgb3ZlciBjaGFyUmFuZ2UuIFJldHVybnMgYnkg
cmVmZXJlbmNlCisvLyBwdW5jdHVhdGlvbiB3aGVuIGl01XMgaW5zZXJ0ZWQgaW50byB0aGUgcmVj
ZWl2ZXLVcyB0ZXh0IG92ZXIgY2hhclJhbmdlLiBSZXR1cm5zIGJ5IHJlZmVyZW5jZQogLy8gaW4g
YmVmb3JlU3RyaW5nIGFuZCBhZnRlclN0cmluZyBhbnkgd2hpdGVzcGFjZSB0aGF0IHNob3VsZCBi
ZSBhZGRlZCwgdW5sZXNzIGVpdGhlciBvciBib3RoIGFyZQogLy8gbmlsLiBCb3RoIGFyZSByZXR1
cm5lZCBhcyBuaWwgaWYgYVN0cmluZyBpcyBuaWwgb3IgaWYgc21hcnQgaW5zZXJ0aW9uIGFuZCBk
ZWxldGlvbiBhcmUgZGlzYWJsZWQuCiAtICh2b2lkKXNtYXJ0SW5zZXJ0Rm9yU3RyaW5nOihOU1N0
cmluZyAqKXBhc3RlU3RyaW5nIHJlcGxhY2luZ1JhbmdlOihET01SYW5nZSAqKXJhbmdlVG9SZXBs
YWNlIGJlZm9yZVN0cmluZzooTlNTdHJpbmcgKiopYmVmb3JlU3RyaW5nIGFmdGVyU3RyaW5nOihO
U1N0cmluZyAqKilhZnRlclN0cmluZwpAQCAtMjU4MCw4ICsyNDY3LDggQEAKICAgICAgICAgd2lk
Z2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0ICo+KG4tPnJlbmRlcmVyKCkpLT53aWRnZXQo
KTsKICAgICAgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBGcmFtZSAqa3BhcnQgPSBzdGF0aWNfY2FzdDxIVE1MRnJh
bWVFbGVtZW50SW1wbCAqPihuKS0+Y29udGVudFBhcnQoKTsKLSAgICAgICAgaWYgKCFrcGFydCB8
fCAhc3RhdGljX2Nhc3Q8TWFjRnJhbWUgKj4oa3BhcnQpLT5yZW5kZXJlcigpKQorICAgICAgICBG
cmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50SW1wbCAqPihuKS0+Y29u
dGVudEZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5yZW5kZXJlcigpKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGludCBhYnNYLCBhYnNZOwogICAgICAgICBuLT5y
ZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKGFic1gsIGFic1ksIHRydWUpOwpAQCAtMjU5MCw3
ICsyNDc3LDcgQEAKICAgICAgICAgd2lkZ2V0UG9pbnQuc2V0WSh3aWRnZXRQb2ludC55KCkgLSBh
YnNZICsgdmlldy0+Y29udGVudHNZKCkpOwogCiAgICAgICAgIFJlbmRlck9iamVjdDo6Tm9kZUlu
Zm8gd2lkZ2V0Tm9kZUluZm8odHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PE1hY0Zy
YW1lICo+KGtwYXJ0KS0+cmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdCh3aWRnZXROb2RlSW5m
bywgd2lkZ2V0UG9pbnQueCgpLCB3aWRnZXRQb2ludC55KCkpOworICAgICAgICBmcmFtZS0+cmVu
ZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdCh3aWRnZXROb2RlSW5mbywgd2lkZ2V0UG9pbnQueCgp
LCB3aWRnZXRQb2ludC55KCkpOwogICAgICAgICBub2RlSW5mbyA9IHdpZGdldE5vZGVJbmZvOwog
ICAgIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5oCShy
ZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw5IEBACiAKIC0gKFdlYkNvcmVGcmFtZUJyaWRn
ZSAqKW1haW5GcmFtZTsKIAorLSAodm9pZClzZXRHcm91cE5hbWU6KE5TU3RyaW5nICopZ3JvdXBO
YW1lOworLSAoTlNTdHJpbmcgKilncm91cE5hbWU7CisKIEBlbmQKIAogLy8gVGhlIFdlYkNvcmVQ
YWdlQnJpZGdlIHByb3RvY29sIGNvbnRhaW5zIG1ldGhvZHMgZm9yIHVzZSBieSB0aGUgV2ViQ29y
ZSBzaWRlIG9mIHRoZSBicmlkZ2UuCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZy
YW1lTmFtZXNwYWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3Jl
RnJhbWVOYW1lc3BhY2VzLmgJKHJldmlzaW9uIDEzMTYyKQorKysgV2ViQ29yZS9icmlkZ2UvbWFj
L1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDEwICsyOCw2IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogCi1AY2xhc3MgV2ViQ29yZUZyYW1lQnJpZGdlOwotCiBAaW50ZXJmYWNlIFdlYkNvcmVGcmFt
ZU5hbWVzcGFjZXMgOiBOU09iamVjdAotKyAodm9pZClhZGRGcmFtZTooV2ViQ29yZUZyYW1lQnJp
ZGdlICopZnJhbWUgdG9OYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZTsKLSsgKHZvaWQpcmVtb3Zl
RnJhbWU6KFdlYkNvcmVGcmFtZUJyaWRnZSAqKWZyYW1lIGZyb21OYW1lc3BhY2U6KE5TU3RyaW5n
ICopbmFtZTsKICsgKE5TRW51bWVyYXRvciAqKWZyYW1lc0luTmFtZXNwYWNlOihOU1N0cmluZyAq
KW5hbWU7CiBAZW5kCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lTmFtZXNw
YWNlcy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVOYW1l
c3BhY2VzLm0JKHJldmlzaW9uIDEzMTYyKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVG
cmFtZU5hbWVzcGFjZXMubQkod29ya2luZyBjb3B5KQpAQCAtMSw5MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkNvcmVGcmFtZU5hbWVzcGFj
ZXMuaCIKLQotc3RhdGljIENGU2V0Q2FsbEJhY2tzIE5vblJldGFpbmluZ1NldENhbGxiYWNrcyA9
IHsKLTAsCi1OVUxMLAotTlVMTCwKLUNGQ29weURlc2NyaXB0aW9uLAotQ0ZFcXVhbCwKLUNGSGFz
aAotfTsKLQotQGltcGxlbWVudGF0aW9uIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMKLQotTlNNdXRh
YmxlRGljdGlvbmFyeSAqbmFtZXNwYWNlcyA9IG5pbDsKLQotKyh2b2lkKWFkZEZyYW1lOihXZWJD
b3JlRnJhbWVCcmlkZ2UgKilmcmFtZSB0b05hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lCi17Ci0g
ICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW5hbWVzcGFjZXMpCi0g
ICAgICAgIG5hbWVzcGFjZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwot
Ci0gICAgQ0ZNdXRhYmxlU2V0UmVmIG5hbWVzcGFjZSA9IChDRk11dGFibGVTZXRSZWYpW25hbWVz
cGFjZXMgb2JqZWN0Rm9yS2V5Om5hbWVdOwotCi0gICAgaWYgKCFuYW1lc3BhY2UpIHsKLSAgICAg
ICAgbmFtZXNwYWNlID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdT
ZXRDYWxsYmFja3MpOwotICAgICAgICBbbmFtZXNwYWNlcyBzZXRPYmplY3Q6KGlkKW5hbWVzcGFj
ZSBmb3JLZXk6bmFtZV07Ci0gICAgICAgIENGUmVsZWFzZShuYW1lc3BhY2UpOwotICAgIH0KLSAg
ICAKLSAgICBDRlNldFNldFZhbHVlKG5hbWVzcGFjZSwgZnJhbWUpOwotfQotCi0rKHZvaWQpcmVt
b3ZlRnJhbWU6KFdlYkNvcmVGcmFtZUJyaWRnZSAqKWZyYW1lIGZyb21OYW1lc3BhY2U6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZN
dXRhYmxlU2V0UmVmIG5hbWVzcGFjZSA9IChDRk11dGFibGVTZXRSZWYpW25hbWVzcGFjZXMgb2Jq
ZWN0Rm9yS2V5Om5hbWVdOwotCi0gICAgaWYgKCFuYW1lc3BhY2UpCi0gICAgICAgIHJldHVybjsK
LQotICAgIENGU2V0UmVtb3ZlVmFsdWUobmFtZXNwYWNlLCBmcmFtZSk7Ci0KLSAgICBpZiAoQ0ZT
ZXRHZXRDb3VudChuYW1lc3BhY2UpID09IDApCi0gICAgICAgIFtuYW1lc3BhY2VzIHJlbW92ZU9i
amVjdEZvcktleTpuYW1lXTsKLX0KLQotKyhOU0VudW1lcmF0b3IgKilmcmFtZXNJbk5hbWVzcGFj
ZTooTlNTdHJpbmcgKiluYW1lOwotewotICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuIFtb
W05TRW51bWVyYXRvciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotCi0gICAgQ0ZNdXRhYmxl
U2V0UmVmIG5hbWVzcGFjZSA9IChDRk11dGFibGVTZXRSZWYpW25hbWVzcGFjZXMgb2JqZWN0Rm9y
S2V5Om5hbWVdOwotCi0gICAgaWYgKCFuYW1lc3BhY2UpCi0gICAgICAgIHJldHVybiBbW1tOU0Vu
dW1lcmF0b3IgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gWyhO
U1NldCAqKW5hbWVzcGFjZSBvYmplY3RFbnVtZXJhdG9yXTsKLX0KLQotQGVuZApJbmRleDogV2Vi
Q29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uv
bWFjL01hY0ZyYW1lLmgJKHJldmlzaW9uIDEzMTYyKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL01h
Y0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw4ICszMTYsNiBAQAogICAgIHZpcnR1YWwg
dm9pZCBwcmludCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBET01TdHJpbmcgZ2VuZXJh
dGVGcmFtZU5hbWUoKTsKLQogICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlZGlyZWN0aW9uVGltZXIo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlZGlyZWN0aW9uVGltZXIoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3Rpb25UaW1lckZpcmVkKFRpbWVyPEZyYW1lPiopOwpJbmRleDogV2ViQ29y
ZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMTMxNjIpCisrKyBXZWJD
b3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
Miw4ICsxNzIsNiBAQAogewogICAgIFdlYkNvcmVNYWNGcmFtZSAqbV9mcmFtZTsKICAgICBCT09M
IF9zaG91bGRDcmVhdGVSZW5kZXJlcnM7Ci0KLSAgICBOU1N0cmluZyAqX2ZyYW1lTmFtZXNwYWNl
OwogfQogCiArIChXZWJDb3JlRnJhbWVCcmlkZ2UgKilicmlkZ2VGb3JET01Eb2N1bWVudDooRE9N
RG9jdW1lbnQgKilkb2N1bWVudDsKQEAgLTE4Nyw4ICsxODUsNiBAQAogCiAtICh2b2lkKXNldE5h
bWU6KE5TU3RyaW5nICopbmFtZTsKIC0gKE5TU3RyaW5nICopbmFtZTsKLS8qIENyZWF0ZXMgYSBu
YW1lIGZvciBhbiBmcmFtZSB1bm5hbWVkIGluIHRoZSBIVE1MLiAgSXQgc2hvdWxkIHByb2R1Y2Ug
cmVwZWF0YWJsZSByZXN1bHRzIGZvciBsb2FkcyBvZiB0aGUgc2FtZSBmcmFtZXNldC4gKi8KLS0g
KE5TU3RyaW5nICopZ2VuZXJhdGVGcmFtZU5hbWU7CiAKIC0gKFdlYkNvcmVQYWdlQnJpZGdlICop
cGFnZTsKIApAQCAtMjEyLDkgKzIwOCw2IEBACiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKiljaGls
ZEZyYW1lTmFtZWQ6KE5TU3RyaW5nICopbmFtZTsKIC0gKFdlYkNvcmVGcmFtZUJyaWRnZSAqKWZp
bmRGcmFtZU5hbWVkOihOU1N0cmluZyAqKW5hbWU7CiAKLS0gKHZvaWQpc2V0RnJhbWVOYW1lc3Bh
Y2U6KE5TU3RyaW5nICopbnM7Ci0tIChOU1N0cmluZyAqKWZyYW1lTmFtZXNwYWNlOwotCiAtICh2
b2lkKXByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7CiAKIC0gKHZvaWQpb3BlblVSTDooTlNVUkwgKilV
UkwgcmVsb2FkOihCT09MKXJlbG9hZApJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVG
cmFtZU5hbWVzcGFjZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNv
cmVGcmFtZU5hbWVzcGFjZXMubW0JKHJldmlzaW9uIDEzMTUzKQorKysgV2ViQ29yZS9icmlkZ2Uv
bWFjL1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw2OCArMjYsMjggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVOYW1l
c3BhY2VzLmgiCiAKLXN0YXRpYyBDRlNldENhbGxCYWNrcyBOb25SZXRhaW5pbmdTZXRDYWxsYmFj
a3MgPSB7Ci0wLAotTlVMTCwKLU5VTEwsCi1DRkNvcHlEZXNjcmlwdGlvbiwKLUNGRXF1YWwsCi1D
Rkhhc2gKLX07CisjaW1wb3J0ICJQYWdlTWFjLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZyYW1lTmFtZXNwYWNlcwogCi1OU011dGFibGVE
aWN0aW9uYXJ5ICpuYW1lc3BhY2VzID0gbmlsOwotCi0rKHZvaWQpYWRkRnJhbWU6KFdlYkNvcmVG
cmFtZUJyaWRnZSAqKWZyYW1lIHRvTmFtZXNwYWNlOihOU1N0cmluZyAqKW5hbWUKKysgKE5TRW51
bWVyYXRvciAqKWZyYW1lc0luTmFtZXNwYWNlOihOU1N0cmluZyAqKW5hbWU7CiB7Ci0gICAgaWYg
KCFuYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW5hbWVzcGFjZXMpCi0gICAgICAg
IG5hbWVzcGFjZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotCi0gICAg
Q0ZNdXRhYmxlU2V0UmVmIG5hbWVzcGFjZSA9IChDRk11dGFibGVTZXRSZWYpW25hbWVzcGFjZXMg
b2JqZWN0Rm9yS2V5Om5hbWVdOwotCi0gICAgaWYgKCFuYW1lc3BhY2UpIHsKLSAgICAgICAgbmFt
ZXNwYWNlID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxs
YmFja3MpOwotICAgICAgICBbbmFtZXNwYWNlcyBzZXRPYmplY3Q6KGlkKW5hbWVzcGFjZSBmb3JL
ZXk6bmFtZV07Ci0gICAgICAgIENGUmVsZWFzZShuYW1lc3BhY2UpOworICAgIGNvbnN0IEhhc2hT
ZXQ8UGFnZSo+KiBzZXQgPSBQYWdlOjpmcmFtZU5hbWVzcGFjZShuYW1lKTsKKyAgICBpZiAoIXNl
dCkKKyAgICAgICAgcmV0dXJuIFtbW05TRW51bWVyYXRvciBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6c2V0LT5zaXplKCldOworICAgIEhhc2hTZXQ8UGFnZSo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBzZXQtPmVuZCgpOworICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gc2V0LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpNYWMoKml0KS0+YnJpZGdlKCldOwogICAgIH0KLSAgICAKLSAg
ICBDRlNldFNldFZhbHVlKG5hbWVzcGFjZSwgZnJhbWUpOworICAgIE5TRW51bWVyYXRvciogZW51
bWVyYXRvciA9IFthcnJheSBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICBbYXJyYXkgcmVsZWFzZV07
CisgICAgcmV0dXJuIGVudW1lcmF0b3I7CiB9CiAKLSsodm9pZClyZW1vdmVGcmFtZTooV2ViQ29y
ZUZyYW1lQnJpZGdlICopZnJhbWUgZnJvbU5hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lCi17Ci0g
ICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRk11dGFibGVTZXRSZWYgbmFt
ZXNwYWNlID0gKENGTXV0YWJsZVNldFJlZilbbmFtZXNwYWNlcyBvYmplY3RGb3JLZXk6bmFtZV07
Ci0KLSAgICBpZiAoIW5hbWVzcGFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZTZXRSZW1v
dmVWYWx1ZShuYW1lc3BhY2UsIGZyYW1lKTsKLQotICAgIGlmIChDRlNldEdldENvdW50KG5hbWVz
cGFjZSkgPT0gMCkKLSAgICAgICAgW25hbWVzcGFjZXMgcmVtb3ZlT2JqZWN0Rm9yS2V5Om5hbWVd
OwotfQotCi0rKE5TRW51bWVyYXRvciAqKWZyYW1lc0luTmFtZXNwYWNlOihOU1N0cmluZyAqKW5h
bWU7Ci17Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gW1tbTlNFbnVtZXJhdG9yIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0KLSAgICBDRk11dGFibGVTZXRSZWYgbmFtZXNwYWNl
ID0gKENGTXV0YWJsZVNldFJlZilbbmFtZXNwYWNlcyBvYmplY3RGb3JLZXk6bmFtZV07Ci0KLSAg
ICBpZiAoIW5hbWVzcGFjZSkKLSAgICAgICAgcmV0dXJuIFtbW05TRW51bWVyYXRvciBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbKE5TU2V0ICopbmFtZXNwYWNl
IG9iamVjdEVudW1lcmF0b3JdOwotfQotCiBAZW5kCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTMxNjIpCisr
KyBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDQxICs1MDIsMTAg
QEAKICAgICovCiAgIHZvaWQgY2xlYXJUeXBpbmdTdHlsZSgpOwogCi0gIHZpcnR1YWwgdm9pZCB0
b2tlbml6ZXJQcm9jZXNzZWREYXRhKCkge307CisgIHZpcnR1YWwgdm9pZCB0b2tlbml6ZXJQcm9j
ZXNzZWREYXRhKCkge30KIAotICBjb25zdCBLSFRNTFNldHRpbmdzICpzZXR0aW5ncygpIGNvbnN0
OworICBjb25zdCBLSFRNTFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OwogCi0gIC8qKgotICAg
KiBSZXR1cm5zIGEgbGlzdCBvZiBuYW1lcyBvZiBhbGwgZnJhbWUgKGluY2x1ZGluZyBpZnJhbWUp
IG9iamVjdHMgb2YKLSAgICogdGhlIGN1cnJlbnQgZG9jdW1lbnQuIE5vdGUgdGhhdCB0aGlzIG1l
dGhvZCBpcyBub3Qgd29ya2luZyByZWN1cnNpdmVseQotICAgKiBmb3Igc3ViLWZyYW1lcy4KLSAg
ICovCi0gIFFTdHJpbmdMaXN0IGZyYW1lTmFtZXMoKSBjb25zdDsKLQotICBRUHRyTGlzdDxGcmFt
ZT4gZnJhbWVzKCkgY29uc3Q7Ci0KLSAgRnJhbWUgKmNoaWxkRnJhbWVOYW1lZChjb25zdCBRU3Ry
aW5nICZuYW1lKSBjb25zdDsKLQotICAvKioKLSAgICogRmluZHMgYSBmcmFtZSBieSBuYW1lLiBS
ZXR1cm5zIDBMIGlmIGZyYW1lIGNhbid0IGJlIGZvdW5kLgotICAgKi8KLSAgRnJhbWUgKmZpbmRG
cmFtZSggY29uc3QgUVN0cmluZyAmZiApOwotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGN1cnJl
bnQgZnJhbWUgKHRoZSBvbmUgdGhhdCBoYXMgZm9jdXMpCi0gICAqIE5vdCBuZWNlc3NhcmlseSBh
IGRpcmVjdCBjaGlsZCBvZiBvdXJzLCBmcmFtZXNldHMgY2FuIGJlIG5lc3RlZC4KLSAgICogUmV0
dXJucyAidGhpcyIgaWYgdGhpcyBwYXJ0IGlzbid0IGEgZnJhbWVzZXQuCi0gICAqLwotICBGcmFt
ZSogY3VycmVudEZyYW1lKCkgY29uc3Q7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBh
IGZyYW1lIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGlzIGV4aXN0cyBvciBub3QuCi0gICAqIElu
IGNvbnRyYXJ5IHRvIHRoZSBAcmVmIGZpbmRGcmFtZSBtZXRob2QgdGhpcyBvbmUgYWxzbyByZXR1
cm5zIHRydWUKLSAgICogaWYgdGhlIGZyYW1lIGlzIGRlZmluZWQgYnV0IG5vIGRpc3BsYXlpbmcg
Y29tcG9uZW50IGhhcyBiZWVuCi0gICAqIGZvdW5kL2xvYWRlZCwgeWV0LgotICAgKi8KLSAgYm9v
bCBmcmFtZUV4aXN0cyggY29uc3QgUVN0cmluZyAmZnJhbWVOYW1lICk7Ci0KICAgdm9pZCBzZXRK
U1N0YXR1c0JhclRleHQoY29uc3QgU3RyaW5nJik7CiAgIHZvaWQgc2V0SlNEZWZhdWx0U3RhdHVz
QmFyVGV4dChjb25zdCBTdHJpbmcmKTsKICAgU3RyaW5nIGpzU3RhdHVzQmFyVGV4dCgpIGNvbnN0
OwpAQCAtNTY1LDEwICs1MzQsNiBAQAogCiAgIGJvb2wgcmVzdG9yZWQoKSBjb25zdDsKIAotICB2
b2lkIGluY3JlbWVudEZyYW1lQ291bnQoKTsKLSAgdm9pZCBkZWNyZW1lbnRGcmFtZUNvdW50KCk7
Ci0gIGludCB0b3BMZXZlbEZyYW1lQ291bnQoKTsKLQogICAvLyBFZGl0aW5nIG9wZXJhdGlvbnMu
CiAgIC8vIE5vdCBjbGVhciBpZiB0aGVzZSB3aWxsIGJlIHdhbnRlZCBpbiBGcmFtZSBieSBLREUs
CiAgIC8vIGJ1dCBmb3Igbm93IHRoZXNlIGJyaWRnZSBzbyB3ZSBkb24ndCBoYXZlIHRvIHBlcHBl
ciB0aGUKQEAgLTY5MCw3ICs2NTUsNiBAQAogICB2aXJ0dWFsIGJvb2wgbGFzdEV2ZW50SXNNb3Vz
ZVVwKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIFFTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdCA9IDA7CiBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgU3RyaW5nIGdlbmVyYXRlRnJhbWVOYW1l
KCkgPSAwOwogICB2aXJ0dWFsIFBsdWdpbiogY3JlYXRlUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgUVN0cmluZ0xpc3QmIHBhcmFtTmFtZXMsIGNvbnN0IFFTdHJpbmdMaXN0JiBwYXJhbVZh
bHVlcywgY29uc3QgUVN0cmluZyYgbWltZVR5cGUpID0gMDsKICAgdmlydHVhbCBGcmFtZSogY3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBSZW5kZXJQYXJ0
KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikgPSAwOwogICB2aXJ0dWFsIE9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUVN0
cmluZyYgbWltZVR5cGUpID0gMDsKQEAgLTc1Myw3ICs3MTcsNiBAQAogICBib29sIHJlcXVlc3RP
YmplY3QoUmVuZGVyUGFydCAqZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnVybCwgY29uc3QgUVN0cmlu
ZyAmZnJhbWVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmc2Vydmlj
ZVR5cGUsIGNvbnN0IFFTdHJpbmdMaXN0ICZwYXJhbU5hbWVzLCBjb25zdCBRU3RyaW5nTGlzdCAm
cGFyYW1WYWx1ZXMpOwogICBib29sIHJlcXVlc3RGcmFtZShSZW5kZXJQYXJ0ICpmcmFtZSwgY29u
c3QgUVN0cmluZyAmdXJsLCBjb25zdCBRU3RyaW5nICZmcmFtZU5hbWUpOwotICBTdHJpbmcgcmVx
dWVzdEZyYW1lTmFtZSgpOwogCiAgIERvY3VtZW50SW1wbCAqZG9jdW1lbnQoKSBjb25zdDsKICAg
dm9pZCBzZXREb2N1bWVudChEb2N1bWVudEltcGwqIG5ld0RvYyk7CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRnJhbWVUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCShy
ZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsMTcgKzIxLDE2IEBACiAjaWZuZGVmIEZSQU1FX1RSRUVfSAogI2RlZmluZSBGUkFN
RV9UUkVFX0gKIAorI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgPGt4bWxjb3Jl
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8a3htbGNvcmUvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPGt4bWxjb3JlL1JlZlB0ci5oPgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lOwogCi0gICAgY2xhc3MgRnJhbWVU
cmVlIDogTm9uY29weWFibGUKLSAgICB7CisgICAgY2xhc3MgRnJhbWVUcmVlIDogTm9uY29weWFi
bGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRnJhbWVUcmVlKEZyYW1lKiB0aGlzRnJhbWUsIEZy
YW1lKiBwYXJlbnRGcmFtZSkgCiAgICAgICAgICAgICA6IG1fdGhpc0ZyYW1lKHRoaXNGcmFtZSkK
QEAgLTQyLDkgKzQxLDkgQEAKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIH5GcmFtZVRy
ZWUoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQotICAgICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgICAgIHZvaWQgc2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICAgICAgRnJh
bWUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgICAgIHZvaWQgc2V0
UGFyZW50KEZyYW1lKiBwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KICAgICAgICAgCkBA
IC01MiwyMyArNTEsMzIgQEAKICAgICAgICAgRnJhbWUqIHByZXZpb3VzU2libGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fcHJldmlvdXNTaWJsaW5nOyB9CiAgICAgICAgIEZyYW1lKiBmaXJzdENoaWxk
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkLmdldCgpOyB9CiAgICAgICAgIEZyYW1lKiBs
YXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQotICAgICAgICBpbnQgY2hp
bGRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRDb3VudDsgfQorICAgICAgICB1bnNpZ25l
ZCBjaGlsZENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZENvdW50OyB9CisKKyAgICAgICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZihGcmFtZSogYW5jZXN0b3IpIGNvbnN0OworICAgICAgICBGcmFt
ZSogdHJhdmVyc2VOZXh0KEZyYW1lKiBzdGF5V2l0aGluID0gMCkgY29uc3Q7CiAgICAgICAgIAog
ICAgICAgICB2b2lkIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKICAgICAgICAgdm9p
ZCByZW1vdmVDaGlsZChGcmFtZSopOwotICAgICAgICAKKworICAgICAgICBGcmFtZSogY2hpbGQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgICAgICBGcmFtZSogY2hpbGQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIGZpbmQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdDsKKworICAgICAgICBBdG9taWNTdHJpbmcgbmFtZUZvck5ld0NoaWxk
KGNvbnN0IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3Q7CisKICAgICBwcml2YXRl
OgogICAgICAgICBGcmFtZSogbV90aGlzRnJhbWU7Ci0gICAgICAgIAorCiAgICAgICAgIEZyYW1l
KiBtX3BhcmVudDsKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICAgICAgCisgICAgICAgIEF0
b21pY1N0cmluZyBtX25hbWU7CisKICAgICAgICAgLy8gRklYTUU6IHVzZSBMaXN0UmVmUHRyPwog
ICAgICAgICBSZWZQdHI8RnJhbWU+IG1fbmV4dFNpYmxpbmc7CiAgICAgICAgIEZyYW1lKiBtX3By
ZXZpb3VzU2libGluZzsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZpcnN0Q2hpbGQ7CiAgICAg
ICAgIEZyYW1lKiBtX2xhc3RDaGlsZDsKLSAgICAgICAgaW50IG1fY2hpbGRDb3VudDsKKyAgICAg
ICAgdW5zaWduZWQgbV9jaGlsZENvdW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L1BhZ2UuaAkocmV2aXNpb24gMTMxNjIpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw4IEBACiAjaWZuZGVmIFBBR0VfSAogI2RlZmluZSBQQUdFX0gK
IAorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8a3htbGNvcmUvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPGt4bWxjb3JlL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8a3htbGNv
cmUvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPGt4bWxjb3JlL1JlZlB0ci5oPgpAQCAtMjgsMTUg
KzMwLDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKKyAgICBj
bGFzcyBGcmFtZU5hbWVzcGFjZTsKICAgICAKICAgICBjbGFzcyBQYWdlIDogTm9uY29weWFibGUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgUGFnZSgpOwogICAgICAgICB2aXJ0dWFsIH5QYWdlKCk7
CisKICAgICAgICAgdm9pZCBzZXRNYWluRnJhbWUoUGFzc1JlZlB0cjxGcmFtZT4gbWFpbkZyYW1l
KTsKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgp
OyB9CisKKyAgICAgICAgdm9pZCBzZXRHcm91cE5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgICAg
IFN0cmluZyBncm91cE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwTmFtZTsgfQorICAgICAg
ICBjb25zdCBIYXNoU2V0PFBhZ2UqPiogZnJhbWVOYW1lc3BhY2UoKSBjb25zdDsKKyAgICAgICAg
c3RhdGljIGNvbnN0IEhhc2hTZXQ8UGFnZSo+KiBmcmFtZU5hbWVzcGFjZShjb25zdCBTdHJpbmcm
KTsKKworICAgICAgICB2b2lkIGluY3JlbWVudEZyYW1lQ291bnQoKSB7ICsrbV9mcmFtZUNvdW50
OyB9CisgICAgICAgIHZvaWQgZGVjcmVtZW50RnJhbWVDb3VudCgpIHsgLS1tX2ZyYW1lQ291bnQ7
IH0KKyAgICAgICAgaW50IGZyYW1lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQ291bnQ7
IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9tYWluRnJhbWU7Cisg
ICAgICAgIGludCBtX2ZyYW1lQ291bnQ7CisgICAgICAgIFN0cmluZyBtX2dyb3VwTmFtZTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDEzMTYy
KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzOCwxMSAr
MTMzOCw2IEBACiAgIHVybFNlbGVjdGVkKGNVUkwsIGFyZ3NDb3B5KTsKIH0KIAotRE9NU3RyaW5n
IEZyYW1lOjpyZXF1ZXN0RnJhbWVOYW1lKCkKLXsKLSAgICByZXR1cm4gZ2VuZXJhdGVGcmFtZU5h
bWUoKTsKLX0KLQogYm9vbCBGcmFtZTo6cmVxdWVzdEZyYW1lKFJlbmRlclBhcnQqIHJlbmRlcmVy
LCBjb25zdCBRU3RyaW5nJiBfdXJsLCBjb25zdCBRU3RyaW5nJiBmcmFtZU5hbWUpCiB7CiAgICAg
Ly8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgpAQCAtMTM1NCw3
ICsxMzQ5LDcgQEAKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwoX3VybCk7
CiAKLSAgICBGcmFtZSogZnJhbWUgPSBjaGlsZEZyYW1lTmFtZWQoZnJhbWVOYW1lKTsKKyAgICBG
cmFtZSogZnJhbWUgPSB0cmVlKCktPmNoaWxkKGZyYW1lTmFtZSk7CiAgICAgaWYgKGZyYW1lKSB7
CiAgICAgICAgIFVSTEFyZ3MgYXJnczsKICAgICAgICAgYXJncy5tZXRhRGF0YSgpLnNldCgicmVm
ZXJyZXIiLCBkLT5tX3JlZmVycmVyKTsKQEAgLTE1NzQsMjEgKzE1NjksNiBAQAogICAgIGNoZWNr
Q29tcGxldGVkKCk7CiB9CiAKLUZyYW1lKiBGcmFtZTo6ZmluZEZyYW1lKGNvbnN0IFFTdHJpbmcm
IGYpCi17Ci0gICAgLy8gRklYTUU6IHRoaXMgb25seSBmaW5kcyBjaGlsZCBmcmFtZXMsIGlzIGl0
IGV2ZXIgYXBwcm9wcmlhdGUgdG8gdXNlIHRoaXM/Ci0gICAgLy8gIyMjIGh0dHA6Ly93d3cudzMu
b3JnL1RSL2h0bWw0L2FwcGVuZGl4L25vdGVzLmh0bWwjbm90ZXMtZnJhbWVzCi0gICAgZm9yIChG
cmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
PnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgaWYgKGNoaWxkLT50cmVlKCktPm5hbWUo
KSA9PSBmKQotICAgICAgICAgICAgcmV0dXJuIGNoaWxkOwotICAgIHJldHVybiAwOwotfQotCi1i
b29sIEZyYW1lOjpmcmFtZUV4aXN0cyhjb25zdCBRU3RyaW5nJiBmcmFtZU5hbWUpCi17Ci0gICAg
cmV0dXJuIGZpbmRGcmFtZShmcmFtZU5hbWUpOwotfQotCiBpbnQgRnJhbWU6Onpvb21GYWN0b3Io
KSBjb25zdAogewogICByZXR1cm4gZC0+bV96b29tRmFjdG9yOwpAQCAtMTY2MywzNCArMTY0Myw2
IEBACiAgIGlmKGQtPm1fZG9jKSBkLT5tX2RvYy0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOwogfQog
Ci1RU3RyaW5nTGlzdCBGcmFtZTo6ZnJhbWVOYW1lcygpIGNvbnN0Ci17Ci0gIFFTdHJpbmdMaXN0
IHJlczsKLQotICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgcmVzICs9IGNo
aWxkLT50cmVlKCktPm5hbWUoKS5xc3RyaW5nKCk7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotUVB0
ckxpc3Q8RnJhbWU+IEZyYW1lOjpmcmFtZXMoKSBjb25zdAotewotICBRUHRyTGlzdDxGcmFtZT4g
cmVzOwotCi0gIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCi0gICAgICByZXMuYXBwZW5k
KGNoaWxkKTsKLQotICByZXR1cm4gcmVzOwotfQotCi1GcmFtZSogRnJhbWU6OmNoaWxkRnJhbWVO
YW1lZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIGZvciAoRnJhbWUqIGNoaWxk
ID0gdHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5l
eHRTaWJsaW5nKCkpCi0gICAgICAgIGlmIChjaGlsZC0+dHJlZSgpLT5uYW1lKCkgPT0gbmFtZSkK
LSAgICAgICAgICAgIHJldHVybiBjaGlsZDsKLSAgICByZXR1cm4gMDsKLX0KLQogYm9vbCBGcmFt
ZTo6c2hvdWxkRHJhZ0F1dG9Ob2RlKE5vZGVJbXBsICpub2RlLCBpbnQgeCwgaW50IHkpIGNvbnN0
CiB7CiAgICAgLy8gTm8gS0RFIGltcGwgeWV0CkBAIC0yMTE3LDMwICsyMDY5LDYgQEAKICAgcmV0
dXJuIGQtPm1fcmVzdG9yZWQ7CiB9CiAKLXZvaWQgRnJhbWU6OmluY3JlbWVudEZyYW1lQ291bnQo
KQotewotICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbiBQYWdlCi0gICAgZnJhbWVDb3Vu
dCsrOwotICAgIGlmICh0cmVlKCktPnBhcmVudCgpKQotICAgICAgICB0cmVlKCktPnBhcmVudCgp
LT5pbmNyZW1lbnRGcmFtZUNvdW50KCk7Ci19Ci0KLXZvaWQgRnJhbWU6OmRlY3JlbWVudEZyYW1l
Q291bnQoKQotewotICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbiBQYWdlCi0gICAgZnJh
bWVDb3VudC0tOwotICAgIGlmICh0cmVlKCktPnBhcmVudCgpKQotICAgICAgICB0cmVlKCktPnBh
cmVudCgpLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7Ci19Ci0KLWludCBGcmFtZTo6dG9wTGV2ZWxG
cmFtZUNvdW50KCkKLXsKLSAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW4gUGFnZQotICAg
IGlmICh0cmVlKCktPnBhcmVudCgpKQotICAgICAgICByZXR1cm4gdHJlZSgpLT5wYXJlbnQoKS0+
dG9wTGV2ZWxGcmFtZUNvdW50KCk7Ci0gICAgcmV0dXJuIGZyYW1lQ291bnQ7Ci19Ci0KIGJvb2wg
RnJhbWU6OnRhYnNUb0xpbmtzKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFt
ZVRyZWUuY3BwCShyZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMSArMjEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKIAotI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vZGVJbXBsLmgiCi0KKyNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDxreG1sY29yZS9WZWN0b3IuaD4KIAogdXNpbmcgc3RkOjpzd2Fw
OwogCkBAIC0zNywxNSArMzgsMTQgQEAKICAgICAgICAgY2hpbGQtPmRldGFjaEZyb21WaWV3KCk7
CiB9CiAKLXZvaWQgRnJhbWVUcmVlOjpzZXROYW1lKGNvbnN0IERPTVN0cmluZyYgbmFtZSkgCi17
IAotICAgIERPTVN0cmluZyBuID0gbmFtZTsKLSAgICAgICAgCi0gICAgLy8gRklYTUU6IGlzIHRo
ZSBibGFuayBydWxlIG5lZWRlZCBvciB1c2VmdWw/Ci0gICAgaWYgKHBhcmVudCgpICYmIChuYW1l
LmlzRW1wdHkoKSB8fCBwYXJlbnQoKS0+ZnJhbWVFeGlzdHMobmFtZS5xc3RyaW5nKCkpIHx8IG5h
bWUgPT0gIl9ibGFuayIpKQotICAgICAgICBuID0gcGFyZW50KCktPnJlcXVlc3RGcmFtZU5hbWUo
KTsKLSAgICAKLSAgICBtX25hbWUgPSBuOwordm9pZCBGcmFtZVRyZWU6OnNldE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSAKK3sKKyAgICBpZiAoIXBhcmVudCgpKSB7CisgICAgICAgIG1f
bmFtZSA9IG5hbWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9uYW1lID0gQXRvbWlj
U3RyaW5nKCk7IC8vIFJlbW92ZSBvdXIgb2xkIGZyYW1lIG5hbWUgc28gaXQncyBub3QgY29uc2lk
ZXJlZCBpbiBuYW1lRm9yTmV3Q2hpbGQuCisgICAgbV9uYW1lID0gcGFyZW50KCktPnRyZWUoKS0+
bmFtZUZvck5ld0NoaWxkKG5hbWUpOwogfQogCiB2b2lkIEZyYW1lVHJlZTo6YXBwZW5kQ2hpbGQo
UGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpCkBAIC04Niw0ICs4NiwxNDQgQEAKICAgICBtX2NoaWxk
Q291bnQtLTsKIH0KIAorQXRvbWljU3RyaW5nIEZyYW1lVHJlZTo6bmFtZUZvck5ld0NoaWxkKGNv
bnN0IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3QKK3sKKyAgICBpZiAoIXJlcXVl
c3RlZE5hbWUuaXNFbXB0eSgpICYmICFjaGlsZChyZXF1ZXN0ZWROYW1lKSAmJiByZXF1ZXN0ZWRO
YW1lICE9ICJfYmxhbmsiKQorICAgICAgICByZXR1cm4gcmVxdWVzdGVkTmFtZTsKKworICAgIC8v
IENyZWF0ZSBhIHJlcGVhdGFibGUgbmFtZSBmb3IgYSBjaGlsZCBhYm91dCB0byBiZSBhZGRlZCB0
byB1cy4gVGhlIG5hbWUgbXVzdCBiZQorICAgIC8vIHVuaXF1ZSB3aXRoaW4gdGhlIGZyYW1lIHRy
ZWUuIFRoZSBzdHJpbmcgd2UgZ2VuZXJhdGUgaW5jbHVkZXMgYSAicGF0aCIgb2YgbmFtZXMKKyAg
ICAvLyBmcm9tIHRoZSByb290IGZyYW1lIGRvd24gdG8gdXMuIEZvciB0aGlzIHBhdGggdG8gYmUg
dW5pcXVlLCBlYWNoIHNldCBvZiBzaWJsaW5ncyBtdXN0CisgICAgLy8gY29udHJpYnV0ZSBhIHVu
aXF1ZSBuYW1lIHRvIHRoZSBwYXRoLCB3aGljaCBjYW4ndCBjb2xsaWRlIHdpdGggYW55IEhUTUwt
YXNzaWduZWQgbmFtZXMuCisgICAgLy8gV2UgZ2VuZXJhdGUgdGhpcyBwYXRoIGNvbXBvbmVudCBi
eSBpbmRleCBpbiB0aGUgY2hpbGQgbGlzdCBhbG9uZyB3aXRoIGFuIHVubGlrZWx5CisgICAgLy8g
ZnJhbWUgbmFtZSB0aGF0IGNhbid0IGJlIHNldCBpbiBIVE1MIGJlY2F1c2UgaXQgY29sbGlkZXMg
d2l0aCBjb21tZW50IHN5bnRheC4KKworICAgIGNvbnN0IGNoYXIgZnJhbWVQYXRoUHJlZml4W10g
PSAiPCEtLWZyYW1lUGF0aCAiOworICAgIGNvbnN0IGludCBmcmFtZVBhdGhQcmVmaXhMZW5ndGgg
PSAxNDsKKyAgICBjb25zdCBpbnQgZnJhbWVQYXRoU3VmZml4TGVuZ3RoID0gMzsKKworICAgIC8v
IEZpbmQgdGhlIG5lYXJlc3QgcGFyZW50IHRoYXQgaGFzIGEgZnJhbWUgd2l0aCBhIHBhdGggaW4g
aXQuCisgICAgVmVjdG9yPEZyYW1lKiwgMTY+IGNoYWluOworICAgIEZyYW1lKiBmcmFtZTsKKyAg
ICBmb3IgKGZyYW1lID0gbV90aGlzRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnBhcmVudCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLT5uYW1lKCkuc3RhcnRzV2l0
aChmcmFtZVBhdGhQcmVmaXgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNoYWluLmFw
cGVuZChmcmFtZSk7CisgICAgfQorICAgIFN0cmluZyBuYW1lOworICAgIG5hbWUgKz0gZnJhbWVQ
YXRoUHJlZml4OworICAgIGlmIChmcmFtZSkKKyAgICAgICAgbmFtZSArPSBmcmFtZS0+dHJlZSgp
LT5uYW1lKCkuZG9tU3RyaW5nKCkuc3Vic3RyaW5nKGZyYW1lUGF0aFByZWZpeExlbmd0aCwKKyAg
ICAgICAgICAgIGZyYW1lLT50cmVlKCktPm5hbWUoKS5sZW5ndGgoKSAtIGZyYW1lUGF0aFByZWZp
eExlbmd0aCAtIGZyYW1lUGF0aFN1ZmZpeExlbmd0aCk7CisgICAgZm9yIChpbnQgaSA9IGNoYWlu
LnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGZyYW1lID0gY2hhaW5baV07Cisg
ICAgICAgIG5hbWUgKz0gIi8iOworICAgICAgICBuYW1lICs9IGZyYW1lLT50cmVlKCktPm5hbWUo
KTsKKyAgICB9CisgICAgY2hhciBzdWZmaXhbNDBdOyAvLyAxNiArIG1heGltdW0gd2lkdGggb2Yg
YW4gdW5zaWduZWQgaW50ZWdlcgorICAgIHNwcmludGYoc3VmZml4LCAiLzwhLS1mcmFtZSV1LS0+
LS0+IiwgY2hpbGRDb3VudCgpKTsKKyAgICBuYW1lICs9IHN1ZmZpeDsKKworICAgIHJldHVybiBB
dG9taWNTdHJpbmcobmFtZSk7CiB9CisKK0ZyYW1lKiBGcmFtZVRyZWU6OmNoaWxkKHVuc2lnbmVk
IGluZGV4KSBjb25zdAoreworICAgIEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgcmVzdWx0ICYmIGkgIT0gaW5kZXg7ICsraSkKKyAgICAgICAg
cmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworRnJhbWUqIEZyYW1lVHJlZTo6Y2hpbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdAoreworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgICAgICBpZiAoY2hpbGQt
PnRyZWUoKS0+bmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAg
cmV0dXJuIDA7Cit9CisKK0ZyYW1lKiBGcmFtZVRyZWU6OmZpbmQoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdAoreworICAgIGlmIChuYW1lID09ICJfc2VsZiIgfHwgbmFtZSA9PSAiX2N1
cnJlbnQiKQorICAgICAgICByZXR1cm4gbV90aGlzRnJhbWU7CisgICAgCisgICAgaWYgKG5hbWUg
PT0gIl90b3AiKQorICAgICAgICByZXR1cm4gbV90aGlzRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1l
KCk7CisgICAgCisgICAgaWYgKG5hbWUgPT0gIl9wYXJlbnQiKQorICAgICAgICByZXR1cm4gcGFy
ZW50KCkgPyBwYXJlbnQoKSA6IG1fdGhpc0ZyYW1lOworCisgICAgLy8gU2luY2UgIl9ibGFuayIg
c2hvdWxkIG5ldmVyIGJlIGFueSBmcmFtZSdzIG5hbWUsIHRoZSBmb2xsb3dpbmcganVzdCBhbW91
bnRzIHRvIGFuIG9wdGltaXphdGlvbi4KKyAgICBpZiAobmFtZSA9PSAiX2JsYW5rIikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBTZWFyY2ggc3VidHJlZSBzdGFydGluZyB3aXRoIHRoaXMg
ZnJhbWUgZmlyc3QuCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3RoaXNGcmFtZTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1fdGhpc0ZyYW1lKSkKKyAgICAg
ICAgaWYgKGZyYW1lLT50cmVlKCktPm5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJu
IGZyYW1lOworCisgICAgLy8gU2VhcmNoIHRoZSBlbnRpcmUgdHJlZSBmb3IgdGhpcyBwYWdlIG5l
eHQuCisgICAgUGFnZSogcGFnZSA9IG1fdGhpc0ZyYW1lLT5wYWdlKCk7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLT5uYW1lKCkgPT0g
bmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKworICAgIC8vIFNlYXJjaCB0aGUgZW50
aXJlIHRyZWUgZm9yIGFsbCBvdGhlciBwYWdlcyBpbiB0aGlzIG5hbWVzcGFjZS4KKyAgICBjb25z
dCBIYXNoU2V0PFBhZ2UqPiogcGFnZXMgPSBwYWdlLT5mcmFtZU5hbWVzcGFjZSgpOworICAgIGlm
IChwYWdlcykgeworICAgICAgICBIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
cGFnZXMtPmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IHBhZ2VzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFBh
Z2UqIG90aGVyUGFnZSA9ICppdDsKKyAgICAgICAgICAgIGlmIChvdGhlclBhZ2UgIT0gcGFnZSkK
KyAgICAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG90aGVyUGFnZS0+bWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS0+bmFtZSgpID09IG5hbWUpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gMDsKK30KKworYm9vbCBGcmFtZVRyZWU6OmlzRGVzY2VuZGFudE9mKEZyYW1lKiBhbmNl
c3RvcikgY29uc3QKK3sKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICAgICAgaWYgKGZyYW1lID09
IGFuY2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHQoRnJhbWUqIHN0YXlXaXRoaW4pIGNv
bnN0Cit7CisgICAgRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOworICAgIGlmIChjaGlsZCkg
eworICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgY2hpbGQtPnRyZWUoKS0+aXNEZXNjZW5k
YW50T2Yoc3RheVdpdGhpbikpOworICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorCisgICAg
aWYgKG1fdGhpc0ZyYW1lID09IHN0YXlXaXRoaW4pCisgICAgICAgIHJldHVybiAwOworCisgICAg
RnJhbWUqIHNpYmxpbmcgPSBuZXh0U2libGluZygpOworICAgIGlmIChzaWJsaW5nKSB7CisgICAg
ICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCBzaWJsaW5nLT50cmVlKCktPmlzRGVzY2VuZGFudE9m
KHN0YXlXaXRoaW4pKTsKKyAgICAgICAgcmV0dXJuIHNpYmxpbmc7CisgICAgfQorCisgICAgRnJh
bWUqIGZyYW1lID0gbV90aGlzRnJhbWU7CisgICAgd2hpbGUgKCFzaWJsaW5nICYmICghc3RheVdp
dGhpbiB8fCBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSAhPSBzdGF5V2l0aGluKSkgeworICAgICAg
ICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgICAgICBpZiAoIWZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHNpYmxpbmcgPSBmcmFtZS0+dHJlZSgpLT5u
ZXh0U2libGluZygpOworICAgIH0KKworICAgIGlmIChmcmFtZSkgeworICAgICAgICBBU1NFUlQo
IXN0YXlXaXRoaW4gfHwgIXNpYmxpbmcgfHwgc2libGluZy0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRP
ZihzdGF5V2l0aGluKSk7CisgICAgICAgIHJldHVybiBzaWJsaW5nOworICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxMzE2MikKKysrIFdlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMjEgKzI0LDI0IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlIDxranMvY29sbGVjdG9yLmg+CiAjaW5jbHVkZSA8a2pzL0pTTG9j
ay5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL0hhc2hNYXAuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEtK
UzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IHBhZ2VDb3VudDsKK3N0YXRp
YyBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxQYWdlKj4qPiogZnJhbWVOYW1lc3BhY2VzOwogCi1Q
YWdlOjpQYWdlKCkgCitQYWdlOjpQYWdlKCkgOiBtX2ZyYW1lQ291bnQoMCkKIHsKICAgICArK3Bh
Z2VDb3VudDsKIH0KIAogUGFnZTo6flBhZ2UoKSAKLXsgCit7CiAgICAgbV9tYWluRnJhbWUtPmRl
dGFjaEZyb21WaWV3KCk7IAorICAgIHNldEdyb3VwTmFtZShTdHJpbmcoKSk7CiAgICAgaWYgKCEt
LXBhZ2VDb3VudCkgewogICAgICAgICBGcmFtZTo6ZW5kQWxsTGlmZVN1cHBvcnQoKTsKICNpZm5k
ZWYgTkRFQlVHCkBAIC01NSw0ICs1OCwzOSBAQAogICAgIG1fbWFpbkZyYW1lID0gbWFpbkZyYW1l
OwogfQogCit2b2lkIFBhZ2U6OnNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgaWYgKGZyYW1lTmFtZXNwYWNlcyAmJiAhbV9ncm91cE5hbWUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEhhc2hTZXQ8UGFnZSo+KiBvbGROYW1lc3BhY2UgPSBmcmFtZU5hbWVzcGFjZXMtPmdldCht
X2dyb3VwTmFtZSk7CisgICAgICAgIGlmIChvbGROYW1lc3BhY2UpIHsKKyAgICAgICAgICAgIG9s
ZE5hbWVzcGFjZS0+cmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgaWYgKG9sZE5hbWVzcGFjZS0+
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgZnJhbWVOYW1lc3BhY2VzLT5yZW1vdmUobV9n
cm91cE5hbWUpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBvbGROYW1lc3BhY2U7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9ncm91cE5hbWUgPSBuYW1lOworICAgIGlm
ICghbmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFmcmFtZU5hbWVzcGFjZXMpCisgICAg
ICAgICAgICBmcmFtZU5hbWVzcGFjZXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8UGFn
ZSo+Kj47CisgICAgICAgIEhhc2hTZXQ8UGFnZSo+KiBuZXdOYW1lc3BhY2UgPSBmcmFtZU5hbWVz
cGFjZXMtPmdldChuYW1lKTsKKyAgICAgICAgaWYgKCFuZXdOYW1lc3BhY2UpIHsKKyAgICAgICAg
ICAgIG5ld05hbWVzcGFjZSA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsKKyAgICAgICAgICAgIGZyYW1l
TmFtZXNwYWNlcy0+YWRkKG5hbWUsIG5ld05hbWVzcGFjZSk7CisgICAgICAgIH0KKyAgICAgICAg
bmV3TmFtZXNwYWNlLT5hZGQodGhpcyk7CisgICAgfQogfQorCitjb25zdCBIYXNoU2V0PFBhZ2Uq
PiogUGFnZTo6ZnJhbWVOYW1lc3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiAoZnJhbWVOYW1l
c3BhY2VzICYmICFtX2dyb3VwTmFtZS5pc0VtcHR5KCkpID8gZnJhbWVOYW1lc3BhY2VzLT5nZXQo
bV9ncm91cE5hbWUpIDogMDsKK30KKworY29uc3QgSGFzaFNldDxQYWdlKj4qIFBhZ2U6OmZyYW1l
TmFtZXNwYWNlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKQoreworICAgIHJldHVybiAoZnJhbWVO
YW1lc3BhY2VzICYmICFncm91cE5hbWUuaXNFbXB0eSgpKSA/IGZyYW1lTmFtZXNwYWNlcy0+Z2V0
KGdyb3VwTmFtZSkgOiAwOworfQorCit9CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTYzKQorKysgV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA2LTAzLTA2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIGNoYW5nZSBob3cgZnJhbWUgbmFtZXNwYWNpbmcgd29ya3MgdG8g
YmUgbW9yZSBjb21wbGV0ZWx5IG9uIHRoZSBXZWJDb3JlIHNpZGUKKworICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWVJbnRlcm5hbC5oOiBSZW1vdmUgX3NldEZyYW1lTmFtZXNwYWNlOiBhbmQgX2Zy
YW1lTmFtZXNwYWNlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubTogRGl0dG8uCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRHcm91cE5h
bWU6XSk6IENhbGwgLVtXZWJDb3JlUGFnZUJyaWRnZSBzZXRHcm91cE5hbWU6XS4KKyAgICAgICAg
KC1bV2ViVmlldyBncm91cE5hbWVdKTogQ2FsbCAtW1dlYkNvcmVQYWdlQnJpZGdlIGdyb3VwTmFt
ZV0uCisKIDIwMDYtMDMtMDMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViRnJh
bWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lSW50ZXJu
YWwuaAkocmV2aXNpb24gMTMxNjIpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJGcmFtZUludGVybmFs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDYgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6KE5TRXJyb3IgKill
cnJvcjsKIC0gKHZvaWQpX3NldHVwRm9yUmVwbGFjZTsKIAotLSAodm9pZClfc2V0RnJhbWVOYW1l
c3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlOwotLSAoTlNTdHJpbmcgKilfZnJhbWVOYW1lc3Bh
Y2U7Ci0KIC0gKEJPT0wpX2hhc1NlbGVjdGlvbjsKIC0gKHZvaWQpX2NsZWFyU2VsZWN0aW9uOwog
LSAoV2ViRnJhbWUgKilfZmluZEZyYW1lV2l0aFNlbGVjdGlvbjsKSW5kZXg6IFdlYktpdC9XZWJW
aWV3L1dlYlZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJWaWV3Lm0JKHJl
dmlzaW9uIDEzMTYyKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViVmlldy5tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjk2LDEyICsyMjk2LDEyIEBACiAKIC0gKHZvaWQpc2V0R3JvdXBOYW1lOihOU1N0cmlu
ZyAqKWdyb3VwTmFtZQogewotICAgIFtbc2VsZiBtYWluRnJhbWVdIF9zZXRGcmFtZU5hbWVzcGFj
ZTpncm91cE5hbWVdOworICAgIFtbc2VsZiBfcGFnZUJyaWRnZV0gc2V0R3JvdXBOYW1lOmdyb3Vw
TmFtZV07CiB9CiAKIC0gKE5TU3RyaW5nICopZ3JvdXBOYW1lCiB7Ci0gICAgcmV0dXJuIFtbc2Vs
ZiBtYWluRnJhbWVdIF9mcmFtZU5hbWVzcGFjZV07CisgICAgcmV0dXJuIFtbc2VsZiBfcGFnZUJy
aWRnZV0gZ3JvdXBOYW1lXTsKIH0KIAogLSAoZG91YmxlKWVzdGltYXRlZFByb2dyZXNzCkluZGV4
OiBXZWJLaXQvV2ViVmlldy9XZWJGcmFtZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3
L1dlYkZyYW1lLm0JKHJldmlzaW9uIDEzMTYyKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViRnJhbWUu
bQkod29ya2luZyBjb3B5KQpAQCAtMjY0MiwxNiArMjY0Miw2IEBACiAgICAgW3NlbGYgX2RldGFj
aENoaWxkcmVuXTsKIH0KIAotLSAodm9pZClfc2V0RnJhbWVOYW1lc3BhY2U6KE5TU3RyaW5nICop
bmFtZXNwYWNlCi17Ci0gICAgW1tzZWxmIF9icmlkZ2VdIHNldEZyYW1lTmFtZXNwYWNlOm5hbWVz
cGFjZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopX2ZyYW1lTmFtZXNwYWNlCi17Ci0gICAgcmV0dXJu
IFtbc2VsZiBfYnJpZGdlXSBmcmFtZU5hbWVzcGFjZV07Ci19Ci0KIC0gKEJPT0wpX2hhc1NlbGVj
dGlvbgogewogICAgIGlkIGRvY3VtZW50VmlldyA9IFtbc2VsZiBmcmFtZVZpZXddIGRvY3VtZW50
Vmlld107ICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7012</attachid>
            <date>2006-03-11 15:39:07 -0800</date>
            <delta_ts>2006-03-12 07:24:54 -0800</delta_ts>
            <desc>Proposed fix, no test and change log yet</desc>
            <filename>3560_r1.patch</filename>
            <type>text/plain</type>
            <size>4414</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDEzMjYxKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzczLDcg
KzMzNzMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgICAg
ICAgICAvLyBjb25zdHJ1Y3QgdGV4dCBmcmFnbWVudCBmb3IgdGhlIHRleHQgYWZ0ZXIgdGhlIGZp
cnN0IGxldHRlcgogICAgICAgICAgICAgLy8gTk9URTogdGhpcyBtaWdodCBlbXB0eQogICAgICAg
ICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiByZW1haW5pbmdUZXh0ID0gCi0gICAgICAgICAgICAg
ICAgbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQodGV4dE9iai0+bm9kZSgp
LCBvbGRUZXh0LmdldCgpLCBsZW5ndGgsIG9sZFRleHQtPmxlbmd0aCgpIC0gbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudCh0ZXh0
T2JqLT5ub2RlKCksIG9sZFRleHQuZ2V0KCksIGxlbmd0aCwgb2xkVGV4dC0+bGVuZ3RoKCkgLSBs
ZW5ndGgsIGZpcnN0TGV0dGVyKTsKICAgICAgICAgICAgIHJlbWFpbmluZ1RleHQtPnNldFN0eWxl
KHRleHRPYmotPnN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1RleHQtPmVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0LT5lbGVtZW50KCktPnNldFJlbmRl
cmVyKHJlbWFpbmluZ1RleHQpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIu
Y3BwCShyZXZpc2lvbiAxMzI2MSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAgdm9pZCBSZW5kZXJDb250YWlu
ZXI6OmRlc3Ryb3koKQogdm9pZCBSZW5kZXJDb250YWluZXI6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxk
cmVuKCkKIHsKICAgICB3aGlsZSAobV9maXJzdCkgewotICAgICAgICBpZiAobV9maXJzdC0+aXNM
aXN0TWFya2VyKCkpCi0gICAgICAgICAgICBtX2ZpcnN0LT5yZW1vdmUoKTsgIC8vIExpc3QgbWFy
a2VycyBhcmUgb3duZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxpc3QgYW5kIHNvIGRvbid0IGdldCBk
ZXN0cm95ZWQgYnkgdGhpcyBjb250YWluZXIuCisgICAgICAgIGlmIChtX2ZpcnN0LT5pc0xpc3RN
YXJrZXIoKSB8fCBtX2ZpcnN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBSZW5kZXJTdHlsZTo6
RklSU1RfTEVUVEVSKQorICAgICAgICAgICAgbV9maXJzdC0+cmVtb3ZlKCk7ICAvLyBMaXN0IG1h
cmtlcnMgYXJlIG93bmVkIGJ5IHRoZWlyIGVuY2xvc2luZyBsaXN0IGFuZCBzbyBkb24ndCBnZXQg
ZGVzdHJveWVkIGJ5IHRoaXMgY29udGFpbmVyLiBTaW1pbGFybHksIGZpcnN0IGxldHRlcnMgYXJl
IGRlc3Ryb3llZCBieSB0aGVpciByZW1haW5pbmcgdGV4dCBmcmFnbWVudC4KICAgICAgICAgZWxz
ZSB7CiAgICAgICAgIC8vIERlc3Ryb3kgYW55IGFub255bW91cyBjaGlsZHJlbiByZW1haW5pbmcg
aW4gdGhlIHJlbmRlciB0cmVlLCBhcyB3ZWxsIGFzIGltcGxpY2l0IChzaGFkb3cpIERPTSBlbGVt
ZW50cyBsaWtlIHRob3NlIHVzZWQgaW4gdGhlIGVuZ2luZS1iYXNlZCB0ZXh0IGZpZWxkcy4KICAg
ICAgICAgICAgIGlmIChtX2ZpcnN0LT5lbGVtZW50KCkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRGcmFnbWVudC5jcHAJKHJldmlzaW9uIDEzMjYxKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5
LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBET007CiAKIG5hbWVzcGFjZSBraHRtbCB7CiAKLVJlbmRl
clRleHRGcmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KERPTTo6Tm9kZUltcGwqIG5vZGUsIERP
TTo6RE9NU3RyaW5nSW1wbCogc3RyLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgpCi0gICAg
OiBSZW5kZXJUZXh0KG5vZGUsIHN0ciA/IHN0ci0+c3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBsZW5n
dGgpIDogMCksIG1fc3RhcnQoc3RhcnRPZmZzZXQpLCBtX2VuZChsZW5ndGgpCitSZW5kZXJUZXh0
RnJhZ21lbnQ6OlJlbmRlclRleHRGcmFnbWVudChET006Ok5vZGVJbXBsKiBub2RlLCBET006OkRP
TVN0cmluZ0ltcGwqIHN0ciwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyKQorICAgIDogUmVuZGVyVGV4dChub2RlLCBzdHIgPyBzdHItPnN1YnN0
cmluZyhzdGFydE9mZnNldCwgbGVuZ3RoKSA6IDApLCBtX3N0YXJ0KHN0YXJ0T2Zmc2V0KSwgbV9l
bmQobGVuZ3RoKSwgbV9maXJzdExldHRlcihmaXJzdExldHRlcikKIHsKIH0KIAogUmVuZGVyVGV4
dEZyYWdtZW50OjpSZW5kZXJUZXh0RnJhZ21lbnQoRE9NOjpOb2RlSW1wbCogbm9kZSwgRE9NOjpE
T01TdHJpbmdJbXBsKiBzdHIpCi0gICAgOiBSZW5kZXJUZXh0KG5vZGUsIHN0ciksIG1fc3RhcnQo
MCksIG1fZW5kKHN0ciA/IHN0ci0+bGVuZ3RoKCkgOiAwKSwgbV9nZW5lcmF0ZWRDb250ZW50U3Ry
KHN0cikKKyAgICA6IFJlbmRlclRleHQobm9kZSwgc3RyKSwgbV9zdGFydCgwKSwgbV9lbmQoc3Ry
ID8gc3RyLT5sZW5ndGgoKSA6IDApLCBtX2dlbmVyYXRlZENvbnRlbnRTdHIoc3RyKSwgbV9maXJz
dExldHRlcigwKQogewogfQogCkBAIC01Niw0ICs1NiwxMCBAQCBQYXNzUmVmUHRyPERPTVN0cmlu
Z0ltcGw+IFJlbmRlclRleHRGcmFnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSZW5k
ZXJUZXh0RnJhZ21lbnQ6OmRlc3Ryb3koKQoreworICAgIGlmIChmaXJzdExldHRlcigpKQorICAg
ICAgICBmaXJzdExldHRlcigpLT5kZXN0cm95KCk7CisgICAgUmVuZGVyVGV4dDo6ZGVzdHJveSgp
OworfQogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgJKHJldmlz
aW9uIDEzMjYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxNiBAQCBuYW1lc3BhY2Uga2h0bWwKIGNsYXNzIFJl
bmRlclRleHRGcmFnbWVudCA6IHB1YmxpYyBSZW5kZXJUZXh0CiB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyVGV4dEZyYWdtZW50KERPTTo6Tm9kZUltcGwqLCBET006OkRPTVN0cmluZ0ltcGwqLCBpbnQg
c3RhcnRPZmZzZXQsIGludCBsZW5ndGgpOworICAgIFJlbmRlclRleHRGcmFnbWVudChET006Ok5v
ZGVJbXBsKiwgRE9NOjpET01TdHJpbmdJbXBsKiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3Ro
LCBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyID0gMCk7CiAgICAgUmVuZGVyVGV4dEZyYWdtZW50
KERPTTo6Tm9kZUltcGwqLCBET006OkRPTVN0cmluZ0ltcGwqKTsKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdDsKICAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveSgpOworCiAgICAgdWludCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KICAg
ICB1aW50IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgUmVuZGVyT2JqZWN0KiBm
aXJzdExldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMZXR0ZXI7IH0KICAgICAKICAgICBE
T006OkRPTVN0cmluZ0ltcGwqIGNvbnRlbnRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2dlbmVy
YXRlZENvbnRlbnRTdHIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NOjpET01T
dHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZygpIGNvbnN0OwpAQCAtNTYsNiArNTksNyBAQCBwcml2
YXRlOgogICAgIHVpbnQgbV9zdGFydDsKICAgICB1aW50IG1fZW5kOwogICAgIFJlZlB0cjxET006
OkRPTVN0cmluZ0ltcGw+IG1fZ2VuZXJhdGVkQ29udGVudFN0cjsKKyAgICBSZW5kZXJPYmplY3Qq
IG1fZmlyc3RMZXR0ZXI7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7024</attachid>
            <date>2006-03-12 07:24:54 -0800</date>
            <delta_ts>2006-03-12 13:28:52 -0800</delta_ts>
            <desc>Same patch, with layout test and change log</desc>
            <filename>3560_r2.patch</filename>
            <type>text/plain</type>
            <size>10279</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzMjYyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDMtIyMgIE1pdHogUGV0dGVsICA8b3Bl
bmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSB0ZXN0IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjAKKyAgICAgICAgICBwYWdlIHdpdGggdXNlIG9mIGZp
cnN0LWxldHRlciBjcmFzaGVzIHJlcHJvZHVjaWJseSBpbiBSZW5kZXJPYmplY3Q6OnJlbmRlckFy
ZW5hKCkKKworICAgICAgICAqIGZhc3QvY3NzL2ZpcnN0LWxldHRlci1kZXRhY2gtZXhwZWN0ZWQu
Y2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZpcnN0LWxldHRlci1kZXRhY2gt
ZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItZGV0
YWNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVy
LWRldGFjaC5odG1sOiBBZGRlZC4KKwogMjAwNi0wMy0xMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAa2lsemVyLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiwgbGFuZGVkIGJ5IGFw
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWRldGFjaC1leHBlY3Rl
ZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0
ZXItZGV0YWNoLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWRldGFjaC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorOGExOGQ0NmRiMjkzMGYwYjQ0NmY5NmY1OWYzNzQ3YzIKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1s
ZXR0ZXItZGV0YWNoLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBmaXJzdC1sZXR0ZXItZGV0YWNoLWV4cGVj
dGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0KCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItZGV0
YWNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJz
dC1sZXR0ZXItZGV0YWNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1kZXRhY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMyIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2Fu
dmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDUzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTM6ICJUZXN0IGZvciAi
CisgICAgICAgIFJlbmRlcklubGluZSB7SX0gYXQgKDAsMCkgc2l6ZSA3MjZ4MzYKKyAgICAgICAg
ICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMzQ4eDE4IFtjb2xvcj0jMDAwMEVFXQor
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDUzLDApIHNpemUgMzQ4eDE4CisgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg1MywwKSB3aWR0aCAzNDg6ICJodHRwOi8vYnVnemlsbGEu
b3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM1NjAiCisgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDQwMSwwKSBzaXplIDcyNngzNgorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDQwMSwwKSB3aWR0aCAzMjU6ICIgcGFnZSB3aXRoIHVzZSBvZiBmaXJzdC1sZXR0ZXIgY3Jhc2hl
cyByZXByb2R1Y2libHkgaW4iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGgg
MTg5OiAiUmVuZGVyT2JqZWN0OjpyZW5kZXJBcmVuYSgpIgorICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMTg5LDE4KSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTg5LDE4
KSB3aWR0aCA0OiAiLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw1Mikgc2l6ZSA3ODR4
MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNzF4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzE6ICJUaGUgbmV4dCBsaW5lIHNob3VsZCBy
ZWFkIFx4ezIwMUN9IgorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
OXgxOCBbY29sb3I9IzAwMDBGRl0KKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMTcx
LDApIHNpemUgOXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE3MSwwKSB3aWR0aCA5OiAi
UCIKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDE4MCwwKSBzaXplIDIwOXgxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgxODAsMCkgd2lkdGggMjA5OiAiQVNTXHh7MjAxRH0sIHdpdGgg
bm90aGluZyBiZWZvcmUgdGhlIFAuIgorICAgICAgUmVuZGVyQmxvY2sge0hSfSBhdCAoMCw4Nikg
c2l6ZSA3ODR4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDEwNCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVySW5saW5lIChnZW5l
cmF0ZWQpIGF0ICgwLDApIHNpemUgOXgxOCBbY29sb3I9IzAwMDBGRl0KKyAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDk6ICJQIgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoOSwwKSBz
aXplIDMweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDksMCkgd2lkdGggMzA6ICJBU1MiCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItZGV0YWNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWRldGFjaC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWRldGFjaC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0YXJnZXQ6Zmlyc3Qt
bGV0dGVyIHsgY29sb3I6IGJsdWU7CX0KKzwvc3R5bGU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
VG9wOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5pbm5lckhUTUwgPSAi
UEFTUyI7Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgor
PHA+CitUZXN0IGZvciA8aT48YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NjAiPmh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU2MDwvYT4KK3BhZ2Ugd2l0aCB1c2Ugb2YgZmlyc3QtbGV0dGVyIGNyYXNo
ZXMgcmVwcm9kdWNpYmx5IGluIFJlbmRlck9iamVjdDo6cmVuZGVyQXJlbmEoKTwvaT4uCis8L3A+
Cis8cD4KK1RoZSBuZXh0IGxpbmUgc2hvdWxkIHJlYWQgJmxkcXVvOzxzcGFuIHN0eWxlPSJjb2xv
cjogYmx1ZTsiPlA8L3NwYW4+QVNTJnJkcXVvOywgd2l0aCBub3RoaW5nIGJlZm9yZSB0aGUgUC4K
KzwvcD4KKzxocj4KKzxwIGlkPSJ0YXJnZXQiPmRpZG4mcnNxdW87dCBydW48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTMyNjIpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDA2LTAzLSMjICBNaXR6IFBldHRlbCAgPG9wZW5k
YXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2ZpcnN0
LWxldHRlci1kZXRhY2guaHRtbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzU2MAorICAgICAgICAgIHBhZ2Ugd2l0aCB1c2Ugb2YgZmlyc3QtbGV0dGVyIGNy
YXNoZXMgcmVwcm9kdWNpYmx5IGluIFJlbmRlck9iamVjdDo6cmVuZGVyQXJlbmEoKQorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcik6IFBhc3MgdGhlIGZpcnN0LWxldGVyIHJlbmRlcmVy
IHRvIHRoZQorICAgICAgICByZW1haW5pbmcgdGV4dCBmcmFnbWVudC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRh
aW5lcjo6ZGVzdHJveUxlZnRvdmVyQ2hpbGRyZW4pOiBEbyBub3QgZGVzdHJveSBmaXJzdC1sZXR0
ZXIKKyAgICAgICAgcmVuZGVyZXJzIHNpbmNlIHRoZXkgYXJlIGRlc3Ryb3llZCBieSB0aGVpciBy
ZW1haW5pbmcgdGV4dCBub3cuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChraHRtbDo6UmVuZGVyVGV4dEZyYWdtZW50OjpSZW5kZXJUZXh0RnJh
Z21lbnQpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclRleHRGcmFnbWVudDo6ZGVzdHJveSk6IERl
c3Ryb3kgdGhlIGZpcnN0LWxldHRlciByZW5kZXJlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50Lmg6CisgICAgICAgIChraHRtbDo6UmVuZGVyVGV4dEZyYWdtZW50Ojpm
aXJzdExldHRlcik6CisKIDIwMDYtMDMtMTIgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGtpbHpl
ci5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4sIGxhbmRlZCBieSBhcC4KSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDEzMjYxKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzczLDcgKzMzNzMs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgICAgICAgICAv
LyBjb25zdHJ1Y3QgdGV4dCBmcmFnbWVudCBmb3IgdGhlIHRleHQgYWZ0ZXIgdGhlIGZpcnN0IGxl
dHRlcgogICAgICAgICAgICAgLy8gTk9URTogdGhpcyBtaWdodCBlbXB0eQogICAgICAgICAgICAg
UmVuZGVyVGV4dEZyYWdtZW50KiByZW1haW5pbmdUZXh0ID0gCi0gICAgICAgICAgICAgICAgbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQodGV4dE9iai0+bm9kZSgpLCBvbGRU
ZXh0LmdldCgpLCBsZW5ndGgsIG9sZFRleHQtPmxlbmd0aCgpIC0gbGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudCh0ZXh0T2JqLT5u
b2RlKCksIG9sZFRleHQuZ2V0KCksIGxlbmd0aCwgb2xkVGV4dC0+bGVuZ3RoKCkgLSBsZW5ndGgs
IGZpcnN0TGV0dGVyKTsKICAgICAgICAgICAgIHJlbWFpbmluZ1RleHQtPnNldFN0eWxlKHRleHRP
YmotPnN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1RleHQtPmVsZW1lbnQoKSkK
ICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0LT5lbGVtZW50KCktPnNldFJlbmRlcmVyKHJl
bWFpbmluZ1RleHQpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCShy
ZXZpc2lvbiAxMzI2MSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAgdm9pZCBSZW5kZXJDb250YWluZXI6OmRl
c3Ryb3koKQogdm9pZCBSZW5kZXJDb250YWluZXI6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCkK
IHsKICAgICB3aGlsZSAobV9maXJzdCkgewotICAgICAgICBpZiAobV9maXJzdC0+aXNMaXN0TWFy
a2VyKCkpCi0gICAgICAgICAgICBtX2ZpcnN0LT5yZW1vdmUoKTsgIC8vIExpc3QgbWFya2VycyBh
cmUgb3duZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxpc3QgYW5kIHNvIGRvbid0IGdldCBkZXN0cm95
ZWQgYnkgdGhpcyBjb250YWluZXIuCisgICAgICAgIGlmIChtX2ZpcnN0LT5pc0xpc3RNYXJrZXIo
KSB8fCBtX2ZpcnN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBSZW5kZXJTdHlsZTo6RklSU1Rf
TEVUVEVSKQorICAgICAgICAgICAgbV9maXJzdC0+cmVtb3ZlKCk7ICAvLyBMaXN0IG1hcmtlcnMg
YXJlIG93bmVkIGJ5IHRoZWlyIGVuY2xvc2luZyBsaXN0IGFuZCBzbyBkb24ndCBnZXQgZGVzdHJv
eWVkIGJ5IHRoaXMgY29udGFpbmVyLiBTaW1pbGFybHksIGZpcnN0IGxldHRlcnMgYXJlIGRlc3Ry
b3llZCBieSB0aGVpciByZW1haW5pbmcgdGV4dCBmcmFnbWVudC4KICAgICAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIERlc3Ryb3kgYW55IGFub255bW91cyBjaGlsZHJlbiByZW1haW5pbmcgaW4gdGhl
IHJlbmRlciB0cmVlLCBhcyB3ZWxsIGFzIGltcGxpY2l0IChzaGFkb3cpIERPTSBlbGVtZW50cyBs
aWtlIHRob3NlIHVzZWQgaW4gdGhlIGVuZ2luZS1iYXNlZCB0ZXh0IGZpZWxkcy4KICAgICAgICAg
ICAgIGlmIChtX2ZpcnN0LT5lbGVtZW50KCkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRGcmFnbWVudC5jcHAJKHJldmlzaW9uIDEzMjYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBET007CiAKIG5hbWVzcGFjZSBraHRtbCB7CiAKLVJlbmRlclRleHRG
cmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KERPTTo6Tm9kZUltcGwqIG5vZGUsIERPTTo6RE9N
U3RyaW5nSW1wbCogc3RyLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgpCi0gICAgOiBSZW5k
ZXJUZXh0KG5vZGUsIHN0ciA/IHN0ci0+c3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBsZW5ndGgpIDog
MCksIG1fc3RhcnQoc3RhcnRPZmZzZXQpLCBtX2VuZChsZW5ndGgpCitSZW5kZXJUZXh0RnJhZ21l
bnQ6OlJlbmRlclRleHRGcmFnbWVudChET006Ok5vZGVJbXBsKiBub2RlLCBET006OkRPTVN0cmlu
Z0ltcGwqIHN0ciwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBSZW5kZXJPYmplY3QqIGZp
cnN0TGV0dGVyKQorICAgIDogUmVuZGVyVGV4dChub2RlLCBzdHIgPyBzdHItPnN1YnN0cmluZyhz
dGFydE9mZnNldCwgbGVuZ3RoKSA6IDApLCBtX3N0YXJ0KHN0YXJ0T2Zmc2V0KSwgbV9lbmQobGVu
Z3RoKSwgbV9maXJzdExldHRlcihmaXJzdExldHRlcikKIHsKIH0KIAogUmVuZGVyVGV4dEZyYWdt
ZW50OjpSZW5kZXJUZXh0RnJhZ21lbnQoRE9NOjpOb2RlSW1wbCogbm9kZSwgRE9NOjpET01TdHJp
bmdJbXBsKiBzdHIpCi0gICAgOiBSZW5kZXJUZXh0KG5vZGUsIHN0ciksIG1fc3RhcnQoMCksIG1f
ZW5kKHN0ciA/IHN0ci0+bGVuZ3RoKCkgOiAwKSwgbV9nZW5lcmF0ZWRDb250ZW50U3RyKHN0cikK
KyAgICA6IFJlbmRlclRleHQobm9kZSwgc3RyKSwgbV9zdGFydCgwKSwgbV9lbmQoc3RyID8gc3Ry
LT5sZW5ndGgoKSA6IDApLCBtX2dlbmVyYXRlZENvbnRlbnRTdHIoc3RyKSwgbV9maXJzdExldHRl
cigwKQogewogfQogCkBAIC01Niw0ICs1NiwxMCBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0ltcGw+
IFJlbmRlclRleHRGcmFnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSZW5kZXJUZXh0
RnJhZ21lbnQ6OmRlc3Ryb3koKQoreworICAgIGlmIChmaXJzdExldHRlcigpKQorICAgICAgICBm
aXJzdExldHRlcigpLT5kZXN0cm95KCk7CisgICAgUmVuZGVyVGV4dDo6ZGVzdHJveSgpOworfQog
fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgJKHJldmlzaW9uIDEz
MjYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDEzICs0MSwxNiBAQCBuYW1lc3BhY2Uga2h0bWwKIGNsYXNzIFJlbmRlclRl
eHRGcmFnbWVudCA6IHB1YmxpYyBSZW5kZXJUZXh0CiB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4
dEZyYWdtZW50KERPTTo6Tm9kZUltcGwqLCBET006OkRPTVN0cmluZ0ltcGwqLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBsZW5ndGgpOworICAgIFJlbmRlclRleHRGcmFnbWVudChET006Ok5vZGVJbXBs
KiwgRE9NOjpET01TdHJpbmdJbXBsKiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBSZW5k
ZXJPYmplY3QqIGZpcnN0TGV0dGVyID0gMCk7CiAgICAgUmVuZGVyVGV4dEZyYWdtZW50KERPTTo6
Tm9kZUltcGwqLCBET006OkRPTVN0cmluZ0ltcGwqKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0RnJhZ21lbnQoKSBjb25zdDsKICAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgp
OworCiAgICAgdWludCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KICAgICB1aW50
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgUmVuZGVyT2JqZWN0KiBmaXJzdExl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMZXR0ZXI7IH0KICAgICAKICAgICBET006OkRP
TVN0cmluZ0ltcGwqIGNvbnRlbnRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRlZENv
bnRlbnRTdHIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NOjpET01TdHJpbmdJ
bXBsPiBvcmlnaW5hbFN0cmluZygpIGNvbnN0OwpAQCAtNTYsNiArNTksNyBAQCBwcml2YXRlOgog
ICAgIHVpbnQgbV9zdGFydDsKICAgICB1aW50IG1fZW5kOwogICAgIFJlZlB0cjxET006OkRPTVN0
cmluZ0ltcGw+IG1fZ2VuZXJhdGVkQ29udGVudFN0cjsKKyAgICBSZW5kZXJPYmplY3QqIG1fZmly
c3RMZXR0ZXI7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="1822"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>