<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>107487</bug_id>
          
          <creation_ts>2005-06-15 19:24:51 +0000</creation_ts>
          <short_desc>Please add the xterm-256 colour support.</short_desc>
          <delta_ts>2006-07-24 22:49:38 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>konsole</product>
          <component>general</component>
          <version>1.4.2</version>
          <rep_platform>Debian testing</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>wishlist</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sebastian Andersson">bofh-reg-kde</reporter>
          <assigned_to name="Konsole Bugs">konsole-bugs-null</assigned_to>
          <cc>flameeyes</cc>
    
    <cc>witekfl</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350671</commentid>
    <comment_count>0</comment_count>
    <who name="Sebastian Andersson">bofh-reg-kde</who>
    <bug_when>2005-06-15 19:24:51 +0000</bug_when>
    <thetext>Version:           1.4.2 (using KDE KDE 3.3.2)
Installed from:    Debian testing/unstable Packages

It would be nice if konsole supported the 256-colour xterm escape sequences:

&lt;ESC&gt;[48;5;&lt;nr&gt;m - set the background to colour &lt;nr&gt; and
&lt;ESC&gt;[38;5;&lt;nr&gt;m - set the foreground to colour &lt;nr&gt;,
where &lt;nr&gt; is between 16 and 232 for a 6x6x6 colour cube and between 232 and 255 for gray colours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369662</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Smith">alienfeet2000</who>
    <bug_when>2005-08-29 23:23:28 +0000</bug_when>
    <thetext>It may be better to add this to the konsole terminfo database entry and use that instead of xterm.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408140</commentid>
    <comment_count>2</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2006-01-22 19:22:14 +0000</bug_when>
    <thetext>*** Bug 120546 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412413</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Purcell">kdebugs</who>
    <bug_when>2006-02-08 02:09:05 +0000</bug_when>
    <thetext>This would also be great for using colour emacs/vim in konsole sessions.

Here&apos;s a handy quick way to test whether a terminal supports 256 colours:

 echo -e &quot;\e[38;5;196mred\e[38;5;46mgreen\e[38;5;21mblue\e[0m&quot;

If the words are displayed in the right colours, all is well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416161</commentid>
    <comment_count>4</comment_count>
    <who name="">dann</who>
    <bug_when>2006-02-21 19:42:18 +0000</bug_when>
    <thetext>If someone want to work on this, what needs to be done is to add support 
for the ESC;38;5;COLORNUMBERm ESC;$8;5;COLORNUMBERm escape sequences for setting the color background and foreground.

The colors 16 ... 256 can be computed with code like this:

for (r=g=b=0, i=16; i&lt; 256; i++) {
   if (i &lt; 232) {
	int j = i - 16;
	int r = j / 36, g = (j / 6) % 6, b = j % 6;
	int red =   (r == 0) ? 0 : r * 40 + 55;
	int green = (g == 0) ? 0 : g * 40 + 55;
	int blue =  (b == 0) ? 0 : b * 40 + 55;
	color.red   = red | red &lt;&lt; 8  ;
	color.green = green | green &lt;&lt; 8;
	color.blue  = blue | blue &lt;&lt; 8;
    } else if (i &lt; 256) {
	int shade = 8 + (i - 232) * 10;
	color.red = color.green = color.blue = shade | shade &lt;&lt; 8;
   }

The colors 0 ... 16 are in TEWidget.cpp:base_color_table 2...9 and 12...19</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433035</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Butler">dbutler</who>
    <bug_when>2006-04-22 01:39:20 +0000</bug_when>
    <thetext>*** This bug has been confirmed by popular vote. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433036</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Butler">dbutler</who>
    <bug_when>2006-04-22 01:42:02 +0000</bug_when>
    <thetext>I&apos;ve written a piece about 256-color support, and the lack thereof in Konsole.

http://www.yup.com/articles/2006/04/15/ruby-goes-256-color-in-xterm

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435434</commentid>
    <comment_count>7</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2006-05-01 08:14:48 +0000</bug_when>
    <thetext>echo -e &quot;\e[38;5;196mred&quot; and echo -e &quot;\e[48;5;196mred&quot;

produces a blinking, normal color text in Konsole 1.6.3.

If anyone is working on this, let me know.

BR#37942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443356</commentid>
    <comment_count>8</comment_count>
    <who name="">dann</who>
    <bug_when>2006-05-31 19:25:35 +0000</bug_when>
    <thetext>Adding support for 256 colors in Konsole should be quite easy.
It should not be more than one hour of work to do this Konsole.

I implemented the 256 colors support in gnome-terminal and it took me about 30 minutes after looking at the code for the first time. 

(I do not use either gnome-terminal nor Konsole, but I have an interest in making 256 color terminals available)

If anybody wants to work on this, here are some steps you could follow: 
(obviously you could do things differently, this is just a suggestion)

First change TEWidget.cpp:base_color_table and the code that uses it so that 
colors 0 ... 16 are at indexes 0 .. 16 (this probably is the most time consuming part or the implementation).

Then extend base_color_table to contain 256 colors. The code for computing the RGB components for the colors is given in comment #4. 

Then implement the code that recognizes the ESC;38;5; and ESC;48;5 sequences and changes the fg/bg to the corresponding colors (probably 5-10 lines of code)

Good luck!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444285</commentid>
    <comment_count>9</comment_count>
    <who name="">witekfl</who>
    <bug_when>2006-06-04 18:48:08 +0000</bug_when>
    <thetext>Here is the patch. It adds 256 color support.
There is a problem with transparency and schemas.
Konsole before used 4 colors in color table specially for default background and foreground. Now all 256 colors are taken. I have no idea how to preserve those 4 entries. For now they are removed. I have renumbered colors in schemas:
2 -&gt; 0, 3 -&gt; 1, 12 -&gt; 8, etc. Default background is now color number 7.
Now all schemas look the same: black on white. Color 7 must be redefined there and tranparency set on.

These patches (256 colors and schemas) are against 3.5.3 version.

Witold Filipczyk


Created an attachment (id=16475)
kdebase-konsole-256.patch.gz

Created an attachment (id=16476)
kdebase-konsole-schemas.patch.gz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444661</commentid>
    <comment_count>10</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-06 23:20:21 +0000</bug_when>
    <thetext>&gt; Here is the patch. It adds 256 color support.
&gt; There is a problem with transparency and schemas.
&gt; Konsole before used 4 colors in color table specially for default background and foreground.
&gt; I have no idea how to preserve those 4 entries. For now they are removed. I have renumbered
&gt; colors in schemas: 2 -&gt; 0, 3 -&gt; 1, 12 -&gt; 8, etc. Default background is now color number 7.


Witold,

the colors for default fore- and background are important to preserve.
Removing them creates wrong colours. I for one run &quot;Linux Colors&quot;, i.e.
a black default background. 

ESC[40m    set black background
...
ESC[47m    set white background
ESC[49m    set default background color

Hmm, i cannot review you code right now, since bugs.kde.org is down for
maintenance.

And Witold - please excuse me - but who on earth designs such ESC codes
as used in the xterm today? Adding an new escape code is not a mindless fun,
as some xterm author apparently believes. There are a few standards, namely
DEC, ANSI and ECMA on ESC codes, but this sequence is really breaking them all.

ESC[48;5;&lt;Color&gt;m

is wrongly designed in principle. And this is why: The sequence is 

ESC[ &lt;PS&gt; m

where &lt;PS&gt; is a string, i.e. a name. Many such names can be grouped into
one ESC code, e.g.

ESC[ &lt;PS1&gt;; &lt;PS2&gt;; &lt;PS3&gt; m

The CSI-m escape code is associative by definition, i.e. the above is exactly the
same as

ESC[ &lt;PS1&gt; m
ESC[ &lt;PS2&gt; m
ESC[ &lt;PS3&gt; m

So ESC[48;5;&lt;Color&gt;m is anything, but an ANSI or ECMA compatible code
by design. It would break associativity of the escape code, which is a no-no.
Plain and simple.

The code really spells
: 48 - set default background color
:   5 - set blink
: &lt;PS&gt; - for &lt;Color&gt; in most cases an unknown name.

E.g. setting 39 for &lt;Color&gt; would for instance mean &quot;set default foreground&quot; and
not any 6x6x6 color.

One can introduce new names, but one cannot break associativity. No way.
This is polluting the escape space with incompatible codes and nothing else.
The code is already in use and not free. Whoever added the code to the
xterm was clearly not aware about this.

I can understand that you find a 6x6x6 color scheme fine. I do, too. But that
one is a private xterm extension, which is totally wrong designed.

So my opinion is that these code should not be added to the konsole, but
instead the issue should be clarified with the xterm author(s). They have
added an incompatible code, and such should it be coped with, imho.

-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444664</commentid>
    <comment_count>11</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-07 02:03:27 +0000</bug_when>
    <thetext>Hmm, a quick follow up...

On Tuesday 06 June 2006 23:20, lars.doelle@on-line.de wrote:

&gt; The code really spells
&gt; : 48 - set default background color
&gt; :   5 - set blink
&gt; : &lt;PS&gt; - for &lt;Color&gt; in most cases an unknown name.


Here i am wrong - 48 is not defined, at least not for VT100 and its successors.
Neverthenless it does not invalidate my argumentation. See e.g.

http://vt100.net/docs/vt100-ug/chapter3.html#S3.3.2

which is very clear about the association. Thus 48 would be ignored, 5 would set
blink and any defined value for PS would legal be interpreted as such by virtually
any terminal which emulates a VT100 based set of ESC codes. The extension is
incompatible.

But - ECMA-48:

http://www.ecma-international.org/publications/files/ecma-st/ECMA-048.pdf

See </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444665</commentid>
    <comment_count>12</comment_count>
    <who name="">awendt</who>
    <bug_when>2006-06-07 07:40:09 +0000</bug_when>
    <thetext>&gt; So a parameter substring is 0-9 and the colon. The semicolon separates
&gt; sub-parameters. Thus 48:5:&lt;Color&gt; would be one sub-parameter, and
&gt; 48;5;&lt;Color&gt; many independent, each having an independent meaning in case
&gt; of a selective parameter.


I think you may be onto something here with the colons... I was able to find 
ITU T.416 (which is the same as ISO 8613-6) and it says:

--- snip ---

The parameter values 38 and 48 are followed by a parameter substring used to 
select either the character foreground “colour value” or the character 
background “colour value”.

A parameter substring for values 38 or 48 may be divided by one or more 
separators (03/10) into parameter elements, denoted as Pe. The format of such 
a parameter sub-string is indicated as:

         Pe : P ...

Each parameter element consists of zero, one or more bit combinations from 
03/00 to 03/09, representing the digits 0 to 9. An empty parameter element 
represents a default value for this parameter element. Empty parameter 
elements at the end of the parameter substring need not be included.

The first parameter element indicates a choice between:

           0   implementation defined (only applicable for the character 
foreground colour)
           1   transparent;
           2   direct colour in RGB space;
           3   direct colour in CMY space;
           4   direct colour in CMYK space;
           5   indexed colour.

If the first parameter has the value 0 or 1, there are no additional parameter 
elements.

If the first parameter element has the value 5, then there is a second 
parameter element specifying the index into the colour table given by the 
attribute “content colour table” applying to the object with which the 
content is associated.

--- snip ---

The separator character 03/10 they use is a colon, not a semicolon... I wonder 
if the xterm implementation was based on an improper reading of the standard?

My reading actually makes me think that the correct format would be 38;5:x to 
set colour x. In other words, a semicolon, then a colon. Here is my thinking:

1. The first sentence starts with &quot;The parameter values 38 and 48 are followed 
by a parameter substring used to [...]&quot;. And ECMA-48 section 5.4.2 tells us 
that a parameter string is a series of parameter substrings separated by 
03/11 (semicolon). So since 38 and 48 are followed by a parameter substring, 
it should have a semicolon after it.

(You may object to this first point by saying that the ITU standard and ECMA 
standard possibly define terms like &quot;parameter substring&quot; differently, but 
ITU T.416 doesn&apos;t define such things at all. Instead it says they 
are &quot;defined in ISO 6429&quot;, and the ECMA-48 &quot;brief history&quot; section (page 5)  
seems to say that ECMA-48 and ISO 6429 are the same document.)

2. The quoted text above also calls the 5 in 38;5:x the &quot;first parameter 
element&quot; in the list separated by 03/10 (colon). If it&apos;s the first in a list 
of two &quot;parameter elements&quot;, then the first colon should be after it to 
separate these two elements.

If my reading is correct, then the ISO/ITU standard has already broken 
the &quot;associativity&quot; of the SGR parameters when used with 38 and 48. In light 
of that, I think you might as well support setting colour the Xterm way as 
well as the ISO standard way, since both ways are non-associative and by now 
a lot of software expects things to work the Xterm way.

Xterm also supports redefining the colours in the 256-colour palette, with a 
command like this:
echo -e &apos;\033]4;65;rgb:ff/00/00\033\\&apos;

The 6x6x6 colour cube is just a convenient default. If Konsole gets 256-colour 
support, it might be good to support those kinds of palette-setting 
sequences, too.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444720</commentid>
    <comment_count>13</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-07 13:33:42 +0000</bug_when>
    <thetext>Andy,

i certainly do not want to overdo it, and i certainly do not want to stand in the
way of adding a useful feature.

I checked &quot;ctlseqs.ms&quot; from the xterm distribution meanwhile which defines the
sequence as follows:

---
                 Ps = 1 0 7  -&gt; Set background color to White
...                
            If 88- or 256-color support is compiled, the following  apply.
                 Ps = 3 8  ; 5  ; Ps -&gt; Set foreground color to the second Ps
                 Ps = 4 8  ; 5  ; Ps -&gt; Set background color to the second Ps
---

This means, these xterm-&quot;Ps&quot; can only occure within one escape code.

Given that 38/48 are reserved selectors, chances of a collision are actually low.

No one ever fully implemented ECMA-48, which is a mixture of terminal and
printer codes, really. So i would only take it as a guide line, while upholding it
as good as possible.

The problem with the ECMA-48 definition is, that the colon used in a sub-parameter
would likely break any VT100 alike parser. May be, that is the reason why these
anomalous &quot;Ps&quot; where chosen for xterm.

I&apos;ll thus write to Thomas Dickey, the xterm maintainer, to learn about his point of view.

Additionally, i&apos;ll review the patch, meanwhile, which looks fine on the first glance,
in particular the change to parser material in TEmuVt102.cpp looks good. This
leaves default colors.

Problem here was most probably, that it breaks the format of the screen and history,
which uses one byte per color. Now 256+2 do not fit into a byte anymore. Solution
would be to extend the space per color to 2 bytes. The color have to be kept in indexed
format in history and screen to allow proper interpretation of the default colors and cannot
be translated to RGB. Perhaps one should reserve one byte to indicate the color space,
perhaps a few bits are left in the rendition attribute for that purpose...

&gt; If my reading is correct, then the ISO/ITU standard has already broken 
&gt; the &quot;associativity&quot; of the SGR parameters when used with 38 and 48. In light 
&gt; of that, I think you might as well support setting colour the Xterm way as 
&gt; well as the ISO standard way, since both ways are non-associative and by now 
&gt; a lot of software expects things to work the Xterm way.
&gt; 
&gt; Xterm also supports redefining the colours in the 256-colour palette, with a 
&gt; command like this:
&gt; echo -e &apos;\033]4;65;rgb:ff/00/00\033\\&apos;
&gt; 
&gt; The 6x6x6 colour cube is just a convenient default.


Is the 6x6x6 color cube predefined, btw.?

&gt; If Konsole gets 256-colour  
&gt; support, it might be good to support those kinds of palette-setting 
&gt; sequences, too.


Hmm, changing the color format has some consequences. E.g. are colors of text already
written supposed to be preserved or changed when the interpretation changes via ESC]4?
How is transparency to be dealt with in light of the extended color space?

-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444872</commentid>
    <comment_count>14</comment_count>
    <who name="">awendt</who>
    <bug_when>2006-06-07 21:01:23 +0000</bug_when>
    <thetext>&gt; Is the 6x6x6 color cube predefined, btw.?


Yeah, it&apos;s in effect when Xterm first starts up. The colours are defined in  
256colres.h in the Xterm source. The first 16 are the regular colours 
(aliases, not duplicates, so I can get green with either 32 or 38;5;2, and 
the sequence \033]4;2;rgb:00/00/ff\033\\ will redefine text printed with 
either of them to be blue). The next 216 indices are for the 6x6x6 colour 
cube. The last 24 are a greyscale ramp.

&gt; Hmm, changing the color format has some consequences. E.g. are colors of
&gt; text already written supposed to be preserved or changed when the
&gt; interpretation changes via ESC]4? How is transparency to be dealt with in
&gt; light of the extended color space?


The behaviour of xterm is that the colours are updated everywhere when a 
palette change occurs.

How would transparency be a problem?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444967</commentid>
    <comment_count>15</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-08 00:50:54 +0000</bug_when>
    <thetext>On Wednesday 07 June 2006 21:01, awendt@putergeek.com wrote:

&gt; &gt; E.g. are colors of
&gt; &gt; text already written supposed to be preserved or changed when the
&gt; &gt; interpretation changes via ESC]4? How is transparency to be dealt with in
&gt; &gt; light of the extended color space?
&gt;  
&gt; The behaviour of xterm is that the colours are updated everywhere when a 
&gt; palette change occurs.


One could do it this way, problem is, that the screen has to be fully redrawn.
Redrawing normally uses a differential algorithm based on the screen contents,
which is not changed by that operation. As 256 colors are likely to be set in
one go, this would mean 256 redraw operations. It would have to be integrated
somehow in the regular bulk operations, which likely delays the regular drawing.

&gt; How would transparency be a problem?


Each color has a transparency attribute, too, in the konsole. They can be set individually
in the schema definitions. Not too big an issue. Another point is a rendition attribute,
intense colors. Normally, the konsole would thus have 2*(256+2) colors. I&apos;m not sure
whether it is better to fully integrate the 256 color feature or to tack it at aside.

-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445585</commentid>
    <comment_count>16</comment_count>
    <who name="">witekfl</who>
    <bug_when>2006-06-10 14:10:20 +0000</bug_when>
    <thetext>&gt;            1   transparent;
&gt;            2   direct colour in RGB space;

                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
This feature would be nice.

You may replace uint8 with uint16 for fg and bg or do whatever else
if you want 256 colors.
Now konsole is incompatible with xterm-256 and IMHO should not set
TERM=xterm
I use ELinks in 256 colors mode on rxvt and xterm, and ELinks in 256 colors
looks bad on konsole.
IMHO konsole ouught to have seperate entry in terminfo.

What do you think?

Witek
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445807</commentid>
    <comment_count>17</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-11 14:10:16 +0000</bug_when>
    <thetext>Witek,

&gt; Now konsole is incompatible with xterm-256 and IMHO should not set
&gt; TERM=xterm
&gt; I use ELinks in 256 colors mode on rxvt and xterm, and ELinks in 256 colors
&gt; looks bad on konsole.
&gt; IMHO konsole ouught to have seperate entry in terminfo.
&gt; 
&gt; What do you think?


The konsole has a terminfo entry. It could use a review, perhaps.
You can configure the TERM variable in the konsole&apos;s session profiles,
if you need to.

The central problem with using a separate entry for konsole is that it is
not honored by every application, in particular mc, which only offers some
vital features when the terminal is believed to be an xterm. It is not that bad
anymore, meanwhile it became ncurses-aware and apparently now offers a
secondary screen to non-xterms, too. It does not provide mouse input, though,
then, making the mc a &quot;mouseless commander&quot;.

It would in fact nice to have the konsole separated from the xterm terminfo
entry, as time and again new escape codes show up in xterm and the related
terminfo, breaking the konsole with other programs, vim in particular.

As i said, coping well with mc is the main hurdle of such a step. It is not that
i want to blame mc. They have had quite some problems with broken termcap
and terminfo entries on other Unixes and hardcoded originally quite some
stuff. It became better though.

You can help by digging a bit into the issue, perhaps one can make mc
recognise the mouse introducing kmous=\E[M and likely entries. Again,
i believe making konsole export TERM=konsole by default is a very good
idea.


Witold, i was in contact with Thomas Dickey, the xterm maintainer, about
the strange escape sequences and the result is, that he simply did not had
ISO 8613-6 at hand, simply because it costs $$$. He was aware about the
issues, but expected no one to use the codes beside xterm.

Now since the standard appears to broken anyway, and has thus various
problems in itself, the codes introduced by Thomas are perhaps the best
we can get. You modification in the scanner are absolute fine with me and
in conformance with the xterm handling.

But the newly introduced colour space does not fit well with the konsole,
it is default colours and intense colours, that suffer. I have not yet found
time to work through this, but i believe, one probably needs to change the
class ca, and extend the fore- and background colors to UINT16 to cope
with issue, see TECommon.h

One would then have (2+256) BASE_COLORS and (INTENSITY*BASE_COLORS)
total TABLE_COLORS. This change would go through in most cases, i think,
but i&apos;m not sure if in all. Would you try that?


-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445838</commentid>
    <comment_count>18</comment_count>
    <who name="">witekfl</who>
    <bug_when>2006-06-11 18:29:31 +0000</bug_when>
    <thetext>On Sun, Jun 11, 2006 at 12:10:27PM -0000, Lars Doelle wrote:
&gt; The konsole has a terminfo entry. It could use a review, perhaps.
&gt; You can configure the TERM variable in the konsole&apos;s session profiles,
&gt; if you need to.


I didn&apos;t know.

&gt; Witold, i was in contact with Thomas Dickey, the xterm maintainer, about
&gt; the strange escape sequences and the result is, that he simply did not had
&gt; ISO 8613-6 at hand, simply because it costs $$$. He was aware about the
&gt; issues, but expected no one to use the codes beside xterm.
&gt;
&gt; Now since the standard appears to broken anyway, and has thus various
&gt; problems in itself, the codes introduced by Thomas are perhaps the best
&gt; we can get. You modification in the scanner are absolute fine with me and
&gt; in conformance with the xterm handling.


Lars,
what about to go one step further and use ESC[38;5;2;&lt;red&gt;;&lt;green&gt;;&lt;blue&gt;m
codes? foreground and background as UINT16 gives 65536 colors and only two
bytes more per cell.

&gt; But the newly introduced colour space does not fit well with the konsole,
&gt; it is default colours and intense colours, that suffer. I have not yet found
&gt; time to work through this, but i believe, one probably needs to change the
&gt; class ca, and extend the fore- and background colors to UINT16 to cope
&gt; with issue, see TECommon.h
&gt; 
&gt; One would then have (2+256) BASE_COLORS and (INTENSITY*BASE_COLORS)
&gt; total TABLE_COLORS. This change would go through in most cases, i think,
&gt; but i&apos;m not sure if in all. Would you try that?


I don&apos;t know which formula to use it to define intense 256 colours.
I can code it, but next week, not now.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445860</commentid>
    <comment_count>19</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-11 22:34:36 +0000</bug_when>
    <thetext>Witold,

&gt; what about to go one step further and use ESC[38;5;2;&lt;red&gt;;&lt;green&gt;;&lt;blue&gt;m
&gt; codes? foreground and background as UINT16 gives 65536 colors and only two
&gt; bytes more per cell.


It should read ESC[38;2;&lt;red&gt;;&lt;green&gt;;&lt;blue&gt;m, i guess.

While you&apos;re at it anyway, please make up your mind how to implement this. Colours
are all indexed right now. It would perhaps be most natural to define something like
colour spaces. You could consider a UINT32 for the fg/bg colour in class ca leaving
you a full byte for defining the colour space identification.

(Hmm, you need to check for &quot;_fg&quot; and &quot;_bg&quot; in TEScreen.h, too, when changing class
ca as there are some state variables for the current and the saved colours.)

If you choose to introduce colour spaces, you could basically leave schema.cpp as it was.
Using colour spaces would allow to actually locate the colour interpretation into function
used by TEWidget::drawAttrStr, where you could extend the colour indices and RGB
colours algorithmically. As true RGB color would be provided, too, there were not much
need to set the 256 to anything but the default. Just an idea.

I note that the 256 color space includes 16 &quot;system colors&quot;, actually it appears to be
intended to include the &quot;normal&quot; colour space.

&gt; I don&apos;t know which formula to use it to define intense 256 colours.


In a HSV-model, i would increase the V, i.e. multiply each RGB colour component by
some same factor &gt; 1. This might mean to dim the &quot;regular&quot; colours first.

If you are using an 6x6x6 colour cube anyway, this is best done algorithmically instead
expanding a table, as this eases later adjustments. This concerns both the tables
&apos;color_name&apos; and &apos;default_table&apos; in schema.cpp. The default_table is actually just a
default in cases when no schema is installed. The schema.cpp was defined for the
system colours, only, i&apos;m not certain whether it is good idea to extend the schemata
beyond these.
&gt; I can code it, but next week, not now.


No need to hurry. 256 colours are in xterm since 1999, so konsole can almost certainly
wait one week more. Please ask if you run into problems.

-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447354</commentid>
    <comment_count>20</comment_count>
    <who name="">witekfl</who>
    <bug_when>2006-06-17 16:33:14 +0000</bug_when>
    <thetext>Here is the patch. Memory usage is threefolded.
fg_rgb and bg_rgb is used only in 256/true colour mode. Mode is indicated by
fg == 128 or bg == 128 respectively. I didn&apos;t init colors_256
programmatically, because I didn&apos;t know where to do it.
rgbused is used in many places, because of usage of color_table there.
Please, don&apos;t ask me to rewrite it again.

Witek


Created an attachment (id=16652)
konsole-256.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449303</commentid>
    <comment_count>21</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-24 05:09:25 +0000</bug_when>
    <thetext>Witek,

&gt; Here is the patch.

Thanks for the patch. i&apos;ve not yet tried out the code, but the patch looks good.

&gt; Memory usage is threefolded.

Don&apos;t think this would be an issue. People gave up blaming the konsole to be a
space hog long time ago, already...

&gt; fg_rgb and bg_rgb is used only in 256/true colour mode. Mode is indicated by
&gt; fg == 128 or bg == 128 respectively.

I&apos;ll try to merge f and fg_rgb into one 32bit value, using one of the bytes for the
colour space designator, but preserving the overall logic you use. Perhaps i
can preserve the 256 colour indices until drawing this way, too.

&gt; I didn&apos;t init colors_256 programmatically, because I didn&apos;t know where to do it.

Ok, i&apos;ll check for some hook. 256 colour mode is ways nicer now, as you maintain
the system colours. Schemata are not affected any longer. Yep. The patch is
much nicer and exactly to the point. 

&gt; rgbused is used in many places, because of usage of color_table there.

Some stuff is particular to the system colours, e.g. transparency and does
not really apply to 1byte and 3byte colours. That&apos;s ok. I&apos;ll check the places,
but it all looks reasonable on the first glance, perhaps beside the stuff related
to bold.

&gt; Please, don&apos;t ask me to rewrite it again.

This was very brave, Witek ;^) and the result was worth the effort. Again, thanks
for the patch. I think, this basically is it. I&apos;ll try to finalise it. I notice a few omission,
most particular save and restore of colours on the stack (sa_cu_*). Please leave
me a bit time to take care for it. I&apos;ll post a patch.

-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449483</commentid>
    <comment_count>22</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-25 00:25:24 +0000</bug_when>
    <thetext>Witek, All,

find attached a patch along the lines of Witek&apos;s work and my
previous reply.

The patch introduces colour spaces to represent colours in
screen now, thereby localising the necessary changes.

Though the patch is relatively local and survived my testing,
it is pretty intrusive and has the potential to break some of
the rendition hacks, that i&apos;m not aware of. The changes i find
critical are all in TEWidget.C. In particular, I could make no
sense off:

    image[i].c = 0xff; //&apos; &apos;;
    image[i].f = 0xff; //DEFAULT_FORE_COLOR;
    image[i].b = 0xff; //DEFAULT_BACK_COLOR;
    image[i].r = 0xff; //DEFAULT_RENDITION;

so i reverted this one to the original code.

-lars


Created an attachment (id=16781)
colorspaces-001.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449683</commentid>
    <comment_count>23</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2006-06-26 01:45:37 +0000</bug_when>
    <thetext>Do you want to try to get this into the 3.5.x branch?  We have until Jul 10 for 3.5.4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449820</commentid>
    <comment_count>24</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-26 15:34:18 +0000</bug_when>
    <thetext>Kurt, All,

&gt; Do you want to try to get this into the 3.5.x branch?  We have until Jul 10 for 3.5.4.


The patch was not intended for rapid release, but it is pretty conservative and is likely,
if at all, to break only visual appearances in unusual cases. And if, these would all be
one-liners.

I found, that the patch introduces a bug that becomes visible in the transparent-MC
schema, i&apos;ll try to fix that one. I did not test the 3byte colour codes, but will do so and
add it to the script in the test suite. I did not test printing, either, yet. I cannot test XIM.

So from my side, the patch could use three or four more tests, and i would appreciate
if you all test your favourite, most obscure feature with it, either. If no other complains
come up, it could safely go into 3.5.4 from my side.

-lars
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449839</commentid>
    <comment_count>25</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-06-26 17:47:28 +0000</bug_when>
    <thetext>All,

i think, this is it.

i fixed the transparent-MC bug, i wrote about earlier, tested 3 byte colours, added a
related testscript and tested printing.

Try the ./tests/ct2 (or ./tests/colortest.sh, if you can stand blinking)
and the ./tests/color-spaces.pl, all perhaps using various schemata.

Printing is at least not made worse, as i discovered a bug, but it was already
there. To reproduce it, set the &quot;Linux color&quot; schema, say &quot;man man&quot; and
print using &quot;Pixel for pixel&quot; and &quot;Printer unfriendly&quot; option, to find the highlighted
text not being printed. I did not dig into further it, may be, it is only because it prints
boldly white on white ;^). Default colors should perhaps be treated differently
while printing.

The only other thing, i believe is somehow fishy, is the &quot;0xff&quot; stuff reverted by me in
TEWidget::clearImage. If it ever meant anything at all, which i doubt meanwhile, it
should have broken something that i&apos;m not not aware of, but i don&apos;t see what and it
does not have any negative effect in any test. I suppose, the &quot;0xff&quot; is a is a left-over
of some testing, really. Actually, the values set in clearImage should not really have
an effect as long as not paintEvent happens before a setImage comes, which should
happen only during program startup, perhaps, in which case the current setting is a
better default. As no special treatment of &quot;0xff&quot; in setImage is done (and what should
this be?), i would consider this one save either.

-lars


Created an attachment (id=16793)
colorspaces-002.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451073</commentid>
    <comment_count>26</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2006-07-02 02:06:49 +0000</bug_when>
    <thetext>SVN commit 556955 by hindenburg:

Add 256 color support.
Patch by Lars Doelle. Thanks!

Will forward port shortly.

BUG: 107487


 A             README.moreColors  
 M  +150 -21   konsole/TECommon.h  
 M  +14 -39    konsole/TEScreen.cpp  
 M  +9 -10     konsole/TEScreen.h  
 M  +22 -21    konsole/TEWidget.cpp  
 M  +51 -34    konsole/TEmuVt102.cpp  
 A             tests/color-spaces.pl  
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451389</commentid>
    <comment_count>27</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2006-07-03 18:57:30 +0000</bug_when>
    <thetext>SVN commit 557629 by hindenburg:

Add 256 color support.
Patch by Lars Doelle. Thanks!

CCBUG: 107487



 A             README.moreColors  
 M  +150 -21   konsole/TECommon.h  
 M  +14 -39    konsole/TEScreen.cpp  
 M  +9 -10     konsole/TEScreen.h  
 M  +22 -21    konsole/TEWidget.cpp  
 M  +51 -34    konsole/TEmuVt102.cpp  
 A             tests/color-spaces.pl  
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455446</commentid>
    <comment_count>28</comment_count>
    <who name="bluer00m">jtl-kdebugzilla</who>
    <bug_when>2006-07-24 08:39:43 +0000</bug_when>
    <thetext>&gt; The separator character 03/10 they use is a colon, not a semicolon... I wonder 
&gt; if the xterm implementation was based on an improper reading of the standard? 

Yes, it was.  I was working from T.416 and apparently completely missed that they were using : instead of ;.  In fact, this is the first time I&apos;ve seen anyone mention that.

On the plus side, I _tried_ to follow the only relevant standard I could find...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455613</commentid>
    <comment_count>29</comment_count>
    <who name="Lars Doelle">lars.doelle</who>
    <bug_when>2006-07-24 22:49:38 +0000</bug_when>
    <thetext>On Monday 24 July 2006 08:39, bluer00m wrote:
&gt; &gt; The separator character 03/10 they use is a colon, not a semicolon... I wonder 
&gt; &gt; if the xterm implementation was based on an improper reading of the standard? 
&gt; 
&gt; Yes, it was.  I was working from T.416 and apparently completely missed that they
&gt; were using : instead of ;.  In fact, this is the first time I&apos;ve seen anyone mention that. 


How to do think one should cope best with the issue, bluer00m?

-lars
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16475</attachid>
            <date>2006-06-04 18:48:08 +0000</date>
            <delta_ts>2006-06-04 18:48:08 +0000</delta_ts>
            <desc>kdebase-konsole-256.patch.gz</desc>
            <filename>kdebase-konsole-256.patch.gz</filename>
            <type>application/x-gzip</type>
            <size>3978</size>
            <attacher>witekfl</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16476</attachid>
            <date>2006-06-04 18:48:08 +0000</date>
            <delta_ts>2006-06-04 18:48:08 +0000</delta_ts>
            <desc>kdebase-konsole-schemas.patch.gz</desc>
            <filename>kdebase-konsole-schemas.patch.gz</filename>
            <type>application/x-gzip</type>
            <size>2401</size>
            <attacher>witekfl</attacher>
            
              <data encoding="base64">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
HKRJpr8AAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16652</attachid>
            <date>2006-06-17 16:33:13 +0000</date>
            <delta_ts>2006-06-17 16:33:13 +0000</delta_ts>
            <desc>konsole-256.patch</desc>
            <filename>konsole-256.patch</filename>
            <type>text/plain</type>
            <size>21583</size>
            <attacher>witekfl</attacher>
            
              <data encoding="base64">LS0tIGtvbnNvbGUvVEVtdVZ0MTAyLmNwcC5vbGQJMjAwNi0wNi0wNCAxNTo0OTowNy4wMDAwMDAw
MDAgKzAyMDAKKysrIGtvbnNvbGUvVEVtdVZ0MTAyLmNwcAkyMDA2LTA2LTE3IDEyOjM0OjUzLjY1
NDE2MjE2OCArMDIwMApAQCAtMzQ0LDYgKzM0NCwyOCBAQAogICAgIGZvciAoaT0wO2k8PWFyZ2M7
aSsrKQogICAgIGlmICggZXBwKCAgICAgKSkgIHsgdGF1KCBUWV9DU0lfUFIoY2MsYXJndltpXSks
ICAgIDAsICAgMCk7IH0KICAgICBlbHNlIGlmKGVndCggICAgKSkgICB7IHRhdSggVFlfQ1NJX1BH
KGNjICAgICApLCAgICAwLCAgIDApOyB9IC8vIHNwZWMuIGNhc2UgZm9yIEVTQ10+MGMgb3IgRVND
XT5jCisgICAgZWxzZSBpZiAoY2MgPT0gJ20nICYmIGFyZ2MgLSBpID49IDQgJiYgYXJndltpXSA9
PSAzOCAmJiBhcmd2W2krMV0gPT0gMikgLy8gRVNDXTM4OzI7PHJlZD47PGdyZWVuPjs8Ymx1ZT4K
KyAgICB7CisgICAgICBpICs9IDI7CisgICAgICB0YXUoIFRZX0NTSV9QUyhjYywgMzgpLCAyLCAo
YXJndltpXSA8PCAxNikgfCAoYXJndltpKzFdIDw8IDgpIHwgYXJndltpKzJdKTsKKyAgICAgIGkg
Kz0gMjsKKyAgICB9CisgICAgZWxzZSBpZiAoY2MgPT0gJ20nICYmIGFyZ2MgLSBpID49IDQgJiYg
YXJndltpXSA9PSA0OCAmJiBhcmd2W2krMV0gPT0gMikgLy8gRVNDNDg7Mjs8cmVkPjs8Z3JlZW4+
OzxibHVlPgorICAgIHsKKyAgICAgIGkgKz0gMjsKKyAgICAgIHRhdSggVFlfQ1NJX1BTKGNjLCA0
OCksIDIsIChhcmd2W2ldIDw8IDE2KSB8IChhcmd2W2krMV0gPDwgOCkgfCBhcmd2W2krMl0pOwor
ICAgICAgaSArPSAyOworICAgIH0KKyAgICBlbHNlIGlmIChjYyA9PSAnbScgJiYgYXJnYyAtIGkg
Pj0gMiAmJiBhcmd2W2ldID09IDM4ICYmIGFyZ3ZbaSsxXSA9PSA1KSAvLyBFU0NdMzg7NTs8aW5k
ZXg+CisgICAgeworICAgICAgaSArPSAyOworICAgICAgdGF1KCBUWV9DU0lfUFMoY2MsIDM4KSwg
NSwgYXJndltpXSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNjID09ICdtJyAmJiBhcmdjIC0gaSA+
PSAyICYmIGFyZ3ZbaV0gPT0gNDggJiYgYXJndltpKzFdID09IDUpIC8vIEVTQ100ODs1OzxpbmRl
eD4KKyAgICB7CisgICAgICBpICs9IDI7CisgICAgICB0YXUoIFRZX0NTSV9QUyhjYywgNDgpLCA1
LCBhcmd2W2ldKTsKKyAgICB9CiAgICAgZWxzZSAgICAgICAgICAgICAgeyB0YXUoIFRZX0NTSV9Q
UyhjYyxhcmd2W2ldKSwgICAgMCwgICAwKTsgfQogICAgIHJlc2V0VG9rZW4oKTsKICAgfQpAQCAt
NTUxLDYgKzU3MywxNiBAQAogICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzNSkgOiBzY3ItPnNl
dEZvcmVDb2xvciAgICAgICAgICggICAgICAgICA1KTsgYnJlYWs7CiAgICAgY2FzZSBUWV9DU0lf
UFMoJ20nLCAgIDM2KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgIDYpOyBi
cmVhazsKICAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzcpIDogc2NyLT5zZXRGb3JlQ29sb3Ig
ICAgICAgICAoICAgICAgICAgNyk7IGJyZWFrOworCisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAg
IDM4KSA6CisgICAgICBpZiAocCA9PSAyKSBzY3ItPnNldEZvcmVDb2xvclJHQihxKTsKKyAgICAg
IGVsc2UgaWYgKHAgPT0gNSkKKyAgICAgIHsKKyAgICAgICAgaWYgKHEgPj0gMCAmJiBxIDwgMTYp
IHNjci0+c2V0Rm9yZUNvbG9yKHEpOworICAgICAgICBlbHNlIGlmIChxID49IDE2ICYmIHEgPD0g
MjU1KSBzY3ItPnNldEZvcmVDb2xvcjI1NihxKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDM5KSA6IHNjci0+c2V0Rm9yZUNvbG9yVG9EZWZhdWx0
KCAgICAgICAgICApOyBicmVhazsKIAogICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0MCkgOiBz
Y3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgICAwKTsgYnJlYWs7CkBAIC01NjEsNiAr
NTkzLDE2IEBACiAgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQ1KSA6IHNjci0+c2V0QmFja0Nv
bG9yICAgICAgICAgKCAgICAgICAgIDUpOyBicmVhazsKICAgICBjYXNlIFRZX0NTSV9QUygnbScs
ICAgNDYpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAgNik7IGJyZWFrOwog
ICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0NykgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAg
ICggICAgICAgICA3KTsgYnJlYWs7CisKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgNDgpIDoK
KyAgICAgIGlmIChwID09IDIpIHNjci0+c2V0QmFja0NvbG9yUkdCKHEpOworICAgICAgZWxzZSBp
ZiAocCA9PSA1KQorICAgICAgeworICAgICAgICBpZiAocSA+PSAwICYmIHEgPCAxNikgc2NyLT5z
ZXRCYWNrQ29sb3IocSk7CisgICAgICAgIGVsc2UgaWYgKHEgPj0gMTYgJiYgcSA8PSAyNTUpIHNj
ci0+c2V0QmFja0NvbG9yMjU2KHEpOworICAgICAgfQorICAgICAgYnJlYWs7CisKICAgICBjYXNl
IFRZX0NTSV9QUygnbScsICAgNDkpIDogc2NyLT5zZXRCYWNrQ29sb3JUb0RlZmF1bHQoICAgICAg
ICAgICk7IGJyZWFrOwogCiAgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDkwKSA6IHNjci0+c2V0
Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgIDgpOyBicmVhazsKLS0tIGtvbnNvbGUvVEVDb21t
b24uaC5vbGQJMjAwNi0wNi0wNCAxNjoxOTozNC4wMDAwMDAwMDAgKzAyMDAKKysrIGtvbnNvbGUv
VEVDb21tb24uaAkyMDA2LTA2LTE3IDE1OjE1OjMwLjQ4NjE0MTAyNCArMDIwMApAQCAtNDYsMTAg
KzQ2LDM4IEBACiAjZGVmaW5lIFJFX0lOVEVOU0lWRSAgICAgICAoMSA8PCAzKSAvLyBXaWRnZXQg
b25seQogI2RlZmluZSBSRV9DVVJTT1IgICAgICAgICAgKDEgPDwgNCkKIAorI2RlZmluZSBSR0Jf
VVNFRCAgICAgICAgICAgMTI4CisjZGVmaW5lIHJnYnVzZWQoYSkgICAgICAgICAoKGEpICYgUkdC
X1VTRUQpCiAvKiEgXGNsYXNzIGNhCiAgKiAgXGJyaWVmIGEgY2hhcmFjdGVyIHdpdGggcmVuZGl0
aW9uIGF0dHJpYnV0ZXMuCiAqLwogCitjbGFzcyByZ2Jjb2xvcgoreworcHVibGljOgorICBpbmxp
bmUgcmdiY29sb3IoVUlOVDggX3IgPSAwLAorICAgICAgICAgICAgICAgICAgVUlOVDggX2cgPSAw
LAorICAgICAgICAgICAgICAgICAgVUlOVDggX2IgPSAwKQorICAgICAgIDogcihfciksIGcoX2cp
LCBiKF9iKSB7fQorcHVibGljOgorICBVSU5UOCByOworICBVSU5UOCBnOworICBVSU5UOCBiOwor
cHVibGljOgorICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PSAocmdiY29sb3IgYSwgcmdiY29sb3Ig
Yik7CisgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9IChyZ2Jjb2xvciBhLCByZ2Jjb2xvciBiKTsK
K307CisKK2lubGluZSBib29sIG9wZXJhdG9yID09IChyZ2Jjb2xvciBhLCByZ2Jjb2xvciBiKQor
eyAKKyAgcmV0dXJuIGEuciA9PSBiLnIgJiYgYS5nID09IGIuZyAmJiBhLmIgPT0gYi5iOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAocmdiY29sb3IgYSwgcmdiY29sb3IgYikKK3sgCisg
IHJldHVybiBhLnIgIT0gYi5yIHx8IGEuZyAhPSBiLmcgfHwgYS5iICE9IGIuYjsKK30KKwogY2xh
c3MgY2EKIHsKIHB1YmxpYzoKQEAgLTYyLDYgKzkwLDggQEAKICAgVUlOVDE2IGM7IC8vIGNoYXJh
Y3RlcgogICBVSU5UOCAgZjsgLy8gZm9yZWdyb3VuZCBjb2xvcgogICBVSU5UOCAgYjsgLy8gYmFj
a2dyb3VuZCBjb2xvcgorICByZ2Jjb2xvciBmZ19yZ2I7IC8vIHVzZWQgd2hlbiByZ2J1c2VkKGYp
IGlzIHRydWUKKyAgcmdiY29sb3IgYmdfcmdiOyAvLyB1c2VkIHdoZW4gcmdidXNlZChiKSBpcyB0
cnVlCiAgIFVJTlQ4ICByOyAvLyByZW5kaXRpb24KIHB1YmxpYzoKICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IgPT0gKGNhIGEsIGNhIGIpOwpAQCAtNjksMTMgKzk5LDE3IEBACiB9OwogCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciA9PSAoY2EgYSwgY2EgYikKLXsKLSAgcmV0dXJuIGEuYyA9PSBiLmMgJiYg
YS5mID09IGIuZiAmJiBhLmIgPT0gYi5iICYmIGEuciA9PSBiLnI7Cit7IAorICByZXR1cm4gYS5j
ID09IGIuYyAmJiBhLmYgPT0gYi5mICYmIGEuYiA9PSBiLmIgJiYgYS5yID09IGIuciAmJgorICAg
ICghcmdidXNlZChhLmYpIHx8IChhLmZnX3JnYiA9PSBiLmZnX3JnYikpICYmICghcmdidXNlZChh
LmIpIHx8CisgICAgKGEuYmdfcmdiID09IGIuYmdfcmdiKSk7CiB9CiAKIGlubGluZSBib29sIG9w
ZXJhdG9yICE9IChjYSBhLCBjYSBiKQogewotICByZXR1cm4gYS5jICE9IGIuYyB8fCBhLmYgIT0g
Yi5mIHx8IGEuYiAhPSBiLmIgfHwgYS5yICE9IGIucjsKKyAgcmV0dXJuIGEuYyAhPSBiLmMgfHwg
YS5mICE9IGIuZiB8fCBhLmIgIT0gYi5iIHx8IGEuciAhPSBiLnIgfHwKKyAgICAocmdidXNlZChh
LmYpICYmIChhLmZnX3JnYiAhPSBiLmZnX3JnYikpIHx8IChyZ2J1c2VkKGEuYikgJiYKKyAgICAo
YS5iZ19yZ2IgIT0gYi5iZ19yZ2IpKTsKIH0KIAogLyohCi0tLSBrb25zb2xlL1RFV2lkZ2V0LmNw
cC5vbGQJMjAwNi0wNi0wNCAxNjoyMTozNC4wMDAwMDAwMDAgKzAyMDAKKysrIGtvbnNvbGUvVEVX
aWRnZXQuY3BwCTIwMDYtMDYtMTcgMTU6MzU6MzYuOTM3NzMyNTA0ICswMjAwCkBAIC01ODYsNyAr
NTg2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nJiBzdHIsIGNvbnN0
IGNhICphdHRyLCBib29sIHBtLCBib29sIGNsZWFyKQogewogICBpbnQgYSA9IGZvbnRfYSArIG1f
bGluZVNwYWNpbmcgLyAyOwotICBRQ29sb3IgZkNvbG9yID0gcHJpbnRlckZyaWVuZGx5ID8gUXQ6
OmJsYWNrIDogY29sb3JfdGFibGVbYXR0ci0+Zl0uY29sb3I7CisgIFFDb2xvciBmUkdCQ29sb3Ig
PSBRQ29sb3IoYXR0ci0+ZmdfcmdiLnIsIGF0dHItPmZnX3JnYi5nLCBhdHRyLT5mZ19yZ2IuYik7
CisgIFFDb2xvciBiUkdCQ29sb3IgPSBRQ29sb3IoYXR0ci0+YmdfcmdiLnIsIGF0dHItPmJnX3Jn
Yi5nLCBhdHRyLT5iZ19yZ2IuYik7CisgIFFDb2xvciBmQ29sb3IyID0gcmdidXNlZChhdHRyLT5m
KSA/IGZSR0JDb2xvciA6IGNvbG9yX3RhYmxlW2F0dHItPmZdLmNvbG9yOworICBRQ29sb3IgZkNv
bG9yID0gcHJpbnRlckZyaWVuZGx5ID8gUXQ6OmJsYWNrIDogZkNvbG9yMjsKKyAgUUNvbG9yIGJD
b2xvciA9IHJnYnVzZWQoYXR0ci0+YikgPyBiUkdCQ29sb3IgOiBjb2xvcl90YWJsZVthdHRyLT5i
XS5jb2xvcjsKICAgUVN0cmluZyBkcmF3c3RyOwogCiAgIGlmICgoYXR0ci0+ciAmIFJFX0NVUlNP
UikgJiYgIWlzUHJpbnRpbmcpCkBAIC01OTUsNyArNTk5LDcgQEAKICAgLy8gUGFpbnQgYmFja2dy
b3VuZAogICBpZiAoIXByaW50ZXJGcmllbmRseSkKICAgewotICAgIGlmIChjb2xvcl90YWJsZVth
dHRyLT5iXS50cmFuc3BhcmVudCkKKyAgICBpZiAoIXJnYnVzZWQoYXR0ci0+YikgJiYgY29sb3Jf
dGFibGVbYXR0ci0+Yl0udHJhbnNwYXJlbnQpCiAgICAgewogICAgICAgaWYgKHBtKQogICAgICAg
ICBwYWludC5zZXRCYWNrZ3JvdW5kTW9kZSggVHJhbnNwYXJlbnRNb2RlICk7CkBAIC02MDQsMTIg
KzYwOCwxMiBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaWYgKHBtIHx8IGNvbG9y
X3RhYmxlW2F0dHItPmJdLmNvbG9yICE9IGNvbG9yX3RhYmxlWyBjb2xvcnNTd2FwcGVkID8gREVG
QVVMVF9GT1JFX0NPTE9SIDogREVGQVVMVF9CQUNLX0NPTE9SIF0uY29sb3IKKyAgICAgIGlmIChw
bSB8fCBiQ29sb3IgIT0gY29sb3JfdGFibGVbIGNvbG9yc1N3YXBwZWQgPyBERUZBVUxUX0ZPUkVf
Q09MT1IgOiBERUZBVUxUX0JBQ0tfQ09MT1IgXS5jb2xvcgogICAgICAgICAgIHx8IGNsZWFyIHx8
IChibGlua2luZyAmJiAoYXR0ci0+ciAmIFJFX0JMSU5LKSkpCiAKICAgICAgICAgLy8gZHJhdyBi
YWNrZ3JvdW5kIGNvbG9ycyB3aXRoIDc1JSBvcGFjaXR5CiAgICAgICAgIGlmICggYXJnYl92aXN1
YWwgJiYgcUFscGhhKGJsZW5kX2NvbG9yKSA8IDB4ZmYgKSB7Ci0gICAgICAgICAgUVJnYiBjb2wg
PSBjb2xvcl90YWJsZVthdHRyLT5iXS5jb2xvci5yZ2IoKTsKKyAgICAgICAgICBRUmdiIGNvbCA9
IGJDb2xvci5yZ2IoKTsKIAogICAgICAgICAgIFFfVUlOVDggc2FscGhhID0gMTkyOwogICAgICAg
ICAgIFFfVUlOVDggZGFscGhhID0gMjU1IC0gc2FscGhhOwpAQCAtNjI1LDcgKzYyOSw3IEBACiAK
ICAgICAgICAgICBwYWludC5maWxsUmVjdChyZWN0LCBRQ29sb3IoY29sLCBwaXhlbCkpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICBwYWludC5maWxsUmVjdChyZWN0LCBjb2xvcl90YWJsZVth
dHRyLT5iXS5jb2xvcik7CisgICAgICAgICAgcGFpbnQuZmlsbFJlY3QocmVjdCwgYkNvbG9yKTsK
ICAgICB9CiAKICAgICBRU3RyaW5nIHRtcFN0ciA9IHN0ci5zaW1wbGlmeVdoaXRlU3BhY2UoKTsK
QEAgLTY2NCw4ICs2NjgsOCBAQAogICAgIHsKICAgICAgICBpZiAoIWN1cnNvckJsaW5raW5nKQog
ICAgICAgIHsKLSAgICAgICAgICBwYWludC5maWxsUmVjdChyLCBjb2xvcl90YWJsZVthdHRyLT5m
XS5jb2xvcik7Ci0gICAgICAgICAgZkNvbG9yID0gY29sb3JfdGFibGVbYXR0ci0+Yl0uY29sb3I7
CisgICAgICAgICAgcGFpbnQuZmlsbFJlY3QociwgZkNvbG9yMik7CisgICAgICAgICAgZkNvbG9y
ID0gYkNvbG9yOwogICAgICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtNjg1LDcgKzY4OSw3IEBA
CiAgICAgYm9vbCBzaGFkb3cgPSBmYWxzZTsKICAgICBwYWludC5zZXRQZW4oZkNvbG9yKTsKICAg
ICBpbnQgeCA9IHJlY3QueCgpOwotICAgIGlmIChjb2xvcl90YWJsZVthdHRyLT5mXS5ib2xkICYm
IHByaW50ZXJCb2xkKQorICAgIGlmICghcmdidXNlZChhdHRyLT5mKSAmJiBjb2xvcl90YWJsZVth
dHRyLT5mXS5ib2xkICYmIHByaW50ZXJCb2xkKQogICAgIHsKICAgICAgIC8vIFdoZW4gcHJpbnRp
bmcgd2UgdXNlIGEgYm9sZCBmb250IGZvciBib2xkCiAgICAgICBwYWludC5zYXZlKCk7CkBAIC03
MjEsMTMgKzcyNSwxMyBAQAogICAgICAgcGFpbnQuZHJhd1RleHQoeCx5LCBzdHIsIC0xLCBiaWRp
RW5hYmxlZCA/IFFQYWludGVyOjpBdXRvIDogUVBhaW50ZXI6OkxUUiApOwogICAgIH0KIAotICAg
IGlmIChjb2xvcl90YWJsZVthdHRyLT5mXS5ib2xkICYmIGlzUHJpbnRpbmcpCisgICAgaWYgKCFy
Z2J1c2VkKGF0dHItPmYpICYmIGNvbG9yX3RhYmxlW2F0dHItPmZdLmJvbGQgJiYgaXNQcmludGlu
ZykKICAgICB7CiAgICAgICAvLyBXaGVuIHByaW50aW5nIHdlIHVzZSBhIGJvbGQgZm9udCBmb3Ig
Ym9sZAogICAgICAgcGFpbnQucmVzdG9yZSgpOwogICAgIH0KIAotICAgIGlmIChjb2xvcl90YWJs
ZVthdHRyLT5mXS5ib2xkICYmICFwcmludGVyQm9sZCkKKyAgICBpZiAoIXJnYnVzZWQoYXR0ci0+
ZikgJiYgY29sb3JfdGFibGVbYXR0ci0+Zl0uYm9sZCAmJiAhcHJpbnRlckJvbGQpCiAgICAgewog
ICAgICAgcGFpbnQuc2V0Q2xpcFJlY3QocmVjdCk7CiAgICAgICAvLyBPbiBzY3JlZW4gd2UgdXNl
IG92ZXJzdHJpa2UgZm9yIGJvbGQKQEAgLTc5OSw2ICs4MDMsOCBAQAogICBpbnQgY2YgID0gLTE7
IC8vIHVuZGVmaW5lZAogICBpbnQgY2IgID0gLTE7IC8vIHVuZGVmaW5lZAogICBpbnQgY3IgID0g
LTE7IC8vIHVuZGVmaW5lZAorICByZ2Jjb2xvciBjZl9yZ2I7CisgIHJnYmNvbG9yIGNiX3JnYjsK
IAogICBpbnQgbGlucyA9IFFNSU4odGhpcy0+bGluZXMsICBRTUFYKDAsbGluZXMgICkpOwogICBp
bnQgY29scyA9IFFNSU4odGhpcy0+Y29sdW1ucyxRTUFYKDAsY29sdW1ucykpOwpAQCAtODQ3LDYg
Kzg1Myw4IEBACiAgICAgICAgIGNyID0gZXh0W3hdLnI7CiAgICAgICAgIGNiID0gZXh0W3hdLmI7
CiAgICAgICAgIGlmIChleHRbeF0uZiAhPSBjZikgY2YgPSBleHRbeF0uZjsKKyAgICAgICAgY2Zf
cmdiID0gZXh0W3hdLmZnX3JnYjsKKyAgICAgICAgY2JfcmdiID0gZXh0W3hdLmJnX3JnYjsKICAg
ICAgICAgaW50IGxsbiA9IGNvbHMgLSB4OwogICAgICAgICBmb3IgKGxlbiA9IDE7IGxlbiA8IGxs
bjsgbGVuKyspCiAgICAgICAgIHsKQEAgLTg1NCw3ICs4NjIsNyBAQAogICAgICAgICAgIGlmICgh
YykKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRyYWlsaW5nIHBhcnQgb2YgbXVsdGkt
Y29sIGNoYXJzLgogCi0gICAgICAgICAgaWYgKGV4dFt4K2xlbl0uZiAhPSBjZiB8fCBleHRbeCts
ZW5dLmIgIT0gY2IgfHwgZXh0W3grbGVuXS5yICE9IGNyIHx8CisgICAgICAgICAgaWYgKGV4dFt4
K2xlbl0uZiAhPSBjZiB8fCBleHRbeCtsZW5dLmIgIT0gY2IgfHwgZXh0W3grbGVuXS5yICE9IGNy
IHx8IGV4dFt4K2xlbl0uZmdfcmdiICE9IGNmX3JnYiB8fCBleHRbeCtsZW5dLmJnX3JnYiAhPSBj
Yl9yZ2IgfHwKICAgICAgICAgICAgICAgIWRpcnR5TWFza1t4K2xlbl0gfHwgaXNMaW5lQ2hhcihj
KSAhPSBsaW5lRHJhdyB8fCAoZXh0W3grbGVuKzFdLmMgPT0gMCkgIT0gZG91YmxlV2lkdGgpCiAg
ICAgICAgICAgICBicmVhazsKIAotLS0ga29uc29sZS9URVNjcmVlbi5oLm9sZAkyMDA2LTA2LTE3
IDEyOjM2OjI1LjM5NDIxNTU2MCArMDIwMAorKysga29uc29sZS9URVNjcmVlbi5oCTIwMDYtMDYt
MTcgMTU6MTA6NDQuMTIxNjc1MDQwICswMjAwCkBAIC0xMTMsNiArMTEzLDExIEBACiAgICAgdm9p
ZCBzZXRGb3JlQ29sb3IgIChpbnQgZmdjb2xvcik7CiAgICAgdm9pZCBzZXRCYWNrQ29sb3IgIChp
bnQgYmdjb2xvcik7CiAgICAgLy8KKyAgICB2b2lkIHNldEZvcmVDb2xvclJHQihpbnQgcmdiKTsK
KyAgICB2b2lkIHNldEJhY2tDb2xvclJHQihpbnQgcmdiKTsKKyAgICB2b2lkIHNldEZvcmVDb2xv
cjI1NihpbnQgaW5kZXgpOworICAgIHZvaWQgc2V0QmFja0NvbG9yMjU2KGludCBpbmRleCk7Cisg
ICAgLy8KICAgICB2b2lkIHNldERlZmF1bHRSZW5kaXRpb24oKTsKICAgICB2b2lkIHNldEZvcmVD
b2xvclRvRGVmYXVsdCgpOwogICAgIHZvaWQgc2V0QmFja0NvbG9yVG9EZWZhdWx0KCk7CkBAIC0y
MjAsNiArMjI1LDggQEAKIAogICAgIFVJTlQ4IGN1X2ZnOyAgICAgIC8vIGZvcmVncm91bmQKICAg
ICBVSU5UOCBjdV9iZzsgICAgICAvLyBiYWNrZ3JvdW5kCisgICAgcmdiY29sb3IgY3VfZmdfcmdi
OyAvLyByZWQsIGdyZWVuLCBibHVlIHVzZWQgaW4gMjU2L3RydWUgY29sb3IgbW9kZQorICAgIHJn
YmNvbG9yIGN1X2JnX3JnYjsKICAgICBVSU5UOCBjdV9yZTsgICAgICAvLyByZW5kaXRpb24KIAog
ICAgIC8vIG1hcmdpbnMgLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjQ3LDYgKzI1NCw4IEBACiAKICAg
ICBVSU5UOCBlZl9mZzsgICAgICAvLyBUaGVzZSBhcmUgZGVyaXZlZCBmcm9tCiAgICAgVUlOVDgg
ZWZfYmc7ICAgICAgLy8gdGhlIGN1XyogdmFyaWFibGVzIGFib3ZlCisgICAgcmdiY29sb3IgZWZf
ZmdfcmdiOworICAgIHJnYmNvbG9yIGVmX2JnX3JnYjsKICAgICBVSU5UOCBlZl9yZTsgICAgICAv
LyB0byBzcGVlZCB1cCBvcGVyYXRpb24KIAogICAgIC8vCi0tLSBrb25zb2xlL1RFU2NyZWVuLmNw
cC5vbGQJMjAwNi0wNi0wNCAxNjoxNTozOS4wMDAwMDAwMDAgKzAyMDAKKysrIGtvbnNvbGUvVEVT
Y3JlZW4uY3BwCTIwMDYtMDYtMTcgMTU6MTI6MjcuNDE5OTcxMzEyICswMjAwCkBAIC02MCw2ICs2
MCwyNTUgQEAKIC8qISBjcmVhdGVzIGEgYFRFU2NyZWVuJyBvZiBgbGluZXMnIGxpbmVzIGFuZCBg
Y29sdW1ucycgY29sdW1ucy4KICovCiAKK3N0YXRpYyByZ2Jjb2xvciBjb2xvcnNfMjU2WzI0MF0g
PSB7CisJcmdiY29sb3IoMHgwMCwgMHgwMCwgMHgwMCksIC8qIDE2ICovCisJcmdiY29sb3IoMHgw
MCwgMHgwMCwgMHg1ZiksIC8qIDE3ICovCisJcmdiY29sb3IoMHgwMCwgMHgwMCwgMHg4NyksIC8q
IDE4ICovCisJcmdiY29sb3IoMHgwMCwgMHgwMCwgMHhhZiksIC8qIDE5ICovCisJcmdiY29sb3Io
MHgwMCwgMHgwMCwgMHhkNyksIC8qIDIwICovCisJcmdiY29sb3IoMHgwMCwgMHgwMCwgMHhmZiks
IC8qIDIxICovCisJcmdiY29sb3IoMHgwMCwgMHg1ZiwgMHgwMCksIC8qIDIyICovCisJcmdiY29s
b3IoMHgwMCwgMHg1ZiwgMHg1ZiksIC8qIDIzICovCisJcmdiY29sb3IoMHgwMCwgMHg1ZiwgMHg4
NyksIC8qIDI0ICovCisJcmdiY29sb3IoMHgwMCwgMHg1ZiwgMHhhZiksIC8qIDI1ICovCisJcmdi
Y29sb3IoMHgwMCwgMHg1ZiwgMHhkNyksIC8qIDI2ICovCisJcmdiY29sb3IoMHgwMCwgMHg1Ziwg
MHhmZiksIC8qIDI3ICovCisJcmdiY29sb3IoMHgwMCwgMHg4NywgMHgwMCksIC8qIDI4ICovCisJ
cmdiY29sb3IoMHgwMCwgMHg4NywgMHg1ZiksIC8qIDI5ICovCisJcmdiY29sb3IoMHgwMCwgMHg4
NywgMHg4NyksIC8qIDMwICovCisJcmdiY29sb3IoMHgwMCwgMHg4NywgMHhhZiksIC8qIDMxICov
CisJcmdiY29sb3IoMHgwMCwgMHg4NywgMHhkNyksIC8qIDMyICovCisJcmdiY29sb3IoMHgwMCwg
MHg4NywgMHhmZiksIC8qIDMzICovCisJcmdiY29sb3IoMHgwMCwgMHhhZiwgMHgwMCksIC8qIDM0
ICovCisJcmdiY29sb3IoMHgwMCwgMHhhZiwgMHg1ZiksIC8qIDM1ICovCisJcmdiY29sb3IoMHgw
MCwgMHhhZiwgMHg4NyksIC8qIDM2ICovCisJcmdiY29sb3IoMHgwMCwgMHhhZiwgMHhhZiksIC8q
IDM3ICovCisJcmdiY29sb3IoMHgwMCwgMHhhZiwgMHhkNyksIC8qIDM4ICovCisJcmdiY29sb3Io
MHgwMCwgMHhhZiwgMHhmZiksIC8qIDM5ICovCisJcmdiY29sb3IoMHgwMCwgMHhkNywgMHgwMCks
IC8qIDQwICovCisJcmdiY29sb3IoMHgwMCwgMHhkNywgMHg1ZiksIC8qIDQxICovCisJcmdiY29s
b3IoMHgwMCwgMHhkNywgMHg4NyksIC8qIDQyICovCisJcmdiY29sb3IoMHgwMCwgMHhkNywgMHhh
ZiksIC8qIDQzICovCisJcmdiY29sb3IoMHgwMCwgMHhkNywgMHhkNyksIC8qIDQ0ICovCisJcmdi
Y29sb3IoMHgwMCwgMHhkNywgMHhmZiksIC8qIDQ1ICovCisJcmdiY29sb3IoMHgwMCwgMHhmZiwg
MHgwMCksIC8qIDQ2ICovCisJcmdiY29sb3IoMHgwMCwgMHhmZiwgMHg1ZiksIC8qIDQ3ICovCisJ
cmdiY29sb3IoMHgwMCwgMHhmZiwgMHg4NyksIC8qIDQ4ICovCisJcmdiY29sb3IoMHgwMCwgMHhm
ZiwgMHhhZiksIC8qIDQ5ICovCisJcmdiY29sb3IoMHgwMCwgMHhmZiwgMHhkNyksIC8qIDUwICov
CisJcmdiY29sb3IoMHgwMCwgMHhmZiwgMHhmZiksIC8qIDUxICovCisKKwlyZ2Jjb2xvcigweDVm
LCAweDAwLCAweDAwKSwgLyogNTIgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDAwLCAweDVmKSwgLyog
NTMgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDAwLCAweDg3KSwgLyogNTQgKi8KKwlyZ2Jjb2xvcigw
eDVmLCAweDAwLCAweGFmKSwgLyogNTUgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDAwLCAweGQ3KSwg
LyogNTYgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDAwLCAweGZmKSwgLyogNTcgKi8KKwlyZ2Jjb2xv
cigweDVmLCAweDVmLCAweDAwKSwgLyogNTggKi8KKwlyZ2Jjb2xvcigweDVmLCAweDVmLCAweDVm
KSwgLyogNTkgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDVmLCAweDg3KSwgLyogNjAgKi8KKwlyZ2Jj
b2xvcigweDVmLCAweDVmLCAweGFmKSwgLyogNjEgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDVmLCAw
eGQ3KSwgLyogNjIgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDVmLCAweGZmKSwgLyogNjMgKi8KKwly
Z2Jjb2xvcigweDVmLCAweDg3LCAweDAwKSwgLyogNjQgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDg3
LCAweDVmKSwgLyogNjUgKi8KKwlyZ2Jjb2xvcigweDVmLCAweDg3LCAweDg3KSwgLyogNjYgKi8K
KwlyZ2Jjb2xvcigweDVmLCAweDg3LCAweGFmKSwgLyogNjcgKi8KKwlyZ2Jjb2xvcigweDVmLCAw
eDg3LCAweGQ3KSwgLyogNjggKi8KKwlyZ2Jjb2xvcigweDVmLCAweDg3LCAweGZmKSwgLyogNjkg
Ki8KKwlyZ2Jjb2xvcigweDVmLCAweGFmLCAweDAwKSwgLyogNzAgKi8KKwlyZ2Jjb2xvcigweDVm
LCAweGFmLCAweDVmKSwgLyogNzEgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGFmLCAweDg3KSwgLyog
NzIgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGFmLCAweGFmKSwgLyogNzMgKi8KKwlyZ2Jjb2xvcigw
eDVmLCAweGFmLCAweGQ3KSwgLyogNzQgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGFmLCAweGZmKSwg
LyogNzUgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGQ3LCAweDAwKSwgLyogNzYgKi8KKwlyZ2Jjb2xv
cigweDVmLCAweGQ3LCAweDVmKSwgLyogNzcgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGQ3LCAweDg3
KSwgLyogNzggKi8KKwlyZ2Jjb2xvcigweDVmLCAweGQ3LCAweGFmKSwgLyogNzkgKi8KKwlyZ2Jj
b2xvcigweDVmLCAweGQ3LCAweGQ3KSwgLyogODAgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGQ3LCAw
eGZmKSwgLyogODEgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGZmLCAweDAwKSwgLyogODIgKi8KKwly
Z2Jjb2xvcigweDVmLCAweGZmLCAweDVmKSwgLyogODMgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGZm
LCAweDg3KSwgLyogODQgKi8KKwlyZ2Jjb2xvcigweDVmLCAweGZmLCAweGFmKSwgLyogODUgKi8K
KwlyZ2Jjb2xvcigweDVmLCAweGZmLCAweGQ3KSwgLyogODYgKi8KKwlyZ2Jjb2xvcigweDVmLCAw
eGZmLCAweGZmKSwgLyogODcgKi8KKworCXJnYmNvbG9yKDB4ODcsIDB4MDAsIDB4MDApLCAvKiA4
OCAqLworCXJnYmNvbG9yKDB4ODcsIDB4MDAsIDB4NWYpLCAvKiA4OSAqLworCXJnYmNvbG9yKDB4
ODcsIDB4MDAsIDB4ODcpLCAvKiA5MCAqLworCXJnYmNvbG9yKDB4ODcsIDB4MDAsIDB4YWYpLCAv
KiA5MSAqLworCXJnYmNvbG9yKDB4ODcsIDB4MDAsIDB4ZDcpLCAvKiA5MiAqLworCXJnYmNvbG9y
KDB4ODcsIDB4MDAsIDB4ZmYpLCAvKiA5MyAqLworCXJnYmNvbG9yKDB4ODcsIDB4NWYsIDB4MDAp
LCAvKiA5NCAqLworCXJnYmNvbG9yKDB4ODcsIDB4NWYsIDB4NWYpLCAvKiA5NSAqLworCXJnYmNv
bG9yKDB4ODcsIDB4NWYsIDB4ODcpLCAvKiA5NiAqLworCXJnYmNvbG9yKDB4ODcsIDB4NWYsIDB4
YWYpLCAvKiA5NyAqLworCXJnYmNvbG9yKDB4ODcsIDB4NWYsIDB4ZDcpLCAvKiA5OCAqLworCXJn
YmNvbG9yKDB4ODcsIDB4NWYsIDB4ZmYpLCAvKiA5OSAqLworCXJnYmNvbG9yKDB4ODcsIDB4ODcs
IDB4MDApLCAvKiAxMDAgKi8KKwlyZ2Jjb2xvcigweDg3LCAweDg3LCAweDVmKSwgLyogMTAxICov
CisJcmdiY29sb3IoMHg4NywgMHg4NywgMHg4NyksIC8qIDEwMiAqLworCXJnYmNvbG9yKDB4ODcs
IDB4ODcsIDB4YWYpLCAvKiAxMDMgKi8KKwlyZ2Jjb2xvcigweDg3LCAweDg3LCAweGQ3KSwgLyog
MTA0ICovCisJcmdiY29sb3IoMHg4NywgMHg4NywgMHhmZiksIC8qIDEwNSAqLworCXJnYmNvbG9y
KDB4ODcsIDB4YWYsIDB4MDApLCAvKiAxMDYgKi8KKwlyZ2Jjb2xvcigweDg3LCAweGFmLCAweDVm
KSwgLyogMTA3ICovCisJcmdiY29sb3IoMHg4NywgMHhhZiwgMHg4NyksIC8qIDEwOCAqLworCXJn
YmNvbG9yKDB4ODcsIDB4YWYsIDB4YWYpLCAvKiAxMDkgKi8KKwlyZ2Jjb2xvcigweDg3LCAweGFm
LCAweGQ3KSwgLyogMTEwICovCisJcmdiY29sb3IoMHg4NywgMHhhZiwgMHhmZiksIC8qIDExMSAq
LworCXJnYmNvbG9yKDB4ODcsIDB4ZDcsIDB4MDApLCAvKiAxMTIgKi8KKwlyZ2Jjb2xvcigweDg3
LCAweGQ3LCAweDVmKSwgLyogMTEzICovCisJcmdiY29sb3IoMHg4NywgMHhkNywgMHg4NyksIC8q
IDExNCAqLworCXJnYmNvbG9yKDB4ODcsIDB4ZDcsIDB4YWYpLCAvKiAxMTUgKi8KKwlyZ2Jjb2xv
cigweDg3LCAweGQ3LCAweGQ3KSwgLyogMTE2ICovCisJcmdiY29sb3IoMHg4NywgMHhkNywgMHhm
ZiksIC8qIDExNyAqLworCXJnYmNvbG9yKDB4ODcsIDB4ZmYsIDB4MDApLCAvKiAxMTggKi8KKwly
Z2Jjb2xvcigweDg3LCAweGZmLCAweDVmKSwgLyogMTE5ICovCisJcmdiY29sb3IoMHg4NywgMHhm
ZiwgMHg4NyksIC8qIDEyMCAqLworCXJnYmNvbG9yKDB4ODcsIDB4ZmYsIDB4YWYpLCAvKiAxMjEg
Ki8KKwlyZ2Jjb2xvcigweDg3LCAweGZmLCAweGQ3KSwgLyogMTIyICovCisJcmdiY29sb3IoMHg4
NywgMHhmZiwgMHhmZiksIC8qIDEyMyAqLworCisJcmdiY29sb3IoMHhhZiwgMHgwMCwgMHgwMCks
IC8qIDEyNCAqLworCXJnYmNvbG9yKDB4YWYsIDB4MDAsIDB4NWYpLCAvKiAxMjUgKi8KKwlyZ2Jj
b2xvcigweGFmLCAweDAwLCAweDg3KSwgLyogMTI2ICovCisJcmdiY29sb3IoMHhhZiwgMHgwMCwg
MHhhZiksIC8qIDEyNyAqLworCXJnYmNvbG9yKDB4YWYsIDB4MDAsIDB4ZDcpLCAvKiAxMjggKi8K
KwlyZ2Jjb2xvcigweGFmLCAweDAwLCAweGZmKSwgLyogMTI5ICovCisJcmdiY29sb3IoMHhhZiwg
MHg1ZiwgMHgwMCksIC8qIDEzMCAqLworCXJnYmNvbG9yKDB4YWYsIDB4NWYsIDB4NWYpLCAvKiAx
MzEgKi8KKwlyZ2Jjb2xvcigweGFmLCAweDVmLCAweDg3KSwgLyogMTMyICovCisJcmdiY29sb3Io
MHhhZiwgMHg1ZiwgMHhhZiksIC8qIDEzMyAqLworCXJnYmNvbG9yKDB4YWYsIDB4NWYsIDB4ZDcp
LCAvKiAxMzQgKi8KKwlyZ2Jjb2xvcigweGFmLCAweDVmLCAweGZmKSwgLyogMTM1ICovCisJcmdi
Y29sb3IoMHhhZiwgMHg4NywgMHgwMCksIC8qIDEzNiAqLworCXJnYmNvbG9yKDB4YWYsIDB4ODcs
IDB4NWYpLCAvKiAxMzcgKi8KKwlyZ2Jjb2xvcigweGFmLCAweDg3LCAweDg3KSwgLyogMTM4ICov
CisJcmdiY29sb3IoMHhhZiwgMHg4NywgMHhhZiksIC8qIDEzOSAqLworCXJnYmNvbG9yKDB4YWYs
IDB4ODcsIDB4ZDcpLCAvKiAxNDAgKi8KKwlyZ2Jjb2xvcigweGFmLCAweDg3LCAweGZmKSwgLyog
MTQxICovCisJcmdiY29sb3IoMHhhZiwgMHhhZiwgMHgwMCksIC8qIDE0MiAqLworCXJnYmNvbG9y
KDB4YWYsIDB4YWYsIDB4NWYpLCAvKiAxNDMgKi8KKwlyZ2Jjb2xvcigweGFmLCAweGFmLCAweDg3
KSwgLyogMTQ0ICovCisJcmdiY29sb3IoMHhhZiwgMHhhZiwgMHhhZiksIC8qIDE0NSAqLworCXJn
YmNvbG9yKDB4YWYsIDB4YWYsIDB4ZDcpLCAvKiAxNDYgKi8KKwlyZ2Jjb2xvcigweGFmLCAweGFm
LCAweGZmKSwgLyogMTQ3ICovCisJcmdiY29sb3IoMHhhZiwgMHhkNywgMHgwMCksIC8qIDE0OCAq
LworCXJnYmNvbG9yKDB4YWYsIDB4ZDcsIDB4NWYpLCAvKiAxNDkgKi8KKwlyZ2Jjb2xvcigweGFm
LCAweGQ3LCAweDg3KSwgLyogMTUwICovCisJcmdiY29sb3IoMHhhZiwgMHhkNywgMHhhZiksIC8q
IDE1MSAqLworCXJnYmNvbG9yKDB4YWYsIDB4ZDcsIDB4ZDcpLCAvKiAxNTIgKi8KKwlyZ2Jjb2xv
cigweGFmLCAweGQ3LCAweGZmKSwgLyogMTUzICovCisJcmdiY29sb3IoMHhhZiwgMHhmZiwgMHgw
MCksIC8qIDE1NCAqLworCXJnYmNvbG9yKDB4YWYsIDB4ZmYsIDB4NWYpLCAvKiAxNTUgKi8KKwly
Z2Jjb2xvcigweGFmLCAweGZmLCAweDg3KSwgLyogMTU2ICovCisJcmdiY29sb3IoMHhhZiwgMHhm
ZiwgMHhhZiksIC8qIDE1NyAqLworCXJnYmNvbG9yKDB4YWYsIDB4ZmYsIDB4ZDcpLCAvKiAxNTgg
Ki8KKwlyZ2Jjb2xvcigweGFmLCAweGZmLCAweGZmKSwgLyogMTU5ICovCisKKwlyZ2Jjb2xvcigw
eGQ3LCAweDAwLCAweDAwKSwgLyogMTYwICovCisJcmdiY29sb3IoMHhkNywgMHgwMCwgMHg1Ziks
IC8qIDE2MSAqLworCXJnYmNvbG9yKDB4ZDcsIDB4MDAsIDB4ODcpLCAvKiAxNjIgKi8KKwlyZ2Jj
b2xvcigweGQ3LCAweDAwLCAweGFmKSwgLyogMTYzICovCisJcmdiY29sb3IoMHhkNywgMHgwMCwg
MHhkNyksIC8qIDE2NCAqLworCXJnYmNvbG9yKDB4ZDcsIDB4MDAsIDB4ZmYpLCAvKiAxNjUgKi8K
KwlyZ2Jjb2xvcigweGQ3LCAweDVmLCAweDAwKSwgLyogMTY2ICovCisJcmdiY29sb3IoMHhkNywg
MHg1ZiwgMHg1ZiksIC8qIDE2NyAqLworCXJnYmNvbG9yKDB4ZDcsIDB4NWYsIDB4ODcpLCAvKiAx
NjggKi8KKwlyZ2Jjb2xvcigweGQ3LCAweDVmLCAweGFmKSwgLyogMTY5ICovCisJcmdiY29sb3Io
MHhkNywgMHg1ZiwgMHhkNyksIC8qIDE3MCAqLworCXJnYmNvbG9yKDB4ZDcsIDB4NWYsIDB4ZmYp
LCAvKiAxNzEgKi8KKwlyZ2Jjb2xvcigweGQ3LCAweDg3LCAweDAwKSwgLyogMTcyICovCisJcmdi
Y29sb3IoMHhkNywgMHg4NywgMHg1ZiksIC8qIDE3MyAqLworCXJnYmNvbG9yKDB4ZDcsIDB4ODcs
IDB4ODcpLCAvKiAxNzQgKi8KKwlyZ2Jjb2xvcigweGQ3LCAweDg3LCAweGFmKSwgLyogMTc1ICov
CisJcmdiY29sb3IoMHhkNywgMHg4NywgMHhkNyksIC8qIDE3NiAqLworCXJnYmNvbG9yKDB4ZDcs
IDB4ODcsIDB4ZmYpLCAvKiAxNzcgKi8KKwlyZ2Jjb2xvcigweGQ3LCAweGFmLCAweDAwKSwgLyog
MTc4ICovCisJcmdiY29sb3IoMHhkNywgMHhhZiwgMHg1ZiksIC8qIDE3OSAqLworCXJnYmNvbG9y
KDB4ZDcsIDB4YWYsIDB4ODcpLCAvKiAxODAgKi8KKwlyZ2Jjb2xvcigweGQ3LCAweGFmLCAweGFm
KSwgLyogMTgxICovCisJcmdiY29sb3IoMHhkNywgMHhhZiwgMHhkNyksIC8qIDE4MiAqLworCXJn
YmNvbG9yKDB4ZDcsIDB4YWYsIDB4ZmYpLCAvKiAxODMgKi8KKwlyZ2Jjb2xvcigweGQ3LCAweGQ3
LCAweDAwKSwgLyogMTg0ICovCisJcmdiY29sb3IoMHhkNywgMHhkNywgMHg1ZiksIC8qIDE4NSAq
LworCXJnYmNvbG9yKDB4ZDcsIDB4ZDcsIDB4ODcpLCAvKiAxODYgKi8KKwlyZ2Jjb2xvcigweGQ3
LCAweGQ3LCAweGFmKSwgLyogMTg3ICovCisJcmdiY29sb3IoMHhkNywgMHhkNywgMHhkNyksIC8q
IDE4OCAqLworCXJnYmNvbG9yKDB4ZDcsIDB4ZDcsIDB4ZmYpLCAvKiAxODkgKi8KKwlyZ2Jjb2xv
cigweGQ3LCAweGZmLCAweDAwKSwgLyogMTkwICovCisJcmdiY29sb3IoMHhkNywgMHhmZiwgMHg1
ZiksIC8qIDE5MSAqLworCXJnYmNvbG9yKDB4ZDcsIDB4ZmYsIDB4ODcpLCAvKiAxOTIgKi8KKwly
Z2Jjb2xvcigweGQ3LCAweGZmLCAweGFmKSwgLyogMTkzICovCisJcmdiY29sb3IoMHhkNywgMHhm
ZiwgMHhkNyksIC8qIDE5NCAqLworCXJnYmNvbG9yKDB4ZDcsIDB4ZmYsIDB4ZmYpLCAvKiAxOTUg
Ki8KKworCXJnYmNvbG9yKDB4ZmYsIDB4MDAsIDB4MDApLCAvKiAxOTYgKi8KKwlyZ2Jjb2xvcigw
eGZmLCAweDAwLCAweDVmKSwgLyogMTk3ICovCisJcmdiY29sb3IoMHhmZiwgMHgwMCwgMHg4Nyks
IC8qIDE5OCAqLworCXJnYmNvbG9yKDB4ZmYsIDB4MDAsIDB4YWYpLCAvKiAxOTkgKi8KKwlyZ2Jj
b2xvcigweGZmLCAweDAwLCAweGQ3KSwgLyogMjAwICovCisJcmdiY29sb3IoMHhmZiwgMHgwMCwg
MHhmZiksIC8qIDIwMSAqLworCXJnYmNvbG9yKDB4ZmYsIDB4NWYsIDB4MDApLCAvKiAyMDIgKi8K
KwlyZ2Jjb2xvcigweGZmLCAweDVmLCAweDVmKSwgLyogMjAzICovCisJcmdiY29sb3IoMHhmZiwg
MHg1ZiwgMHg4NyksIC8qIDIwNCAqLworCXJnYmNvbG9yKDB4ZmYsIDB4NWYsIDB4YWYpLCAvKiAy
MDUgKi8KKwlyZ2Jjb2xvcigweGZmLCAweDVmLCAweGQ3KSwgLyogMjA2ICovCisJcmdiY29sb3Io
MHhmZiwgMHg1ZiwgMHhmZiksIC8qIDIwNyAqLworCXJnYmNvbG9yKDB4ZmYsIDB4ODcsIDB4MDAp
LCAvKiAyMDggKi8KKwlyZ2Jjb2xvcigweGZmLCAweDg3LCAweDVmKSwgLyogMjA5ICovCisJcmdi
Y29sb3IoMHhmZiwgMHg4NywgMHg4NyksIC8qIDIxMCAqLworCXJnYmNvbG9yKDB4ZmYsIDB4ODcs
IDB4YWYpLCAvKiAyMTEgKi8KKwlyZ2Jjb2xvcigweGZmLCAweDg3LCAweGQ3KSwgLyogMjEyICov
CisJcmdiY29sb3IoMHhmZiwgMHg4NywgMHhmZiksIC8qIDIxMyAqLworCXJnYmNvbG9yKDB4ZmYs
IDB4YWYsIDB4MDApLCAvKiAyMTQgKi8KKwlyZ2Jjb2xvcigweGZmLCAweGFmLCAweDVmKSwgLyog
MjE1ICovCisJcmdiY29sb3IoMHhmZiwgMHhhZiwgMHg4NyksIC8qIDIxNiAqLworCXJnYmNvbG9y
KDB4ZmYsIDB4YWYsIDB4YWYpLCAvKiAyMTcgKi8KKwlyZ2Jjb2xvcigweGZmLCAweGFmLCAweGQ3
KSwgLyogMjE4ICovCisJcmdiY29sb3IoMHhmZiwgMHhhZiwgMHhmZiksIC8qIDIxOSAqLworCXJn
YmNvbG9yKDB4ZmYsIDB4ZDcsIDB4MDApLCAvKiAyMjAgKi8KKwlyZ2Jjb2xvcigweGZmLCAweGQ3
LCAweDVmKSwgLyogMjIxICovCisJcmdiY29sb3IoMHhmZiwgMHhkNywgMHg4NyksIC8qIDIyMiAq
LworCXJnYmNvbG9yKDB4ZmYsIDB4ZDcsIDB4YWYpLCAvKiAyMjMgKi8KKwlyZ2Jjb2xvcigweGZm
LCAweGQ3LCAweGQ3KSwgLyogMjI0ICovCisJcmdiY29sb3IoMHhmZiwgMHhkNywgMHhmZiksIC8q
IDIyNSAqLworCXJnYmNvbG9yKDB4ZmYsIDB4ZmYsIDB4MDApLCAvKiAyMjYgKi8KKwlyZ2Jjb2xv
cigweGZmLCAweGZmLCAweDVmKSwgLyogMjI3ICovCisJcmdiY29sb3IoMHhmZiwgMHhmZiwgMHg4
NyksIC8qIDIyOCAqLworCXJnYmNvbG9yKDB4ZmYsIDB4ZmYsIDB4YWYpLCAvKiAyMjkgKi8KKwly
Z2Jjb2xvcigweGZmLCAweGZmLCAweGQ3KSwgLyogMjMwICovCisJcmdiY29sb3IoMHhmZiwgMHhm
ZiwgMHhmZiksIC8qIDIzMSAqLworCisJcmdiY29sb3IoMHgwOCwgMHgwOCwgMHgwOCksIC8qIDIz
MiAqLworCXJnYmNvbG9yKDB4MTIsIDB4MTIsIDB4MTIpLCAvKiAyMzMgKi8KKwlyZ2Jjb2xvcigw
eDFjLCAweDFjLCAweDFjKSwgLyogMjM0ICovCisJcmdiY29sb3IoMHgyNiwgMHgyNiwgMHgyNiks
IC8qIDIzNSAqLworCXJnYmNvbG9yKDB4MzAsIDB4MzAsIDB4MzApLCAvKiAyMzYgKi8KKwlyZ2Jj
b2xvcigweDNhLCAweDNhLCAweDNhKSwgLyogMjM3ICovCisJcmdiY29sb3IoMHg0NCwgMHg0NCwg
MHg0NCksIC8qIDIzOCAqLworCXJnYmNvbG9yKDB4NGUsIDB4NGUsIDB4NGUpLCAvKiAyMzkgKi8K
KwlyZ2Jjb2xvcigweDU4LCAweDU4LCAweDU4KSwgLyogMjQwICovCisJcmdiY29sb3IoMHg2Miwg
MHg2MiwgMHg2MiksIC8qIDI0MSAqLworCXJnYmNvbG9yKDB4NmMsIDB4NmMsIDB4NmMpLCAvKiAy
NDIgKi8KKwlyZ2Jjb2xvcigweDc2LCAweDc2LCAweDc2KSwgLyogMjQzICovCisJcmdiY29sb3Io
MHg4MCwgMHg4MCwgMHg4MCksIC8qIDI0NCAqLworCXJnYmNvbG9yKDB4OGEsIDB4OGEsIDB4OGEp
LCAvKiAyNDUgKi8KKwlyZ2Jjb2xvcigweDk0LCAweDk0LCAweDk0KSwgLyogMjQ2ICovCisJcmdi
Y29sb3IoMHg5ZSwgMHg5ZSwgMHg5ZSksIC8qIDI0NyAqLworCXJnYmNvbG9yKDB4YTgsIDB4YTgs
IDB4YTgpLCAvKiAyNDggKi8KKwlyZ2Jjb2xvcigweGIyLCAweGIyLCAweGIyKSwgLyogMjQ5ICov
CisJcmdiY29sb3IoMHhiYywgMHhiYywgMHhiYyksIC8qIDI1MCAqLworCXJnYmNvbG9yKDB4YzYs
IDB4YzYsIDB4YzYpLCAvKiAyNTEgKi8KKwlyZ2Jjb2xvcigweGQwLCAweGQwLCAweGQwKSwgLyog
MjUyICovCisJcmdiY29sb3IoMHhkYSwgMHhkYSwgMHhkYSksIC8qIDI1MyAqLworCXJnYmNvbG9y
KDB4ZTQsIDB4ZTQsIDB4ZTQpLCAvKiAyNTQgKi8KKwlyZ2Jjb2xvcigweGVlLCAweGVlLCAweGVl
KSAvKiAyNTUgKi8KK307CisKIFRFU2NyZWVuOjpURVNjcmVlbihpbnQgbCwgaW50IGMpCiAgIDog
bGluZXMobCksCiAgICAgY29sdW1ucyhjKSwKQEAgLTY3LDEzICszMTYsMTkgQEAKICAgICBoaXN0
Q3Vyc29yKDApLAogICAgIGhpc3QobmV3IEhpc3RvcnlTY3JvbGxOb25lKCkpLAogICAgIGN1WCgw
KSwgY3VZKDApLAotICAgIGN1X2ZnKDApLCBjdV9iZygwKSwgY3VfcmUoMCksCisgICAgY3VfZmco
MCksIGN1X2JnKDApLAorICAgIGN1X2ZnX3JnYigpLAorICAgIGN1X2JnX3JnYigpLAorICAgIGN1
X3JlKDApLAogICAgIHRtYXJnaW4oMCksIGJtYXJnaW4oMCksCiAgICAgdGFic3RvcHMoMCksCiAg
ICAgc2VsX2JlZ2luKDApLCBzZWxfVEwoMCksIHNlbF9CUigwKSwKICAgICBzZWxfYnVzeShmYWxz
ZSksCiAgICAgY29sdW1ubW9kZShmYWxzZSksCi0gICAgZWZfZmcoMCksIGVmX2JnKDApLCBlZl9y
ZSgwKSwKKyAgICBlZl9mZygwKSwgZWZfYmcoMCksCisgICAgZWZfZmdfcmdiKCksCisgICAgZWZf
YmdfcmdiKCksCisgICAgZWZfcmUoMCksCiAgICAgc2FfY3VYKDApLCBzYV9jdVkoMCksCiAgICAg
c2FfY3VfcmUoMCksIHNhX2N1X2ZnKDApLCBzYV9jdV9iZygwKSwKICAgICBsYXN0UG9zKC0xKQpA
QCAtNTA2LDEzICs3NjEsMTcgQEAKICAgewogICAgIGVmX2ZnID0gY3VfYmc7CiAgICAgZWZfYmcg
PSBjdV9mZzsKKyAgICBlZl9mZ19yZ2IgPSBjdV9iZ19yZ2I7CisgICAgZWZfYmdfcmdiID0gY3Vf
ZmdfcmdiOwogICB9CiAgIGVsc2UKICAgewogICAgIGVmX2ZnID0gY3VfZmc7CiAgICAgZWZfYmcg
PSBjdV9iZzsKKyAgICBlZl9mZ19yZ2IgPSBjdV9mZ19yZ2I7CisgICAgZWZfYmdfcmdiID0gY3Vf
YmdfcmdiOwogICB9Ci0gIGlmIChjdV9yZSAmIFJFX0JPTEQpCisgIGlmICgoY3VfcmUgJiBSRV9C
T0xEKSAmJiAhcmdidXNlZChlZl9mZykpCiAgIHsKICAgICBpZiAoZWZfZmcgPCBCQVNFX0NPTE9S
UykKICAgICAgIGVmX2ZnICs9IEJBU0VfQ09MT1JTOwpAQCAtNzU4LDYgKzEwMTcsOCBAQAogICBp
bWFnZVtpXS5jID0gYzsKICAgaW1hZ2VbaV0uZiA9IGVmX2ZnOwogICBpbWFnZVtpXS5iID0gZWZf
Ymc7CisgIGltYWdlW2ldLmZnX3JnYiA9IGVmX2ZnX3JnYjsKKyAgaW1hZ2VbaV0uYmdfcmdiID0g
ZWZfYmdfcmdiOwogICBpbWFnZVtpXS5yID0gZWZfcmU7CiAgIAogICBsYXN0UG9zID0gaTsKQEAg
LTc3MCw2ICsxMDMxLDggQEAKICAgICAgaW1hZ2VbaV0uYyA9IDA7CiAgICAgIGltYWdlW2ldLmYg
PSBlZl9mZzsKICAgICAgaW1hZ2VbaV0uYiA9IGVmX2JnOworICAgICBpbWFnZVtpXS5mZ19yZ2Ig
PSBlZl9mZ19yZ2I7CisgICAgIGltYWdlW2ldLmJnX3JnYiA9IGVmX2JnX3JnYjsKICAgICAgaW1h
Z2VbaV0uciA9IGVmX3JlOwogICAgICB3LS07CiAgIH0KQEAgLTkyMiw2ICsxMTg1LDggQEAKICAg
ICBpbWFnZVtpXS5jID0gYzsKICAgICBpbWFnZVtpXS5mID0gY3VfZmc7CiAgICAgaW1hZ2VbaV0u
YiA9IGN1X2JnOworICAgIGltYWdlW2ldLmZnX3JnYiA9IGN1X2ZnX3JnYjsKKyAgICBpbWFnZVtp
XS5iZ19yZ2IgPSBjdV9iZ19yZ2I7CiAgICAgaW1hZ2VbaV0uciA9IERFRkFVTFRfUkVORElUSU9O
OwogICB9CiAKQEAgLTExMDgsNyArMTM3Myw0OCBAQAogCiAvKiEKICovCit2b2lkIFRFU2NyZWVu
OjpzZXRGb3JlQ29sb3JSR0IoaW50IHJnYikKK3sKKyAgY3VfZmcgPSBSR0JfVVNFRDsKKyAgY3Vf
ZmdfcmdiLnIgPSAocmdiID4+IDE2KSAmIDI1NTsKKyAgY3VfZmdfcmdiLmcgPSAocmdiID4+IDgp
ICYgMjU1OworICBjdV9mZ19yZ2IuYiA9IHJnYiAmIDI1NTsKKyAgZWZmZWN0aXZlUmVuZGl0aW9u
KCk7Cit9CisKKy8qIQorKi8KK3ZvaWQgVEVTY3JlZW46OnNldEJhY2tDb2xvclJHQihpbnQgcmdi
KQoreworICBjdV9iZyA9IFJHQl9VU0VEOworICBjdV9iZ19yZ2IuciA9IChyZ2IgPj4gMTYpICYg
MjU1OworICBjdV9iZ19yZ2IuZyA9IChyZ2IgPj4gOCkgJiAyNTU7CisgIGN1X2JnX3JnYi5iID0g
cmdiICYgMjU1OworICBlZmZlY3RpdmVSZW5kaXRpb24oKTsKK30KKworLyohCisqLwordm9pZCBU
RVNjcmVlbjo6c2V0Rm9yZUNvbG9yMjU2KGludCBpbmRleCkKK3sKKyAgaW5kZXggLT0gMTY7Cisg
IGN1X2ZnID0gUkdCX1VTRUQ7CisgIGN1X2ZnX3JnYiA9IGNvbG9yc18yNTZbaW5kZXhdOworICBl
ZmZlY3RpdmVSZW5kaXRpb24oKTsKK30KKworLyohCisqLwordm9pZCBURVNjcmVlbjo6c2V0QmFj
a0NvbG9yMjU2KGludCBpbmRleCkKK3sKKyAgaW5kZXggLT0gMTY7CisgIGN1X2JnID0gUkdCX1VT
RUQ7CisgIGN1X2JnX3JnYiA9IGNvbG9yc18yNTZbaW5kZXhdOworICBlZmZlY3RpdmVSZW5kaXRp
b24oKTsKK30KIAorLyohCisqLwogdm9pZCBURVNjcmVlbjo6c2V0QmFja0NvbG9yVG9EZWZhdWx0
KCkKIHsKICAgY3VfYmcgPSBERUZBVUxUX0JBQ0tfQ09MT1I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16781</attachid>
            <date>2006-06-25 00:25:24 +0000</date>
            <delta_ts>2006-06-25 00:25:24 +0000</delta_ts>
            <desc>colorspaces-001.patch</desc>
            <filename>colorspaces-001.patch</filename>
            <type>text/x-diff</type>
            <size>26128</size>
            <attacher name="Lars Doelle">lars.doelle</attacher>
            
              <data encoding="base64">LS0tIFJFQURNRS5tb3JlQ29sb3JzLm9yaWcJMjAwNi0wNi0yNCAyMzo1Nzo0MC4wMDAwMDAwMDAg
KzAyMDAKKysrIFJFQURNRS5tb3JlQ29sb3JzCTIwMDYtMDYtMjQgMjM6NTY6NTkuMDAwMDAwMDAw
ICswMjAwCkBAIC0wLDAgKzEsOTUgQEAKK1tSRUFETUUubW9yZUNvbG9yc10KKworVGhlIGtvbnNv
bGUgYWRvcHRlZCBzb21lIEVTQyBjb2RlcyBhbGxvd2luZyB0byB1c2UgZXh0ZW5kZWQKK2NvbG9y
IHNwYWNlcy4KKworVGhlcmUgaXMgYSBwcmVkZWZpbmVkIDI1NiBjb2xvciBzcGFjZSBjb21wYXRp
YmxlIHdpdGggaGlzCit4dGVybSBzaXN0ZXIsIGFuZCwgZXZlbiBiZXlvbmQgdGhhdCwgYSAzLWJ5
dGUgUkdCIGNvbG9yIHNwYWNlLgorCitUaGUgRVNDIGNvZGVzIGFyZSBhcyBmb2xsb3dzOgorCisg
ICBFU0NbIC4uLiAzODsyOzxyPjs8Zz47PGI+IC4uLiBtICAgU2VsZWN0IFJHQiBmb3JlZ3JvdW5k
IGNvbG9yCisgICBFU0NbIC4uLiA0ODsyOzxyPjs8Zz47PGI+IC4uLiBtICAgU2VsZWN0IFJHQiBi
YWNrZ3JvdW5kIGNvbG9yCisKKyAgIEVTQ1sgLi4uIDM4OzU7PGk+IC4uLiBtICAgICAgIFNlbGVj
dCBpbmRleGVkIGZvcmVncm91bmQgY29sb3IKKyAgIEVTQ1sgLi4uIDQ4OzU7PGk+IC4uLiBtICAg
ICAgIFNlbGVjdCBpbmRleGVkIGJhY2tncm91bmQgY29sb3IKKworPHI+LDxnPiBhbmQgPGI+IGFy
ZSBlYWNoIHZhbHVlcyBpbiB0aGUgcmFuZ2Ugb2YgMC4uMjU1IGFuZAorcmVwcmVzZW50IHRoZSBi
cmlnaHRuZXNzIGFzIHVzdWFsIGZvciB0aGUgcmVzcGVjdGl2ZSBjb2xvci4KKworPGk+IGxpa2Vs
eSBpcyBhIHZhbHVlIGluIDAuLjI1NiwgYnV0IHJlcHJlc2VudHMgYW4gaW5kZXhlZAorY29sb3Ig
YXNzaWdubWVudCBjb21wb3NlZCBhcyBmb2xsb3dzOgorCisgIDAgLi4gIDE1IC0gU3lzdGVtIGNv
bG9yLCB0aGVzZSBhcmUgdGFrZW4gZnJvbSB0aGUgc2NoZW1hLgorIDE2IC4uIDIzMSAtIEZvcm1z
IGEgNng2eDYgUkdCIGNvbG9yIGN1YmUuCisyMzIgLi4gMjU1IC0gQSBncmF5IHNjYWxlIHJhbXAg
d2l0aG91dCBibGFjayBhbmQgd2hpdGUuCisKK1RyeSB0aGUgdGVzdHMvMjU2Y29sb3JzLnBsIHRv
IHZpc3VhbGl6ZSB0aGUgYXNzaWdubWVudC4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Egbm90ZSBvbiBjb25m
b3JtYW5jZQorCitUaGVzZSBFU0MgY29kZXMgYnJlYWsgdGhlICJhc3NvY2lhdGl2aXR5IiBvZiBT
R1IsIGJ1dCBhZnRlciBzb21lCityZXNlYXJjaCB0aGUgcmVzdWx0IGlzLCB0aGF0IHRoZSBzdGFu
ZGFyZCBpdHNlbGYgaXMgYnJva2VuIGhlcmUuCisKK1RoZSBwZXJoYXBzIGJlc3QgY29kZXMgZHVl
IHRvIEVDTUEtNDggd291bGQgcHJvYmFibHkgYmUgZS5nLgorMzg6Mjo8cj46PGc+OjxiPiwgaS5l
LiBjb25zaXN0ZW50bHkgYSBjb2xvbiBpbnN0ZWFkIG9mIGEgc2VtaWNvbG9uLgorQnV0IGFwcGFy
ZW50bHksIHRoaXMgaXMgZGVmaW5lZCBkaWZmZXJlbnQgaW4gSVNPLTg2MTMgKHdoaWNoIGlzCitp
bmNsdWRlZCBhdCB0aGlzIHBsYWNlIGluIEVDTUEtNDgpLCBhY3R1YWxseSBicmVha2luZyBFQ01B
LTQ4LgorCitXZSBjYW5ub3QgaGVscCB0aGlzIGFuZCBpbXBsZW1lbnRlZCB0aGUgY29kZXMgYXMg
YWJvdmUsIHdoaWNoCitpcyBhIGJhbGFuY2VkIGRlY2lzaW9uLgorCisKK3wgLS0tLS0tLSBBZGRp
dGlvbmFsIENvbW1lbnRzIEZyb20gYXdlbmR0IHB1dGVyZ2VlayBjb20gIDIwMDYtMDYtMDcgMDc6
NDAgLS0tLS0tLQorfCA+IFNvIGEgcGFyYW1ldGVyIHN1YnN0cmluZyBpcyAwLTkgYW5kIHRoZSBj
b2xvbi4gVGhlIHNlbWljb2xvbiBzZXBhcmF0ZXMKK3wgPiBzdWItcGFyYW1ldGVycy4gVGh1cyA0
ODo1OjxDb2xvcj4gd291bGQgYmUgb25lIHN1Yi1wYXJhbWV0ZXIsIGFuZAorfCA+IDQ4OzU7PENv
bG9yPiBtYW55IGluZGVwZW5kZW50LCBlYWNoIGhhdmluZyBhbiBpbmRlcGVuZGVudCBtZWFuaW5n
IGluIGNhc2UKK3wgPiBvZiBhIHNlbGVjdGl2ZSBwYXJhbWV0ZXIuCit8IAorfCAKK3wgSSB0aGlu
ayB5b3UgbWF5IGJlIG9udG8gc29tZXRoaW5nIGhlcmUgd2l0aCB0aGUgY29sb25zLi4uIEkgd2Fz
IGFibGUgdG8gZmluZCAKK3wgSVRVIFQuNDE2ICh3aGljaCBpcyB0aGUgc2FtZSBhcyBJU08gODYx
My02KSBhbmQgaXQgc2F5czoKK3wgCit8IC0tLSBzbmlwIC0tLQorfCAKK3wgVGhlIHBhcmFtZXRl
ciB2YWx1ZXMgMzggYW5kIDQ4IGFyZSBmb2xsb3dlZCBieSBhIHBhcmFtZXRlciBzdWJzdHJpbmcg
dXNlZCB0byAKK3wgc2VsZWN0IGVpdGhlciB0aGUgY2hhcmFjdGVyIGZvcmVncm91bmQgP2NvbG91
ciB2YWx1ZT8gb3IgdGhlIGNoYXJhY3RlciAKK3wgYmFja2dyb3VuZCA/Y29sb3VyIHZhbHVlPy4K
K3wgCit8IEEgcGFyYW1ldGVyIHN1YnN0cmluZyBmb3IgdmFsdWVzIDM4IG9yIDQ4IG1heSBiZSBk
aXZpZGVkIGJ5IG9uZSBvciBtb3JlIAorfCBzZXBhcmF0b3JzICgwMy8xMCkgaW50byBwYXJhbWV0
ZXIgZWxlbWVudHMsIGRlbm90ZWQgYXMgUGUuIFRoZSBmb3JtYXQgb2Ygc3VjaCAKK3wgYSBwYXJh
bWV0ZXIgc3ViLXN0cmluZyBpcyBpbmRpY2F0ZWQgYXM6Cit8IAorfCAgICAgICAgICBQZSA6IFAg
Li4uCit8IAorfCBFYWNoIHBhcmFtZXRlciBlbGVtZW50IGNvbnNpc3RzIG9mIHplcm8sIG9uZSBv
ciBtb3JlIGJpdCBjb21iaW5hdGlvbnMgZnJvbSAKK3wgMDMvMDAgdG8gMDMvMDksIHJlcHJlc2Vu
dGluZyB0aGUgZGlnaXRzIDAgdG8gOS4gQW4gZW1wdHkgcGFyYW1ldGVyIGVsZW1lbnQgCit8IHJl
cHJlc2VudHMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlciBlbGVtZW50LiBFbXB0
eSBwYXJhbWV0ZXIgCit8IGVsZW1lbnRzIGF0IHRoZSBlbmQgb2YgdGhlIHBhcmFtZXRlciBzdWJz
dHJpbmcgbmVlZCBub3QgYmUgaW5jbHVkZWQuCit8IAorfCBUaGUgZmlyc3QgcGFyYW1ldGVyIGVs
ZW1lbnQgaW5kaWNhdGVzIGEgY2hvaWNlIGJldHdlZW46Cit8IAorfCAgICAgICAgICAgIDAgICBp
bXBsZW1lbnRhdGlvbiBkZWZpbmVkIChvbmx5IGFwcGxpY2FibGUgZm9yIHRoZSBjaGFyYWN0ZXIg
Cit8IGZvcmVncm91bmQgY29sb3VyKQorfCAgICAgICAgICAgIDEgICB0cmFuc3BhcmVudDsKK3wg
ICAgICAgICAgICAyICAgZGlyZWN0IGNvbG91ciBpbiBSR0Igc3BhY2U7Cit8ICAgICAgICAgICAg
MyAgIGRpcmVjdCBjb2xvdXIgaW4gQ01ZIHNwYWNlOworfCAgICAgICAgICAgIDQgICBkaXJlY3Qg
Y29sb3VyIGluIENNWUsgc3BhY2U7Cit8ICAgICAgICAgICAgNSAgIGluZGV4ZWQgY29sb3VyLgor
fCAKK3wgSWYgdGhlIGZpcnN0IHBhcmFtZXRlciBoYXMgdGhlIHZhbHVlIDAgb3IgMSwgdGhlcmUg
YXJlIG5vIGFkZGl0aW9uYWwgcGFyYW1ldGVyIAorfCBlbGVtZW50cy4KK3wgCit8IElmIHRoZSBm
aXJzdCBwYXJhbWV0ZXIgZWxlbWVudCBoYXMgdGhlIHZhbHVlIDUsIHRoZW4gdGhlcmUgaXMgYSBz
ZWNvbmQgCit8IHBhcmFtZXRlciBlbGVtZW50IHNwZWNpZnlpbmcgdGhlIGluZGV4IGludG8gdGhl
IGNvbG91ciB0YWJsZSBnaXZlbiBieSB0aGUgCit8IGF0dHJpYnV0ZSA/Y29udGVudCBjb2xvdXIg
dGFibGU/IGFwcGx5aW5nIHRvIHRoZSBvYmplY3Qgd2l0aCB3aGljaCB0aGUgCit8IGNvbnRlbnQg
aXMgYXNzb2NpYXRlZC4KK3wgCit8IC0tLSBzbmlwIC0tLQorfCAKK3wgVGhlIHNlcGFyYXRvciBj
aGFyYWN0ZXIgMDMvMTAgdGhleSB1c2UgaXMgYSBjb2xvbiwgbm90IGEgc2VtaWNvbG9uLi4uIEkg
d29uZGVyIAorfCBpZiB0aGUgeHRlcm0gaW1wbGVtZW50YXRpb24gd2FzIGJhc2VkIG9uIGFuIGlt
cHJvcGVyIHJlYWRpbmcgb2YgdGhlIHN0YW5kYXJkPworfCAKLS0tIGtvbnNvbGUvVEVDb21tb24u
aC5vcmlnCTIwMDUtMDUtMTIgMDI6MDI6NTMuMDAwMDAwMDAwICswMjAwCisrKyBrb25zb2xlL1RF
Q29tbW9uLmgJMjAwNi0wNi0yNCAyMjozOToxMi4wMDAwMDAwMDAgKzAyMDAKQEAgLTI3LDYgKzI3
LDI0IEBACiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVJTlQxNjsKICNlbmRpZgogCisvLyBDb2xv
ciBUYWJsZSBFbGVtZW50cyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworCisvKiEKKyovCitzdHJ1Y3QgQ29sb3JFbnRyeQoreworICBDb2xvckVudHJ5KFFD
b2xvciBjLCBib29sIHRyLCBib29sIGIpIDogY29sb3IoYyksIHRyYW5zcGFyZW50KHRyKSwgYm9s
ZChiKSB7fQorICBDb2xvckVudHJ5KCkgOiB0cmFuc3BhcmVudChmYWxzZSksIGJvbGQoZmFsc2Up
IHt9IC8vIGRlZmF1bHQgY29uc3RydWN0b3JzCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENvbG9y
RW50cnkmIHJocykgeyAKKyAgICAgICBjb2xvciA9IHJocy5jb2xvcjsgCisgICAgICAgdHJhbnNw
YXJlbnQgPSByaHMudHJhbnNwYXJlbnQ7IAorICAgICAgIGJvbGQgPSByaHMuYm9sZDsgCisgIH0K
KyAgUUNvbG9yIGNvbG9yOworICBib29sICAgdHJhbnNwYXJlbnQ7IC8vIGlmIHVzZWQgb24gYmcK
KyAgYm9vbCAgIGJvbGQ7ICAgICAgICAvLyBpZiB1c2VkIG9uIGZnCit9OworCiAvLyBBdHRyaWJ1
dGVkIENoYXJhY3RlciBSZXByZXNlbnRhdGlvbnMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogCiAvLyBDb2xvcnMKQEAgLTQ2LDYgKzY0LDExNSBAQAogI2RlZmluZSBSRV9JTlRFTlNJ
VkUgICAgICAgKDEgPDwgMykgLy8gV2lkZ2V0IG9ubHkKICNkZWZpbmUgUkVfQ1VSU09SICAgICAg
ICAgICgxIDw8IDQpCiAKKworLyogY2Fjb2wgaXMgYSB1bmlvbiBvZiB0aGUgdmFyaW91cyBjb2xv
ciBzcGFjZXMuCisKKyAgIEFzc2lnbm1lbnQgaXMgYXMgZm9sbG93czoKKworICAgVHlwZSAgLSBT
cGFjZSAgICAgICAgLSBWYWx1ZXMKKworICAgMCAgICAgLSBVbmRlZmluZWQgICAtIHU6ICAwLCAg
ICAgIHY6MCAgICAgICAgdzowCisgICAxICAgICAtIERlZmF1bHQgICAgIC0gdTogIDAuLjEgICAg
djppbnRlbnNlICB3OjAKKyAgIDIgICAgIC0gU3lzdGVtICAgICAgLSB1OiAgMC4uNyAgICB2Omlu
dGVuc2UgIHc6MAorICAgMyAgICAgLSBJbmRleCgyNTYpICAtIHU6IDE2Li4yNTUgIHY6MCAgICAg
ICAgdzowCisgICA0ICAgICAtIFJHQiAgICAgICAgIC0gdTogIDAuLjI1NSAgdjowLi4yNTYgICB3
OjAuLjI1NgorCisgICBEZWZhdWx0IGNvbG91ciBzcGFjZSBoYXMgdHdvIHNlcGFyYXRlIGNvbG91
cnMsIG5hbWVseQorICAgZGVmYXVsdCBmb3JlZ3JvdW5kIGFuZCBkZWZhdWx0IGJhY2tncm91bmQg
Y29sb3VyLgorKi8KKworI2RlZmluZSBDT19VTkQgMAorI2RlZmluZSBDT19ERlQgMQorI2RlZmlu
ZSBDT19TWVMgMgorI2RlZmluZSBDT18yNTYgMworI2RlZmluZSBDT19SR0IgNAorCitjbGFzcyBj
YWNvbAoreworcHVibGljOgorICBjYWNvbCgpOworICBjYWNvbChVSU5UOCBzcGFjZSwgaW50IGNv
bG9yKTsKKyAgVUlOVDggdDsgLy8gY29sb3Igc3BhY2UgaW5kaWNhdG9yCisgIFVJTlQ4IHU7IC8v
IHZhcmlvdXMgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGluIHRoZSByZXNwZWN0aXZlIC4u
LgorICBVSU5UOCB2OyAvLyAuLi4gY29sb3Igc3BhY2UuIEMrKyBkb2VzIG5vdCBkbyB1bmlvbnMs
IHNvIHdlIGNhbm5vdCAuLi4KKyAgVUlOVDggdzsgLy8gLi4uIGV4cHJlc3Mgb3Vyc2VsZnMgaGVy
ZSwgcHJvcGVybHkuCisgIHZvaWQgdG9nZ2xlSW50ZW5zaXZlKCk7IC8vIEhhY2sgb3IgaGVscGVy
PworICBRQ29sb3IgY29sb3IoY29uc3QgQ29sb3JFbnRyeSogYmFzZSkgY29uc3Q7CisgIGZyaWVu
ZCBib29sIG9wZXJhdG9yID09IChjYWNvbCBhLCBjYWNvbCBiKTsKKyAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IgIT0gKGNhY29sIGEsIGNhY29sIGIpOworfTsKKworI2lmIDAKK2lubGluZSBjYWNvbDo6
Y2Fjb2woVUlOVDggX3QsIFVJTlQ4IF91LCBVSU5UOCBfdiwgVUlOVDggX3cpCis6IHQoX3QpLCB1
KF91KSwgdihfdiksIHcoX3cpCit7Cit9CisjZWxzZQoraW5saW5lIGNhY29sOjpjYWNvbChVSU5U
OCB0eSwgaW50IGNvKQorOiB0KHR5KSwgdSgwKSwgdigwKSwgdygwKQoreworICBzd2l0Y2ggKHQp
CisgIHsKKyAgICBjYXNlIENPX1VORDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ09fREZUOiB1ID0gY28mICAxOyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDT19TWVM6IHUgPSBjbyYgIDc7IHYgPSAoY28+PjMpJjE7ICAgICBicmVh
azsKKyAgICBjYXNlIENPXzI1NjogdSA9IGNvJjI1NTsgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ09fUkdCOiB1ID0gY28+PjE2OyB2ID0gY28+Pjg7IHcgPSBjbzsgYnJlYWs7
CisgICAgZGVmYXVsdCAgICA6IHQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgfQorfQorI2VuZGlmCisKK2lubGluZSBjYWNvbDo6Y2Fjb2woKSAvLyB1bmRlZmluZWQsIHJl
YWxseQorOiB0KENPX1VORCksIHUoMCksIHYoMCksIHcoMCkKK3sKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3IgPT0gKGNhY29sIGEsIGNhY29sIGIpCit7IAorICByZXR1cm4gYS50ID09IGIudCAm
JiBhLnUgPT0gYi51ICYmIGEudiA9PSBiLnYgJiYgYS53ID09IGIudzsKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3IgIT0gKGNhY29sIGEsIGNhY29sIGIpCit7CisgIHJldHVybiBhLnQgIT0gYi50
IHx8IGEudSAhPSBiLnUgfHwgYS52ICE9IGIudiB8fCBhLncgIT0gYi53OworfQorCitpbmxpbmUg
Y29uc3QgUUNvbG9yIGNvbG9yMjU2KFVJTlQ4IHUsIGNvbnN0IENvbG9yRW50cnkqIGJhc2UpCit7
CisgIC8vICAgMC4uIDE2OiBzeXN0ZW0gY29sb3JzCisgIGlmICh1IDwgICA4KSByZXR1cm4gYmFz
ZVt1KzIgICAgICAgICAgICBdLmNvbG9yOyB1IC09IDg7CisgIGlmICh1IDwgICA4KSByZXR1cm4g
YmFzZVt1KzIrQkFTRV9DT0xPUlNdLmNvbG9yOyB1IC09IDg7CisKKyAgLy8gIDE2Li4yMzE6IDZ4
Nng2IHJnYiBjb2xvciBjdWJlCisgIGlmICh1IDwgMjE2KSByZXR1cm4gUUNvbG9yKDI1NSooKHUv
MzYpJTYpLzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSooKHUvIDYpJTYpLzYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSooKHUvIDEpJTYpLzYpOyB1IC09IDIx
NjsKKyAgCisgIC8vIDIzMi4uMjU1OiBncmF5LCBsZWF2aW5nIG91dCBibGFjayBhbmQgd2hpdGUK
KyAgaW50IGdyYXkgPSB1KjEwKzg7IHJldHVybiBRQ29sb3IoZ3JheSxncmF5LGdyYXkpOworfQor
CitpbmxpbmUgUUNvbG9yIGNhY29sOjpjb2xvcihjb25zdCBDb2xvckVudHJ5KiBiYXNlKSBjb25z
dAoreworICBzd2l0Y2ggKHQpCisgIHsKKyAgICBjYXNlIENPX0RGVDogcmV0dXJuIGJhc2VbdSsw
Kyh2P0JBU0VfQ09MT1JTOjApXS5jb2xvcjsKKyAgICBjYXNlIENPX1NZUzogcmV0dXJuIGJhc2Vb
dSsyKyh2P0JBU0VfQ09MT1JTOjApXS5jb2xvcjsKKyAgICBjYXNlIENPXzI1NjogcmV0dXJuIGNv
bG9yMjU2KHUsYmFzZSk7CisgICAgY2FzZSBDT19SR0I6IHJldHVybiBRQ29sb3IodSx2LHcpOwor
ICAgIGRlZmF1bHQgICAgOiByZXR1cm4gUUNvbG9yKDI1NSwwLDApOyAvLyBkaWFnbm9zdGljIGNh
dGNoIGFsbAorICB9Cit9CisKK2lubGluZSB2b2lkIGNhY29sOjp0b2dnbGVJbnRlbnNpdmUoKQor
eworICBpZiAodCA9PSBDT19TWVMgfHwgdCA9PSBDT19ERlQpCisgIHsKKyAgICB2ID0gIXY7Cisg
IH0KK30KKwogLyohIFxjbGFzcyBjYQogICogIFxicmllZiBhIGNoYXJhY3RlciB3aXRoIHJlbmRp
dGlvbiBhdHRyaWJ1dGVzLgogKi8KQEAgLTU0LDIyICsxODEsMjggQEAKIHsKIHB1YmxpYzoKICAg
aW5saW5lIGNhKFVJTlQxNiBfYyA9ICcgJywKLSAgICAgICAgICAgIFVJTlQ4IF9mID0gREVGQVVM
VF9GT1JFX0NPTE9SLAotICAgICAgICAgICAgVUlOVDggX2IgPSBERUZBVUxUX0JBQ0tfQ09MT1Is
Ci0gICAgICAgICAgICBVSU5UOCBfciA9IERFRkFVTFRfUkVORElUSU9OKQotICAgICAgIDogYyhf
YyksIGYoX2YpLCBiKF9iKSwgcihfcikge30KKyAgICAgICAgICAgIGNhY29sICBfZiA9IGNhY29s
KENPX0RGVCxERUZBVUxUX0ZPUkVfQ09MT1IpLAorICAgICAgICAgICAgY2Fjb2wgIF9iID0gY2Fj
b2woQ09fREZULERFRkFVTFRfQkFDS19DT0xPUiksCisgICAgICAgICAgICBVSU5UOCAgX3IgPSBE
RUZBVUxUX1JFTkRJVElPTikKKyAgICAgICA6IGMoX2MpLCByKF9yKSwgZihfZiksIGIoX2IpIHt9
CiBwdWJsaWM6CiAgIFVJTlQxNiBjOyAvLyBjaGFyYWN0ZXIKLSAgVUlOVDggIGY7IC8vIGZvcmVn
cm91bmQgY29sb3IKLSAgVUlOVDggIGI7IC8vIGJhY2tncm91bmQgY29sb3IKICAgVUlOVDggIHI7
IC8vIHJlbmRpdGlvbgorICBjYWNvbCAgZjsgLy8gZm9yZWdyb3VuZCBjb2xvcgorICBjYWNvbCAg
YjsgLy8gYmFja2dyb3VuZCBjb2xvcgorcHVibGljOgorICAvL0ZJWE1FOiBmb2xsb3dpbmcgYSBo
YWNrIHRvIGNvcGUgd2l0aCB2YXJpb3VzIGNvbG9yIHNwYWNlcworICAvLyBpdCBicmluZ3MgdGhl
IHJlbmRpdGlvbiBwaXBlbGluZSBmdXJ0aGVyIG91dCBvZiBiYWxhbmNlLAorICAvLyB3aGljaCBp
dCB3YXMgYW55d2F5IGFzIHRoZSByZXN1bHQgb2YgdmFyaW91cyBhZGRpdGlvbnMuCisgIGJvb2wg
ICBpc1RyYW5zcGFyZW50KGNvbnN0IENvbG9yRW50cnkqIGJhc2UpIGNvbnN0OworICBib29sICAg
aXNCb2xkKGNvbnN0IENvbG9yRW50cnkqIGJhc2UpIGNvbnN0OwogcHVibGljOgogICBmcmllbmQg
Ym9vbCBvcGVyYXRvciA9PSAoY2EgYSwgY2EgYik7CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9
IChjYSBhLCBjYSBiKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yID09IChjYSBhLCBjYSBi
KQoteworeyAKICAgcmV0dXJuIGEuYyA9PSBiLmMgJiYgYS5mID09IGIuZiAmJiBhLmIgPT0gYi5i
ICYmIGEuciA9PSBiLnI7CiB9CiAKQEAgLTc4LDIwICsyMTEsMTQgQEAKICAgcmV0dXJuIGEuYyAh
PSBiLmMgfHwgYS5mICE9IGIuZiB8fCBhLmIgIT0gYi5iIHx8IGEuciAhPSBiLnI7CiB9CiAKLS8q
IQotKi8KLXN0cnVjdCBDb2xvckVudHJ5CitpbmxpbmUgYm9vbCBjYTo6aXNUcmFuc3BhcmVudChj
b25zdCBDb2xvckVudHJ5KiBiYXNlKSBjb25zdAogewotICBDb2xvckVudHJ5KFFDb2xvciBjLCBi
b29sIHRyLCBib29sIGIpIDogY29sb3IoYyksIHRyYW5zcGFyZW50KHRyKSwgYm9sZChiKSB7fQot
ICBDb2xvckVudHJ5KCkgOiB0cmFuc3BhcmVudChmYWxzZSksIGJvbGQoZmFsc2UpIHt9IC8vIGRl
ZmF1bHQgY29uc3RydWN0b3JzCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENvbG9yRW50cnkmIHJo
cykgeyAKLSAgICAgICBjb2xvciA9IHJocy5jb2xvcjsgCi0gICAgICAgdHJhbnNwYXJlbnQgPSBy
aHMudHJhbnNwYXJlbnQ7IAotICAgICAgIGJvbGQgPSByaHMuYm9sZDsgCi0gIH0KLSAgUUNvbG9y
IGNvbG9yOwotICBib29sICAgdHJhbnNwYXJlbnQ7IC8vIGlmIHVzZWQgb24gYmcKLSAgYm9vbCAg
IGJvbGQ7ICAgICAgICAvLyBpZiB1c2VkIG9uIGZnCi19OworICByZXR1cm4gKGIudCA9PSBDT19T
WVMgfHwgYi50ID09IENPX0RGVCkgJiYgYmFzZVtiLnVdLnRyYW5zcGFyZW50OworfQorCitpbmxp
bmUgYm9vbCBjYTo6aXNCb2xkKGNvbnN0IENvbG9yRW50cnkqIGJhc2UpIGNvbnN0Cit7CisgIHJl
dHVybiAoZi50ID09IENPX1NZUyB8fCBiLnQgPT0gQ09fREZUKSAmJiBiYXNlW2YudV0uYm9sZDsK
K30KIAogI2VuZGlmIC8vIFRFQ09NTU9OX0gKLS0tIGtvbnNvbGUvVEVTY3JlZW4uY3BwLm9yaWcJ
MjAwNi0wNS0wMiAwMTozMTozMi4wMDAwMDAwMDAgKzAyMDAKKysrIGtvbnNvbGUvVEVTY3JlZW4u
Y3BwCTIwMDYtMDYtMjQgMjM6MTQ6MzUuMDAwMDAwMDAwICswMjAwCkBAIC02NywxNSArNjcsMTUg
QEAKICAgICBoaXN0Q3Vyc29yKDApLAogICAgIGhpc3QobmV3IEhpc3RvcnlTY3JvbGxOb25lKCkp
LAogICAgIGN1WCgwKSwgY3VZKDApLAotICAgIGN1X2ZnKDApLCBjdV9iZygwKSwgY3VfcmUoMCks
CisgICAgY3VfZmcoY2Fjb2woKSksIGN1X2JnKGNhY29sKCkpLCBjdV9yZSgwKSwKICAgICB0bWFy
Z2luKDApLCBibWFyZ2luKDApLAogICAgIHRhYnN0b3BzKDApLAogICAgIHNlbF9iZWdpbigwKSwg
c2VsX1RMKDApLCBzZWxfQlIoMCksCiAgICAgc2VsX2J1c3koZmFsc2UpLAogICAgIGNvbHVtbm1v
ZGUoZmFsc2UpLAotICAgIGVmX2ZnKDApLCBlZl9iZygwKSwgZWZfcmUoMCksCisgICAgZWZfZmco
Y2Fjb2woKSksIGVmX2JnKGNhY29sKCkpLCBlZl9yZSgwKSwKICAgICBzYV9jdVgoMCksIHNhX2N1
WSgwKSwKLSAgICBzYV9jdV9yZSgwKSwgc2FfY3VfZmcoMCksIHNhX2N1X2JnKDApLAorICAgIHNh
X2N1X3JlKDApLCBzYV9jdV9mZyhjYWNvbCgpKSwgc2FfY3VfYmcoY2Fjb2woKSksCiAgICAgbGFz
dFBvcygtMSkKIHsKICAgLyoKQEAgLTQyNSw4ICs0MjUsOCBAQAogICAgIGZvciAoaW50IHggPSAw
OyB4IDwgbmV3X2NvbHVtbnM7IHgrKykKICAgICB7CiAgICAgICBuZXdpbWdbeSpuZXdfY29sdW1u
cyt4XS5jID0gJyAnOwotICAgICAgbmV3aW1nW3kqbmV3X2NvbHVtbnMreF0uZiA9IERFRkFVTFRf
Rk9SRV9DT0xPUjsKLSAgICAgIG5ld2ltZ1t5Km5ld19jb2x1bW5zK3hdLmIgPSBERUZBVUxUX0JB
Q0tfQ09MT1I7CisgICAgICBuZXdpbWdbeSpuZXdfY29sdW1ucyt4XS5mID0gY2Fjb2woQ09fREZU
LERFRkFVTFRfRk9SRV9DT0xPUik7CisgICAgICBuZXdpbWdbeSpuZXdfY29sdW1ucyt4XS5iID0g
Y2Fjb2woQ09fREZULERFRkFVTFRfQkFDS19DT0xPUik7CiAgICAgICBuZXdpbWdbeSpuZXdfY29s
dW1ucyt4XS5yID0gREVGQVVMVF9SRU5ESVRJT047CiAgICAgfQogICAgIG5ld3dyYXBwZWRbeV09
ZmFsc2U7CkBAIC00OTQsNyArNDk0LDcgQEAKICovCiAKIHZvaWQgVEVTY3JlZW46OnJldmVyc2VS
ZW5kaXRpb24oY2EqIHApCi17IFVJTlQ4IGYgPSBwLT5mOyBVSU5UOCBiID0gcC0+YjsKK3sgY2Fj
b2wgZiA9IHAtPmY7IGNhY29sIGIgPSBwLT5iOwogICBwLT5mID0gYjsgcC0+YiA9IGY7IC8vcC0+
ciAmPSB+UkVfVFJBTlNQQVJFTlQ7CiB9CiAKQEAgLTUxMywxMiArNTEzLDcgQEAKICAgICBlZl9i
ZyA9IGN1X2JnOwogICB9CiAgIGlmIChjdV9yZSAmIFJFX0JPTEQpCi0gIHsKLSAgICBpZiAoZWZf
ZmcgPCBCQVNFX0NPTE9SUykKLSAgICAgIGVmX2ZnICs9IEJBU0VfQ09MT1JTOwotICAgIGVsc2UK
LSAgICAgIGVmX2ZnIC09IEJBU0VfQ09MT1JTOwotICB9CisgICAgZWZfZmcudG9nZ2xlSW50ZW5z
aXZlKCk7CiB9CiAKIC8qIQpAQCAtNTQwLDcgKzUzNSw3IEBACiAKICAgaW50IHgseTsKICAgY2Eq
IG1lcmdlZCA9IChjYSopbWFsbG9jKChsaW5lcypjb2x1bW5zKzEpKnNpemVvZihjYSkpOwotICBj
YSBkZnQoJyAnLERFRkFVTFRfRk9SRV9DT0xPUixERUZBVUxUX0JBQ0tfQ09MT1IsREVGQVVMVF9S
RU5ESVRJT04pOworICBjYSBkZnQoJyAnLGNhY29sKENPX0RGVCxERUZBVUxUX0ZPUkVfQ09MT1Ip
LGNhY29sKENPX0RGVCxERUZBVUxUX0JBQ0tfQ09MT1IpLERFRkFVTFRfUkVORElUSU9OKTsKICAg
bWVyZ2VkW2xpbmVzKmNvbHVtbnNdID0gZGZ0OwogCiAvLyAga2REZWJ1ZygxMjExKSA8PCAiSW5H
ZXRDb29rZWRJbWFnZSIgPDwgZW5kbDsKQEAgLTEwODIsNDUgKzEwNzcsMjUgQEAKIAogdm9pZCBU
RVNjcmVlbjo6c2V0RGVmYXVsdFJlbmRpdGlvbigpCiB7Ci0gIHNldEZvcmVDb2xvclRvRGVmYXVs
dCgpOwotICBzZXRCYWNrQ29sb3JUb0RlZmF1bHQoKTsKKyAgc2V0Rm9yZUNvbG9yKENPX0RGVCxE
RUZBVUxUX0ZPUkVfQ09MT1IpOworICBzZXRCYWNrQ29sb3IoQ09fREZULERFRkFVTFRfQkFDS19D
T0xPUik7CiAgIGN1X3JlICAgPSBERUZBVUxUX1JFTkRJVElPTjsKICAgZWZmZWN0aXZlUmVuZGl0
aW9uKCk7CiB9CiAKIC8qIQogKi8KLQotdm9pZCBURVNjcmVlbjo6c2V0Rm9yZUNvbG9yKGludCBm
Z2NvbG9yKQordm9pZCBURVNjcmVlbjo6c2V0Rm9yZUNvbG9yKGludCBzcGFjZSwgaW50IGNvbG9y
KQogewotICBjdV9mZyA9IChmZ2NvbG9yJjcpKygoZmdjb2xvciY4KSA/IDQrOCA6IDIpOworICBj
dV9mZyA9IGNhY29sKHNwYWNlLCBjb2xvcik7CiAgIGVmZmVjdGl2ZVJlbmRpdGlvbigpOwogfQog
CiAvKiEKICovCi0KLXZvaWQgVEVTY3JlZW46OnNldEJhY2tDb2xvcihpbnQgYmdjb2xvcikKLXsK
LSAgY3VfYmcgPSAoYmdjb2xvciY3KSsoKGJnY29sb3ImOCkgPyA0KzggOiAyKTsKLSAgZWZmZWN0
aXZlUmVuZGl0aW9uKCk7Ci19Ci0KLS8qIQotKi8KLQotdm9pZCBURVNjcmVlbjo6c2V0QmFja0Nv
bG9yVG9EZWZhdWx0KCkKLXsKLSAgY3VfYmcgPSBERUZBVUxUX0JBQ0tfQ09MT1I7Ci0gIGVmZmVj
dGl2ZVJlbmRpdGlvbigpOwotfQotCi0vKiEKLSovCi0KLXZvaWQgVEVTY3JlZW46OnNldEZvcmVD
b2xvclRvRGVmYXVsdCgpCit2b2lkIFRFU2NyZWVuOjpzZXRCYWNrQ29sb3IoaW50IHNwYWNlLCBp
bnQgY29sb3IpCiB7Ci0gIGN1X2ZnID0gREVGQVVMVF9GT1JFX0NPTE9SOworICBjdV9iZyA9IGNh
Y29sKHNwYWNlLCBjb2xvcik7CiAgIGVmZmVjdGl2ZVJlbmRpdGlvbigpOwogfQogCi0tLSBrb25z
b2xlL1RFU2NyZWVuLmgub3JpZwkyMDA1LTA4LTE4IDExOjUzOjE2LjAwMDAwMDAwMCArMDIwMAor
Kysga29uc29sZS9URVNjcmVlbi5oCTIwMDYtMDYtMjQgMjM6MTM6NDguMDAwMDAwMDAwICswMjAw
CkBAIC0xMTAsMTIgKzExMCwxMSBAQAogICAgIC8vCiAgICAgdm9pZCBzZXRSZW5kaXRpb24gIChp
bnQgcmVuZGl0aW9uKTsKICAgICB2b2lkIHJlc2V0UmVuZGl0aW9uKGludCByZW5kaXRpb24pOwot
ICAgIHZvaWQgc2V0Rm9yZUNvbG9yICAoaW50IGZnY29sb3IpOwotICAgIHZvaWQgc2V0QmFja0Nv
bG9yICAoaW50IGJnY29sb3IpOworICAgIC8vCisgICAgdm9pZCBzZXRGb3JlQ29sb3IgIChpbnQg
c3BhY2UsIGludCBjb2xvcik7CisgICAgdm9pZCBzZXRCYWNrQ29sb3IgIChpbnQgc3BhY2UsIGlu
dCBjb2xvcik7CiAgICAgLy8KICAgICB2b2lkIHNldERlZmF1bHRSZW5kaXRpb24oKTsKLSAgICB2
b2lkIHNldEZvcmVDb2xvclRvRGVmYXVsdCgpOwotICAgIHZvaWQgc2V0QmFja0NvbG9yVG9EZWZh
dWx0KCk7CiAgICAgLy8KICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgICAgLy8KQEAgLTIxOCw4ICsyMTcsOCBAQAogCiAgICAgLy8gY3Vyc29yIGNvbG9yIGFu
ZCByZW5kaXRpb24gaW5mbwogCi0gICAgVUlOVDggY3VfZmc7ICAgICAgLy8gZm9yZWdyb3VuZAot
ICAgIFVJTlQ4IGN1X2JnOyAgICAgIC8vIGJhY2tncm91bmQKKyAgICBjYWNvbCBjdV9mZzsgICAg
ICAvLyBmb3JlZ3JvdW5kCisgICAgY2Fjb2wgY3VfYmc7ICAgICAgLy8gYmFja2dyb3VuZAogICAg
IFVJTlQ4IGN1X3JlOyAgICAgIC8vIHJlbmRpdGlvbgogCiAgICAgLy8gbWFyZ2lucyAtLS0tLS0t
LS0tLS0tLS0tCkBAIC0yNDUsOCArMjQ0LDggQEAKIAogICAgIC8vIGVmZmVjdGl2ZSBjb2xvcnMg
YW5kIHJlbmRpdGlvbiAtLS0tLS0tLS0tLS0KIAotICAgIFVJTlQ4IGVmX2ZnOyAgICAgIC8vIFRo
ZXNlIGFyZSBkZXJpdmVkIGZyb20KLSAgICBVSU5UOCBlZl9iZzsgICAgICAvLyB0aGUgY3VfKiB2
YXJpYWJsZXMgYWJvdmUKKyAgICBjYWNvbCBlZl9mZzsgICAgICAvLyBUaGVzZSBhcmUgZGVyaXZl
ZCBmcm9tCisgICAgY2Fjb2wgZWZfYmc7ICAgICAgLy8gdGhlIGN1XyogdmFyaWFibGVzIGFib3Zl
CiAgICAgVUlOVDggZWZfcmU7ICAgICAgLy8gdG8gc3BlZWQgdXAgb3BlcmF0aW9uCiAKICAgICAv
LwpAQCAtMjYxLDggKzI2MCw4IEBACiAgICAgLy8gcmVuZGl0aW9uIGluZm8KIAogICAgIFVJTlQ4
IHNhX2N1X3JlOwotICAgIFVJTlQ4IHNhX2N1X2ZnOwotICAgIFVJTlQ4IHNhX2N1X2JnOworICAg
IGNhY29sIHNhX2N1X2ZnOworICAgIGNhY29sIHNhX2N1X2JnOwogICAgIAogICAgIC8vIGxhc3Qg
cG9zaXRpb24gd2hlcmUgd2UgYWRkZWQgYSBjaGFyYWN0ZXIKICAgICBpbnQgbGFzdFBvczsKLS0t
IGtvbnNvbGUvVEVXaWRnZXQuY3BwLm9yaWcJMjAwNS0wOC0xOCAxMTo1MzoxNi4wMDAwMDAwMDAg
KzAyMDAKKysrIGtvbnNvbGUvVEVXaWRnZXQuY3BwCTIwMDYtMDYtMjQgMjM6MjE6MzguMDAwMDAw
MDAwICswMjAwCkBAIC01ODYsNyArNTg2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFFTdHJpbmcmIHN0ciwgY29uc3QgY2EgKmF0dHIsIGJvb2wgcG0sIGJvb2wgY2xlYXIpCiB7CiAg
IGludCBhID0gZm9udF9hICsgbV9saW5lU3BhY2luZyAvIDI7Ci0gIFFDb2xvciBmQ29sb3IgPSBw
cmludGVyRnJpZW5kbHkgPyBRdDo6YmxhY2sgOiBjb2xvcl90YWJsZVthdHRyLT5mXS5jb2xvcjsK
KyAgUUNvbG9yIGZDb2xvciA9IHByaW50ZXJGcmllbmRseSA/IFF0OjpibGFjayA6IGF0dHItPmYu
Y29sb3IoY29sb3JfdGFibGUpOworICBRQ29sb3IgYkNvbG9yID0gYXR0ci0+Yi5jb2xvcihjb2xv
cl90YWJsZSk7CiAgIFFTdHJpbmcgZHJhd3N0cjsKIAogICBpZiAoKGF0dHItPnIgJiBSRV9DVVJT
T1IpICYmICFpc1ByaW50aW5nKQpAQCAtNTk1LDcgKzU5Niw3IEBACiAgIC8vIFBhaW50IGJhY2tn
cm91bmQKICAgaWYgKCFwcmludGVyRnJpZW5kbHkpCiAgIHsKLSAgICBpZiAoY29sb3JfdGFibGVb
YXR0ci0+Yl0udHJhbnNwYXJlbnQpCisgICAgaWYgKGF0dHItPmlzVHJhbnNwYXJlbnQoY29sb3Jf
dGFibGUpKQogICAgIHsKICAgICAgIGlmIChwbSkKICAgICAgICAgcGFpbnQuc2V0QmFja2dyb3Vu
ZE1vZGUoIFRyYW5zcGFyZW50TW9kZSApOwpAQCAtNjA0LDEyICs2MDUsMTIgQEAKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKLSAgICAgIGlmIChwbSB8fCBjb2xvcl90YWJsZVthdHRyLT5iXS5jb2xv
ciAhPSBjb2xvcl90YWJsZVsgY29sb3JzU3dhcHBlZCA/IERFRkFVTFRfRk9SRV9DT0xPUiA6IERF
RkFVTFRfQkFDS19DT0xPUiBdLmNvbG9yCi0gICAgICAgICAgfHwgY2xlYXIgfHwgKGJsaW5raW5n
ICYmIChhdHRyLT5yICYgUkVfQkxJTkspKSkKKyAgICAgIGlmIChwbSB8fCBjbGVhciB8fCAoYmxp
bmtpbmcgJiYgKGF0dHItPnIgJiBSRV9CTElOSykpIHx8CisgICAgICAgICAgYXR0ci0+YiA9PSBj
YWNvbChDT19ERlQsIGNvbG9yc1N3YXBwZWQgPyBERUZBVUxUX0ZPUkVfQ09MT1IgOiBERUZBVUxU
X0JBQ0tfQ09MT1IpICkKIAogICAgICAgICAvLyBkcmF3IGJhY2tncm91bmQgY29sb3JzIHdpdGgg
NzUlIG9wYWNpdHkKICAgICAgICAgaWYgKCBhcmdiX3Zpc3VhbCAmJiBxQWxwaGEoYmxlbmRfY29s
b3IpIDwgMHhmZiApIHsKLSAgICAgICAgICBRUmdiIGNvbCA9IGNvbG9yX3RhYmxlW2F0dHItPmJd
LmNvbG9yLnJnYigpOworICAgICAgICAgIFFSZ2IgY29sID0gYkNvbG9yLnJnYigpOwogCiAgICAg
ICAgICAgUV9VSU5UOCBzYWxwaGEgPSAxOTI7CiAgICAgICAgICAgUV9VSU5UOCBkYWxwaGEgPSAy
NTUgLSBzYWxwaGE7CkBAIC02MjUsNyArNjI2LDcgQEAKIAogICAgICAgICAgIHBhaW50LmZpbGxS
ZWN0KHJlY3QsIFFDb2xvcihjb2wsIHBpeGVsKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
IHBhaW50LmZpbGxSZWN0KHJlY3QsIGNvbG9yX3RhYmxlW2F0dHItPmJdLmNvbG9yKTsKKyAgICAg
ICAgICBwYWludC5maWxsUmVjdChyZWN0LCBiQ29sb3IpOwogICAgIH0KIAogICAgIFFTdHJpbmcg
dG1wU3RyID0gc3RyLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwpAQCAtNjY0LDggKzY2NSw4IEBACiAg
ICAgewogICAgICAgIGlmICghY3Vyc29yQmxpbmtpbmcpCiAgICAgICAgewotICAgICAgICAgIHBh
aW50LmZpbGxSZWN0KHIsIGNvbG9yX3RhYmxlW2F0dHItPmZdLmNvbG9yKTsKLSAgICAgICAgICBm
Q29sb3IgPSBjb2xvcl90YWJsZVthdHRyLT5iXS5jb2xvcjsKKyAgICAgICAgICBwYWludC5maWxs
UmVjdChyLCBmQ29sb3IpOworICAgICAgICAgIGZDb2xvciA9IGJDb2xvcjsKICAgICAgICB9CiAg
ICAgfQogICAgIGVsc2UKQEAgLTY4NSw3ICs2ODYsNyBAQAogICAgIGJvb2wgc2hhZG93ID0gZmFs
c2U7CiAgICAgcGFpbnQuc2V0UGVuKGZDb2xvcik7CiAgICAgaW50IHggPSByZWN0LngoKTsKLSAg
ICBpZiAoY29sb3JfdGFibGVbYXR0ci0+Zl0uYm9sZCAmJiBwcmludGVyQm9sZCkKKyAgICBpZiAo
YXR0ci0+aXNCb2xkKGNvbG9yX3RhYmxlKSAmJiBwcmludGVyQm9sZCkKICAgICB7CiAgICAgICAv
LyBXaGVuIHByaW50aW5nIHdlIHVzZSBhIGJvbGQgZm9udCBmb3IgYm9sZAogICAgICAgcGFpbnQu
c2F2ZSgpOwpAQCAtNzIxLDEzICs3MjIsMTMgQEAKICAgICAgIHBhaW50LmRyYXdUZXh0KHgseSwg
c3RyLCAtMSwgYmlkaUVuYWJsZWQgPyBRUGFpbnRlcjo6QXV0byA6IFFQYWludGVyOjpMVFIgKTsK
ICAgICB9CiAKLSAgICBpZiAoY29sb3JfdGFibGVbYXR0ci0+Zl0uYm9sZCAmJiBpc1ByaW50aW5n
KQorICAgIGlmIChhdHRyLT5pc0JvbGQoY29sb3JfdGFibGUpICYmIGlzUHJpbnRpbmcpCiAgICAg
ewogICAgICAgLy8gV2hlbiBwcmludGluZyB3ZSB1c2UgYSBib2xkIGZvbnQgZm9yIGJvbGQKICAg
ICAgIHBhaW50LnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICBpZiAoY29sb3JfdGFibGVbYXR0ci0+
Zl0uYm9sZCAmJiAhcHJpbnRlckJvbGQpCisgICAgaWYgKGF0dHItPmlzQm9sZChjb2xvcl90YWJs
ZSkgJiYgIXByaW50ZXJCb2xkKQogICAgIHsKICAgICAgIHBhaW50LnNldENsaXBSZWN0KHJlY3Qp
OwogICAgICAgLy8gT24gc2NyZWVuIHdlIHVzZSBvdmVyc3RyaWtlIGZvciBib2xkCkBAIC03OTYs
OSArNzk3LDkgQEAKICAgaW50ICAgIHRMeSA9IHRMLnkoKTsKICAgaGFzQmxpbmtlciA9IGZhbHNl
OwogCi0gIGludCBjZiAgPSAtMTsgLy8gdW5kZWZpbmVkCi0gIGludCBjYiAgPSAtMTsgLy8gdW5k
ZWZpbmVkCi0gIGludCBjciAgPSAtMTsgLy8gdW5kZWZpbmVkCisgIGNhY29sIGNmOyAgICAgICAv
LyB1bmRlZmluZWQKKyAgY2Fjb2wgY2I7ICAgICAgIC8vIHVuZGVmaW5lZAorICBpbnQgICBjciAg
PSAtMTsgLy8gdW5kZWZpbmVkCiAKICAgaW50IGxpbnMgPSBRTUlOKHRoaXMtPmxpbmVzLCAgUU1B
WCgwLGxpbmVzICApKTsKICAgaW50IGNvbHMgPSBRTUlOKHRoaXMtPmNvbHVtbnMsUU1BWCgwLGNv
bHVtbnMpKTsKQEAgLTEwNDksOSArMTA1MCw5IEBACiAgICAgICAgICBkaXNzdHJVW3ArK10gPSBj
OyAvL2ZvbnRNYXAoYyk7CiAgICAgICBib29sIGxpbmVEcmF3ID0gaXNMaW5lQ2hhcihjKTsKICAg
ICAgIGJvb2wgZG91YmxlV2lkdGggPSAoaW1hZ2VbbG9jKHgseSkrMV0uYyA9PSAwKTsKLSAgICAg
IGludCBjZiA9IGltYWdlW2xvYyh4LHkpXS5mOwotICAgICAgaW50IGNiID0gaW1hZ2VbbG9jKHgs
eSldLmI7Ci0gICAgICBpbnQgY3IgPSBpbWFnZVtsb2MoeCx5KV0ucjsKKyAgICAgIGNhY29sIGNm
ID0gaW1hZ2VbbG9jKHgseSldLmY7CisgICAgICBjYWNvbCBjYiA9IGltYWdlW2xvYyh4LHkpXS5i
OworICAgICAgaW50ICAgY3IgPSBpbWFnZVtsb2MoeCx5KV0ucjsKICAgICAgIHdoaWxlICh4K2xl
biA8PSBybHggJiYKICAgICAgICAgICAgICBpbWFnZVtsb2MoeCtsZW4seSldLmYgPT0gY2YgJiYK
ICAgICAgICAgICAgICBpbWFnZVtsb2MoeCtsZW4seSldLmIgPT0gY2IgJiYKQEAgLTIwMDksMTAg
KzIwMTAsMTAgQEAKICAgLy8gV2UgaW5pdGlhbGl6ZSBpbWFnZVtpbWFnZV9zaXplXSB0b28uIFNl
ZSBtYWtlSW1hZ2UoKQogICBmb3IgKGludCBpID0gMDsgaSA8PSBpbWFnZV9zaXplOyBpKyspCiAg
IHsKLSAgICBpbWFnZVtpXS5jID0gMHhmZjsgLy8nICc7Ci0gICAgaW1hZ2VbaV0uZiA9IDB4ZmY7
IC8vREVGQVVMVF9GT1JFX0NPTE9SOwotICAgIGltYWdlW2ldLmIgPSAweGZmOyAvL0RFRkFVTFRf
QkFDS19DT0xPUjsKLSAgICBpbWFnZVtpXS5yID0gMHhmZjsgLy9ERUZBVUxUX1JFTkRJVElPTjsK
KyAgICBpbWFnZVtpXS5jID0gJyAnOworICAgIGltYWdlW2ldLmYgPSBjYWNvbChDT19ERlQsREVG
QVVMVF9GT1JFX0NPTE9SKTsKKyAgICBpbWFnZVtpXS5iID0gY2Fjb2woQ09fREZULERFRkFVTFRf
QkFDS19DT0xPUik7CisgICAgaW1hZ2VbaV0uciA9IERFRkFVTFRfUkVORElUSU9OOwogICB9CiB9
CiAKLS0tIGtvbnNvbGUvVEVtdVZ0MTAyLmNwcC5vcmlnCTIwMDYtMDUtMTYgMDE6MTE6MDEuMDAw
MDAwMDAwICswMjAwCisrKyBrb25zb2xlL1RFbXVWdDEwMi5jcHAJMjAwNi0wNi0yNCAyMzoxMjo0
Ni4wMDAwMDAwMDAgKzAyMDAKQEAgLTM0NCw2ICszNDQsMTcgQEAKICAgICBmb3IgKGk9MDtpPD1h
cmdjO2krKykKICAgICBpZiAoIGVwcCggICAgICkpICB7IHRhdSggVFlfQ1NJX1BSKGNjLGFyZ3Zb
aV0pLCAgICAwLCAgIDApOyB9CiAgICAgZWxzZSBpZihlZ3QoICAgICkpICAgeyB0YXUoIFRZX0NT
SV9QRyhjYyAgICAgKSwgICAgMCwgICAwKTsgfSAvLyBzcGVjLiBjYXNlIGZvciBFU0NdPjBjIG9y
IEVTQ10+YworICAgIGVsc2UgaWYgKGNjID09ICdtJyAmJiBhcmdjIC0gaSA+PSA0ICYmIChhcmd2
W2ldID09IDM4IHx8IGFyZ3ZbaV0gPT0gNDgpICYmIGFyZ3ZbaSsxXSA9PSAyKQorICAgIHsgLy8g
RVNDWyAuLi4gNDg7Mjs8cmVkPjs8Z3JlZW4+OzxibHVlPiAuLi4gbSAtb3ItIEVTQ1sgLi4uIDM4
OzI7PHJlZD47PGdyZWVuPjs8Ymx1ZT4gLi4uIG0KKyAgICAgIGkgKz0gMjsKKyAgICAgIHRhdSgg
VFlfQ1NJX1BTKGNjLCBhcmd2W2ktMl0pLCBDT19SR0IsIChhcmd2W2ldIDw8IDE2KSB8IChhcmd2
W2krMV0gPDwgOCkgfCBhcmd2W2krMl0pOworICAgICAgaSArPSAyOworICAgIH0KKyAgICBlbHNl
IGlmIChjYyA9PSAnbScgJiYgYXJnYyAtIGkgPj0gMiAmJiAoYXJndltpXSA9PSAzOCB8fCBhcmd2
W2ldID09IDQ4KSAmJiBhcmd2W2krMV0gPT0gNSkKKyAgICB7IC8vIEVTQ1sgLi4uIDQ4OzU7PGlu
ZGV4PiAuLi4gbSAtb3ItIEVTQ1sgLi4uIDM4OzU7PGluZGV4PiAuLi4gbQorICAgICAgaSArPSAy
OworICAgICAgdGF1KCBUWV9DU0lfUFMoY2MsIGFyZ3ZbaS0yXSksIENPXzI1NiwgYXJndltpXSk7
CisgICAgfQogICAgIGVsc2UgICAgICAgICAgICAgIHsgdGF1KCBUWV9DU0lfUFMoY2MsYXJndltp
XSksICAgIDAsICAgMCk7IH0KICAgICByZXNldFRva2VuKCk7CiAgIH0KQEAgLTU0Myw0MyArNTU0
LDQ5IEBACiAgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDI1KSA6IHNjci0+cmVzZXRSZW5kaXRp
b24gICAgIChSRV9CTElOSyAgICApOyBicmVhazsKICAgICBjYXNlIFRZX0NTSV9QUygnbScsICAg
MjcpIDogc2NyLT5yZXNldFJlbmRpdGlvbiAgICAgKFJFX1JFVkVSU0UgICk7IGJyZWFrOwogCi0g
ICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDMwKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAg
KCAgICAgICAgIDApOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzEpIDogc2Ny
LT5zZXRGb3JlQ29sb3IgICAgICAgICAoICAgICAgICAgMSk7IGJyZWFrOwotICAgIGNhc2UgVFlf
Q1NJX1BTKCdtJywgICAzMikgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgICggICAgICAgICAy
KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDMzKSA6IHNjci0+c2V0Rm9yZUNv
bG9yICAgICAgICAgKCAgICAgICAgIDMpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScs
ICAgMzQpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoICAgICAgICAgNCk7IGJyZWFrOwot
ICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzNSkgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAg
ICggICAgICAgICA1KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDM2KSA6IHNj
ci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgIDYpOyBicmVhazsKLSAgICBjYXNlIFRZ
X0NTSV9QUygnbScsICAgMzcpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoICAgICAgICAg
Nyk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzOSkgOiBzY3ItPnNldEZvcmVD
b2xvclRvRGVmYXVsdCggICAgICAgICAgKTsgYnJlYWs7Ci0KLSAgICBjYXNlIFRZX0NTSV9QUygn
bScsICAgNDApIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAgMCk7IGJyZWFr
OwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0MSkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAg
ICAgICggICAgICAgICAxKTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQyKSA6
IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKCAgICAgICAgIDIpOyBicmVhazsKLSAgICBjYXNl
IFRZX0NTSV9QUygnbScsICAgNDMpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAg
ICAgMyk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0NCkgOiBzY3ItPnNldEJh
Y2tDb2xvciAgICAgICAgICggICAgICAgICA0KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMo
J20nLCAgIDQ1KSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKCAgICAgICAgIDUpOyBicmVh
azsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgNDYpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAg
ICAgICAoICAgICAgICAgNik7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0Nykg
OiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgICA3KTsgYnJlYWs7Ci0gICAgY2Fz
ZSBUWV9DU0lfUFMoJ20nLCAgIDQ5KSA6IHNjci0+c2V0QmFja0NvbG9yVG9EZWZhdWx0KCAgICAg
ICAgICApOyBicmVhazsKLQotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA5MCkgOiBzY3ItPnNl
dEZvcmVDb2xvciAgICAgICAgICggICAgICAgICA4KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lf
UFMoJ20nLCAgIDkxKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgIDkpOyBi
cmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgOTIpIDogc2NyLT5zZXRGb3JlQ29sb3Ig
ICAgICAgICAoICAgICAgICAxMCk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA5
MykgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgICggICAgICAgIDExKTsgYnJlYWs7Ci0gICAg
Y2FzZSBUWV9DU0lfUFMoJ20nLCAgIDk0KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAg
ICAgICAgMTIpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgOTUpIDogc2NyLT5z
ZXRGb3JlQ29sb3IgICAgICAgICAoICAgICAgICAxMyk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJ
X1BTKCdtJywgICA5NikgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgICggICAgICAgIDE0KTsg
YnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDk3KSA6IHNjci0+c2V0Rm9yZUNvbG9y
ICAgICAgICAgKCAgICAgICAgMTUpOyBicmVhazsKLQotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywg
IDEwMCkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgICA4KTsgYnJlYWs7Ci0g
ICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTAxKSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAg
KCAgICAgICAgIDkpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAxMDIpIDogc2Ny
LT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAxMCk7IGJyZWFrOwotICAgIGNhc2UgVFlf
Q1NJX1BTKCdtJywgIDEwMykgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgIDEx
KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTA0KSA6IHNjci0+c2V0QmFja0Nv
bG9yICAgICAgICAgKCAgICAgICAgMTIpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScs
ICAxMDUpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAxMyk7IGJyZWFrOwot
ICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgIDEwNikgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAg
ICggICAgICAgIDE0KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTA3KSA6IHNj
ci0+c2V0QmFja0NvbG9yICAgICAgICAgKCAgICAgICAgMTUpOyBicmVhazsKKyAgICBjYXNlIFRZ
X0NTSV9QUygnbScsICAgMzApIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAg
MCk7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzMSkgOiBzY3ItPnNldEZvcmVD
b2xvciAgICAgICAgIChDT19TWVMsICAxKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20n
LCAgIDMyKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywgIDIpOyBicmVhazsK
KyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzMpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAg
ICAoQ09fU1lTLCAgMyk7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzNCkgOiBz
Y3ItPnNldEZvcmVDb2xvciAgICAgICAgIChDT19TWVMsICA0KTsgYnJlYWs7CisgICAgY2FzZSBU
WV9DU0lfUFMoJ20nLCAgIDM1KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywg
IDUpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzYpIDogc2NyLT5zZXRGb3Jl
Q29sb3IgICAgICAgICAoQ09fU1lTLCAgNik7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdt
JywgICAzNykgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgIChDT19TWVMsICA3KTsgYnJlYWs7
CisKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzgpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAg
ICAgICAocCwgICAgICAgcSk7IGJyZWFrOworCisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDM5
KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKENPX0RGVCwgIDApOyBicmVhazsKKworICAg
IGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0MCkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgIChD
T19TWVMsICAwKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQxKSA6IHNjci0+
c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgIDEpOyBicmVhazsKKyAgICBjYXNlIFRZX0NT
SV9QUygnbScsICAgNDIpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lTLCAgMik7
IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0MykgOiBzY3ItPnNldEJhY2tDb2xv
ciAgICAgICAgIChDT19TWVMsICAzKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAg
IDQ0KSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgIDQpOyBicmVhazsKKyAg
ICBjYXNlIFRZX0NTSV9QUygnbScsICAgNDUpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAo
Q09fU1lTLCAgNSk7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0NikgOiBzY3It
PnNldEJhY2tDb2xvciAgICAgICAgIChDT19TWVMsICA2KTsgYnJlYWs7CisgICAgY2FzZSBUWV9D
U0lfUFMoJ20nLCAgIDQ3KSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgIDcp
OyBicmVhazsKKworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0OCkgOiBzY3ItPnNldEJhY2tD
b2xvciAgICAgICAgIChwLCAgICAgICBxKTsgYnJlYWs7CisKKyAgICBjYXNlIFRZX0NTSV9QUygn
bScsICAgNDkpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fREZULCAgMSk7IGJyZWFr
OworCisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDkwKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAg
ICAgICAgKENPX1NZUywgIDgpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgOTEp
IDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAgOSk7IGJyZWFrOworICAgIGNh
c2UgVFlfQ1NJX1BTKCdtJywgICA5MikgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgIChDT19T
WVMsIDEwKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDkzKSA6IHNjci0+c2V0
Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywgMTEpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9Q
UygnbScsICAgOTQpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAxMik7IGJy
ZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA5NSkgOiBzY3ItPnNldEZvcmVDb2xvciAg
ICAgICAgIChDT19TWVMsIDEzKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDk2
KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywgMTQpOyBicmVhazsKKyAgICBj
YXNlIFRZX0NTSV9QUygnbScsICAgOTcpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09f
U1lTLCAxNSk7IGJyZWFrOworCisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTAwKSA6IHNjci0+
c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgIDgpOyBicmVhazsKKyAgICBjYXNlIFRZX0NT
SV9QUygnbScsICAxMDEpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lTLCAgOSk7
IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgIDEwMikgOiBzY3ItPnNldEJhY2tDb2xv
ciAgICAgICAgIChDT19TWVMsIDEwKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAg
MTAzKSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgMTEpOyBicmVhazsKKyAg
ICBjYXNlIFRZX0NTSV9QUygnbScsICAxMDQpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAo
Q09fU1lTLCAxMik7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgIDEwNSkgOiBzY3It
PnNldEJhY2tDb2xvciAgICAgICAgIChDT19TWVMsIDEzKTsgYnJlYWs7CisgICAgY2FzZSBUWV9D
U0lfUFMoJ20nLCAgMTA2KSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgMTQp
OyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAxMDcpIDogc2NyLT5zZXRCYWNrQ29s
b3IgICAgICAgICAoQ09fU1lTLCAxNSk7IGJyZWFrOwogCiAgICAgY2FzZSBUWV9DU0lfUFMoJ24n
LCAgICA1KSA6ICAgICAgcmVwb3J0U3RhdHVzICAgICAgICAgKCAgICAgICAgICApOyBicmVhazsK
ICAgICBjYXNlIFRZX0NTSV9QUygnbicsICAgIDYpIDogICAgICByZXBvcnRDdXJzb3JQb3NpdGlv
biAoICAgICAgICAgICk7IGJyZWFrOwotLS0gdGVzdHMvMjU2Y29sb3JzLnBsLm9yaWcJMjAwNi0w
Ni0yNCAyMDoxMTo1MS4wMDAwMDAwMDAgKzAyMDAKKysrIHRlc3RzLzI1NmNvbG9ycy5wbAkyMDA2
LTA2LTI0IDIwOjE0OjA4LjAwMDAwMDAwMCArMDIwMApAQCAtMCwwICsxLDQxIEBACisjIS91c3Iv
YmluL3BlcmwKKyMgQXV0aG9yOiBUb2RkIExhcmFzb24gPGp0bEBtb2xlaGlsbC5vcmc+CisjICRY
RnJlZTg2OiB4Yy9wcm9ncmFtcy94dGVybS92dHRlc3RzLzI1NmNvbG9yczIucGwsdiAxLjEgMTk5
OS8wNy8xMSAwODo0OTo1NCBkYXdlcyBFeHAgJAorCisjIGRpc3BsYXkgYmFjayBncm91bmQgY29s
b3JzCisKK2ZvciAoJGZnYmcgPSAzODsgJGZnYmcgPD0gNDg7ICRmZ2JnICs9MTApIHsKKworIyBm
aXJzdCB0aGUgc3lzdGVtIG9uZXM6CitwcmludCAiU3lzdGVtIGNvbG9yczpcbiI7Citmb3IgKCRj
b2xvciA9IDA7ICRjb2xvciA8IDg7ICRjb2xvcisrKSB7CisgICAgcHJpbnQgIlx4MWJbJHtmZ2Jn
fTs1OyR7Y29sb3J9bTo6IjsKK30KK3ByaW50ICJceDFiWzBtXG4iOworZm9yICgkY29sb3IgPSA4
OyAkY29sb3IgPCAxNjsgJGNvbG9yKyspIHsKKyAgICBwcmludCAiXHgxYlske2ZnYmd9OzU7JHtj
b2xvcn1tOjoiOworfQorcHJpbnQgIlx4MWJbMG1cblxuIjsKKworIyBub3cgdGhlIGNvbG9yIGN1
YmUKK3ByaW50ICJDb2xvciBjdWJlLCA2eDZ4NjpcbiI7Citmb3IgKCRncmVlbiA9IDA7ICRncmVl
biA8IDY7ICRncmVlbisrKSB7CisgICAgZm9yICgkcmVkID0gMDsgJHJlZCA8IDY7ICRyZWQrKykg
eworCWZvciAoJGJsdWUgPSAwOyAkYmx1ZSA8IDY7ICRibHVlKyspIHsKKwkgICAgJGNvbG9yID0g
MTYgKyAoJHJlZCAqIDM2KSArICgkZ3JlZW4gKiA2KSArICRibHVlOworCSAgICBwcmludCAiXHgx
Ylske2ZnYmd9OzU7JHtjb2xvcn1tOjoiOworCX0KKwlwcmludCAiXHgxYlswbSAiOworICAgIH0K
KyAgICBwcmludCAiXG4iOworfQorCisKKyMgbm93IHRoZSBncmF5c2NhbGUgcmFtcAorcHJpbnQg
IkdyYXlzY2FsZSByYW1wOlxuIjsKK2ZvciAoJGNvbG9yID0gMjMyOyAkY29sb3IgPCAyNTY7ICRj
b2xvcisrKSB7CisgICAgcHJpbnQgIlx4MWJbJHtmZ2JnfTs1OyR7Y29sb3J9bTo6IjsKK30KK3By
aW50ICJceDFiWzBtXG4iOworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16793</attachid>
            <date>2006-06-26 17:47:28 +0000</date>
            <delta_ts>2006-06-26 17:47:28 +0000</delta_ts>
            <desc>colorspaces-002.patch</desc>
            <filename>colorspaces-002.patch</filename>
            <type>text/x-diff</type>
            <size>27011</size>
            <attacher name="Lars Doelle">lars.doelle</attacher>
            
              <data encoding="base64">LS0tIFJFQURNRS5tb3JlQ29sb3JzLm9yaWcJMjAwNi0wNi0yNSAwMDowMjo1NS4wMDAwMDAwMDAg
KzAyMDAKKysrIFJFQURNRS5tb3JlQ29sb3JzCTIwMDYtMDYtMjYgMTc6MDk6NTEuMDAwMDAwMDAw
ICswMjAwCkBAIC0wLDAgKzEsOTggQEAKK1tSRUFETUUubW9yZUNvbG9yc10KKworVGhlIGtvbnNv
bGUgYWRvcHRlZCBzb21lIEVTQyBjb2RlcyBhbGxvd2luZyB0byB1c2UgZXh0ZW5kZWQKK2NvbG9y
IHNwYWNlcy4KKworVGhlcmUgaXMgYSBwcmVkZWZpbmVkIDI1NiBjb2xvciBzcGFjZSBjb21wYXRp
YmxlIHdpdGggaGlzCit4dGVybSBzaXN0ZXIsIGFuZCwgZXZlbiBiZXlvbmQgdGhhdCwgYSAzLWJ5
dGUgUkdCIGNvbG9yIHNwYWNlLgorCitUaGUgRVNDIGNvZGVzIGFyZSBhcyBmb2xsb3dzOgorCisg
ICBFU0NbIC4uLiAzODsyOzxyPjs8Zz47PGI+IC4uLiBtICAgU2VsZWN0IFJHQiBmb3JlZ3JvdW5k
IGNvbG9yCisgICBFU0NbIC4uLiA0ODsyOzxyPjs8Zz47PGI+IC4uLiBtICAgU2VsZWN0IFJHQiBi
YWNrZ3JvdW5kIGNvbG9yCisKKyAgIEVTQ1sgLi4uIDM4OzU7PGk+IC4uLiBtICAgICAgIFNlbGVj
dCBpbmRleGVkIGZvcmVncm91bmQgY29sb3IKKyAgIEVTQ1sgLi4uIDQ4OzU7PGk+IC4uLiBtICAg
ICAgIFNlbGVjdCBpbmRleGVkIGJhY2tncm91bmQgY29sb3IKKworPHI+LDxnPiBhbmQgPGI+IGFy
ZSBlYWNoIHZhbHVlcyBpbiB0aGUgcmFuZ2Ugb2YgMC4uMjU1IGFuZAorcmVwcmVzZW50IHRoZSBi
cmlnaHRuZXNzIGFzIHVzdWFsIGZvciB0aGUgcmVzcGVjdGl2ZSBjb2xvci4KKworPGk+IGxpa2Vs
eSBpcyBhIHZhbHVlIGluIDAuLjI1NiwgYnV0IHJlcHJlc2VudHMgYW4gaW5kZXhlZAorY29sb3Ig
YXNzaWdubWVudCBjb21wb3NlZCBhcyBmb2xsb3dzOgorCisgIDAgLi4gIDE1IC0gU3lzdGVtIGNv
bG9yLCB0aGVzZSBhcmUgdGFrZW4gZnJvbSB0aGUgc2NoZW1hLgorIDE2IC4uIDIzMSAtIEZvcm1z
IGEgNng2eDYgUkdCIGNvbG9yIGN1YmUuCisyMzIgLi4gMjU1IC0gQSBncmF5IHNjYWxlIHJhbXAg
d2l0aG91dCBibGFjayBhbmQgd2hpdGUuCisKK1RyeSB0aGUgdGVzdHMvY29sb3Itc3BhY2VzLnBs
IHRvIHZpc3VhbGl6ZSB0aGUgYXNzaWdubWVudC4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Egbm90ZSBvbiBj
b25mb3JtYW5jZQorCitUaGVzZSBFU0MgY29kZXMgYnJlYWsgdGhlICJhc3NvY2lhdGl2aXR5IiBv
ZiBTR1IsIGJ1dCBhZnRlciBzb21lCityZXNlYXJjaCB0aGUgcmVzdWx0IGlzLCB0aGF0IHRoZSBz
dGFuZGFyZCBpdHNlbGYgaXMgYnJva2VuIGhlcmUuCisKK1RoZSBwZXJoYXBzIGJlc3QgY29kZXMg
ZHVlIHRvIEVDTUEtNDggd291bGQgcHJvYmFibHkgYmUgZS5nLgorMzg6Mjo8cj46PGc+OjxiPiwg
aS5lLiBjb25zaXN0ZW50bHkgYSBjb2xvbiBpbnN0ZWFkIG9mIGEgc2VtaWNvbG9uLgorQnV0IGFw
cGFyZW50bHksIHRoaXMgaXMgZGVmaW5lZCBkaWZmZXJlbnQgaW4gSVNPLTg2MTMgKHdoaWNoIGlz
CitpbmNsdWRlZCBhdCB0aGlzIHBsYWNlIGluIEVDTUEtNDgpLCBhY3R1YWxseSBicmVha2luZyBF
Q01BLTQ4LgorCitXZSBjYW5ub3QgaGVscCB0aGlzIGFuZCBpbXBsZW1lbnRlZCB0aGUgY29kZXMg
YXMgYWJvdmUsIHdoaWNoCitpcyBhIGJhbGFuY2VkIGRlY2lzaW9uLgorCitGb3IgMjU2IGNvbG9y
IG1vZGUsIHRoaXMgaXMgY29tcGF0aWJsZSB3aXRoIHh0ZXJtIGFuZCBwZXJoYXBzCit3aXRoIG90
aGVyIHh0ZXJtIGNvbXBhdGlibGUgdGVybWluYWwgZW11bGF0aW9ucy4KKworCit8IC0tLS0tLS0g
QWRkaXRpb25hbCBDb21tZW50cyBGcm9tIGF3ZW5kdCBwdXRlcmdlZWsgY29tICAyMDA2LTA2LTA3
IDA3OjQwIC0tLS0tLS0KK3wgPiBTbyBhIHBhcmFtZXRlciBzdWJzdHJpbmcgaXMgMC05IGFuZCB0
aGUgY29sb24uIFRoZSBzZW1pY29sb24gc2VwYXJhdGVzCit8ID4gc3ViLXBhcmFtZXRlcnMuIFRo
dXMgNDg6NTo8Q29sb3I+IHdvdWxkIGJlIG9uZSBzdWItcGFyYW1ldGVyLCBhbmQKK3wgPiA0ODs1
OzxDb2xvcj4gbWFueSBpbmRlcGVuZGVudCwgZWFjaCBoYXZpbmcgYW4gaW5kZXBlbmRlbnQgbWVh
bmluZyBpbiBjYXNlCit8ID4gb2YgYSBzZWxlY3RpdmUgcGFyYW1ldGVyLgorfCAKK3wgCit8IEkg
dGhpbmsgeW91IG1heSBiZSBvbnRvIHNvbWV0aGluZyBoZXJlIHdpdGggdGhlIGNvbG9ucy4uLiBJ
IHdhcyBhYmxlIHRvIGZpbmQgCit8IElUVSBULjQxNiAod2hpY2ggaXMgdGhlIHNhbWUgYXMgSVNP
IDg2MTMtNikgYW5kIGl0IHNheXM6Cit8IAorfCAtLS0gc25pcCAtLS0KK3wgCit8IFRoZSBwYXJh
bWV0ZXIgdmFsdWVzIDM4IGFuZCA0OCBhcmUgZm9sbG93ZWQgYnkgYSBwYXJhbWV0ZXIgc3Vic3Ry
aW5nIHVzZWQgdG8gCit8IHNlbGVjdCBlaXRoZXIgdGhlIGNoYXJhY3RlciBmb3JlZ3JvdW5kID9j
b2xvdXIgdmFsdWU/IG9yIHRoZSBjaGFyYWN0ZXIgCit8IGJhY2tncm91bmQgP2NvbG91ciB2YWx1
ZT8uCit8IAorfCBBIHBhcmFtZXRlciBzdWJzdHJpbmcgZm9yIHZhbHVlcyAzOCBvciA0OCBtYXkg
YmUgZGl2aWRlZCBieSBvbmUgb3IgbW9yZSAKK3wgc2VwYXJhdG9ycyAoMDMvMTApIGludG8gcGFy
YW1ldGVyIGVsZW1lbnRzLCBkZW5vdGVkIGFzIFBlLiBUaGUgZm9ybWF0IG9mIHN1Y2ggCit8IGEg
cGFyYW1ldGVyIHN1Yi1zdHJpbmcgaXMgaW5kaWNhdGVkIGFzOgorfCAKK3wgICAgICAgICAgUGUg
OiBQIC4uLgorfCAKK3wgRWFjaCBwYXJhbWV0ZXIgZWxlbWVudCBjb25zaXN0cyBvZiB6ZXJvLCBv
bmUgb3IgbW9yZSBiaXQgY29tYmluYXRpb25zIGZyb20gCit8IDAzLzAwIHRvIDAzLzA5LCByZXBy
ZXNlbnRpbmcgdGhlIGRpZ2l0cyAwIHRvIDkuIEFuIGVtcHR5IHBhcmFtZXRlciBlbGVtZW50IAor
fCByZXByZXNlbnRzIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIgZWxlbWVudC4g
RW1wdHkgcGFyYW1ldGVyIAorfCBlbGVtZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBwYXJhbWV0ZXIg
c3Vic3RyaW5nIG5lZWQgbm90IGJlIGluY2x1ZGVkLgorfCAKK3wgVGhlIGZpcnN0IHBhcmFtZXRl
ciBlbGVtZW50IGluZGljYXRlcyBhIGNob2ljZSBiZXR3ZWVuOgorfCAKK3wgICAgICAgICAgICAw
ICAgaW1wbGVtZW50YXRpb24gZGVmaW5lZCAob25seSBhcHBsaWNhYmxlIGZvciB0aGUgY2hhcmFj
dGVyIAorfCBmb3JlZ3JvdW5kIGNvbG91cikKK3wgICAgICAgICAgICAxICAgdHJhbnNwYXJlbnQ7
Cit8ICAgICAgICAgICAgMiAgIGRpcmVjdCBjb2xvdXIgaW4gUkdCIHNwYWNlOworfCAgICAgICAg
ICAgIDMgICBkaXJlY3QgY29sb3VyIGluIENNWSBzcGFjZTsKK3wgICAgICAgICAgICA0ICAgZGly
ZWN0IGNvbG91ciBpbiBDTVlLIHNwYWNlOworfCAgICAgICAgICAgIDUgICBpbmRleGVkIGNvbG91
ci4KK3wgCit8IElmIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaGFzIHRoZSB2YWx1ZSAwIG9yIDEsIHRo
ZXJlIGFyZSBubyBhZGRpdGlvbmFsIHBhcmFtZXRlciAKK3wgZWxlbWVudHMuCit8IAorfCBJZiB0
aGUgZmlyc3QgcGFyYW1ldGVyIGVsZW1lbnQgaGFzIHRoZSB2YWx1ZSA1LCB0aGVuIHRoZXJlIGlz
IGEgc2Vjb25kIAorfCBwYXJhbWV0ZXIgZWxlbWVudCBzcGVjaWZ5aW5nIHRoZSBpbmRleCBpbnRv
IHRoZSBjb2xvdXIgdGFibGUgZ2l2ZW4gYnkgdGhlIAorfCBhdHRyaWJ1dGUgP2NvbnRlbnQgY29s
b3VyIHRhYmxlPyBhcHBseWluZyB0byB0aGUgb2JqZWN0IHdpdGggd2hpY2ggdGhlIAorfCBjb250
ZW50IGlzIGFzc29jaWF0ZWQuCit8IAorfCAtLS0gc25pcCAtLS0KK3wgCit8IFRoZSBzZXBhcmF0
b3IgY2hhcmFjdGVyIDAzLzEwIHRoZXkgdXNlIGlzIGEgY29sb24sIG5vdCBhIHNlbWljb2xvbi4u
LiBJIHdvbmRlciAKK3wgaWYgdGhlIHh0ZXJtIGltcGxlbWVudGF0aW9uIHdhcyBiYXNlZCBvbiBh
biBpbXByb3BlciByZWFkaW5nIG9mIHRoZSBzdGFuZGFyZD8KK3wgCi0tLSBrb25zb2xlL1RFQ29t
bW9uLmgub3JpZwkyMDA2LTA2LTI1IDAwOjAyOjU1LjAwMDAwMDAwMCArMDIwMAorKysga29uc29s
ZS9URUNvbW1vbi5oCTIwMDYtMDYtMjYgMTY6NTk6MzUuMDAwMDAwMDAwICswMjAwCkBAIC0yNyw2
ICsyNywyNCBAQAogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVSU5UMTY7CiAjZW5kaWYKIAorLy8g
Q29sb3IgVGFibGUgRWxlbWVudHMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KKworLyohCisqLworc3RydWN0IENvbG9yRW50cnkKK3sKKyAgQ29sb3JFbnRy
eShRQ29sb3IgYywgYm9vbCB0ciwgYm9vbCBiKSA6IGNvbG9yKGMpLCB0cmFuc3BhcmVudCh0ciks
IGJvbGQoYikge30KKyAgQ29sb3JFbnRyeSgpIDogdHJhbnNwYXJlbnQoZmFsc2UpLCBib2xkKGZh
bHNlKSB7fSAvLyBkZWZhdWx0IGNvbnN0cnVjdG9ycworICB2b2lkIG9wZXJhdG9yPShjb25zdCBD
b2xvckVudHJ5JiByaHMpIHsgCisgICAgICAgY29sb3IgPSByaHMuY29sb3I7IAorICAgICAgIHRy
YW5zcGFyZW50ID0gcmhzLnRyYW5zcGFyZW50OyAKKyAgICAgICBib2xkID0gcmhzLmJvbGQ7IAor
ICB9CisgIFFDb2xvciBjb2xvcjsKKyAgYm9vbCAgIHRyYW5zcGFyZW50OyAvLyBpZiB1c2VkIG9u
IGJnCisgIGJvb2wgICBib2xkOyAgICAgICAgLy8gaWYgdXNlZCBvbiBmZworfTsKKwogLy8gQXR0
cmlidXRlZCBDaGFyYWN0ZXIgUmVwcmVzZW50YXRpb25zIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KIAogLy8gQ29sb3JzCkBAIC00Niw2ICs2NCwxMTUgQEAKICNkZWZpbmUgUkVfSU5U
RU5TSVZFICAgICAgICgxIDw8IDMpIC8vIFdpZGdldCBvbmx5CiAjZGVmaW5lIFJFX0NVUlNPUiAg
ICAgICAgICAoMSA8PCA0KQogCisKKy8qIGNhY29sIGlzIGEgdW5pb24gb2YgdGhlIHZhcmlvdXMg
Y29sb3Igc3BhY2VzLgorCisgICBBc3NpZ25tZW50IGlzIGFzIGZvbGxvd3M6CisKKyAgIFR5cGUg
IC0gU3BhY2UgICAgICAgIC0gVmFsdWVzCisKKyAgIDAgICAgIC0gVW5kZWZpbmVkICAgLSB1OiAg
MCwgICAgICB2OjAgICAgICAgIHc6MAorICAgMSAgICAgLSBEZWZhdWx0ICAgICAtIHU6ICAwLi4x
ICAgIHY6aW50ZW5zZSAgdzowCisgICAyICAgICAtIFN5c3RlbSAgICAgIC0gdTogIDAuLjcgICAg
djppbnRlbnNlICB3OjAKKyAgIDMgICAgIC0gSW5kZXgoMjU2KSAgLSB1OiAxNi4uMjU1ICB2OjAg
ICAgICAgIHc6MAorICAgNCAgICAgLSBSR0IgICAgICAgICAtIHU6ICAwLi4yNTUgIHY6MC4uMjU2
ICAgdzowLi4yNTYKKworICAgRGVmYXVsdCBjb2xvdXIgc3BhY2UgaGFzIHR3byBzZXBhcmF0ZSBj
b2xvdXJzLCBuYW1lbHkKKyAgIGRlZmF1bHQgZm9yZWdyb3VuZCBhbmQgZGVmYXVsdCBiYWNrZ3Jv
dW5kIGNvbG91ci4KKyovCisKKyNkZWZpbmUgQ09fVU5EIDAKKyNkZWZpbmUgQ09fREZUIDEKKyNk
ZWZpbmUgQ09fU1lTIDIKKyNkZWZpbmUgQ09fMjU2IDMKKyNkZWZpbmUgQ09fUkdCIDQKKworY2xh
c3MgY2Fjb2wKK3sKK3B1YmxpYzoKKyAgY2Fjb2woKTsKKyAgY2Fjb2woVUlOVDggc3BhY2UsIGlu
dCBjb2xvcik7CisgIFVJTlQ4IHQ7IC8vIGNvbG9yIHNwYWNlIGluZGljYXRvcgorICBVSU5UOCB1
OyAvLyB2YXJpb3VzIGJ5dGVzIHJlcHJlc2VudGluZyB0aGUgZGF0YSBpbiB0aGUgcmVzcGVjdGl2
ZSAuLi4KKyAgVUlOVDggdjsgLy8gLi4uIGNvbG9yIHNwYWNlLiBDKysgZG9lcyBub3QgZG8gdW5p
b25zLCBzbyB3ZSBjYW5ub3QgLi4uCisgIFVJTlQ4IHc7IC8vIC4uLiBleHByZXNzIG91cnNlbGZz
IGhlcmUsIHByb3Blcmx5LgorICB2b2lkIHRvZ2dsZUludGVuc2l2ZSgpOyAvLyBIYWNrIG9yIGhl
bHBlcj8KKyAgUUNvbG9yIGNvbG9yKGNvbnN0IENvbG9yRW50cnkqIGJhc2UpIGNvbnN0OworICBm
cmllbmQgYm9vbCBvcGVyYXRvciA9PSAoY2Fjb2wgYSwgY2Fjb2wgYik7CisgIGZyaWVuZCBib29s
IG9wZXJhdG9yICE9IChjYWNvbCBhLCBjYWNvbCBiKTsKK307CisKKyNpZiAwCitpbmxpbmUgY2Fj
b2w6OmNhY29sKFVJTlQ4IF90LCBVSU5UOCBfdSwgVUlOVDggX3YsIFVJTlQ4IF93KQorOiB0KF90
KSwgdShfdSksIHYoX3YpLCB3KF93KQoreworfQorI2Vsc2UKK2lubGluZSBjYWNvbDo6Y2Fjb2wo
VUlOVDggdHksIGludCBjbykKKzogdCh0eSksIHUoMCksIHYoMCksIHcoMCkKK3sKKyAgc3dpdGNo
ICh0KQorICB7CisgICAgY2FzZSBDT19VTkQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENPX0RGVDogdSA9IGNvJiAgMTsgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ09fU1lTOiB1ID0gY28mICA3OyB2ID0gKGNvPj4zKSYxOyAgICAg
YnJlYWs7CisgICAgY2FzZSBDT18yNTY6IHUgPSBjbyYyNTU7ICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENPX1JHQjogdSA9IGNvPj4xNjsgdiA9IGNvPj44OyB3ID0gY287IGJy
ZWFrOworICAgIGRlZmF1bHQgICAgOiB0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgIH0KK30KKyNlbmRpZgorCitpbmxpbmUgY2Fjb2w6OmNhY29sKCkgLy8gdW5kZWZpbmVk
LCByZWFsbHkKKzogdChDT19VTkQpLCB1KDApLCB2KDApLCB3KDApCit7Cit9CisKK2lubGluZSBi
b29sIG9wZXJhdG9yID09IChjYWNvbCBhLCBjYWNvbCBiKQoreyAKKyAgcmV0dXJuIGEudCA9PSBi
LnQgJiYgYS51ID09IGIudSAmJiBhLnYgPT0gYi52ICYmIGEudyA9PSBiLnc7Cit9CisKK2lubGlu
ZSBib29sIG9wZXJhdG9yICE9IChjYWNvbCBhLCBjYWNvbCBiKQoreworICByZXR1cm4gYS50ICE9
IGIudCB8fCBhLnUgIT0gYi51IHx8IGEudiAhPSBiLnYgfHwgYS53ICE9IGIudzsKK30KKworaW5s
aW5lIGNvbnN0IFFDb2xvciBjb2xvcjI1NihVSU5UOCB1LCBjb25zdCBDb2xvckVudHJ5KiBiYXNl
KQoreworICAvLyAgIDAuLiAxNjogc3lzdGVtIGNvbG9ycworICBpZiAodSA8ICAgOCkgcmV0dXJu
IGJhc2VbdSsyICAgICAgICAgICAgXS5jb2xvcjsgdSAtPSA4OworICBpZiAodSA8ICAgOCkgcmV0
dXJuIGJhc2VbdSsyK0JBU0VfQ09MT1JTXS5jb2xvcjsgdSAtPSA4OworCisgIC8vICAxNi4uMjMx
OiA2eDZ4NiByZ2IgY29sb3IgY3ViZQorICBpZiAodSA8IDIxNikgcmV0dXJuIFFDb2xvcigyNTUq
KCh1LzM2KSU2KS82LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUqKCh1LyA2KSU2
KS82LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUqKCh1LyAxKSU2KS82KTsgdSAt
PSAyMTY7CisgIAorICAvLyAyMzIuLjI1NTogZ3JheSwgbGVhdmluZyBvdXQgYmxhY2sgYW5kIHdo
aXRlCisgIGludCBncmF5ID0gdSoxMCs4OyByZXR1cm4gUUNvbG9yKGdyYXksZ3JheSxncmF5KTsK
K30KKworaW5saW5lIFFDb2xvciBjYWNvbDo6Y29sb3IoY29uc3QgQ29sb3JFbnRyeSogYmFzZSkg
Y29uc3QKK3sKKyAgc3dpdGNoICh0KQorICB7CisgICAgY2FzZSBDT19ERlQ6IHJldHVybiBiYXNl
W3UrMCsodj9CQVNFX0NPTE9SUzowKV0uY29sb3I7CisgICAgY2FzZSBDT19TWVM6IHJldHVybiBi
YXNlW3UrMisodj9CQVNFX0NPTE9SUzowKV0uY29sb3I7CisgICAgY2FzZSBDT18yNTY6IHJldHVy
biBjb2xvcjI1Nih1LGJhc2UpOworICAgIGNhc2UgQ09fUkdCOiByZXR1cm4gUUNvbG9yKHUsdix3
KTsKKyAgICBkZWZhdWx0ICAgIDogcmV0dXJuIFFDb2xvcigyNTUsMCwwKTsgLy8gZGlhZ25vc3Rp
YyBjYXRjaCBhbGwKKyAgfQorfQorCitpbmxpbmUgdm9pZCBjYWNvbDo6dG9nZ2xlSW50ZW5zaXZl
KCkKK3sKKyAgaWYgKHQgPT0gQ09fU1lTIHx8IHQgPT0gQ09fREZUKQorICB7CisgICAgdiA9ICF2
OworICB9Cit9CisKIC8qISBcY2xhc3MgY2EKICAqICBcYnJpZWYgYSBjaGFyYWN0ZXIgd2l0aCBy
ZW5kaXRpb24gYXR0cmlidXRlcy4KICovCkBAIC01NCwyMiArMTgxLDI4IEBACiB7CiBwdWJsaWM6
CiAgIGlubGluZSBjYShVSU5UMTYgX2MgPSAnICcsCi0gICAgICAgICAgICBVSU5UOCBfZiA9IERF
RkFVTFRfRk9SRV9DT0xPUiwKLSAgICAgICAgICAgIFVJTlQ4IF9iID0gREVGQVVMVF9CQUNLX0NP
TE9SLAotICAgICAgICAgICAgVUlOVDggX3IgPSBERUZBVUxUX1JFTkRJVElPTikKLSAgICAgICA6
IGMoX2MpLCBmKF9mKSwgYihfYiksIHIoX3IpIHt9CisgICAgICAgICAgICBjYWNvbCAgX2YgPSBj
YWNvbChDT19ERlQsREVGQVVMVF9GT1JFX0NPTE9SKSwKKyAgICAgICAgICAgIGNhY29sICBfYiA9
IGNhY29sKENPX0RGVCxERUZBVUxUX0JBQ0tfQ09MT1IpLAorICAgICAgICAgICAgVUlOVDggIF9y
ID0gREVGQVVMVF9SRU5ESVRJT04pCisgICAgICAgOiBjKF9jKSwgcihfciksIGYoX2YpLCBiKF9i
KSB7fQogcHVibGljOgogICBVSU5UMTYgYzsgLy8gY2hhcmFjdGVyCi0gIFVJTlQ4ICBmOyAvLyBm
b3JlZ3JvdW5kIGNvbG9yCi0gIFVJTlQ4ICBiOyAvLyBiYWNrZ3JvdW5kIGNvbG9yCiAgIFVJTlQ4
ICByOyAvLyByZW5kaXRpb24KKyAgY2Fjb2wgIGY7IC8vIGZvcmVncm91bmQgY29sb3IKKyAgY2Fj
b2wgIGI7IC8vIGJhY2tncm91bmQgY29sb3IKK3B1YmxpYzoKKyAgLy9GSVhNRTogZm9sbG93aW5n
IGEgaGFjayB0byBjb3BlIHdpdGggdmFyaW91cyBjb2xvciBzcGFjZXMKKyAgLy8gaXQgYnJpbmdz
IHRoZSByZW5kaXRpb24gcGlwZWxpbmUgZnVydGhlciBvdXQgb2YgYmFsYW5jZSwKKyAgLy8gd2hp
Y2ggaXQgd2FzIGFueXdheSBhcyB0aGUgcmVzdWx0IG9mIHZhcmlvdXMgYWRkaXRpb25zLgorICBi
b29sICAgaXNUcmFuc3BhcmVudChjb25zdCBDb2xvckVudHJ5KiBiYXNlKSBjb25zdDsKKyAgYm9v
bCAgIGlzQm9sZChjb25zdCBDb2xvckVudHJ5KiBiYXNlKSBjb25zdDsKIHB1YmxpYzoKICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IgPT0gKGNhIGEsIGNhIGIpOwogICBmcmllbmQgYm9vbCBvcGVyYXRv
ciAhPSAoY2EgYSwgY2EgYik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY2EgYSwg
Y2EgYikKLXsKK3sgCiAgIHJldHVybiBhLmMgPT0gYi5jICYmIGEuZiA9PSBiLmYgJiYgYS5iID09
IGIuYiAmJiBhLnIgPT0gYi5yOwogfQogCkBAIC03OCwyMCArMjExLDE2IEBACiAgIHJldHVybiBh
LmMgIT0gYi5jIHx8IGEuZiAhPSBiLmYgfHwgYS5iICE9IGIuYiB8fCBhLnIgIT0gYi5yOwogfQog
Ci0vKiEKLSovCi1zdHJ1Y3QgQ29sb3JFbnRyeQoraW5saW5lIGJvb2wgY2E6OmlzVHJhbnNwYXJl
bnQoY29uc3QgQ29sb3JFbnRyeSogYmFzZSkgY29uc3QKIHsKLSAgQ29sb3JFbnRyeShRQ29sb3Ig
YywgYm9vbCB0ciwgYm9vbCBiKSA6IGNvbG9yKGMpLCB0cmFuc3BhcmVudCh0ciksIGJvbGQoYikg
e30KLSAgQ29sb3JFbnRyeSgpIDogdHJhbnNwYXJlbnQoZmFsc2UpLCBib2xkKGZhbHNlKSB7fSAv
LyBkZWZhdWx0IGNvbnN0cnVjdG9ycwotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDb2xvckVudHJ5
JiByaHMpIHsgCi0gICAgICAgY29sb3IgPSByaHMuY29sb3I7IAotICAgICAgIHRyYW5zcGFyZW50
ID0gcmhzLnRyYW5zcGFyZW50OyAKLSAgICAgICBib2xkID0gcmhzLmJvbGQ7IAotICB9Ci0gIFFD
b2xvciBjb2xvcjsKLSAgYm9vbCAgIHRyYW5zcGFyZW50OyAvLyBpZiB1c2VkIG9uIGJnCi0gIGJv
b2wgICBib2xkOyAgICAgICAgLy8gaWYgdXNlZCBvbiBmZwotfTsKKyAgcmV0dXJuIChiLnQgPT0g
Q09fREZUKSAmJiBiYXNlW2IudSswKyhiLnY/QkFTRV9DT0xPUlM6MCldLnRyYW5zcGFyZW50Cisg
ICAgICB8fCAoYi50ID09IENPX1NZUykgJiYgYmFzZVtiLnUrMisoYi52P0JBU0VfQ09MT1JTOjAp
XS50cmFuc3BhcmVudDsKK30KKworaW5saW5lIGJvb2wgY2E6OmlzQm9sZChjb25zdCBDb2xvckVu
dHJ5KiBiYXNlKSBjb25zdAoreworICByZXR1cm4gKGIudCA9PSBDT19ERlQpICYmIGJhc2VbYi51
KzArKGIudj9CQVNFX0NPTE9SUzowKV0uYm9sZAorICAgICAgfHwgKGIudCA9PSBDT19TWVMpICYm
IGJhc2VbYi51KzIrKGIudj9CQVNFX0NPTE9SUzowKV0uYm9sZDsKK30KIAogI2VuZGlmIC8vIFRF
Q09NTU9OX0gKLS0tIGtvbnNvbGUvVEVTY3JlZW4uY3BwLm9yaWcJMjAwNi0wNS0wMiAwMTozMToz
Mi4wMDAwMDAwMDAgKzAyMDAKKysrIGtvbnNvbGUvVEVTY3JlZW4uY3BwCTIwMDYtMDYtMjQgMjM6
MTQ6MzUuMDAwMDAwMDAwICswMjAwCkBAIC02NywxNSArNjcsMTUgQEAKICAgICBoaXN0Q3Vyc29y
KDApLAogICAgIGhpc3QobmV3IEhpc3RvcnlTY3JvbGxOb25lKCkpLAogICAgIGN1WCgwKSwgY3VZ
KDApLAotICAgIGN1X2ZnKDApLCBjdV9iZygwKSwgY3VfcmUoMCksCisgICAgY3VfZmcoY2Fjb2wo
KSksIGN1X2JnKGNhY29sKCkpLCBjdV9yZSgwKSwKICAgICB0bWFyZ2luKDApLCBibWFyZ2luKDAp
LAogICAgIHRhYnN0b3BzKDApLAogICAgIHNlbF9iZWdpbigwKSwgc2VsX1RMKDApLCBzZWxfQlIo
MCksCiAgICAgc2VsX2J1c3koZmFsc2UpLAogICAgIGNvbHVtbm1vZGUoZmFsc2UpLAotICAgIGVm
X2ZnKDApLCBlZl9iZygwKSwgZWZfcmUoMCksCisgICAgZWZfZmcoY2Fjb2woKSksIGVmX2JnKGNh
Y29sKCkpLCBlZl9yZSgwKSwKICAgICBzYV9jdVgoMCksIHNhX2N1WSgwKSwKLSAgICBzYV9jdV9y
ZSgwKSwgc2FfY3VfZmcoMCksIHNhX2N1X2JnKDApLAorICAgIHNhX2N1X3JlKDApLCBzYV9jdV9m
ZyhjYWNvbCgpKSwgc2FfY3VfYmcoY2Fjb2woKSksCiAgICAgbGFzdFBvcygtMSkKIHsKICAgLyoK
QEAgLTQyNSw4ICs0MjUsOCBAQAogICAgIGZvciAoaW50IHggPSAwOyB4IDwgbmV3X2NvbHVtbnM7
IHgrKykKICAgICB7CiAgICAgICBuZXdpbWdbeSpuZXdfY29sdW1ucyt4XS5jID0gJyAnOwotICAg
ICAgbmV3aW1nW3kqbmV3X2NvbHVtbnMreF0uZiA9IERFRkFVTFRfRk9SRV9DT0xPUjsKLSAgICAg
IG5ld2ltZ1t5Km5ld19jb2x1bW5zK3hdLmIgPSBERUZBVUxUX0JBQ0tfQ09MT1I7CisgICAgICBu
ZXdpbWdbeSpuZXdfY29sdW1ucyt4XS5mID0gY2Fjb2woQ09fREZULERFRkFVTFRfRk9SRV9DT0xP
Uik7CisgICAgICBuZXdpbWdbeSpuZXdfY29sdW1ucyt4XS5iID0gY2Fjb2woQ09fREZULERFRkFV
TFRfQkFDS19DT0xPUik7CiAgICAgICBuZXdpbWdbeSpuZXdfY29sdW1ucyt4XS5yID0gREVGQVVM
VF9SRU5ESVRJT047CiAgICAgfQogICAgIG5ld3dyYXBwZWRbeV09ZmFsc2U7CkBAIC00OTQsNyAr
NDk0LDcgQEAKICovCiAKIHZvaWQgVEVTY3JlZW46OnJldmVyc2VSZW5kaXRpb24oY2EqIHApCi17
IFVJTlQ4IGYgPSBwLT5mOyBVSU5UOCBiID0gcC0+YjsKK3sgY2Fjb2wgZiA9IHAtPmY7IGNhY29s
IGIgPSBwLT5iOwogICBwLT5mID0gYjsgcC0+YiA9IGY7IC8vcC0+ciAmPSB+UkVfVFJBTlNQQVJF
TlQ7CiB9CiAKQEAgLTUxMywxMiArNTEzLDcgQEAKICAgICBlZl9iZyA9IGN1X2JnOwogICB9CiAg
IGlmIChjdV9yZSAmIFJFX0JPTEQpCi0gIHsKLSAgICBpZiAoZWZfZmcgPCBCQVNFX0NPTE9SUykK
LSAgICAgIGVmX2ZnICs9IEJBU0VfQ09MT1JTOwotICAgIGVsc2UKLSAgICAgIGVmX2ZnIC09IEJB
U0VfQ09MT1JTOwotICB9CisgICAgZWZfZmcudG9nZ2xlSW50ZW5zaXZlKCk7CiB9CiAKIC8qIQpA
QCAtNTQwLDcgKzUzNSw3IEBACiAKICAgaW50IHgseTsKICAgY2EqIG1lcmdlZCA9IChjYSopbWFs
bG9jKChsaW5lcypjb2x1bW5zKzEpKnNpemVvZihjYSkpOwotICBjYSBkZnQoJyAnLERFRkFVTFRf
Rk9SRV9DT0xPUixERUZBVUxUX0JBQ0tfQ09MT1IsREVGQVVMVF9SRU5ESVRJT04pOworICBjYSBk
ZnQoJyAnLGNhY29sKENPX0RGVCxERUZBVUxUX0ZPUkVfQ09MT1IpLGNhY29sKENPX0RGVCxERUZB
VUxUX0JBQ0tfQ09MT1IpLERFRkFVTFRfUkVORElUSU9OKTsKICAgbWVyZ2VkW2xpbmVzKmNvbHVt
bnNdID0gZGZ0OwogCiAvLyAga2REZWJ1ZygxMjExKSA8PCAiSW5HZXRDb29rZWRJbWFnZSIgPDwg
ZW5kbDsKQEAgLTEwODIsNDUgKzEwNzcsMjUgQEAKIAogdm9pZCBURVNjcmVlbjo6c2V0RGVmYXVs
dFJlbmRpdGlvbigpCiB7Ci0gIHNldEZvcmVDb2xvclRvRGVmYXVsdCgpOwotICBzZXRCYWNrQ29s
b3JUb0RlZmF1bHQoKTsKKyAgc2V0Rm9yZUNvbG9yKENPX0RGVCxERUZBVUxUX0ZPUkVfQ09MT1Ip
OworICBzZXRCYWNrQ29sb3IoQ09fREZULERFRkFVTFRfQkFDS19DT0xPUik7CiAgIGN1X3JlICAg
PSBERUZBVUxUX1JFTkRJVElPTjsKICAgZWZmZWN0aXZlUmVuZGl0aW9uKCk7CiB9CiAKIC8qIQog
Ki8KLQotdm9pZCBURVNjcmVlbjo6c2V0Rm9yZUNvbG9yKGludCBmZ2NvbG9yKQordm9pZCBURVNj
cmVlbjo6c2V0Rm9yZUNvbG9yKGludCBzcGFjZSwgaW50IGNvbG9yKQogewotICBjdV9mZyA9IChm
Z2NvbG9yJjcpKygoZmdjb2xvciY4KSA/IDQrOCA6IDIpOworICBjdV9mZyA9IGNhY29sKHNwYWNl
LCBjb2xvcik7CiAgIGVmZmVjdGl2ZVJlbmRpdGlvbigpOwogfQogCiAvKiEKICovCi0KLXZvaWQg
VEVTY3JlZW46OnNldEJhY2tDb2xvcihpbnQgYmdjb2xvcikKLXsKLSAgY3VfYmcgPSAoYmdjb2xv
ciY3KSsoKGJnY29sb3ImOCkgPyA0KzggOiAyKTsKLSAgZWZmZWN0aXZlUmVuZGl0aW9uKCk7Ci19
Ci0KLS8qIQotKi8KLQotdm9pZCBURVNjcmVlbjo6c2V0QmFja0NvbG9yVG9EZWZhdWx0KCkKLXsK
LSAgY3VfYmcgPSBERUZBVUxUX0JBQ0tfQ09MT1I7Ci0gIGVmZmVjdGl2ZVJlbmRpdGlvbigpOwot
fQotCi0vKiEKLSovCi0KLXZvaWQgVEVTY3JlZW46OnNldEZvcmVDb2xvclRvRGVmYXVsdCgpCit2
b2lkIFRFU2NyZWVuOjpzZXRCYWNrQ29sb3IoaW50IHNwYWNlLCBpbnQgY29sb3IpCiB7Ci0gIGN1
X2ZnID0gREVGQVVMVF9GT1JFX0NPTE9SOworICBjdV9iZyA9IGNhY29sKHNwYWNlLCBjb2xvcik7
CiAgIGVmZmVjdGl2ZVJlbmRpdGlvbigpOwogfQogCi0tLSBrb25zb2xlL1RFU2NyZWVuLmgub3Jp
ZwkyMDA1LTA4LTE4IDExOjUzOjE2LjAwMDAwMDAwMCArMDIwMAorKysga29uc29sZS9URVNjcmVl
bi5oCTIwMDYtMDYtMjQgMjM6MTM6NDguMDAwMDAwMDAwICswMjAwCkBAIC0xMTAsMTIgKzExMCwx
MSBAQAogICAgIC8vCiAgICAgdm9pZCBzZXRSZW5kaXRpb24gIChpbnQgcmVuZGl0aW9uKTsKICAg
ICB2b2lkIHJlc2V0UmVuZGl0aW9uKGludCByZW5kaXRpb24pOwotICAgIHZvaWQgc2V0Rm9yZUNv
bG9yICAoaW50IGZnY29sb3IpOwotICAgIHZvaWQgc2V0QmFja0NvbG9yICAoaW50IGJnY29sb3Ip
OworICAgIC8vCisgICAgdm9pZCBzZXRGb3JlQ29sb3IgIChpbnQgc3BhY2UsIGludCBjb2xvcik7
CisgICAgdm9pZCBzZXRCYWNrQ29sb3IgIChpbnQgc3BhY2UsIGludCBjb2xvcik7CiAgICAgLy8K
ICAgICB2b2lkIHNldERlZmF1bHRSZW5kaXRpb24oKTsKLSAgICB2b2lkIHNldEZvcmVDb2xvclRv
RGVmYXVsdCgpOwotICAgIHZvaWQgc2V0QmFja0NvbG9yVG9EZWZhdWx0KCk7CiAgICAgLy8KICAg
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8KQEAgLTIx
OCw4ICsyMTcsOCBAQAogCiAgICAgLy8gY3Vyc29yIGNvbG9yIGFuZCByZW5kaXRpb24gaW5mbwog
Ci0gICAgVUlOVDggY3VfZmc7ICAgICAgLy8gZm9yZWdyb3VuZAotICAgIFVJTlQ4IGN1X2JnOyAg
ICAgIC8vIGJhY2tncm91bmQKKyAgICBjYWNvbCBjdV9mZzsgICAgICAvLyBmb3JlZ3JvdW5kCisg
ICAgY2Fjb2wgY3VfYmc7ICAgICAgLy8gYmFja2dyb3VuZAogICAgIFVJTlQ4IGN1X3JlOyAgICAg
IC8vIHJlbmRpdGlvbgogCiAgICAgLy8gbWFyZ2lucyAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNDUs
OCArMjQ0LDggQEAKIAogICAgIC8vIGVmZmVjdGl2ZSBjb2xvcnMgYW5kIHJlbmRpdGlvbiAtLS0t
LS0tLS0tLS0KIAotICAgIFVJTlQ4IGVmX2ZnOyAgICAgIC8vIFRoZXNlIGFyZSBkZXJpdmVkIGZy
b20KLSAgICBVSU5UOCBlZl9iZzsgICAgICAvLyB0aGUgY3VfKiB2YXJpYWJsZXMgYWJvdmUKKyAg
ICBjYWNvbCBlZl9mZzsgICAgICAvLyBUaGVzZSBhcmUgZGVyaXZlZCBmcm9tCisgICAgY2Fjb2wg
ZWZfYmc7ICAgICAgLy8gdGhlIGN1XyogdmFyaWFibGVzIGFib3ZlCiAgICAgVUlOVDggZWZfcmU7
ICAgICAgLy8gdG8gc3BlZWQgdXAgb3BlcmF0aW9uCiAKICAgICAvLwpAQCAtMjYxLDggKzI2MCw4
IEBACiAgICAgLy8gcmVuZGl0aW9uIGluZm8KIAogICAgIFVJTlQ4IHNhX2N1X3JlOwotICAgIFVJ
TlQ4IHNhX2N1X2ZnOwotICAgIFVJTlQ4IHNhX2N1X2JnOworICAgIGNhY29sIHNhX2N1X2ZnOwor
ICAgIGNhY29sIHNhX2N1X2JnOwogICAgIAogICAgIC8vIGxhc3QgcG9zaXRpb24gd2hlcmUgd2Ug
YWRkZWQgYSBjaGFyYWN0ZXIKICAgICBpbnQgbGFzdFBvczsKLS0tIGtvbnNvbGUvVEVXaWRnZXQu
Y3BwLm9yaWcJMjAwNS0wOC0xOCAxMTo1MzoxNi4wMDAwMDAwMDAgKzAyMDAKKysrIGtvbnNvbGUv
VEVXaWRnZXQuY3BwCTIwMDYtMDYtMjQgMjM6MjE6MzguMDAwMDAwMDAwICswMjAwCkBAIC01ODYs
NyArNTg2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcmIHN0ciwgY29u
c3QgY2EgKmF0dHIsIGJvb2wgcG0sIGJvb2wgY2xlYXIpCiB7CiAgIGludCBhID0gZm9udF9hICsg
bV9saW5lU3BhY2luZyAvIDI7Ci0gIFFDb2xvciBmQ29sb3IgPSBwcmludGVyRnJpZW5kbHkgPyBR
dDo6YmxhY2sgOiBjb2xvcl90YWJsZVthdHRyLT5mXS5jb2xvcjsKKyAgUUNvbG9yIGZDb2xvciA9
IHByaW50ZXJGcmllbmRseSA/IFF0OjpibGFjayA6IGF0dHItPmYuY29sb3IoY29sb3JfdGFibGUp
OworICBRQ29sb3IgYkNvbG9yID0gYXR0ci0+Yi5jb2xvcihjb2xvcl90YWJsZSk7CiAgIFFTdHJp
bmcgZHJhd3N0cjsKIAogICBpZiAoKGF0dHItPnIgJiBSRV9DVVJTT1IpICYmICFpc1ByaW50aW5n
KQpAQCAtNTk1LDcgKzU5Niw3IEBACiAgIC8vIFBhaW50IGJhY2tncm91bmQKICAgaWYgKCFwcmlu
dGVyRnJpZW5kbHkpCiAgIHsKLSAgICBpZiAoY29sb3JfdGFibGVbYXR0ci0+Yl0udHJhbnNwYXJl
bnQpCisgICAgaWYgKGF0dHItPmlzVHJhbnNwYXJlbnQoY29sb3JfdGFibGUpKQogICAgIHsKICAg
ICAgIGlmIChwbSkKICAgICAgICAgcGFpbnQuc2V0QmFja2dyb3VuZE1vZGUoIFRyYW5zcGFyZW50
TW9kZSApOwpAQCAtNjA0LDEyICs2MDUsMTIgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgIGlmIChwbSB8fCBjb2xvcl90YWJsZVthdHRyLT5iXS5jb2xvciAhPSBjb2xvcl90YWJsZVsg
Y29sb3JzU3dhcHBlZCA/IERFRkFVTFRfRk9SRV9DT0xPUiA6IERFRkFVTFRfQkFDS19DT0xPUiBd
LmNvbG9yCi0gICAgICAgICAgfHwgY2xlYXIgfHwgKGJsaW5raW5nICYmIChhdHRyLT5yICYgUkVf
QkxJTkspKSkKKyAgICAgIGlmIChwbSB8fCBjbGVhciB8fCAoYmxpbmtpbmcgJiYgKGF0dHItPnIg
JiBSRV9CTElOSykpIHx8CisgICAgICAgICAgYXR0ci0+YiA9PSBjYWNvbChDT19ERlQsIGNvbG9y
c1N3YXBwZWQgPyBERUZBVUxUX0ZPUkVfQ09MT1IgOiBERUZBVUxUX0JBQ0tfQ09MT1IpICkKIAog
ICAgICAgICAvLyBkcmF3IGJhY2tncm91bmQgY29sb3JzIHdpdGggNzUlIG9wYWNpdHkKICAgICAg
ICAgaWYgKCBhcmdiX3Zpc3VhbCAmJiBxQWxwaGEoYmxlbmRfY29sb3IpIDwgMHhmZiApIHsKLSAg
ICAgICAgICBRUmdiIGNvbCA9IGNvbG9yX3RhYmxlW2F0dHItPmJdLmNvbG9yLnJnYigpOworICAg
ICAgICAgIFFSZ2IgY29sID0gYkNvbG9yLnJnYigpOwogCiAgICAgICAgICAgUV9VSU5UOCBzYWxw
aGEgPSAxOTI7CiAgICAgICAgICAgUV9VSU5UOCBkYWxwaGEgPSAyNTUgLSBzYWxwaGE7CkBAIC02
MjUsNyArNjI2LDcgQEAKIAogICAgICAgICAgIHBhaW50LmZpbGxSZWN0KHJlY3QsIFFDb2xvcihj
b2wsIHBpeGVsKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgIHBhaW50LmZpbGxSZWN0KHJl
Y3QsIGNvbG9yX3RhYmxlW2F0dHItPmJdLmNvbG9yKTsKKyAgICAgICAgICBwYWludC5maWxsUmVj
dChyZWN0LCBiQ29sb3IpOwogICAgIH0KIAogICAgIFFTdHJpbmcgdG1wU3RyID0gc3RyLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpOwpAQCAtNjY0LDggKzY2NSw4IEBACiAgICAgewogICAgICAgIGlmICgh
Y3Vyc29yQmxpbmtpbmcpCiAgICAgICAgewotICAgICAgICAgIHBhaW50LmZpbGxSZWN0KHIsIGNv
bG9yX3RhYmxlW2F0dHItPmZdLmNvbG9yKTsKLSAgICAgICAgICBmQ29sb3IgPSBjb2xvcl90YWJs
ZVthdHRyLT5iXS5jb2xvcjsKKyAgICAgICAgICBwYWludC5maWxsUmVjdChyLCBmQ29sb3IpOwor
ICAgICAgICAgIGZDb2xvciA9IGJDb2xvcjsKICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAg
LTY4NSw3ICs2ODYsNyBAQAogICAgIGJvb2wgc2hhZG93ID0gZmFsc2U7CiAgICAgcGFpbnQuc2V0
UGVuKGZDb2xvcik7CiAgICAgaW50IHggPSByZWN0LngoKTsKLSAgICBpZiAoY29sb3JfdGFibGVb
YXR0ci0+Zl0uYm9sZCAmJiBwcmludGVyQm9sZCkKKyAgICBpZiAoYXR0ci0+aXNCb2xkKGNvbG9y
X3RhYmxlKSAmJiBwcmludGVyQm9sZCkKICAgICB7CiAgICAgICAvLyBXaGVuIHByaW50aW5nIHdl
IHVzZSBhIGJvbGQgZm9udCBmb3IgYm9sZAogICAgICAgcGFpbnQuc2F2ZSgpOwpAQCAtNzIxLDEz
ICs3MjIsMTMgQEAKICAgICAgIHBhaW50LmRyYXdUZXh0KHgseSwgc3RyLCAtMSwgYmlkaUVuYWJs
ZWQgPyBRUGFpbnRlcjo6QXV0byA6IFFQYWludGVyOjpMVFIgKTsKICAgICB9CiAKLSAgICBpZiAo
Y29sb3JfdGFibGVbYXR0ci0+Zl0uYm9sZCAmJiBpc1ByaW50aW5nKQorICAgIGlmIChhdHRyLT5p
c0JvbGQoY29sb3JfdGFibGUpICYmIGlzUHJpbnRpbmcpCiAgICAgewogICAgICAgLy8gV2hlbiBw
cmludGluZyB3ZSB1c2UgYSBib2xkIGZvbnQgZm9yIGJvbGQKICAgICAgIHBhaW50LnJlc3RvcmUo
KTsKICAgICB9CiAKLSAgICBpZiAoY29sb3JfdGFibGVbYXR0ci0+Zl0uYm9sZCAmJiAhcHJpbnRl
ckJvbGQpCisgICAgaWYgKGF0dHItPmlzQm9sZChjb2xvcl90YWJsZSkgJiYgIXByaW50ZXJCb2xk
KQogICAgIHsKICAgICAgIHBhaW50LnNldENsaXBSZWN0KHJlY3QpOwogICAgICAgLy8gT24gc2Ny
ZWVuIHdlIHVzZSBvdmVyc3RyaWtlIGZvciBib2xkCkBAIC03OTYsOSArNzk3LDkgQEAKICAgaW50
ICAgIHRMeSA9IHRMLnkoKTsKICAgaGFzQmxpbmtlciA9IGZhbHNlOwogCi0gIGludCBjZiAgPSAt
MTsgLy8gdW5kZWZpbmVkCi0gIGludCBjYiAgPSAtMTsgLy8gdW5kZWZpbmVkCi0gIGludCBjciAg
PSAtMTsgLy8gdW5kZWZpbmVkCisgIGNhY29sIGNmOyAgICAgICAvLyB1bmRlZmluZWQKKyAgY2Fj
b2wgY2I7ICAgICAgIC8vIHVuZGVmaW5lZAorICBpbnQgICBjciAgPSAtMTsgLy8gdW5kZWZpbmVk
CiAKICAgaW50IGxpbnMgPSBRTUlOKHRoaXMtPmxpbmVzLCAgUU1BWCgwLGxpbmVzICApKTsKICAg
aW50IGNvbHMgPSBRTUlOKHRoaXMtPmNvbHVtbnMsUU1BWCgwLGNvbHVtbnMpKTsKQEAgLTEwNDks
OSArMTA1MCw5IEBACiAgICAgICAgICBkaXNzdHJVW3ArK10gPSBjOyAvL2ZvbnRNYXAoYyk7CiAg
ICAgICBib29sIGxpbmVEcmF3ID0gaXNMaW5lQ2hhcihjKTsKICAgICAgIGJvb2wgZG91YmxlV2lk
dGggPSAoaW1hZ2VbbG9jKHgseSkrMV0uYyA9PSAwKTsKLSAgICAgIGludCBjZiA9IGltYWdlW2xv
Yyh4LHkpXS5mOwotICAgICAgaW50IGNiID0gaW1hZ2VbbG9jKHgseSldLmI7Ci0gICAgICBpbnQg
Y3IgPSBpbWFnZVtsb2MoeCx5KV0ucjsKKyAgICAgIGNhY29sIGNmID0gaW1hZ2VbbG9jKHgseSld
LmY7CisgICAgICBjYWNvbCBjYiA9IGltYWdlW2xvYyh4LHkpXS5iOworICAgICAgaW50ICAgY3Ig
PSBpbWFnZVtsb2MoeCx5KV0ucjsKICAgICAgIHdoaWxlICh4K2xlbiA8PSBybHggJiYKICAgICAg
ICAgICAgICBpbWFnZVtsb2MoeCtsZW4seSldLmYgPT0gY2YgJiYKICAgICAgICAgICAgICBpbWFn
ZVtsb2MoeCtsZW4seSldLmIgPT0gY2IgJiYKQEAgLTIwMDksMTAgKzIwMTAsMTAgQEAKICAgLy8g
V2UgaW5pdGlhbGl6ZSBpbWFnZVtpbWFnZV9zaXplXSB0b28uIFNlZSBtYWtlSW1hZ2UoKQogICBm
b3IgKGludCBpID0gMDsgaSA8PSBpbWFnZV9zaXplOyBpKyspCiAgIHsKLSAgICBpbWFnZVtpXS5j
ID0gMHhmZjsgLy8nICc7Ci0gICAgaW1hZ2VbaV0uZiA9IDB4ZmY7IC8vREVGQVVMVF9GT1JFX0NP
TE9SOwotICAgIGltYWdlW2ldLmIgPSAweGZmOyAvL0RFRkFVTFRfQkFDS19DT0xPUjsKLSAgICBp
bWFnZVtpXS5yID0gMHhmZjsgLy9ERUZBVUxUX1JFTkRJVElPTjsKKyAgICBpbWFnZVtpXS5jID0g
JyAnOworICAgIGltYWdlW2ldLmYgPSBjYWNvbChDT19ERlQsREVGQVVMVF9GT1JFX0NPTE9SKTsK
KyAgICBpbWFnZVtpXS5iID0gY2Fjb2woQ09fREZULERFRkFVTFRfQkFDS19DT0xPUik7CisgICAg
aW1hZ2VbaV0uciA9IERFRkFVTFRfUkVORElUSU9OOwogICB9CiB9CiAKLS0tIGtvbnNvbGUvVEVt
dVZ0MTAyLmNwcC5vcmlnCTIwMDYtMDUtMTYgMDE6MTE6MDEuMDAwMDAwMDAwICswMjAwCisrKyBr
b25zb2xlL1RFbXVWdDEwMi5jcHAJMjAwNi0wNi0yNCAyMzoxMjo0Ni4wMDAwMDAwMDAgKzAyMDAK
QEAgLTM0NCw2ICszNDQsMTcgQEAKICAgICBmb3IgKGk9MDtpPD1hcmdjO2krKykKICAgICBpZiAo
IGVwcCggICAgICkpICB7IHRhdSggVFlfQ1NJX1BSKGNjLGFyZ3ZbaV0pLCAgICAwLCAgIDApOyB9
CiAgICAgZWxzZSBpZihlZ3QoICAgICkpICAgeyB0YXUoIFRZX0NTSV9QRyhjYyAgICAgKSwgICAg
MCwgICAwKTsgfSAvLyBzcGVjLiBjYXNlIGZvciBFU0NdPjBjIG9yIEVTQ10+YworICAgIGVsc2Ug
aWYgKGNjID09ICdtJyAmJiBhcmdjIC0gaSA+PSA0ICYmIChhcmd2W2ldID09IDM4IHx8IGFyZ3Zb
aV0gPT0gNDgpICYmIGFyZ3ZbaSsxXSA9PSAyKQorICAgIHsgLy8gRVNDWyAuLi4gNDg7Mjs8cmVk
Pjs8Z3JlZW4+OzxibHVlPiAuLi4gbSAtb3ItIEVTQ1sgLi4uIDM4OzI7PHJlZD47PGdyZWVuPjs8
Ymx1ZT4gLi4uIG0KKyAgICAgIGkgKz0gMjsKKyAgICAgIHRhdSggVFlfQ1NJX1BTKGNjLCBhcmd2
W2ktMl0pLCBDT19SR0IsIChhcmd2W2ldIDw8IDE2KSB8IChhcmd2W2krMV0gPDwgOCkgfCBhcmd2
W2krMl0pOworICAgICAgaSArPSAyOworICAgIH0KKyAgICBlbHNlIGlmIChjYyA9PSAnbScgJiYg
YXJnYyAtIGkgPj0gMiAmJiAoYXJndltpXSA9PSAzOCB8fCBhcmd2W2ldID09IDQ4KSAmJiBhcmd2
W2krMV0gPT0gNSkKKyAgICB7IC8vIEVTQ1sgLi4uIDQ4OzU7PGluZGV4PiAuLi4gbSAtb3ItIEVT
Q1sgLi4uIDM4OzU7PGluZGV4PiAuLi4gbQorICAgICAgaSArPSAyOworICAgICAgdGF1KCBUWV9D
U0lfUFMoY2MsIGFyZ3ZbaS0yXSksIENPXzI1NiwgYXJndltpXSk7CisgICAgfQogICAgIGVsc2Ug
ICAgICAgICAgICAgIHsgdGF1KCBUWV9DU0lfUFMoY2MsYXJndltpXSksICAgIDAsICAgMCk7IH0K
ICAgICByZXNldFRva2VuKCk7CiAgIH0KQEAgLTU0Myw0MyArNTU0LDQ5IEBACiAgICAgY2FzZSBU
WV9DU0lfUFMoJ20nLCAgIDI1KSA6IHNjci0+cmVzZXRSZW5kaXRpb24gICAgIChSRV9CTElOSyAg
ICApOyBicmVhazsKICAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMjcpIDogc2NyLT5yZXNldFJl
bmRpdGlvbiAgICAgKFJFX1JFVkVSU0UgICk7IGJyZWFrOwogCi0gICAgY2FzZSBUWV9DU0lfUFMo
J20nLCAgIDMwKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgIDApOyBicmVh
azsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzEpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAg
ICAgICAoICAgICAgICAgMSk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzMikg
OiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgICggICAgICAgICAyKTsgYnJlYWs7Ci0gICAgY2Fz
ZSBUWV9DU0lfUFMoJ20nLCAgIDMzKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAg
ICAgIDMpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzQpIDogc2NyLT5zZXRG
b3JlQ29sb3IgICAgICAgICAoICAgICAgICAgNCk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BT
KCdtJywgICAzNSkgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgICggICAgICAgICA1KTsgYnJl
YWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDM2KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAg
ICAgICAgKCAgICAgICAgIDYpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzcp
IDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoICAgICAgICAgNyk7IGJyZWFrOwotICAgIGNh
c2UgVFlfQ1NJX1BTKCdtJywgICAzOSkgOiBzY3ItPnNldEZvcmVDb2xvclRvRGVmYXVsdCggICAg
ICAgICAgKTsgYnJlYWs7Ci0KLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgNDApIDogc2NyLT5z
ZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAgMCk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJ
X1BTKCdtJywgICA0MSkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgICAxKTsg
YnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQyKSA6IHNjci0+c2V0QmFja0NvbG9y
ICAgICAgICAgKCAgICAgICAgIDIpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAg
NDMpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAgMyk7IGJyZWFrOwotICAg
IGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0NCkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICgg
ICAgICAgICA0KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQ1KSA6IHNjci0+
c2V0QmFja0NvbG9yICAgICAgICAgKCAgICAgICAgIDUpOyBicmVhazsKLSAgICBjYXNlIFRZX0NT
SV9QUygnbScsICAgNDYpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoICAgICAgICAgNik7
IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0NykgOiBzY3ItPnNldEJhY2tDb2xv
ciAgICAgICAgICggICAgICAgICA3KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAg
IDQ5KSA6IHNjci0+c2V0QmFja0NvbG9yVG9EZWZhdWx0KCAgICAgICAgICApOyBicmVhazsKLQot
ICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA5MCkgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAg
ICggICAgICAgICA4KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDkxKSA6IHNj
ci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgIDkpOyBicmVhazsKLSAgICBjYXNlIFRZ
X0NTSV9QUygnbScsICAgOTIpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoICAgICAgICAx
MCk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA5MykgOiBzY3ItPnNldEZvcmVD
b2xvciAgICAgICAgICggICAgICAgIDExKTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20n
LCAgIDk0KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAgMTIpOyBicmVhazsK
LSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgOTUpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAg
ICAoICAgICAgICAxMyk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA5NikgOiBz
Y3ItPnNldEZvcmVDb2xvciAgICAgICAgICggICAgICAgIDE0KTsgYnJlYWs7Ci0gICAgY2FzZSBU
WV9DU0lfUFMoJ20nLCAgIDk3KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKCAgICAgICAg
MTUpOyBicmVhazsKLQotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgIDEwMCkgOiBzY3ItPnNldEJh
Y2tDb2xvciAgICAgICAgICggICAgICAgICA4KTsgYnJlYWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMo
J20nLCAgMTAxKSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKCAgICAgICAgIDkpOyBicmVh
azsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAxMDIpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAg
ICAgICAoICAgICAgICAxMCk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgIDEwMykg
OiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgIDExKTsgYnJlYWs7Ci0gICAgY2Fz
ZSBUWV9DU0lfUFMoJ20nLCAgMTA0KSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKCAgICAg
ICAgMTIpOyBicmVhazsKLSAgICBjYXNlIFRZX0NTSV9QUygnbScsICAxMDUpIDogc2NyLT5zZXRC
YWNrQ29sb3IgICAgICAgICAoICAgICAgICAxMyk7IGJyZWFrOwotICAgIGNhc2UgVFlfQ1NJX1BT
KCdtJywgIDEwNikgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgICggICAgICAgIDE0KTsgYnJl
YWs7Ci0gICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTA3KSA6IHNjci0+c2V0QmFja0NvbG9yICAg
ICAgICAgKCAgICAgICAgMTUpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgMzAp
IDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAgMCk7IGJyZWFrOworICAgIGNh
c2UgVFlfQ1NJX1BTKCdtJywgICAzMSkgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgIChDT19T
WVMsICAxKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDMyKSA6IHNjci0+c2V0
Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywgIDIpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9Q
UygnbScsICAgMzMpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAgMyk7IGJy
ZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzNCkgOiBzY3ItPnNldEZvcmVDb2xvciAg
ICAgICAgIChDT19TWVMsICA0KTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDM1
KSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywgIDUpOyBicmVhazsKKyAgICBj
YXNlIFRZX0NTSV9QUygnbScsICAgMzYpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09f
U1lTLCAgNik7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICAzNykgOiBzY3ItPnNl
dEZvcmVDb2xvciAgICAgICAgIChDT19TWVMsICA3KTsgYnJlYWs7CisKKyAgICBjYXNlIFRZX0NT
SV9QUygnbScsICAgMzgpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAocCwgICAgICAgcSk7
IGJyZWFrOworCisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDM5KSA6IHNjci0+c2V0Rm9yZUNv
bG9yICAgICAgICAgKENPX0RGVCwgIDApOyBicmVhazsKKworICAgIGNhc2UgVFlfQ1NJX1BTKCdt
JywgICA0MCkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgIChDT19TWVMsICAwKTsgYnJlYWs7
CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQxKSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAg
ICAgKENPX1NZUywgIDEpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgNDIpIDog
c2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lTLCAgMik7IGJyZWFrOworICAgIGNhc2Ug
VFlfQ1NJX1BTKCdtJywgICA0MykgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgIChDT19TWVMs
ICAzKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQ0KSA6IHNjci0+c2V0QmFj
a0NvbG9yICAgICAgICAgKENPX1NZUywgIDQpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygn
bScsICAgNDUpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lTLCAgNSk7IGJyZWFr
OworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgICA0NikgOiBzY3ItPnNldEJhY2tDb2xvciAgICAg
ICAgIChDT19TWVMsICA2KTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDQ3KSA6
IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgIDcpOyBicmVhazsKKworICAgIGNh
c2UgVFlfQ1NJX1BTKCdtJywgICA0OCkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgIChwLCAg
ICAgICBxKTsgYnJlYWs7CisKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgNDkpIDogc2NyLT5z
ZXRCYWNrQ29sb3IgICAgICAgICAoQ09fREZULCAgMSk7IGJyZWFrOworCisgICAgY2FzZSBUWV9D
U0lfUFMoJ20nLCAgIDkwKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAgKENPX1NZUywgIDgp
OyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgOTEpIDogc2NyLT5zZXRGb3JlQ29s
b3IgICAgICAgICAoQ09fU1lTLCAgOSk7IGJyZWFrOworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywg
ICA5MikgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgIChDT19TWVMsIDEwKTsgYnJlYWs7Cisg
ICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDkzKSA6IHNjci0+c2V0Rm9yZUNvbG9yICAgICAgICAg
KENPX1NZUywgMTEpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAgOTQpIDogc2Ny
LT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAxMik7IGJyZWFrOworICAgIGNhc2UgVFlf
Q1NJX1BTKCdtJywgICA5NSkgOiBzY3ItPnNldEZvcmVDb2xvciAgICAgICAgIChDT19TWVMsIDEz
KTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgIDk2KSA6IHNjci0+c2V0Rm9yZUNv
bG9yICAgICAgICAgKENPX1NZUywgMTQpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScs
ICAgOTcpIDogc2NyLT5zZXRGb3JlQ29sb3IgICAgICAgICAoQ09fU1lTLCAxNSk7IGJyZWFrOwor
CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTAwKSA6IHNjci0+c2V0QmFja0NvbG9yICAgICAg
ICAgKENPX1NZUywgIDgpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygnbScsICAxMDEpIDog
c2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lTLCAgOSk7IGJyZWFrOworICAgIGNhc2Ug
VFlfQ1NJX1BTKCdtJywgIDEwMikgOiBzY3ItPnNldEJhY2tDb2xvciAgICAgICAgIChDT19TWVMs
IDEwKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTAzKSA6IHNjci0+c2V0QmFj
a0NvbG9yICAgICAgICAgKENPX1NZUywgMTEpOyBicmVhazsKKyAgICBjYXNlIFRZX0NTSV9QUygn
bScsICAxMDQpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lTLCAxMik7IGJyZWFr
OworICAgIGNhc2UgVFlfQ1NJX1BTKCdtJywgIDEwNSkgOiBzY3ItPnNldEJhY2tDb2xvciAgICAg
ICAgIChDT19TWVMsIDEzKTsgYnJlYWs7CisgICAgY2FzZSBUWV9DU0lfUFMoJ20nLCAgMTA2KSA6
IHNjci0+c2V0QmFja0NvbG9yICAgICAgICAgKENPX1NZUywgMTQpOyBicmVhazsKKyAgICBjYXNl
IFRZX0NTSV9QUygnbScsICAxMDcpIDogc2NyLT5zZXRCYWNrQ29sb3IgICAgICAgICAoQ09fU1lT
LCAxNSk7IGJyZWFrOwogCiAgICAgY2FzZSBUWV9DU0lfUFMoJ24nLCAgICA1KSA6ICAgICAgcmVw
b3J0U3RhdHVzICAgICAgICAgKCAgICAgICAgICApOyBicmVhazsKICAgICBjYXNlIFRZX0NTSV9Q
UygnbicsICAgIDYpIDogICAgICByZXBvcnRDdXJzb3JQb3NpdGlvbiAoICAgICAgICAgICk7IGJy
ZWFrOwotLS0gdGVzdHMvY29sb3Itc3BhY2VzLnBsLm9yaWcJMjAwNi0wNi0yNiAxNjo0NDowMC4w
MDAwMDAwMDAgKzAyMDAKKysrIHRlc3RzL2NvbG9yLXNwYWNlcy5wbAkyMDA2LTA2LTI2IDE2OjIz
OjEzLjAwMDAwMDAwMCArMDIwMApAQCAtMCwwICsxLDY3IEBACisjIS91c3IvYmluL3BlcmwKKyMg
QXV0aG9yOiBUb2RkIExhcmFzb24gPGp0bEBtb2xlaGlsbC5vcmc+CisjICRYRnJlZTg2OiB4Yy9w
cm9ncmFtcy94dGVybS92dHRlc3RzLzI1NmNvbG9yczIucGwsdiAxLjEgMTk5OS8wNy8xMSAwODo0
OTo1NCBkYXdlcyBFeHAgJAorCitwcmludCAiMjU2IGNvbG9yIG1vZGVcblxuIjsKKworIyBkaXNw
bGF5IGJhY2sgZ3JvdW5kIGNvbG9ycworCitmb3IgKCRmZ2JnID0gMzg7ICRmZ2JnIDw9IDQ4OyAk
ZmdiZyArPTEwKSB7CisKKyMgZmlyc3QgdGhlIHN5c3RlbSBvbmVzOgorcHJpbnQgIlN5c3RlbSBj
b2xvcnM6XG4iOworZm9yICgkY29sb3IgPSAwOyAkY29sb3IgPCA4OyAkY29sb3IrKykgeworICAg
IHByaW50ICJceDFiWyR7ZmdiZ307NTske2NvbG9yfW06OiI7Cit9CitwcmludCAiXHgxYlswbVxu
IjsKK2ZvciAoJGNvbG9yID0gODsgJGNvbG9yIDwgMTY7ICRjb2xvcisrKSB7CisgICAgcHJpbnQg
Ilx4MWJbJHtmZ2JnfTs1OyR7Y29sb3J9bTo6IjsKK30KK3ByaW50ICJceDFiWzBtXG5cbiI7CisK
KyMgbm93IHRoZSBjb2xvciBjdWJlCitwcmludCAiQ29sb3IgY3ViZSwgNng2eDY6XG4iOworZm9y
ICgkZ3JlZW4gPSAwOyAkZ3JlZW4gPCA2OyAkZ3JlZW4rKykgeworICAgIGZvciAoJHJlZCA9IDA7
ICRyZWQgPCA2OyAkcmVkKyspIHsKKwlmb3IgKCRibHVlID0gMDsgJGJsdWUgPCA2OyAkYmx1ZSsr
KSB7CisJICAgICRjb2xvciA9IDE2ICsgKCRyZWQgKiAzNikgKyAoJGdyZWVuICogNikgKyAkYmx1
ZTsKKwkgICAgcHJpbnQgIlx4MWJbJHtmZ2JnfTs1OyR7Y29sb3J9bTo6IjsKKwl9CisJcHJpbnQg
Ilx4MWJbMG0gIjsKKyAgICB9CisgICAgcHJpbnQgIlxuIjsKK30KKworIyBub3cgdGhlIGdyYXlz
Y2FsZSByYW1wCitwcmludCAiR3JheXNjYWxlIHJhbXA6XG4iOworZm9yICgkY29sb3IgPSAyMzI7
ICRjb2xvciA8IDI1NjsgJGNvbG9yKyspIHsKKyAgICBwcmludCAiXHgxYlske2ZnYmd9OzU7JHtj
b2xvcn1tOjoiOworfQorcHJpbnQgIlx4MWJbMG1cblxuIjsKKworfQorCitwcmludCAiRXhhbXBs
ZXMgZm9yIHRoZSAzLWJ5dGUgY29sb3IgbW9kZVxuXG4iOworCitmb3IgKCRmZ2JnID0gMzg7ICRm
Z2JnIDw9IDQ4OyAkZmdiZyArPTEwKSB7CisKKyMgbm93IHRoZSBjb2xvciBjdWJlCitwcmludCAi
Q29sb3IgY3ViZVxuIjsKK2ZvciAoJGdyZWVuID0gMDsgJGdyZWVuIDwgMjU2OyAkZ3JlZW4rPTQz
KSB7CisgICAgZm9yICgkcmVkID0gMDsgJHJlZCA8IDI1NjsgJHJlZCs9NDMpIHsKKwlmb3IgKCRi
bHVlID0gMDsgJGJsdWUgPCAyNTY7ICRibHVlKz00MykgeworICAgICAgICAgICAgcHJpbnQgIlx4
MWJbJHtmZ2JnfTsyOyR7cmVkfTske2dyZWVufTske2JsdWV9bTo6IjsKKwl9CisJcHJpbnQgIlx4
MWJbMG0gIjsKKyAgICB9CisgICAgcHJpbnQgIlxuIjsKK30KKworIyBub3cgdGhlIGdyYXlzY2Fs
ZSByYW1wCitwcmludCAiR3JheXNjYWxlIHJhbXA6XG4iOworZm9yICgkZ3JheSA9IDA7ICRncmF5
IDwgMjU2OyAkZ3JheSs9MTApIHsKKyAgICBwcmludCAiXHgxYlske2ZnYmd9OzI7JHtncmF5fTsk
e2dyYXl9OyR7Z3JheX1tOjoiOworfQorcHJpbnQgIlx4MWJbMG1cblxuIjsKKworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>