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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>17062</bug_id>
          
          <creation_ts>2008-01-29 00:34:48 -0800</creation_ts>
          <short_desc>SVGTextElement.getNumberOfChars is broken for altGlyph (affects Acid3 test 79)</short_desc>
          <delta_ts>2008-03-23 22:37:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>17064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68551</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 00:34:48 -0800</bug_when>
    <thetext>Test 69: expected 33, got: 0 - SVGSVGTextElement.getNumberOfChars() incorrect

Test 78: expected 3, got: 0 - getNumberOfChars returned incorrect string length.
also reports a similar failure.

The ridiculously long test case:

    function () {
      // test 69: a giant test for &lt;svg:font&gt;, from Cameron McCormack
      // This tests various features of SVG fonts from SVG 1.1.  It consists of
      // a &lt;text&gt; element with 33 characters, styled using an SVG font that has
      // different advance values for each glyph.  The script uses
      // SVGTextElementContent.getStartPositionOfChar() to determine where the
      // glyph corresponding to each character was placed, and thus to work out
      // whether the SVG font was used correctly.
      //
      // The font uses 100 units per em, and the text is set in 100px.  Since
      // font-size gives the size of the em box
      // (http://www.w3.org/TR/SVG11/text.html#DOMInterfaces), the scale of the
      // coordinate system for the glyphs is the same as the SVG document.
      //
      // The expectedAdvances array holds the expected advance value for each
      // character, and expectedKerning holds the (negative) kerning for each
      // character.  getPositionOfChar() returns the actual x coordinate for the
      // glyph, corresponding to the given character, and if multiple characters
      // correspond to the same glyph, the same position value is returned for
      // each of those characters.
      //
      // Here are the reasonings for the advance/kerning values.  Note that for
      // a given character at index i, the expected position is
      // sum(expectedAdvances[0:i-1] + expectedKerning[0:i-1]).
      //
      // char     advance  kerning  reasoning
      // -------  -------  -------  --------------------------------------------------
      // A        10000    0        Normal character mapping to a single glyph.
      // B        0        0        First character of a two character glyph, so the
      //                            current position isn&apos;t advanced until the second
      //                            character.
      // C        200      0        Second character of a two character glyph, so now
      //                            the position is advanced.
      // B        300      0        Although there is a glyph for &quot;BC&quot; in the font,
      //                            it appears after the glyph for &quot;B&quot;, so the single
      //                            character glyph for &quot;B&quot; should be chosen instead.
      // D        1100     0        Normal character mapping to a single glyph.
      // A        10000    200      Kerning of -200 is specified in the font between
      //                            the &quot;A&quot; and &quot;EE&quot; glyphs.
      // E        0        0        The first character of a two character glyph &quot;EE&quot;.
      // E        1300     0        The second character of a two character glyph.
      // U        0        0        This is a glyph for the six characters &quot;U+0046&quot;,
      //                            which happen to look like a valid unicode range.
      //                            This tests that the &lt;glyph unicode=&quot;&quot;&gt; in the
      //                            font matches exact strings rather than a range,
      //                            as used in the kerning elements.
      // +        0        0        Second character of six character glyph.
      // 0        0        0        Third character of six character glyph.
      // 0        0        0        Fourth character of six character glyph.
      // 4        0        0        Fifth character of six character glyph.
      // 6        1700     0        Sixth character of six character glyph.
      // U        0        0        The same six character glyph that looks like a
      //                            Unicode range.  One of the kerning elements has
      //                            u1=&quot;U+0046&quot; u2=&quot;U+0046&quot;, which shouldn&apos;t match
      //                            this, because those attributes are interpreted
      //                            as Unicode ranges if they are, and normal
      //                            strings otherwise.  Thus there should be no
      //                            kerning between these two glyphs.
      // G        2300     200      Kerning is between this character and the next
      //                            &quot;G&quot;, since there is an &lt;hkern&gt; element that
      //                            uses a Unicode range on its u1=&quot;&quot; attribute
      //                            and a glyph name on its g2=&quot;&quot; attribute which
      //                            both match &quot;G&quot;.
      // G        2300     0        Normal character with kerning before it.
      // H        3100     0        A glyph with graphical content describing the
      //                            glyph, rather than a d=&quot;&quot; attribute.
      // I        4300     0        Glyphs are checked in document order for one
      //                            that matches, but the first glyph with
      //                            unicode=&quot;I&quot; also has lang=&quot;zh&quot;, which disqualifies
      //                            it.  Thus the second glyph with unicode=&quot;I&quot;
      //                            is chosen.
      // I        4100     0        Since this I has xml:lang=&quot;zh&quot; on it in the text,
      //                            the first glyph with lang=&quot;zh&quot; matches.
      // J        4700     -4700    A normal glyph with kerning between the &quot;J&quot; and the
      //                            next glyph &quot;A&quot; equal to the advance of the &quot;J&quot;
      //                            glyph, so the position should stay the same.
      // A        10000    0        Normal glyph with kerning before it.
      // K        5900     0        The first glyph with unicode=&quot;K&quot; does not match,
      //                            since it has orientation=&quot;v&quot;, so the second
      //                            glyph with unicode=&quot;K&quot; is chosen.
      // &lt;spc&gt;    6100     0        The space character should select the glyph with
      //                            unicode=&quot; &quot;, despite it having a misleading
      //                            glyph-name=&quot;L&quot;.
      // L        6700     0        The &quot;L&quot; character should select the glyph with
      //                            unicode=&quot; &quot;, despite it having a misleading
      //                            glyph-name=&quot;spacev&quot;.
      // A        2900     0        An &lt;altGlyph&gt; element is used to select the
      //                            glyph for U+10085 instead of the one for &quot;A&quot;.
      // U+10085  2900     0        Tests glyph selection with a non-plane-0
      //                            character.
      // A        10000    0        A final normal character.
      //
      // In addition, the script tests the value returned by
      // SVGTextContentElement.getNumberOfChars(), which in this case should be 33.
      // If it returned 34, then it incorrectly counted UTF-16 codepoints or
      // something.
      //
      // See http://www.w3.org/TR/SVG11/fonts.html for a description of the glyph
      // matching rules, and http://www.w3.org/TR/SVG11/text.html#DOMInterfaces
      // for a description of getStartPositionOfChar() and getNumberOfChars().
      //
      // Note also that the test uses DOMImplementation.createDocument() to create
      // the SVG document.  This seems to cause browsers trouble for the SVG DOM
      // interfaces, since the document isn&apos;t being &quot;rendered&quot; as it might be
      // if it were in an &lt;iframe&gt;.  Changing the test to use an &lt;iframe&gt; will
      // at least let you see the main part of the test running.

      var NS = { 
        svg: &apos;http://www.w3.org/2000/svg&apos;,
        xml: &apos;http://www.w3.org/1998/XML/namespace&apos;,
        xlink: &apos;http://www.w3.org/1999/xlink&apos;
      };

      var doc = document.implementation.createDocument(NS.svg, &apos;svg&apos;, null);
      var e = function (n, as, cs) {
        var elt = doc.createElementNS(NS.svg, n);
        if (as) {
          for (var an in as) {
            var idx = an.indexOf(&apos;:&apos;);
            var ns = null;
            if (idx != -1)
              ns = NS[an.substring(0, idx)];
            elt.setAttributeNS(ns, an, as[an]);
          }
        }
        if (cs) {
          for (var i in cs) {
            var c = cs[i];
            elt.appendChild(typeof c == &apos;string&apos; ? doc.createTextNode(c) : c);
          }
        }
        return elt;
      }
      doc.documentElement.appendChild(e(&apos;font&apos;, { &apos;horiz-adv-x&apos;: &apos;10000&apos;}, [e(&apos;font-face&apos;, { &apos;font-family&apos;: &apos;HCl&apos;, &apos;units-per-em&apos;: &apos;100&apos;, &apos;ascent&apos;: &apos;1000&apos;, &apos;descent&apos;: &apos;500&apos;}), e(&apos;missing-glyph&apos;, null, [e(&apos;path&apos;, { &apos;d&apos;: &apos;M100,0 h800 v-100 h-800 z&apos;})]), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;A&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;BC&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;200&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;B&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;300&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;C&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;500&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;BD&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;700&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;D&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1100&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;EE&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1300&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;U+0046&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1700&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;F&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1900&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;G&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;2300&apos;, &apos;glyph-name&apos;: &apos;gee&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;\uD800\uDC85&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;2900&apos;, &apos;id&apos;: &apos;astral&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;H&apos;, &apos;horiz-adv-x&apos;: &apos;3100&apos;}, [e(&apos;path&apos;, { &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;})]), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;I&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;4100&apos;, &apos;lang&apos;: &apos;zh&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;I&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;4300&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;J&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;4700&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;K&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;5300&apos;, &apos;orientation&apos;: &apos;v&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;K&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;5900&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos; &apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;6100&apos;, &apos;glyph-name&apos;: &apos;L&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;L&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;6700&apos;, &apos;glyph-name&apos;: &apos;space&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;A&apos;, &apos;u2&apos;: &apos;EE&apos;, &apos;k&apos;: &apos;-200&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;U+0046&apos;, &apos;u2&apos;: &apos;U+0046&apos;, &apos;k&apos;: &apos;-200&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;U+0047-0047&apos;, &apos;g2&apos;: &apos;gee&apos;, &apos;k&apos;: &apos;-200&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;J&apos;, &apos;u2&apos;: &apos;A&apos;, &apos;k&apos;: &apos;4700&apos;})]));
      doc.documentElement.appendChild(e(&apos;text&apos;, { &apos;y&apos;: &apos;100&apos;, &apos;font-family&apos;: &apos;HCl&apos;, &apos;font-size&apos;: &apos;100px&apos;, &apos;letter-spacing&apos;: &apos;0px&apos;, &apos;word-spacing&apos;: &apos;0px&apos;}, [&apos;ABCBDAEEU+0046U+0046GGHI&apos;, e(&apos;tspan&apos;, { &apos;xml:lang&apos;: &apos;zh&apos;}, [&apos;I&apos;]), &apos;JAK L&apos;, e(&apos;altGlyph&apos;, { &apos;xlink:href&apos;: &apos;#astral&apos;}, [&apos;A&apos;]), &apos;\uD800\uDC85&apos;]));

      var t = doc.documentElement.lastChild;

      var characterDescriptions = [
        &quot;a normal character&quot;,
        &quot;the first character of a two-character glyph&quot;,
        &quot;the second character of a two-character glyph&quot;,
        &quot;a normal character, which shouldn&apos;t be the first character of a two-character glyph&quot;,
        &quot;a normal character, which shouldn&apos;t be the second character of a two-character glyph&quot;,
        &quot;a normal character, which has some kerning after it&quot;,
        &quot;the first character of a two-character glyph, which has some kerning before it&quot;,
        &quot;the second character of a two-character glyph, which has some kerning before it&quot;,
        &quot;the first character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not&quot;,
        &quot;the second character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not&quot;,
        &quot;the third character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not&quot;,
        &quot;the fourth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not&quot;,
        &quot;the fifth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not&quot;,
        &quot;the sixth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not&quot;,
        &quot;the first character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not&quot;,
        &quot;the second character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not&quot;,
        &quot;the third character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not&quot;,
        &quot;the fourth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not&quot;,
        &quot;the fifth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not&quot;,
        &quot;the sixth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not&quot;,
        &quot;a normal character, which has some kerning after it that is specified by glyph name&quot;,
        &quot;a normal character, which has some kerning before it that is specified by glyph name&quot;,
        &quot;a normal character, whose glyph is given by child graphical content of the &lt;glyph&gt; element&quot;,
        &quot;a normal character, whose glyph should not match the one with a lang=\&quot;\&quot; attribute on it&quot;,
        &quot;a normal character, whose glyph should match the one with a lang=\&quot;\&quot; attribute on it&quot;,
        &quot;a normal character, which has some kerning after it that is equal to the advance of the character&quot;,
        &quot;a normal character, which has some kerning before it that is equal to the advance of the previous character&quot;,
        &quot;a normal character, whose glyph should not match the one with an orientation=\&quot;v\&quot; attribute on it&quot;,
        &quot;a space character, which has a misleading glyph-name=\&quot;\&quot; attribute&quot;,
        &quot;a normal character, which has a misleading glyph-name=\&quot;\&quot; attribute&quot;,
        &quot;a normal character, whose glyph is chosen to be another by using &lt;altGlyph&gt;&quot;,
        &quot;a character not in Plane 0&quot;,
        &quot;a normal character&quot;,
      ];

      var expectedAdvances = [
        10000,       // A
        0,           // BC [0]
        200,         // BC [1]
        300,         // B
        1100,        // D
        10000,       // A
        0,           // EE [0]
        1300,        // EE [1]
        0,           // U+0046 [0]
        0,           // U+0046 [1]
        0,           // U+0046 [2]
        0,           // U+0046 [3]
        0,           // U+0046 [4]
        1700,        // U+0046 [5]
        0,           // U+0046 [0]
        0,           // U+0046 [1]
        0,           // U+0046 [2]
        0,           // U+0046 [3]
        0,           // U+0046 [4]
        1700,        // U+0046 [5]
        2300,        // G
        2300,        // G
        3100,        // H
        4300,        // I
        4100,        // I (zh)
        4700,        // J
        10000,       // A
        5900,        // K
        6100,        // &lt;space&gt;
        6700,        // L
        2900,        // A (using &amp;#x10085; altGlyph)
        2900,        // &amp;#x10085;
        10000,       // A
      ];

      var expectedKerning = [
        0,           // A
        0,           // BC [0]
        0,           // BC [1]
        0,           // B
        0,           // D
        200,         // A
        0,           // EE [0]
        0,           // EE [1]
        0,           // U+0046 [0]
        0,           // U+0046 [1]
        0,           // U+0046 [2]
        0,           // U+0046 [3]
        0,           // U+0046 [4]
        0,           // U+0046 [5]
        0,           // U+0046 [0]
        0,           // U+0046 [1]
        0,           // U+0046 [2]
        0,           // U+0046 [3]
        0,           // U+0046 [4]
        0,           // U+0046 [5]
        200,         // G
        0,           // G
        0,           // H
        0,           // I
        0,           // I (zh)
        -4700,       // J
        0,           // A
        0,           // K
        0,           // &lt;space&gt;
        0,           // L
        0,           // A (using &amp;#x10085; altGlyph)
        0,           // &amp;#x10085;
        0,           // A
      ];

      var numberOfChars = t.getNumberOfChars();
      if (numberOfChars == expectedAdvances.length + 1)
        fail(&apos;SVGSVGTextElement.getNumberOfChars() counts UTF-16 surrogates as separate characters&apos;);
      assertEquals(numberOfChars, expectedAdvances.length, &apos;SVGSVGTextElement.getNumberOfChars() incorrect&apos;);

      var expectedPositions = [0];
      for (var i = 0; i &lt; expectedAdvances.length; i++)
        expectedPositions.push(expectedPositions[i] + expectedAdvances[i] + expectedKerning[i]);

      var actualPositions = [];
      for (var i = 0; i &lt; numberOfChars; i++)
        actualPositions.push(t.getStartPositionOfChar(i).x);
      actualPositions.push(t.getEndPositionOfChar(numberOfChars - 1).x);

      for (var i = 0; i &lt; expectedPositions.length; i++) {
        if (expectedPositions[i] != actualPositions[i]) {
          var s = &apos;Position of character &apos; + i + &apos; was &apos; + actualPositions[i] + &apos;, but expecting &apos; + expectedPositions[i] + &apos;, which was &apos;;
          if (i == 0) {
            s += &apos;before &apos; + characterDescriptions[0] + &apos;.&apos;;
          } else if (i == expectedPositions.length - 1) {
            s += &apos;after &apos; + characterDescriptions[characterDescriptions.length - 1] + &apos;.&apos;;
          } else {
            s += &apos;between:\n\n    &apos; + characterDescriptions[i - 1] + &apos;,\n\nand:\n\n    &apos; + characterDescriptions[i] + &apos;.&apos;;
          }
          fail(s);
        }
      }
      return 5;
    },</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68556</commentid>
    <comment_count>1</comment_count>
      <attachid>18759</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 00:55:38 -0800</bug_when>
    <thetext>Created attachment 18759
reduced test case

TOT returns 32 for this, Safari 3 returns 0.  I&apos;m not sure why this should be 33, I&apos;d have to stare at it more closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68566</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2008-01-29 02:47:34 -0800</bug_when>
    <thetext>Sorry about the test being ridiculously long.  BTW that 33 vs 32 might well be a mistake in the test; it looks like the last string literal in the function-serialised SVG fragment should have an &apos;A&apos; at the end (i.e., it should be &apos;\uD800\uDC85A&apos; instead of &apos;\uD800\uDC85&apos;), since the rest of the test assumes that there is an A character after the astral character.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70007</commentid>
    <comment_count>3</comment_count>
      <attachid>19031</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-10 00:42:09 -0800</bug_when>
    <thetext>Created attachment 19031
better test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70008</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-10 00:53:15 -0800</bug_when>
    <thetext>Actually, this just seems completely broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70009</commentid>
    <comment_count>5</comment_count>
      <attachid>19032</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-10 00:53:33 -0800</bug_when>
    <thetext>Created attachment 19032
Even simpler test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70029</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-10 03:51:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=19032) [edit]
&gt; Even simpler test case
&gt; 

How did you ever get Acid3 to return sth. different to &apos;0&apos; ???
This test creates a SVG Document, and appends a &lt;text&gt; element, tries to query the metrics... at this point the render tree is not attached(), yet and _any_ call to any SVGTextContentElement will return 0.

Greetings,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70068</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-10 10:35:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; How did you ever get Acid3 to return sth. different to &apos;0&apos; ???
&gt; This test creates a SVG Document, and appends a &lt;text&gt; element, tries to query
&gt; the metrics... at this point the render tree is not attached(), yet and _any_
&gt; call to any SVGTextContentElement will return 0.

In my latest test case the &lt;text&gt; element is actually in the document and rendered.  So it seems there are more fundamental problems than just lacking a renderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70251</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-11 07:18:08 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; How did you ever get Acid3 to return sth. different to &apos;0&apos; ???
&gt; &gt; This test creates a SVG Document, and appends a &lt;text&gt; element, tries to query
&gt; &gt; the metrics... at this point the render tree is not attached(), yet and _any_
&gt; &gt; call to any SVGTextContentElement will return 0.
&gt; 
&gt; In my latest test case the &lt;text&gt; element is actually in the document and
&gt; rendered.  So it seems there are more fundamental problems than just lacking a
&gt; renderer.

I don&apos;t actually understand your last testcase. What is it supposed to test? It doesn&apos;t work In Opera/Safari/FF or IE6/7.

The first testcase is much more valid - and shows the problem is because of missing &lt;altGlyph&gt; support - if you remove the &lt;altGlyph&gt; element the test works.

Greetings,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70278</commentid>
    <comment_count>9</comment_count>
      <attachid>19072</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-11 11:36:10 -0800</bug_when>
    <thetext>Created attachment 19072
Even simpler test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70279</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-11 11:37:19 -0800</bug_when>
    <thetext>&gt; The first testcase is much more valid - and shows the problem is because of
&gt; missing &lt;altGlyph&gt; support - if you remove the &lt;altGlyph&gt; element the test
&gt; works.

Yeah, sorry, I uploaded the wrong test case.  I&apos;ve fixed that.  In my final test case, you&apos;ll see that getNumberOfChars just doesn&apos;t work at all in this case.  Maybe the first layout has not yet been done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70294</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-11 12:37:53 -0800</bug_when>
    <thetext>&gt; 
&gt; Yeah, sorry, I uploaded the wrong test case.  I&apos;ve fixed that.  In my final
&gt; test case, you&apos;ll see that getNumberOfChars just doesn&apos;t work at all in this
&gt; case.  Maybe the first layout has not yet been done?
&gt; 
That&apos;s my guess. I just updated to ToT, and found out the testcases are working - what fixed it?!

Greetings,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71632</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-02-23 13:34:39 -0800</bug_when>
    <thetext>Acid3 was actually buggy on this test (note that it has moved from test 69 to test 79).  I got Hixie to fix it so that the test is rendered now (before we had no rendertree because he just did createDocument without putting it anywhere).

We now fail this because we report 33 characters instead of 34.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72382</commentid>
    <comment_count>13</comment_count>
      <attachid>19458</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-29 14:18:16 -0800</bug_when>
    <thetext>Created attachment 19458
Add a copy of Acid3 test 79

 LayoutTests/svg/custom/acid3-test-79.html         |   13 +
 LayoutTests/svg/custom/resources/acid3-test-77.js |    2 -
 LayoutTests/svg/custom/resources/acid3-test-79.js |  283 +++++++++++++++++++++
 3 files changed, 296 insertions(+), 2 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74902</commentid>
    <comment_count>14</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-03-23 19:10:44 -0700</bug_when>
    <thetext>I figured out that we get the wrong answer for getNumberOfChars because altGlyph is not implemented. I did a very basic implementation which renders it as a tspan (ignoring the requested glyph substitution). This is enough to get the number of characters right, but more complete support will be needed to get the correct layout that the rest of the test requires. I filed bug 18031 for these subsequent failures.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74917</commentid>
    <comment_count>15</comment_count>
      <attachid>19992</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-03-23 21:24:28 -0700</bug_when>
    <thetext>Created attachment 19992
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74919</commentid>
    <comment_count>16</comment_count>
      <attachid>19992</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-23 21:32:24 -0700</bug_when>
    <thetext>Comment on attachment 19992
patch v1

Looks great!  Congrats on your first SVG patch.  And yes... the &quot;adding a tag&quot; process is way way too manual at this point.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18759</attachid>
            <date>2008-01-29 00:55:38 -0800</date>
            <delta_ts>2008-02-10 00:42:09 -0800</delta_ts>
            <desc>reduced test case</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>1267</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxzY3JpcHQ+CjwhW0NE
QVRBWwp2YXIgTlMgPSB7IAogIHN2ZzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywKICB4
bWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L1hNTC9uYW1lc3BhY2UnLAogIHhsaW5rOiAnaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluaycKfTsKCnZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1l
bnRhdGlvbi5jcmVhdGVEb2N1bWVudChOUy5zdmcsICdzdmcnLCBudWxsKTsKdmFyIGUgPSBmdW5j
dGlvbiAobiwgYXMsIGNzKSB7CiAgdmFyIGVsdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoTlMuc3Zn
LCBuKTsKICBpZiAoYXMpIHsKICAgIGZvciAodmFyIGFuIGluIGFzKSB7CiAgICAgIHZhciBpZHgg
PSBhbi5pbmRleE9mKCc6Jyk7CiAgICAgIHZhciBucyA9IG51bGw7CiAgICAgIGlmIChpZHggIT0g
LTEpCiAgICAgICAgbnMgPSBOU1thbi5zdWJzdHJpbmcoMCwgaWR4KV07CiAgICAgIGVsdC5zZXRB
dHRyaWJ1dGVOUyhucywgYW4sIGFzW2FuXSk7CiAgICB9CiAgfQogIGlmIChjcykgewogICAgZm9y
ICh2YXIgaSBpbiBjcykgewogICAgICB2YXIgYyA9IGNzW2ldOwogICAgICBlbHQuYXBwZW5kQ2hp
bGQodHlwZW9mIGMgPT0gJ3N0cmluZycgPyBkb2MuY3JlYXRlVGV4dE5vZGUoYykgOiBjKTsKICAg
IH0KICB9CiAgcmV0dXJuIGVsdDsKfQoKICB2YXIgdGV4dCA9IGUoJ3RleHQnLCB7ICd5JzogJzEw
MCcsICdmb250LWZhbWlseSc6ICdIQ2wnLCAnZm9udC1zaXplJzogJzEwMHB4JywgJ2xldHRlci1z
cGFjaW5nJzogJzBweCcsICd3b3JkLXNwYWNpbmcnOiAnMHB4J30sIFsnQUJDQkRBRUVVKzAwNDZV
KzAwNDZHR0hJJywgZSgndHNwYW4nLCB7ICd4bWw6bGFuZyc6ICd6aCd9LCBbJ0knXSksICdKQUsg
TCcsIGUoJ2FsdEdseXBoJywgeyAneGxpbms6aHJlZic6ICcjYXN0cmFsJ30sIFsnQSddKSwgJ1x1
RDgwMFx1REM4NSddKTsKICAKICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGV4dCk7CiAgdmFyIHJlc3VsdCA9IGUoJ3RleHQnLCB7ICd5JyA6ICczMDAnfSk7CiAgZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHJlc3VsdCk7CiAgcmVzdWx0LnRleHRDb250
ZW50ID0gKHRleHQuZ2V0TnVtYmVyT2ZDaGFycygpID09IDMzKSA/ICJQQVNTRUQiIDogIkZBSUxF
RCwgZXhwZWN0ZWQgMzMsIGdvdCA6IiArIHRleHQuZ2V0TnVtYmVyT2ZDaGFycygpOwpdXT4KPC9z
Y3JpcHQ+Cjwvc3ZnPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>19031</attachid>
            <date>2008-02-10 00:42:09 -0800</date>
            <delta_ts>2008-02-10 00:53:33 -0800</delta_ts>
            <desc>better test case</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>551</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8dGV4dCBpZD0idGV4dCIgeD0iMjAiIHk9IjMw
Ij5BPGFsdEdseXBoIHhsaW5rOmhyZWY9IiNhc3RyYWwiPkI8L2FsdEdseXBoPkM8L3RleHQ+CiAg
PHRleHQgaWQ9InJlc3VsdCIgeD0iMjAiIHk9IjYwIj48L3RleHQ+CiAgPHNjcmlwdD4KPCFbQ0RB
VEFbCiAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogIH0KICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXh0Iik7CiAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKTsKICByZXN1bHQudGV4dENvbnRlbnQgPSAodGV4dC5nZXROdW1iZXJPZkNoYXJzKCkg
PT0gMykgPyAiUEFTU0VEIiA6ICJGQUlMRUQsIGV4cGVjdGVkIDMsIGdvdCA6IiArIHRleHQuZ2V0
TnVtYmVyT2ZDaGFycygpOwpdXT4KPC9zY3JpcHQ+Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>19032</attachid>
            <date>2008-02-10 00:53:33 -0800</date>
            <delta_ts>2008-02-11 11:36:10 -0800</delta_ts>
            <desc>Even simpler test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>356</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PGlmcmFtZSBpZD0idGVzdCI+VEVTVDwvaWZyYW1lPgo8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2Pgo8
c2NyaXB0Pgp2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKdmFy
IHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKaWYgKGlmcmFtZS5m
aXJzdENoaWxkICYmIGlmcmFtZS5maXJzdENoaWxkLnZhbHVlID09ICJURVNUIikgewogICAgcmVz
dWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQQVNTIikpOwp9IGVsc2Ug
ewogICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGQUlMIikp
OzsKfQo8L3NjcmlwdD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>19072</attachid>
            <date>2008-02-11 11:36:10 -0800</date>
            <delta_ts>2008-02-11 11:36:10 -0800</delta_ts>
            <desc>Even simpler test case</desc>
            <filename>getNumberOfCharacters-altGlyph.svg</filename>
            <type>image/svg+xml</type>
            <size>507</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8dGV4dCBpZD0idGV4dCIgeD0iMjAiIHk9IjMw
Ij5BPC90ZXh0PgogIDx0ZXh0IGlkPSJyZXN1bHQiIHg9IjIwIiB5PSI2MCI+PC90ZXh0PgogIDxz
Y3JpcHQ+CjwhW0NEQVRBWwogIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICB9CiAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpOwogIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CiAgcmVzdWx0LnRleHRDb250ZW50ID0gKHRleHQuZ2V0TnVt
YmVyT2ZDaGFycygpID09IDEpID8gIlBBU1NFRCIgOiAiRkFJTEVELCBleHBlY3RlZCAxLCBnb3Qg
OiIgKyB0ZXh0LmdldE51bWJlck9mQ2hhcnMoKTsKXV0+Cjwvc2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19458</attachid>
            <date>2008-02-29 14:18:16 -0800</date>
            <delta_ts>2008-02-29 14:18:16 -0800</delta_ts>
            <desc>Add a copy of Acid3 test 79</desc>
            <filename>Add-a-copy-of-Acid3-test-79.patch</filename>
            <type>text/plain</type>
            <size>18563</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NDZiZTE1ODA0ZGIwNmU2OWM3NWZkOGYzMjI3MzRmOTA1ZTc2NGU0MwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9hY2lkMy10ZXN0LTc5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL2FjaWQzLXRlc3QtNzkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lNTVlYzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9h
Y2lkMy10ZXN0LTc5Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNpZDMtdGVzdC03
OS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL2FjaWQzLXRlc3QtNzcuanMgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9hY2lkMy10ZXN0LTc3LmpzCmluZGV4IGE4NDM0MjYu
Ljk1ZThhYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL2Fj
aWQzLXRlc3QtNzcuanMKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYWNp
ZDMtdGVzdC03Ny5qcwpAQCAtMSw1ICsxLDMgQEAKLQotCiAvLyB0ZXN0IDc3OiBleHRlcm5hbCBT
VkcgZm9udHMsIGZyb20gRXJpayBEYWhsc3Ryb20KIC8vCiAvLyBTVkdGb250cyBhcmUgZGVzY3Jp
YmVkIGhlcmVbM10sIGFuZCB0aGUgcmVsZXZhbnQgRE9NIG1ldGhvZHMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL2FjaWQzLXRlc3QtNzkuanMgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9hY2lkMy10ZXN0LTc5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjBjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9hY2lkMy10ZXN0LTc5LmpzCkBAIC0wLDAgKzEsMjgz
IEBACisvLyB0ZXN0IDc5OiBhIGdpYW50IHRlc3QgZm9yIDxzdmc6Zm9udD4sIGZyb20gQ2FtZXJv
biBNY0Nvcm1hY2sKKy8vIFRoaXMgdGVzdHMgdmFyaW91cyBmZWF0dXJlcyBvZiBTVkcgZm9udHMg
ZnJvbSBTVkcgMS4xLiAgSXQgY29uc2lzdHMgb2YKKy8vIGEgPHRleHQ+IGVsZW1lbnQgd2l0aCAz
MyBjaGFyYWN0ZXJzLCBzdHlsZWQgdXNpbmcgYW4gU1ZHIGZvbnQgdGhhdCBoYXMKKy8vIGRpZmZl
cmVudCBhZHZhbmNlIHZhbHVlcyBmb3IgZWFjaCBnbHlwaC4gIFRoZSBzY3JpcHQgdXNlcworLy8g
U1ZHVGV4dEVsZW1lbnRDb250ZW50LmdldFN0YXJ0UG9zaXRpb25PZkNoYXIoKSB0byBkZXRlcm1p
bmUgd2hlcmUgdGhlCisvLyBnbHlwaCBjb3JyZXNwb25kaW5nIHRvIGVhY2ggY2hhcmFjdGVyIHdh
cyBwbGFjZWQsIGFuZCB0aHVzIHRvIHdvcmsgb3V0CisvLyB3aGV0aGVyIHRoZSBTVkcgZm9udCB3
YXMgdXNlZCBjb3JyZWN0bHkuCisvLworLy8gVGhlIGZvbnQgdXNlcyAxMDAgdW5pdHMgcGVyIGVt
LCBhbmQgdGhlIHRleHQgaXMgc2V0IGluIDEwMHB4LiAgU2luY2UKKy8vIGZvbnQtc2l6ZSBnaXZl
cyB0aGUgc2l6ZSBvZiB0aGUgZW0gYm94CisvLyAoaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEv
dGV4dC5odG1sI0RPTUludGVyZmFjZXMpLCB0aGUgc2NhbGUgb2YgdGhlCisvLyBjb29yZGluYXRl
IHN5c3RlbSBmb3IgdGhlIGdseXBocyBpcyB0aGUgc2FtZSBhcyB0aGUgU1ZHIGRvY3VtZW50Lgor
Ly8KKy8vIFRoZSBleHBlY3RlZEFkdmFuY2VzIGFycmF5IGhvbGRzIHRoZSBleHBlY3RlZCBhZHZh
bmNlIHZhbHVlIGZvciBlYWNoCisvLyBjaGFyYWN0ZXIsIGFuZCBleHBlY3RlZEtlcm5pbmcgaG9s
ZHMgdGhlIChuZWdhdGl2ZSkga2VybmluZyBmb3IgZWFjaAorLy8gY2hhcmFjdGVyLiAgZ2V0UG9z
aXRpb25PZkNoYXIoKSByZXR1cm5zIHRoZSBhY3R1YWwgeCBjb29yZGluYXRlIGZvciB0aGUKKy8v
IGdseXBoLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBjaGFyYWN0ZXIsIGFuZCBpZiBtdWx0
aXBsZSBjaGFyYWN0ZXJzCisvLyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIGdseXBoLCB0aGUgc2Ft
ZSBwb3NpdGlvbiB2YWx1ZSBpcyByZXR1cm5lZCBmb3IKKy8vIGVhY2ggb2YgdGhvc2UgY2hhcmFj
dGVycy4KKy8vCisvLyBIZXJlIGFyZSB0aGUgcmVhc29uaW5ncyBmb3IgdGhlIGFkdmFuY2Uva2Vy
bmluZyB2YWx1ZXMuICBOb3RlIHRoYXQgZm9yCisvLyBhIGdpdmVuIGNoYXJhY3RlciBhdCBpbmRl
eCBpLCB0aGUgZXhwZWN0ZWQgcG9zaXRpb24gaXMKKy8vIHN1bShleHBlY3RlZEFkdmFuY2VzWzA6
aS0xXSArIGV4cGVjdGVkS2VybmluZ1swOmktMV0pLgorLy8KKy8vIGNoYXIgICAgIGFkdmFuY2Ug
IGtlcm5pbmcgIHJlYXNvbmluZworLy8gLS0tLS0tLSAgLS0tLS0tLSAgLS0tLS0tLSAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEEgICAgICAg
IDEwMDAwICAgIDAgICAgICAgIE5vcm1hbCBjaGFyYWN0ZXIgbWFwcGluZyB0byBhIHNpbmdsZSBn
bHlwaC4KKy8vIEIgICAgICAgIDAgICAgICAgIDAgICAgICAgIEZpcnN0IGNoYXJhY3RlciBvZiBh
IHR3byBjaGFyYWN0ZXIgZ2x5cGgsIHNvIHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudCBwb3NpdGlvbiBpc24ndCBhZHZhbmNlZCB1bnRpbCB0aGUgc2Vjb25kCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIuCisvLyBDICAgICAgICAyMDAgICAg
ICAwICAgICAgICBTZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdvIGNoYXJhY3RlciBnbHlwaCwgc28g
bm93CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcG9zaXRpb24gaXMgYWR2YW5j
ZWQuCisvLyBCICAgICAgICAzMDAgICAgICAwICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBhIGds
eXBoIGZvciAiQkMiIGluIHRoZSBmb250LAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXQgYXBwZWFycyBhZnRlciB0aGUgZ2x5cGggZm9yICJCIiwgc28gdGhlIHNpbmdsZQorLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIGdseXBoIGZvciAiQiIgc2hvdWxkIGJl
IGNob3NlbiBpbnN0ZWFkLgorLy8gRCAgICAgICAgMTEwMCAgICAgMCAgICAgICAgTm9ybWFsIGNo
YXJhY3RlciBtYXBwaW5nIHRvIGEgc2luZ2xlIGdseXBoLgorLy8gQSAgICAgICAgMTAwMDAgICAg
MjAwICAgICAgS2VybmluZyBvZiAtMjAwIGlzIHNwZWNpZmllZCBpbiB0aGUgZm9udCBiZXR3ZWVu
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkEiIGFuZCAiRUUiIGdseXBocy4K
Ky8vIEUgICAgICAgIDAgICAgICAgIDAgICAgICAgIFRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSB0
d28gY2hhcmFjdGVyIGdseXBoICJFRSIuCisvLyBFICAgICAgICAxMzAwICAgICAwICAgICAgICBU
aGUgc2Vjb25kIGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5cGguCisvLyBVICAgICAg
ICAwICAgICAgICAwICAgICAgICBUaGlzIGlzIGEgZ2x5cGggZm9yIHRoZSBzaXggY2hhcmFjdGVy
cyAiVSswMDQ2IiwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGhhcHBlbiB0
byBsb29rIGxpa2UgYSB2YWxpZCB1bmljb2RlIHJhbmdlLgorLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGhpcyB0ZXN0cyB0aGF0IHRoZSA8Z2x5cGggdW5pY29kZT0iIj4gaW4gdGhlCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250IG1hdGNoZXMgZXhhY3Qgc3RyaW5ncyBy
YXRoZXIgdGhhbiBhIHJhbmdlLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgdXNl
ZCBpbiB0aGUga2VybmluZyBlbGVtZW50cy4KKy8vICsgICAgICAgIDAgICAgICAgIDAgICAgICAg
IFNlY29uZCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlwaC4KKy8vIDAgICAgICAgIDAg
ICAgICAgIDAgICAgICAgIFRoaXJkIGNoYXJhY3RlciBvZiBzaXggY2hhcmFjdGVyIGdseXBoLgor
Ly8gMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgRm91cnRoIGNoYXJhY3RlciBvZiBzaXggY2hh
cmFjdGVyIGdseXBoLgorLy8gNCAgICAgICAgMCAgICAgICAgMCAgICAgICAgRmlmdGggY2hhcmFj
dGVyIG9mIHNpeCBjaGFyYWN0ZXIgZ2x5cGguCisvLyA2ICAgICAgICAxNzAwICAgICAwICAgICAg
ICBTaXh0aCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlwaC4KKy8vIFUgICAgICAgIDAg
ICAgICAgIDAgICAgICAgIFRoZSBzYW1lIHNpeCBjaGFyYWN0ZXIgZ2x5cGggdGhhdCBsb29rcyBs
aWtlIGEKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGUgcmFuZ2UuICBPbmUg
b2YgdGhlIGtlcm5pbmcgZWxlbWVudHMgaGFzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1MT0iVSswMDQ2IiB1Mj0iVSswMDQ2Iiwgd2hpY2ggc2hvdWxkbid0IG1hdGNoCisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBiZWNhdXNlIHRob3NlIGF0dHJpYnV0ZXMgYXJl
IGludGVycHJldGVkCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBVbmljb2RlIHJh
bmdlcyBpZiB0aGV5IGFyZSwgYW5kIG5vcm1hbAorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyaW5ncyBvdGhlcndpc2UuICBUaHVzIHRoZXJlIHNob3VsZCBiZSBubworLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAga2VybmluZyBiZXR3ZWVuIHRoZXNlIHR3byBnbHlwaHMuCisv
LyBHICAgICAgICAyMzAwICAgICAyMDAgICAgICBLZXJuaW5nIGlzIGJldHdlZW4gdGhpcyBjaGFy
YWN0ZXIgYW5kIHRoZSBuZXh0CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRyIsIHNp
bmNlIHRoZXJlIGlzIGFuIDxoa2Vybj4gZWxlbWVudCB0aGF0CisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1c2VzIGEgVW5pY29kZSByYW5nZSBvbiBpdHMgdTE9IiIgYXR0cmlidXRlCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYSBnbHlwaCBuYW1lIG9uIGl0cyBnMj0i
IiBhdHRyaWJ1dGUgd2hpY2gKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGggbWF0
Y2ggIkciLgorLy8gRyAgICAgICAgMjMwMCAgICAgMCAgICAgICAgTm9ybWFsIGNoYXJhY3RlciB3
aXRoIGtlcm5pbmcgYmVmb3JlIGl0LgorLy8gSCAgICAgICAgMzEwMCAgICAgMCAgICAgICAgQSBn
bHlwaCB3aXRoIGdyYXBoaWNhbCBjb250ZW50IGRlc2NyaWJpbmcgdGhlCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbHlwaCwgcmF0aGVyIHRoYW4gYSBkPSIiIGF0dHJpYnV0ZS4KKy8v
IEkgICAgICAgIDQzMDAgICAgIDAgICAgICAgIEdseXBocyBhcmUgY2hlY2tlZCBpbiBkb2N1bWVu
dCBvcmRlciBmb3Igb25lCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG1hdGNo
ZXMsIGJ1dCB0aGUgZmlyc3QgZ2x5cGggd2l0aAorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pY29kZT0iSSIgYWxzbyBoYXMgbGFuZz0iemgiLCB3aGljaCBkaXNxdWFsaWZpZXMKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAgVGh1cyB0aGUgc2Vjb25kIGdseXBoIHdp
dGggdW5pY29kZT0iSSIKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNob3Nlbi4K
Ky8vIEkgICAgICAgIDQxMDAgICAgIDAgICAgICAgIFNpbmNlIHRoaXMgSSBoYXMgeG1sOmxhbmc9
InpoIiBvbiBpdCBpbiB0aGUgdGV4dCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaXJzdCBnbHlwaCB3aXRoIGxhbmc9InpoIiBtYXRjaGVzLgorLy8gSiAgICAgICAgNDcwMCAg
ICAgLTQ3MDAgICAgQSBub3JtYWwgZ2x5cGggd2l0aCBrZXJuaW5nIGJldHdlZW4gdGhlICJKIiBh
bmQgdGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGdseXBoICJBIiBlcXVh
bCB0byB0aGUgYWR2YW5jZSBvZiB0aGUgIkoiCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbHlwaCwgc28gdGhlIHBvc2l0aW9uIHNob3VsZCBzdGF5IHRoZSBzYW1lLgorLy8gQSAgICAg
ICAgMTAwMDAgICAgMCAgICAgICAgTm9ybWFsIGdseXBoIHdpdGgga2VybmluZyBiZWZvcmUgaXQu
CisvLyBLICAgICAgICA1OTAwICAgICAwICAgICAgICBUaGUgZmlyc3QgZ2x5cGggd2l0aCB1bmlj
b2RlPSJLIiBkb2VzIG5vdCBtYXRjaCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
bmNlIGl0IGhhcyBvcmllbnRhdGlvbj0idiIsIHNvIHRoZSBzZWNvbmQKKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdseXBoIHdpdGggdW5pY29kZT0iSyIgaXMgY2hvc2VuLgorLy8gPHNw
Yz4gICAgNjEwMCAgICAgMCAgICAgICAgVGhlIHNwYWNlIGNoYXJhY3RlciBzaG91bGQgc2VsZWN0
IHRoZSBnbHlwaCB3aXRoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlPSIg
IiwgZGVzcGl0ZSBpdCBoYXZpbmcgYSBtaXNsZWFkaW5nCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbHlwaC1uYW1lPSJMIi4KKy8vIEwgICAgICAgIDY3MDAgICAgIDAgICAgICAgIFRo
ZSAiTCIgY2hhcmFjdGVyIHNob3VsZCBzZWxlY3QgdGhlIGdseXBoIHdpdGgKKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaWNvZGU9IiAiLCBkZXNwaXRlIGl0IGhhdmluZyBhIG1pc2xl
YWRpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoLW5hbWU9InNwYWNldiIu
CisvLyBBICAgICAgICAyOTAwICAgICAwICAgICAgICBBbiA8YWx0R2x5cGg+IGVsZW1lbnQgaXMg
dXNlZCB0byBzZWxlY3QgdGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBm
b3IgVSsxMDA4NSBpbnN0ZWFkIG9mIHRoZSBvbmUgZm9yICJBIi4KKy8vIFUrMTAwODUgIDI5MDAg
ICAgIDAgICAgICAgIFRlc3RzIGdseXBoIHNlbGVjdGlvbiB3aXRoIGEgbm9uLXBsYW5lLTAKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci4KKy8vIEEgICAgICAgIDEwMDAw
ICAgIDAgICAgICAgIEEgZmluYWwgbm9ybWFsIGNoYXJhY3Rlci4KKy8vCisvLyBJbiBhZGRpdGlv
biwgdGhlIHNjcmlwdCB0ZXN0cyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKy8vIFNWR1RleHRDb250
ZW50RWxlbWVudC5nZXROdW1iZXJPZkNoYXJzKCksIHdoaWNoIGluIHRoaXMgY2FzZSBzaG91bGQg
YmUgMzMuCisvLyBJZiBpdCByZXR1cm5lZCAzNCwgdGhlbiBpdCBpbmNvcnJlY3RseSBjb3VudGVk
IFVURi0xNiBjb2RlcG9pbnRzIG9yCisvLyBzb21ldGhpbmcuCisvLworLy8gU2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL1NWRzExL2ZvbnRzLmh0bWwgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGds
eXBoCisvLyBtYXRjaGluZyBydWxlcywgYW5kIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL3Rl
eHQuaHRtbCNET01JbnRlcmZhY2VzCisvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiBnZXRTdGFydFBv
c2l0aW9uT2ZDaGFyKCkgYW5kIGdldE51bWJlck9mQ2hhcnMoKS4KKy8vCisvLyBOb3RlIGFsc28g
dGhhdCB0aGUgdGVzdCB1c2VzIERPTUltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkgdG8g
Y3JlYXRlCisvLyB0aGUgU1ZHIGRvY3VtZW50LiAgVGhpcyBzZWVtcyB0byBjYXVzZSBicm93c2Vy
cyB0cm91YmxlIGZvciB0aGUgU1ZHIERPTQorLy8gaW50ZXJmYWNlcywgc2luY2UgdGhlIGRvY3Vt
ZW50IGlzbid0IGJlaW5nICJyZW5kZXJlZCIgYXMgaXQgbWlnaHQgYmUKKy8vIGlmIGl0IHdlcmUg
aW4gYW4gPGlmcmFtZT4uICBDaGFuZ2luZyB0aGUgdGVzdCB0byB1c2UgYW4gPGlmcmFtZT4gd2ls
bAorLy8gYXQgbGVhc3QgbGV0IHlvdSBzZWUgdGhlIG1haW4gcGFydCBvZiB0aGUgdGVzdCBydW5u
aW5nLgorCit2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Citp
ZnJhbWUuc3JjID0gInJlc291cmNlcy9BY2lkM0ZvbnQtbG9hZGVyLnN2ZyI7Citkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKwordmFyIE5TID0geyAKKyAgc3Zn
OiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLAorICB4bWw6ICdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L1hNTC9uYW1lc3BhY2UnLAorICB4bGluazogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsnCit9OworCit2YXIgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLnN2Zywg
InN2ZyIpOworZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHN2Zyk7CisKK3Zh
ciBlID0gZnVuY3Rpb24gKG4sIGFzLCBjcykgeworICB2YXIgZWx0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKE5TLnN2Zywgbik7CisgIGlmIChhcykgeworICAgIGZvciAodmFyIGFuIGluIGFz
KSB7CisgICAgICB2YXIgaWR4ID0gYW4uaW5kZXhPZignOicpOworICAgICAgdmFyIG5zID0gbnVs
bDsKKyAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgIG5zID0gTlNbYW4uc3Vic3RyaW5nKDAs
IGlkeCldOworICAgICAgZWx0LnNldEF0dHJpYnV0ZU5TKG5zLCBhbiwgYXNbYW5dKTsKKyAgICB9
CisgIH0KKyAgaWYgKGNzKSB7CisgICAgZm9yICh2YXIgaSBpbiBjcykgeworICAgICAgdmFyIGMg
PSBjc1tpXTsKKyAgICAgIGVsdC5hcHBlbmRDaGlsZCh0eXBlb2YgYyA9PSAnc3RyaW5nJyA/IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGMpIDogYyk7CisgICAgfQorICB9CisgIHJldHVybiBlbHQ7
Cit9CisKK3N2Zy5hcHBlbmRDaGlsZChlKCdmb250JywgeyAnaG9yaXotYWR2LXgnOiAnMTAwMDAn
fSwgW2UoJ2ZvbnQtZmFjZScsIHsgJ2ZvbnQtZmFtaWx5JzogJ0hDbCcsICd1bml0cy1wZXItZW0n
OiAnMTAwJywgJ2FzY2VudCc6ICcxMDAwJywgJ2Rlc2NlbnQnOiAnNTAwJ30pLCBlKCdtaXNzaW5n
LWdseXBoJywgbnVsbCwgW2UoJ3BhdGgnLCB7ICdkJzogJ00xMDAsMCBoODAwIHYtMTAwIGgtODAw
IHonfSldKSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0EnLCAnZCc6ICdNMTAwLDAgaDEwMCB2
LTEwMCBoLTEwMCB6J30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnQkMnLCAnZCc6ICdNMTAw
LDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzIwMCd9KSwgZSgnZ2x5cGgn
LCB7ICd1bmljb2RlJzogJ0InLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hv
cml6LWFkdi14JzogJzMwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0MnLCAnZCc6ICdN
MTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzUwMCd9KSwgZSgnZ2x5
cGgnLCB7ICd1bmljb2RlJzogJ0JEJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeics
ICdob3Jpei1hZHYteCc6ICc3MDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdEJywgJ2Qn
OiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcxMTAwJ30pLCBl
KCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnRUUnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEw
MCB6JywgJ2hvcml6LWFkdi14JzogJzEzMDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdV
KzAwNDYnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14Jzog
JzE3MDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdGJywgJ2QnOiAnTTEwMCwwIGgxMDAg
di0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcxOTAwJ30pLCBlKCdnbHlwaCcsIHsgJ3Vu
aWNvZGUnOiAnRycsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2
LXgnOiAnMjMwMCcsICdnbHlwaC1uYW1lJzogJ2dlZSd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2Rl
JzogJ1x1RDgwMFx1REM4NScsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9y
aXotYWR2LXgnOiAnMjkwMCcsICdpZCc6ICdhc3RyYWwnfSksIGUoJ2dseXBoJywgeyAndW5pY29k
ZSc6ICdIJywgJ2hvcml6LWFkdi14JzogJzMxMDAnfSwgW2UoJ3BhdGgnLCB7ICdkJzogJ00xMDAs
MCBoMTAwIHYtMTAwIGgtMTAwIHonfSldKSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0knLCAn
ZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzQxMDAnLCAn
bGFuZyc6ICd6aCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0knLCAnZCc6ICdNMTAwLDAg
aDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzQzMDAnfSksIGUoJ2dseXBoJywg
eyAndW5pY29kZSc6ICdKJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jp
ei1hZHYteCc6ICc0NzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnSycsICdkJzogJ00x
MDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNTMwMCcsICdvcmllbnRh
dGlvbic6ICd2J30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnSycsICdkJzogJ00xMDAsMCBo
MTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNTkwMCd9KSwgZSgnZ2x5cGgnLCB7
ICd1bmljb2RlJzogJyAnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6
LWFkdi14JzogJzYxMDAnLCAnZ2x5cGgtbmFtZSc6ICdMJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNv
ZGUnOiAnTCcsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgn
OiAnNjcwMCcsICdnbHlwaC1uYW1lJzogJ3NwYWNlJ30pLCBlKCdoa2VybicsIHsgJ3UxJzogJ0En
LCAndTInOiAnRUUnLCAnayc6ICctMjAwJ30pLCBlKCdoa2VybicsIHsgJ3UxJzogJ1UrMDA0Nics
ICd1Mic6ICdVKzAwNDYnLCAnayc6ICctMjAwJ30pLCBlKCdoa2VybicsIHsgJ3UxJzogJ1UrMDA0
Ny0wMDQ3JywgJ2cyJzogJ2dlZScsICdrJzogJy0yMDAnfSksIGUoJ2hrZXJuJywgeyAndTEnOiAn
SicsICd1Mic6ICdBJywgJ2snOiAnNDcwMCd9KV0pKTsKK3N2Zy5hcHBlbmRDaGlsZChlKCd0ZXh0
JywgeyAneSc6ICcxMDAnLCAnZm9udC1mYW1pbHknOiAnSENsJywgJ2ZvbnQtc2l6ZSc6ICcxMDBw
eCcsICdsZXR0ZXItc3BhY2luZyc6ICcwcHgnLCAnd29yZC1zcGFjaW5nJzogJzBweCd9LCBbJ0FC
Q0JEQUVFVSswMDQ2VSswMDQ2R0dISScsIGUoJ3RzcGFuJywgeyAneG1sOmxhbmcnOiAnemgnfSwg
WydJJ10pLCAnSkFLIEwnLCBlKCdhbHRHbHlwaCcsIHsgJ3hsaW5rOmhyZWYnOiAnI2FzdHJhbCd9
LCBbJ0EnXSksICdcdUQ4MDBcdURDODVBJ10pKTsKKwordmFyIHQgPSBzdmcubGFzdENoaWxkOwor
Cit2YXIgY2hhcmFjdGVyRGVzY3JpcHRpb25zID0gWworICAiYSBub3JtYWwgY2hhcmFjdGVyIiwK
KyAgInRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVyIGdseXBoIiwKKyAgInRo
ZSBzZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdvLWNoYXJhY3RlciBnbHlwaCIsCisgICJhIG5vcm1h
bCBjaGFyYWN0ZXIsIHdoaWNoIHNob3VsZG4ndCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEg
dHdvLWNoYXJhY3RlciBnbHlwaCIsCisgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdoaWNoIHNob3Vs
ZG4ndCBiZSB0aGUgc2Vjb25kIGNoYXJhY3RlciBvZiBhIHR3by1jaGFyYWN0ZXIgZ2x5cGgiLAor
ICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGFmdGVyIGl0IiwK
KyAgInRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVyIGdseXBoLCB3aGljaCBo
YXMgc29tZSBrZXJuaW5nIGJlZm9yZSBpdCIsCisgICJ0aGUgc2Vjb25kIGNoYXJhY3RlciBvZiBh
IHR3by1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcyBzb21lIGtlcm5pbmcgYmVmb3JlIGl0IiwK
KyAgInRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBo
YXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVj
aWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90
IiwKKyAgInRoZSBzZWNvbmQgY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hp
Y2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Ut
c3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGFmdGVyIGl0LCBidXQgdGhpcyBnbHlwaCBkb2Vz
IG5vdCIsCisgICJ0aGUgdGhpcmQgY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwg
d2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFu
Z2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGFmdGVyIGl0LCBidXQgdGhpcyBnbHlwaCBk
b2VzIG5vdCIsCisgICJ0aGUgZm91cnRoIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5
cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUgdGhl
IHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRoaXMgZ2x5
cGggZG9lcyBub3QiLAorICAidGhlIGZpZnRoIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIg
Z2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUg
dGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRoaXMg
Z2x5cGggZG9lcyBub3QiLAorICAidGhlIHNpeHRoIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0
ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hl
cmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRo
aXMgZ2x5cGggZG9lcyBub3QiLAorICAidGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIHNpeC1jaGFy
YWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwg
d2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBiZWZvcmUgaXQsIGJ1
dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKKyAgInRoZSBzZWNvbmQgY2hhcmFjdGVyIG9mIGEgc2l4
LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJh
bmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGJlZm9yZSBp
dCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAorICAidGhlIHRoaXJkIGNoYXJhY3RlciBvZiBh
IHNpeC1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29k
ZSByYW5nZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBiZWZv
cmUgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKKyAgInRoZSBmb3VydGggY2hhcmFjdGVy
IG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBV
bmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5n
IGJlZm9yZSBpdCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAorICAidGhlIGZpZnRoIGNoYXJh
Y3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtl
IGEgVW5pY29kZSByYW5nZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2Vy
bmluZyBiZWZvcmUgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKKyAgInRoZSBzaXh0aCBj
aGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxvb2sg
bGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGggaGFz
IGtlcm5pbmcgYmVmb3JlIGl0LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsCisgICJhIG5vcm1h
bCBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBzb21lIGtlcm5pbmcgYWZ0ZXIgaXQgdGhhdCBpcyBzcGVj
aWZpZWQgYnkgZ2x5cGggbmFtZSIsCisgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBz
b21lIGtlcm5pbmcgYmVmb3JlIGl0IHRoYXQgaXMgc3BlY2lmaWVkIGJ5IGdseXBoIG5hbWUiLAor
ICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aG9zZSBnbHlwaCBpcyBnaXZlbiBieSBjaGlsZCBncmFw
aGljYWwgY29udGVudCBvZiB0aGUgPGdseXBoPiBlbGVtZW50IiwKKyAgImEgbm9ybWFsIGNoYXJh
Y3Rlciwgd2hvc2UgZ2x5cGggc2hvdWxkIG5vdCBtYXRjaCB0aGUgb25lIHdpdGggYSBsYW5nPVwi
XCIgYXR0cmlidXRlIG9uIGl0IiwKKyAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hvc2UgZ2x5cGgg
c2hvdWxkIG1hdGNoIHRoZSBvbmUgd2l0aCBhIGxhbmc9XCJcIiBhdHRyaWJ1dGUgb24gaXQiLAor
ICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGFmdGVyIGl0IHRo
YXQgaXMgZXF1YWwgdG8gdGhlIGFkdmFuY2Ugb2YgdGhlIGNoYXJhY3RlciIsCisgICJhIG5vcm1h
bCBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBzb21lIGtlcm5pbmcgYmVmb3JlIGl0IHRoYXQgaXMgZXF1
YWwgdG8gdGhlIGFkdmFuY2Ugb2YgdGhlIHByZXZpb3VzIGNoYXJhY3RlciIsCisgICJhIG5vcm1h
bCBjaGFyYWN0ZXIsIHdob3NlIGdseXBoIHNob3VsZCBub3QgbWF0Y2ggdGhlIG9uZSB3aXRoIGFu
IG9yaWVudGF0aW9uPVwidlwiIGF0dHJpYnV0ZSBvbiBpdCIsCisgICJhIHNwYWNlIGNoYXJhY3Rl
ciwgd2hpY2ggaGFzIGEgbWlzbGVhZGluZyBnbHlwaC1uYW1lPVwiXCIgYXR0cmlidXRlIiwKKyAg
ImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hpY2ggaGFzIGEgbWlzbGVhZGluZyBnbHlwaC1uYW1lPVwi
XCIgYXR0cmlidXRlIiwKKyAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hvc2UgZ2x5cGggaXMgY2hv
c2VuIHRvIGJlIGFub3RoZXIgYnkgdXNpbmcgPGFsdEdseXBoPiIsCisgICJhIGNoYXJhY3RlciBu
b3QgaW4gUGxhbmUgMCAoaGlnaCBzdXJyb2dhdGUgcGFpcikiLAorICAiYSBjaGFyYWN0ZXIgbm90
IGluIFBsYW5lIDAgKGxvdyBzdXJyb2dhdGUgcGFpcikiLAorICAiYSBub3JtYWwgY2hhcmFjdGVy
IiwKK107CisKK3ZhciBleHBlY3RlZEFkdmFuY2VzID0gWworICAxMDAwMCwgICAgICAgLy8gQQor
ICAwLCAgICAgICAgICAgLy8gQkMgWzBdCisgIDIwMCwgICAgICAgICAvLyBCQyBbMV0KKyAgMzAw
LCAgICAgICAgIC8vIEIKKyAgMTEwMCwgICAgICAgIC8vIEQKKyAgMTAwMDAsICAgICAgIC8vIEEK
KyAgMCwgICAgICAgICAgIC8vIEVFIFswXQorICAxMzAwLCAgICAgICAgLy8gRUUgWzFdCisgIDAs
ICAgICAgICAgICAvLyBVKzAwNDYgWzBdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzFdCisg
IDAsICAgICAgICAgICAvLyBVKzAwNDYgWzJdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzNd
CisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzRdCisgIDE3MDAsICAgICAgICAvLyBVKzAwNDYg
WzVdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzBdCisgIDAsICAgICAgICAgICAvLyBVKzAw
NDYgWzFdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzJdCisgIDAsICAgICAgICAgICAvLyBV
KzAwNDYgWzNdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzRdCisgIDE3MDAsICAgICAgICAv
LyBVKzAwNDYgWzVdCisgIDIzMDAsICAgICAgICAvLyBHCisgIDIzMDAsICAgICAgICAvLyBHCisg
IDMxMDAsICAgICAgICAvLyBICisgIDQzMDAsICAgICAgICAvLyBJCisgIDQxMDAsICAgICAgICAv
LyBJICh6aCkKKyAgNDcwMCwgICAgICAgIC8vIEoKKyAgMTAwMDAsICAgICAgIC8vIEEKKyAgNTkw
MCwgICAgICAgIC8vIEsKKyAgNjEwMCwgICAgICAgIC8vIDxzcGFjZT4KKyAgNjcwMCwgICAgICAg
IC8vIEwKKyAgMjkwMCwgICAgICAgIC8vIEEgKHVzaW5nICYjeDEwMDg1OyBhbHRHbHlwaCkKKyAg
MjkwMCwgICAgICAgIC8vICYjeDEwMDg1OyBoaWdoIHN1cnJvZ2F0ZSBwYWlyCisgIDAsICAgICAg
ICAgICAvLyAmI3gxMDA4NTsgbG93IHN1cnJvZ2F0ZSBwYWlyCisgIDEwMDAwLCAgICAgICAvLyBB
CitdOworCit2YXIgZXhwZWN0ZWRLZXJuaW5nID0gWworICAwLCAgICAgICAgICAgLy8gQQorICAw
LCAgICAgICAgICAgLy8gQkMgWzBdCisgIDAsICAgICAgICAgICAvLyBCQyBbMV0KKyAgMCwgICAg
ICAgICAgIC8vIEIKKyAgMCwgICAgICAgICAgIC8vIEQKKyAgMjAwLCAgICAgICAgIC8vIEEKKyAg
MCwgICAgICAgICAgIC8vIEVFIFswXQorICAwLCAgICAgICAgICAgLy8gRUUgWzFdCisgIDAsICAg
ICAgICAgICAvLyBVKzAwNDYgWzBdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzFdCisgIDAs
ICAgICAgICAgICAvLyBVKzAwNDYgWzJdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzNdCisg
IDAsICAgICAgICAgICAvLyBVKzAwNDYgWzRdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzVd
CisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzBdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYg
WzFdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzJdCisgIDAsICAgICAgICAgICAvLyBVKzAw
NDYgWzNdCisgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzRdCisgIDAsICAgICAgICAgICAvLyBV
KzAwNDYgWzVdCisgIDIwMCwgICAgICAgICAvLyBHCisgIDAsICAgICAgICAgICAvLyBHCisgIDAs
ICAgICAgICAgICAvLyBICisgIDAsICAgICAgICAgICAvLyBJCisgIDAsICAgICAgICAgICAvLyBJ
ICh6aCkKKyAgLTQ3MDAsICAgICAgIC8vIEoKKyAgMCwgICAgICAgICAgIC8vIEEKKyAgMCwgICAg
ICAgICAgIC8vIEsKKyAgMCwgICAgICAgICAgIC8vIDxzcGFjZT4KKyAgMCwgICAgICAgICAgIC8v
IEwKKyAgMCwgICAgICAgICAgIC8vIEEgKHVzaW5nICYjeDEwMDg1OyBhbHRHbHlwaCkKKyAgMCwg
ICAgICAgICAgIC8vICYjeDEwMDg1OyBoaWdoIHN1cnJvZ2F0ZSBwYWlyCisgIDAsICAgICAgICAg
ICAvLyAmI3gxMDA4NTsgbG93IHN1cnJvZ2F0ZSBwYWlyCisgIDAsICAgICAgICAgICAvLyBBCitd
OworCitzaG91bGRCZSgidC5nZXROdW1iZXJPZkNoYXJzKCkiLCAiZXhwZWN0ZWRBZHZhbmNlcy5s
ZW5ndGgiKTsKKwordmFyIGV4cGVjdGVkUG9zaXRpb25zID0gWzBdOworZm9yICh2YXIgaSA9IDA7
IGkgPCBleHBlY3RlZEFkdmFuY2VzLmxlbmd0aDsgaSsrKQorICBleHBlY3RlZFBvc2l0aW9ucy5w
dXNoKGV4cGVjdGVkUG9zaXRpb25zW2ldICsgZXhwZWN0ZWRBZHZhbmNlc1tpXSArIGV4cGVjdGVk
S2VybmluZ1tpXSk7CisKK3ZhciBhY3R1YWxQb3NpdGlvbnMgPSBbXTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgdC5nZXROdW1iZXJPZkNoYXJzKCk7IGkrKykKKyAgYWN0dWFsUG9zaXRpb25zLnB1c2go
dC5nZXRTdGFydFBvc2l0aW9uT2ZDaGFyKGkpLngpOworYWN0dWFsUG9zaXRpb25zLnB1c2godC5n
ZXRFbmRQb3NpdGlvbk9mQ2hhcih0LmdldE51bWJlck9mQ2hhcnMoKSAtIDEpLngpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IGV4cGVjdGVkUG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7CisgIGlmIChl
eHBlY3RlZFBvc2l0aW9uc1tpXSAhPSBhY3R1YWxQb3NpdGlvbnNbaV0pIHsKKyAgICB2YXIgcyA9
ICdQb3NpdGlvbiBvZiBjaGFyYWN0ZXIgJyArIGkgKyAnIHdhcyAnICsgYWN0dWFsUG9zaXRpb25z
W2ldICsgJywgYnV0IGV4cGVjdGluZyAnICsgZXhwZWN0ZWRQb3NpdGlvbnNbaV0gKyAnLCB3aGlj
aCB3YXMgJzsKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICBzICs9ICdiZWZvcmUgJyArIGNoYXJh
Y3RlckRlc2NyaXB0aW9uc1swXSArICcuJzsKKyAgICB9IGVsc2UgaWYgKGkgPT0gZXhwZWN0ZWRQ
b3NpdGlvbnMubGVuZ3RoIC0gMSkgeworICAgICAgcyArPSAnYWZ0ZXIgJyArIGNoYXJhY3RlckRl
c2NyaXB0aW9uc1tjaGFyYWN0ZXJEZXNjcmlwdGlvbnMubGVuZ3RoIC0gMV0gKyAnLic7CisgICAg
fSBlbHNlIHsKKyAgICAgIHMgKz0gJ2JldHdlZW46ICcgKyBjaGFyYWN0ZXJEZXNjcmlwdGlvbnNb
aSAtIDFdICsgJywgYW5kOiAnICsgY2hhcmFjdGVyRGVzY3JpcHRpb25zW2ldICsgJy4nOworICAg
IH0KKyAgICB0ZXN0RmFpbGVkKHMpOworICB9IGVsc2UgeworCXRlc3RQYXNzZWQoJ1Bvc2l0aW9u
IG9mIGNoYXJhY3RlciAnICsgaSArICcgd2FzICcgKyBhY3R1YWxQb3NpdGlvbnNbaV0pOworICB9
Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19992</attachid>
            <date>2008-03-23 21:24:28 -0700</date>
            <delta_ts>2008-03-23 21:32:24 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>altGlyph.patch.txt</filename>
            <type>text/plain</type>
            <size>41434</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTIzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMDgtMDMtMjMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IGZpeGVkICJTVkdUZXh0RWxlbWVudC5nZXROdW1iZXJPZkNoYXJzIGlzIGJyb2tlbiBmb3IgYWx0
R2x5cGggKGFmZmVjdHMgQWNpZDMgdGVzdCA3OSkiCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDYyCisKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhF
bGVtZW50LmNwcDogQWRkZWQuIEltcGxlbWVudGF0aW9uIGZvciBuZXcgZWxlbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6flNWR0FsdEdseXBoRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Z2x5cGhSZWYpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpzZXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQWx0R2x5cGhFbGVtZW50Ojpmb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0
R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBGb3Igbm93LCB0aGlzIGp1
c3QgcmVuZGVycyBhcyBhIHRzcGFuLAorICAgICAgICB3aGljaCBpcyByaWdodCBmb3IgZXZlcnl0
aGluZyBiZXNpZGVzIHRoZSBhbHRlcm5hdGUgZ2x5cGggc3Vic3RpdHV0aW9uIGl0c2VsZi4KKyAg
ICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6IEFkZGVkLiBIZWFkZXIgZm9yIG5ldyBl
bGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50Ojpjb250ZXh0RWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5pZGw6IEFkZGVkLiBJbnRl
cmZhY2UgZm9yIG5ldyBlbGVtZW50LgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNwYW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKTogQWxsb3cgYWx0R2x5cGggdG8gcmVuZGVyIGhlcmUuCisgICAgICAgICogc3ZnL1NW
R1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjpjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6Y2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcik6IGRpdHRvCisgICAgICAgICogc3ZnL3N2Z3RhZ3MuaW46IEFk
ZCBhbHRHbHlwaAorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBuZXcgZmlsZXMK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogZGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLlNWRy5l
eHA6IEFkZCBuZXcgT2JqQyBET00gY2xhc3MKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkIG5l
dyBmaWxlcworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBkaXR0bwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogZGl0dG8KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHA6IEhhbmRsZSBh
bHRHbHlwaAorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRWxlbWVudENsYXNzTWFwKTogZGl0dG8KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTUludGVybmFsLmg6IEluY2x1ZGUgYWx0R2x5cGggaGVhZGVyCisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01TVkcuaDogSW5jbHVkZSBhbHRHbHlwaCBoZWFkZXIKKwogMjAwOC0wMy0yMyAg
Um9iZXJ0IEJsYXV0ICA8d2Via2l0QGJsYXV0LmJpej4KIAogICAgICAgICBSZXZpZXdlZCBieSBl
c2VpZGVsLiAgTGFuZGVkIGJ5IGVzZWlkZWwuCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lv
biAzMTIzOSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMTc4LDYgKzE3OCw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFNRTFJlc3VsdFNldFJvd0xp
c3QgXAogICAgIFNRTFRyYW5zYWN0aW9uIFwKICAgICBTVkdBRWxlbWVudCBcCisgICAgU1ZHQWx0
R2x5cGhFbGVtZW50IFwKICAgICBTVkdBbmdsZSBcCiAgICAgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dCBcCiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzMTIzOSkK
KysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMjUsNiArMTMy
NSw3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvU1ZHRWxl
bWVudEZhY3RvcnkuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9TVkdOYW1lcy5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL0pTU1ZHQUVsZW1lbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSlNTVkdBbHRHbHlw
aEVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNTVkdBbmdsZS5oIFwKIAlEZXJpdmVkU291
cmNlcy9KU1NWR0FuaW1hdGVkQW5nbGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNTVkdBbmltYXRl
Q29sb3JFbGVtZW50LmggXApAQCAtMTQ1Niw2ICsxNDU3LDcgQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KU1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSlNTVkdab29tRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNTVkdB
RWxlbWVudC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0pTU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvSlNTVkdBbmdsZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTU1ZH
QW5pbWF0ZWRBbmdsZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudC5jcHAgXApAQCAtMTU5MCw2ICsxNTkyLDcgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9
IFwKIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmlkbCBcCiAJ
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaWRsIFwKKwlXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuaWRsIFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwgXAogCVdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVDb2xvckVsZW1lbnQuaWRsIFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xl
LmlkbCBcCkBAIC0xNzQ5LDYgKzE3NTIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvc3ZnL1RpbWVTY2hlZHVsZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9Db2xvckRpc3RhbmNlLmNw
cCBcCiAJV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIFwKKwlXZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAgXAogCVdlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFBhdGhEYXRhLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuU1ZHLmV4cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUuU1ZHLmV4cAkocmV2aXNpb24gMzEyMzkpCisrKyBXZWJDb3Jl
L1dlYkNvcmUuU1ZHLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKIC5vYmpjX2Ns
YXNzX25hbWVfRE9NU1ZHQUVsZW1lbnQKKy5vYmpjX2NsYXNzX25hbWVfRE9NU1ZHQWx0R2x5cGhF
bGVtZW50CiAub2JqY19jbGFzc19uYW1lX0RPTVNWR0FuZ2xlCiAub2JqY19jbGFzc19uYW1lX0RP
TVNWR0FuaW1hdGVDb2xvckVsZW1lbnQKIC5vYmpjX2NsYXNzX25hbWVfRE9NU1ZHQW5pbWF0ZWRB
bmdsZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUucHJvCShyZXZpc2lvbiAzMTIzOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtp
bmcgY29weSkKQEAgLTEyOTksNiArMTI5OSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9T
Vkc9MSkgewogCiAgICAgSURMX0JJTkRJTkdTICs9IHN2Zy9TVkdab29tRXZlbnQuaWRsIFwKICAg
ICAgICAgc3ZnL1NWR0FFbGVtZW50LmlkbCBcCisgICAgICAgIHN2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuaWRsIFwKICAgICAgICAgc3ZnL1NWR0FuZ2xlLmlkbCBcCiAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlQ29sb3JFbGVtZW50LmlkbCBcCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmlkbCBc
CkBAIC0xNDUxLDYgKzE0NTIsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsK
ICAgICAgICAgc3ZnL1RpbWVTY2hlZHVsZXIuY3BwIFwKICAgICAgICAgc3ZnL0NvbG9yRGlzdGFu
Y2UuY3BwIFwKICAgICAgICAgc3ZnL1NWR0FFbGVtZW50LmNwcCBcCisgICAgICAgIHN2Zy9TVkdB
bHRHbHlwaEVsZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR0FuZ2xlLmNwcCBcCiAgICAgICAg
IHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdBbmltYXRl
ZFBhdGhEYXRhLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDMxMjM5KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTY3NSw2ICsxNjc1LDIyIEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTVkdBbHRHbHlwaEVsZW1lbnQuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1NWR0FsdEds
eXBoRWxlbWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU1NWR0FsdEdseXBoRWxlbWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU1ZHQWx0R2x5cGhFbGVtZW50LmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU1ZHQW5nbGUuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KQEAgLTEwMjY3LDYgKzEwMjgzLDE0IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbHRHbHlwaEVs
ZW1lbnQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cc3ZnXFNWR0FsdEdseXBoRWxlbWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuZ2xlLmNwcCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMzEyMzkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTA5LDYgKzUwOSw4IEBACiAJCTVERkU4
RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAv
KiBTY2hlZHVsZWRBY3Rpb24uaCAqLzsgfTsKIAkJNjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8q
IENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggKi87IH07CiAJCTY1
MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAv
KiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKKwkJNjUxNUVDOTEwRDk3MjNGRjAwNjNENDlBIC8qIEpT
U1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1MTVFQzhGMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxl
bWVudC5jcHAgKi87IH07CisJCTY1MTVFQzkyMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEds
eXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjUxNUVDOTAwRDk3MjNGRjAwNjNENDlBIC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50LmggKi87
IH07CiAJCTY1NTBCNjlEMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MEI2OTMwOTlERjAy
NzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTY1NTBCNjlFMDk5REYwMjcw
MDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NTBCNjk0MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24u
aCAqLzsgfTsKIAkJNjU1MEI2OUYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MEI2OTUw
OTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuY3BwICovOyB9OwpAQCAtNTE5LDYgKzUy
MSw5IEBACiAJCTY1NTBCNkE0MDk5REYwMjcwMDkwRDc4MSAvKiBFZGl0aW5nVGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MEI2OUEwOTlERjAy
NzAwOTBENzgxIC8qIEVkaXRpbmdUZXh0LmggKi87IH07CiAJCTY1NTBCNkE1MDk5REYwMjcwMDkw
RDc4MSAvKiBUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NTBCNjlCMDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0LmNwcCAqLzsgfTsKIAkJNjU1
MEI2QTYwOTlERjAyNzAwOTBENzgxIC8qIFRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjlDMDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU2NTNG
MkQwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1M0YyQTBEOTcyN0QyMDBDQTk3
MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCAqLzsgfTsKKwkJNjU2NTNGMkUwRDk3MjdEMjAw
Q0E5NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTNGMkIwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEds
eXBoRWxlbWVudC5oICovOyB9OworCQk2NTY1M0YyRjBEOTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0
R2x5cGhFbGVtZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU2NTNGMkMwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5p
ZGwgKi87IH07CiAJCTY1NjU4MEY0MDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODBF
RjA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oICovOyB9OwogCQk2NTY1ODE1
MTA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8q
IENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJNjU2NTgxQjIwOUQxNEVFNjAwMEU2MUQ3IC8q
IFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTY1ODFBRTA5RDE0RUU2MDAwRTYxRDcgLyogVXNlckFnZW50U3R5bGVT
aGVldHMuaCAqLzsgfTsKQEAgLTU1Miw2ICs1NTcsOSBAQAogCQk2NUEyMTQ2ODA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwICovOyB9
OwogCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNjVBQTZCQUYwRDk3NEEwMDAwMDU0MUFFIC8qIERPTVNWR0FsdEdseXBoRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVB
QTZCQUMwRDk3NEEwMDAwMDU0MUFFIC8qIERPTVNWR0FsdEdseXBoRWxlbWVudC5oICovOyB9Owor
CQk2NUFBNkJCMDBEOTc0QTAwMDAwNTQxQUUgLyogRE9NU1ZHQWx0R2x5cGhFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBQTZCQUQwRDk3
NEEwMDAwMDU0MUFFIC8qIERPTVNWR0FsdEdseXBoRWxlbWVudC5tbSAqLzsgfTsKKwkJNjVBQTZC
QjEwRDk3NEEwMDAwMDU0MUFFIC8qIERPTVNWR0FsdEdseXBoRWxlbWVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUFBNkJBRTBEOTc0
QTAwMDAwNTQxQUUgLyogRE9NU1ZHQWx0R2x5cGhFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJ
NjVCRjAyMkUwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBG
cmFtZS5jcHAgKi87IH07CiAJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyMkEwOTc0
ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNjVCRjAyMzAwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAy
MkIwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lUHJpdmF0ZS5oICovOyB9OwpAQCAtNDg2MSw2ICs0
ODY5LDggQEAKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJNURDRjgzNkMwRDU5MTU5ODAwOTUzQkM2IC8qIFBsdWdpbkluZm9TdG9yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENT
U0dyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyYW1tYXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjUxNUVDOEYwRDk3MjNGRjAwNjNENDlB
IC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEpTU1ZHQWx0R2x5cGhFbGVtZW50LmNwcDsgcGF0aCA9IC4uLy4uLy4uLy4uL3N5
bXJvb3RzL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTVkdBbHRHbHlwaEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTY1MTVFQzkwMEQ5NzIzRkYwMDYz
RDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKU1NWR0FsdEdseXBoRWxlbWVudC5oOyBwYXRoID0gLi4vLi4vLi4vLi4vc3ltcm9v
dHMvRGVidWcvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NWR0FsdEdseXBoRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTY1NDhFMjQ4MDlFMUUwNEQwMEFGODAyMCAv
KiBEb2N1bWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENE
QVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RB
VEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU1MEI2OTQwOTlE
RjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
ODcyLDYgKzQ4ODIsOSBAQAogCQk2NTUwQjY5QTA5OURGMDI3MDA5MEQ3ODEgLyogRWRpdGluZ1Rl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdUZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTBCNjlCMDk5REYwMjcwMDkwRDc4MSAvKiBU
ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU1MEI2OUMwOTlERjAyNzAwOTBENzgxIC8q
IFRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU2NTNGMkEwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0Fs
dEdseXBoRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdBbHRHbHlwaEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTY1
M0YyQjBEOTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FsdEdseXBoRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NTY1M0YyQzBEOTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhF
bGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdBbHRHbHlwaEVsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTY1ODBFRDA5RDEyQjIwMDAwRTYxRDcg
LyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTUHJvcGVydHlOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1NjU4MEVFMDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NTY1ODBFRjA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlO
YW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlOYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkxOCw2ICs0OTMxLDkgQEAKIAkJ
NjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBCbG9ja0V4Y2VwdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmxvY2tFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OworCQk2NUFBNkJBQzBEOTc0QTAwMDAwNTQxQUUgLyogRE9NU1ZHQWx0
R2x5cGhFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVNWR0Fs
dEdseXBoRWxlbWVudC5oOyBwYXRoID0gLi4vLi4vLi4vLi4vc3ltcm9vdHMvRGVidWcvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9ET01TVkdBbHRHbHlwaEVsZW1lbnQuaDsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQk2NUFBNkJBRDBEOTc0QTAwMDAwNTQxQUUgLyogRE9NU1ZHQWx0R2x5
cGhFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRE9N
U1ZHQWx0R2x5cGhFbGVtZW50Lm1tOyBwYXRoID0gLi4vLi4vLi4vLi4vc3ltcm9vdHMvRGVidWcv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01TVkdBbHRHbHlwaEVsZW1lbnQubW07IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNjVBQTZCQUUwRDk3NEEwMDAwMDU0MUFFIC8qIERPTVNW
R0FsdEdseXBoRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERPTVNWR0FsdEdseXBoRWxlbWVudEludGVybmFsLmg7IHBhdGggPSAuLi8uLi8uLi8uLi9z
eW1yb290cy9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTVNWR0FsdEdseXBoRWxlbWVu
dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNjVCRjAyMjkwOTc0
ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QkYwMjJB
MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCRjAyMkIwOTc0
ODE2MzAwQzQzMTk2IC8qIEZyYW1lUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnJhbWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
OTAxLDYgKzg5MTcsOSBAQAogCQkJCTg1QUNFRjc1MEFDRENGQ0UwMDEyMTRGRiAvKiBET01TVkdB
RWxlbWVudC5tbSAqLywKIAkJCQlBOEU1NDQxNTBDQTlEMUMxMDA5N0QwOUIgLyogRE9NU1ZHQUVs
ZW1lbnRJbnRlcm5hbC5oICovLAogCQkJCTg1NDE2MzY5MEFDNzE4MEIwMDAxRTAxQiAvKiBET01T
VkdBbmdsZS5oICovLAorCQkJCTY1QUE2QkFDMEQ5NzRBMDAwMDA1NDFBRSAvKiBET01TVkdBbHRH
bHlwaEVsZW1lbnQuaCAqLywKKwkJCQk2NUFBNkJBRDBEOTc0QTAwMDAwNTQxQUUgLyogRE9NU1ZH
QWx0R2x5cGhFbGVtZW50Lm1tICovLAorCQkJCTY1QUE2QkFFMEQ5NzRBMDAwMDA1NDFBRSAvKiBE
T01TVkdBbHRHbHlwaEVsZW1lbnRJbnRlcm5hbC5oICovLAogCQkJCTg1NDE2MzY4MEFDNzE4MEIw
MDAxRTAxQiAvKiBET01TVkdBbmdsZS5tbSAqLywKIAkJCQlBOEU1NDQxMzBDQTlEMUMxMDA5N0Qw
OUIgLyogRE9NU1ZHQW5nbGVJbnRlcm5hbC5oICovLAogCQkJCTg1MDM2MTI4MEFDRTAwN0IwMDFG
M0Q5RSAvKiBET01TVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8sCkBAIC0xMDQzMiw2ICsxMDQ1
MSw4IEBACiAJCUE4M0I3OTBBMENDQUZGNDcwMDBCMDgyNSAvKiBTVkcgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY1MTVFQzhGMEQ5NzIzRkYwMDYzRDQ5
QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5jcHAgKi8sCisJCQkJNjUxNUVDOTAwRDk3MjNGRjAw
NjNENDlBIC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50LmggKi8sCiAJCQkJQjIwMTExMDUwQUI3NzQw
NTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovLAogCQkJCUIyMDExMTA2MEFCNzc0MDUw
MERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi8sCiAJCQkJQjIyMkY2OTYwQUI3NzE5NTAwMjJF
RkFEIC8qIEpTU1ZHQW5nbGUuY3BwICovLApAQCAtMTA4OTcsNiArMTA5MTgsOSBAQAogCQkJCUIy
MjI3N0UwMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmdsZS5jcHAgKi8sCiAJCQkJQjIyMjc3RTEw
RDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmggKi8sCiAJCQkJQjIyMjc3RTIwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuZ2xlLmlkbCAqLywKKwkJCQk2NTY1M0YyQTBEOTcyN0QyMDBDQTk3MjMg
LyogU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCAqLywKKwkJCQk2NTY1M0YyQjBEOTcyN0QyMDBDQTk3
MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmggKi8sCisJCQkJNjU2NTNGMkMwRDk3MjdEMjAwQ0E5
NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5pZGwgKi8sCiAJCQkJQjIyMjc3RTMwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3N0U0MEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc3
RTUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaWRsICovLApAQCAt
MTQ1NjAsNiArMTQ1ODQsMTAgQEAKIAkJCQk5MzgyQUFCNDBEOEMzODYxMDBGMzU3QTYgLyogTm9k
ZVdpdGhJbmRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkFBQjUwRDhDMzg2MTAwRjM1N0E2
IC8qIE5vZGVXaXRoSW5kZXhCZWZvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJBQUI2MEQ4
QzM4NjEwMEYzNTdBNiAvKiBOb2RlV2l0aEluZGV4QWZ0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTY1MTVFQzkyMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNjU2NTNGMkUwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBoRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjVBQTZCQUYwRDk3NEEwMDAwMDU0MUFFIC8qIERP
TVNWR0FsdEdseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjVBQTZCQjEwRDk3NEEw
MDAwMDU0MUFFIC8qIERPTVNWR0FsdEdseXBoRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTE0Njc1LDYgKzE0NzAzLDcgQEAKIAkJCQlBNzc5NzkxODBENkI5RDBDMDAzODUxQjkg
LyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE3Nzk3OTFCMEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0E4
M0UzNzBEN0NEQzRFMDAzNDIxQTggLyogQ2xpcGJvYXJkLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJNjU2NTNGMkYwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5pZGwgaW4g
UmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMTYxOTgsNiArMTYyMjcsOSBAQAogCQkJCUE5RDI0ODA4MEQ3NTdF
N0QwMEZERjk1OSAvKiBKU01pbWVUeXBlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNF
M0Y4QjQwRDg5Q0ZEQzAwRkIwMzVGIC8qIE1haW5UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTEyREQ4RTMwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTY1MTVFQzkxMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NTY1M0YyRDBEOTcyN0QyMDBDQTk3MjMgLyog
U1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1QUE2QkIwMEQ5NzRB
MDAwMDA1NDFBRSAvKiBET01TVkdBbHRHbHlwaEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50V3JhcHBlckZhY3Rv
cnkuY3BwCShyZXZpc2lvbiAzMTIzOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVt
ZW50V3JhcHBlckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAj
aW5jbHVkZSAiSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKIAogI2luY2x1ZGUgIkpTU1ZH
QUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU1NWR0FsdEdseXBoRWxlbWVudC5oIgogI2luY2x1ZGUg
IkpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTU1ZHQW5pbWF0ZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJKU1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgiCkBAIC05Niw2
ICs5Nyw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogI2luY2x1ZGUgIlNWR0FFbGVtZW50
LmgiCisjaW5jbHVkZSAiU1ZHQWx0R2x5cGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCIKQEAgLTI0NSw2ICsyNDcsNyBAQCB0eXBl
ZGVmIEpTTm9kZSogKCpDcmVhdGVTVkdFbGVtZW50V3JhcHBlCiAKICNkZWZpbmUgRk9SX0VBQ0hf
VEFHKG1hY3JvKSBcCiAgICAgbWFjcm8oYSwgQSkgXAorICAgIG1hY3JvKGFsdEdseXBoLCBBbHRH
bHlwaCkgXAogICAgIG1hY3JvKGNpcmNsZSwgQ2lyY2xlKSBcCiAgICAgbWFjcm8oY2xpcFBhdGgs
IENsaXBQYXRoKSBcCiAgICAgbWFjcm8oY3Vyc29yLCBDdXJzb3IpIFwKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTS5tbQkocmV2aXNpb24gMzEyMzkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlRWxl
bWVudENsYXNzTWFwKCkKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgYWRkRWxlbWVudENsYXNzKFNW
R05hbWVzOjphVGFnLCBbRE9NU1ZHQUVsZW1lbnQgY2xhc3NdKTsKKyAgICBhZGRFbGVtZW50Q2xh
c3MoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLCBbRE9NU1ZHQWx0R2x5cGhFbGVtZW50IGNsYXNzXSk7
CiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAgICAgYWRkRWxlbWVudENsYXNzKFNWR05hbWVz
OjphbmltYXRlVGFnLCBbRE9NU1ZHQW5pbWF0ZUVsZW1lbnQgY2xhc3NdKTsKICAgICBhZGRFbGVt
ZW50Q2xhc3MoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZywgW0RPTVNWR0FuaW1hdGVDb2xvckVs
ZW1lbnQgY2xhc3NdKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCShyZXZp
c2lvbiAzMTIzOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW1wb3J0
ICJET01TVkdBRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01TVkdBbHRHbHlwaEVsZW1l
bnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHQW5nbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RE9NU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdBbmlt
YXRlRWxlbWVudEludGVybmFsLmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU1ZH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVNWRy5oCShyZXZpc2lv
biAzMTIzOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TVkcuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogICovCiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NU1ZHQUVsZW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NU1ZHQWx0R2x5cGhFbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RPTVNWR0FuZ2xlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVNWR0FuaW1hdGVD
b2xvckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NU1ZHQW5pbWF0ZUVsZW1lbnQuaD4K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBDb21wdXRlciwgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiU1ZHQWx0R2x5cGhFbGVtZW50LmgiCisKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZH
VFNwYW4uaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1NWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCisgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50KHRhZ05hbWUsIGRvYykKK3sKK30KKworU1ZHQWx0R2x5cGhFbGVtZW50Ojp+U1ZHQWx0R2x5
cGhFbGVtZW50KCkKK3sKK30KKwordm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVm
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMg
PSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
U1ZHQWx0R2x5cGhFbGVtZW50OjpnbHlwaFJlZigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEF0
dHJpYnV0ZShTVkdOYW1lczo6Z2x5cGhSZWZBdHRyKTsKK30KKwordm9pZCBTVkdBbHRHbHlwaEVs
ZW1lbnQ6OnNldEZvcm1hdChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIFNWR0FsdEdseXBoRWxlbWVudDo6Zm9ybWF0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpmb3JtYXRBdHRyKTsKK30KKworYm9vbCBT
VkdBbHRHbHlwaEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQp
IGNvbnN0Cit7CisgICAgaWYgKGNoaWxkLT5pc1RleHROb2RlKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZW5kZXJPYmplY3QqIFNWR0FsdEdseXBo
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
Cit7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1RTcGFuKHRoaXMpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIFNWR0FsdEdseXBoRWxlbWVudF9oCisjZGVmaW5lIFNWR0FsdEdseXBoRWxlbWVudF9oCisj
aWYgRU5BQkxFKFNWRykKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIlNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUKK3sKKyAgICBjbGFzcyBTVkdBbHRHbHlwaEVsZW1lbnQgOiBw
dWJsaWMgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgcHVibGljIFNWR1VSSVJlZmVyZW5jZQor
ICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICAgICAgdmlydHVhbCB+U1ZHQWx0R2x5cGhFbGVt
ZW50KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgICAgIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CisKKyAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBnbHlwaFJlZigpIGNvbnN0OworICAgICAgICB2b2lkIHNldEdseXBoUmVm
KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtYXQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRGb3JtYXQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRoaXM7IH0KKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHQWx0R2x5cGhFbGVtZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIHN2
ZyB7CisKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWR10gU1ZHQWx0R2x5cGhFbGVtZW50
IDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNlIHsKKyAgICAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBnbHlwaFJlZgorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvcm1hdAorICAgICAg
ICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIH07CisKK30KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gMzEyMzkpCisrKyBXZWJDb3JlL3N2Zy9TVkdU
U3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFNWR1RTcGFu
RWxlbWVudDo6flNWR1RTcGFuRWxlbWVudCgpCiAKIGJvb2wgU1ZHVFNwYW5FbGVtZW50OjpjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNoaWxkKSBjb25zdAogewotICAgIGlmIChjaGls
ZC0+aXNUZXh0Tm9kZSgpIHx8IGNoaWxkLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykg
fHwKKyAgICBpZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBjaGlsZC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6YWx0R2x5cGhUYWcpIHx8IGNoaWxkLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRh
ZykgfHwKICAgICAgICAgY2hpbGQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpIHx8IGNo
aWxkLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzMTIzOSkKKysrIFdl
YkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEw
NCw3IEBAIFJlbmRlck9iamVjdCogU1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmQKIAogYm9vbCBT
VkdUZXh0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29u
c3QKIHsKLSAgICBpZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBjaGlsZC0+aGFzVGFnTmFtZShT
VkdOYW1lczo6dHNwYW5UYWcpIHx8CisgICAgaWYgKGNoaWxkLT5pc1RleHROb2RlKCkgfHwgY2hp
bGQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSB8fCBjaGlsZC0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6dHNwYW5UYWcpIHx8CiAgICAgICAgIGNoaWxkLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjp0cmVmVGFnKSB8fCBjaGlsZC0+aGFzVGFnTmFtZShTVkdOYW1lczo6YVRhZykgfHwgY2hp
bGQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzMTIzOSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdUZXh0UGF0
aEVsZW1lbnQ6OmNyZWF0ZQogCiBib29sIFNWR1RleHRQYXRoRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKIHsKLSAgICBpZiAoY2hpbGQtPmlzVGV4
dE5vZGUoKSB8fCBjaGlsZC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dHJlZlRhZykgfHwKKyAgICBp
ZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBjaGlsZC0+aGFzVGFnTmFtZShTVkdOYW1lczo6YWx0
R2x5cGhUYWcpIHx8IGNoaWxkLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0cmVmVGFnKSB8fAogICAg
ICAgICBjaGlsZC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dHNwYW5UYWcpIHx8IGNoaWxkLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9zdmd0YWdzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL3N2
Z3RhZ3MuaW4JKHJldmlzaW9uIDMxMjM5KQorKysgV2ViQ29yZS9zdmcvc3ZndGFncy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIGEKLSNpZiAwIAogYWx0R2x5cGgKKyNpZiAwIAog
YWx0R2x5cGhEZWYKIGFsdEdseXBoSXRlbQogI2VuZGlmCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTIz
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDA4LTAzLTIzICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSB1cGRhdGVkIHRl
c3QgcmVzdWx0cyBmb3IgIlNWR1RleHRFbGVtZW50LmdldE51bWJlck9mQ2hhcnMgaXMgYnJva2Vu
IGZvciBhbHRHbHlwaCAoYWZmZWN0cyBBY2lkMyB0ZXN0IDc5KSIKKyAgICAgICAgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjIKKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9zdmcvVzNDLVNWRy0xLjEvdGV4dC1hbHRnbHlwaC0wMS1iLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL3RleHQvdGV4dC1hbHRnbHlwaC0wMS1iLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdmcvZG9tL2FsdEdseXBoLWRvbS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHN2Zy9kb20vYWx0R2x5cGgtZG9tLnhodG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvZG9tL3Jlc291cmNlcy9hbHRHbHlwaC1kb20uanM6IEFkZGVkLgorCiAyMDA4LTAzLTIz
ICBSb2JlcnQgQmxhdXQgIDx3ZWJraXRAYmxhdXQuYml6PgogCiAgICAgICAgIFJldmlld2VkIGJ5
IGVzZWlkZWwuICBMYW5kZWQgYnkgZXNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvVzNDLVNWRy0xLjEvdGV4dC1hbHRnbHlwaC0wMS1iLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL1czQy1TVkctMS4xL3RleHQt
YWx0Z2x5cGgtMDEtYi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMxMjM5KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWFsdGdseXBoLTAxLWItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCwxMSArMTAsMzcgQEAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA0ODB4MzYwCiAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwt
MjcpIHNpemUgNDYzeDMzCiAgICAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biAxIGF0ICg1LjAwLDkw
LjAwKSBzdGFydE9mZnNldCAwIGVuZE9mZnNldCAzMiB3aWR0aCA0NjMuMDA6ICJhbmQgbWFueS10
by1tYW55IGNoYXJzIHRvIGdseXBocyIKICAgICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7
ZGVmc30gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQg
KDQ5LjMzLDE4OS4zMykgc2l6ZSA0MTkuMzN4OTYuMzMKLSAgICAgICAgUmVuZGVyU1ZHVGV4dCB7
dGV4dH0KLSAgICAgICAgUmVuZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDUwLDI3MCkgc2l6ZSAzOHg2
NyBjb250YWlucyAxIGNodW5rKHMpCi0gICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3Rl
eHR9IGF0ICgwLC01Mikgc2l6ZSAzOHg2NwotICAgICAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biAx
IGF0ICg1MC4wMCwyNzAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDEgd2lkdGggMzcuNTA6
ICJEIgorICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoNDkuMzMsMTM3LjMzKSBzaXpl
IDQxOS4zM3gxNDguMzMKKyAgICAgICAgUmVuZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDE0MCwxOTAp
IHNpemUgMTg4eDY3IGNvbnRhaW5zIDEgY2h1bmsocykKKyAgICAgICAgICBSZW5kZXJTVkdUU3Bh
biB7YWx0R2x5cGh9IGF0ICgwLDApIHNpemUgMzh4NjcKKyAgICAgICAgICAgIFJlbmRlclNWR0lu
bGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtNTIpIHNpemUgMzh4NjcKKyAgICAgICAgICAgICAgY2h1
bmsgMSB0ZXh0IHJ1biAxIGF0ICgxNDAuMDAsMTkwLjAwKSBzdGFydE9mZnNldCAwIGVuZE9mZnNl
dCAxIHdpZHRoIDM3LjUwOiAiSCIKKyAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJTVkdUU3BhbiB7YWx0R2x5cGh9
IGF0ICgwLDApIHNpemUgMzh4NjcKKyAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0
ZXh0fSBhdCAoMzcsLTUyKSBzaXplIDM4eDY3CisgICAgICAgICAgICAgIGNodW5rIDEgdGV4dCBy
dW4gMiBhdCAoMTc3LjUwLDE5MC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMSB3aWR0aCAz
Ny41MDogIkEiCisgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMHgwCisgICAgICAgICAgUmVuZGVyU1ZHVFNwYW4ge2FsdEdseXBofSBhdCAoMCwwKSBz
aXplIDM4eDY3CisgICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDc1
LC01Mikgc2l6ZSAzOHg2NworICAgICAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDMgYXQgKDIx
NS4wMCwxOTAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDEgd2lkdGggMzcuNTA6ICJQIgor
ICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAor
ICAgICAgICAgIFJlbmRlclNWR1RTcGFuIHthbHRHbHlwaH0gYXQgKDAsMCkgc2l6ZSAzOHg2Nwor
ICAgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgxMTIsLTUyKSBzaXpl
IDM4eDY3CisgICAgICAgICAgICAgIGNodW5rIDEgdGV4dCBydW4gNCBhdCAoMjUyLjUwLDE5MC4w
MCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMSB3aWR0aCAzNy41MDogIlAiCisgICAgICAgICAg
UmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAg
UmVuZGVyU1ZHVFNwYW4ge2FsdEdseXBofSBhdCAoMCwwKSBzaXplIDM4eDY3CisgICAgICAgICAg
ICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDE1MCwtNTIpIHNpemUgMzh4NjcKKyAg
ICAgICAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biA1IGF0ICgyOTAuMDAsMTkwLjAwKSBzdGFydE9m
ZnNldCAwIGVuZE9mZnNldCAxIHdpZHRoIDM3LjUwOiAiWSIKKyAgICAgICAgICBSZW5kZXJTVkdJ
bmxpbmVUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyU1ZHVGV4
dCB7dGV4dH0gYXQgKDUwLDI3MCkgc2l6ZSAxMTN4NjcgY29udGFpbnMgMSBjaHVuayhzKQorICAg
ICAgICAgIFJlbmRlclNWR1RTcGFuIHthbHRHbHlwaH0gYXQgKDAsMCkgc2l6ZSAzOHg2NworICAg
ICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLC01Mikgc2l6ZSAzOHg2
NworICAgICAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDEgYXQgKDUwLjAwLDI3MC4wMCkgc3Rh
cnRPZmZzZXQgMCBlbmRPZmZzZXQgMSB3aWR0aCAzNy41MDogIlMiCisgICAgICAgICAgUmVuZGVy
U1ZHVFNwYW4ge2FsdEdseXBofSBhdCAoMCwwKSBzaXplIDM4eDY3CisgICAgICAgICAgICBSZW5k
ZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDM3LC01Mikgc2l6ZSAzOHg2NworICAgICAgICAg
ICAgICBjaHVuayAxIHRleHQgcnVuIDIgYXQgKDg3LjUwLDI3MC4wMCkgc3RhcnRPZmZzZXQgMCBl
bmRPZmZzZXQgMSB3aWR0aCAzNy41MDogIkEiCisgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4
dCB7I3RleHR9IGF0ICg3NSwtNTIpIHNpemUgMzh4NjcKKyAgICAgICAgICAgIGNodW5rIDEgdGV4
dCBydW4gMyBhdCAoMTI1LjAwLDI3MC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMSB3aWR0
aCAzNy41MDogIkQiCiAgICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgyODAsMjcwKSBz
aXplIDE4OHg2NyBjb250YWlucyAxIGNodW5rKHMpCiAgICAgICAgICAgUmVuZGVyU1ZHSW5saW5l
VGV4dCB7I3RleHR9IGF0ICgwLC01Mikgc2l6ZSAxODh4NjcKICAgICAgICAgICAgIGNodW5rIDEg
dGV4dCBydW4gMSBhdCAoMjgwLjAwLDI3MC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgNSB3
aWR0aCAxNTcuNTA6ICJTQVNTWSIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcv
dGV4dC90ZXh0LWFsdGdseXBoLTAxLWItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvdGV4dC90ZXh0LWFsdGdseXBoLTAxLWItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAzMTIzOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvdGV4
dC90ZXh0LWFsdGdseXBoLTAxLWItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCwx
MSArMTAsMzcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlclNW
R0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMjcpIHNpemUgNDYzeDMzCiAgICAgICAgICAgY2h1
bmsgMSB0ZXh0IHJ1biAxIGF0ICg1LjAwLDkwLjAwKSBzdGFydE9mZnNldCAwIGVuZE9mZnNldCAz
MiB3aWR0aCA0NjMuMDA6ICJhbmQgbWFueS10by1tYW55IGNoYXJzIHRvIGdseXBocyIKICAgICAg
IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7ZGVmc30gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
IFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDgyLjIyLDMxNS41Nikgc2l6ZSA2OTguODl4MTYw
LjU2Ci0gICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9Ci0gICAgICAgIFJlbmRlclNWR1RleHQg
e3RleHR9IGF0ICg1MCwyNzApIHNpemUgMzh4NjcgY29udGFpbnMgMSBjaHVuayhzKQotICAgICAg
ICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtNTIpIHNpemUgMzh4NjcKLSAg
ICAgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAoNTAuMDAsMjcwLjAwKSBzdGFydE9mZnNl
dCAwIGVuZE9mZnNldCAxIHdpZHRoIDM3LjUwOiAiRCIKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5l
ciB7Z30gYXQgKDgyLjIyLDIyOC44OSkgc2l6ZSA2OTguODl4MjQ3LjIyCisgICAgICAgIFJlbmRl
clNWR1RleHQge3RleHR9IGF0ICgxNDAsMTkwKSBzaXplIDE4OHg2NyBjb250YWlucyAxIGNodW5r
KHMpCisgICAgICAgICAgUmVuZGVyU1ZHVFNwYW4ge2FsdEdseXBofSBhdCAoMCwwKSBzaXplIDM4
eDY3CisgICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDAsLTUyKSBz
aXplIDM4eDY3CisgICAgICAgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAoMTQwLjAwLDE5
MC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMSB3aWR0aCAzNy41MDogIkgiCisgICAgICAg
ICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAg
ICAgUmVuZGVyU1ZHVFNwYW4ge2FsdEdseXBofSBhdCAoMCwwKSBzaXplIDM4eDY3CisgICAgICAg
ICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDM3LC01Mikgc2l6ZSAzOHg2Nwor
ICAgICAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDIgYXQgKDE3Ny41MCwxOTAuMDApIHN0YXJ0
T2Zmc2V0IDAgZW5kT2Zmc2V0IDEgd2lkdGggMzcuNTA6ICJBIgorICAgICAgICAgIFJlbmRlclNW
R0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlclNW
R1RTcGFuIHthbHRHbHlwaH0gYXQgKDAsMCkgc2l6ZSAzOHg2NworICAgICAgICAgICAgUmVuZGVy
U1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICg3NSwtNTIpIHNpemUgMzh4NjcKKyAgICAgICAgICAg
ICAgY2h1bmsgMSB0ZXh0IHJ1biAzIGF0ICgyMTUuMDAsMTkwLjAwKSBzdGFydE9mZnNldCAwIGVu
ZE9mZnNldCAxIHdpZHRoIDM3LjUwOiAiUCIKKyAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJTVkdUU3BhbiB7YWx0
R2x5cGh9IGF0ICgwLDApIHNpemUgMzh4NjcKKyAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRl
eHQgeyN0ZXh0fSBhdCAoMTEyLC01Mikgc2l6ZSAzOHg2NworICAgICAgICAgICAgICBjaHVuayAx
IHRleHQgcnVuIDQgYXQgKDI1Mi41MCwxOTAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDEg
d2lkdGggMzcuNTA6ICJQIgorICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlclNWR1RTcGFuIHthbHRHbHlwaH0gYXQg
KDAsMCkgc2l6ZSAzOHg2NworICAgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9
IGF0ICgxNTAsLTUyKSBzaXplIDM4eDY3CisgICAgICAgICAgICAgIGNodW5rIDEgdGV4dCBydW4g
NSBhdCAoMjkwLjAwLDE5MC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMSB3aWR0aCAzNy41
MDogIlkiCisgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICg1MCwyNzApIHNpemUgMTEz
eDY3IGNvbnRhaW5zIDEgY2h1bmsocykKKyAgICAgICAgICBSZW5kZXJTVkdUU3BhbiB7YWx0R2x5
cGh9IGF0ICgwLDApIHNpemUgMzh4NjcKKyAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQg
eyN0ZXh0fSBhdCAoMCwtNTIpIHNpemUgMzh4NjcKKyAgICAgICAgICAgICAgY2h1bmsgMSB0ZXh0
IHJ1biAxIGF0ICg1MC4wMCwyNzAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDEgd2lkdGgg
MzcuNTA6ICJTIgorICAgICAgICAgIFJlbmRlclNWR1RTcGFuIHthbHRHbHlwaH0gYXQgKDAsMCkg
c2l6ZSAzOHg2NworICAgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgz
NywtNTIpIHNpemUgMzh4NjcKKyAgICAgICAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biAyIGF0ICg4
Ny41MCwyNzAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDEgd2lkdGggMzcuNTA6ICJBIgor
ICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoNzUsLTUyKSBzaXplIDM4
eDY3CisgICAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDMgYXQgKDEyNS4wMCwyNzAuMDApIHN0
YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDEgd2lkdGggMzcuNTA6ICJEIgogICAgICAgICBSZW5kZXJT
VkdUZXh0IHt0ZXh0fSBhdCAoMjgwLDI3MCkgc2l6ZSAxODh4NjcgY29udGFpbnMgMSBjaHVuayhz
KQogICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtNTIpIHNpemUg
MTg4eDY3CiAgICAgICAgICAgICBjaHVuayAxIHRleHQgcnVuIDEgYXQgKDI4MC4wMCwyNzAuMDAp
IHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDUgd2lkdGggMTU3LjUwOiAiU0FTU1kiCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvZG9tL2FsdEdseXBoLWRvbS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9hbHRHbHlwaC1kb20tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9hbHRHbHlwaC1kb20tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACivkuIAmTTAwMDA3Njsg5LiBCitUaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgU1ZHIGFsdEdseXBoIGVsZW1lbnRzIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUg
RE9NIG9iamVjdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgYWx0R2x5
cGgudGFnTmFtZSBpcyAiYWx0R2x5cGgiCitQQVNTIGFsdEdseXBoLm5hbWVzcGFjZVVSSSBpcyAi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCitQQVNTIGFsdEdseXBoLmZvcm1hdCBpcyAiaW1h
Z2Uvc3ZnK3htbCIKK1BBU1MgYWx0R2x5cGguZm9ybWF0ID0gJ3gnIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBET00gRXhjZXB0aW9uIDcuCitQQVNT
IGFsdEdseXBoLmdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMCkueCBpcyAwCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2RvbS9hbHRHbHlwaC1kb20ueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2RvbS9hbHRHbHlwaC1kb20ueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
ZG9tL2FsdEdseXBoLWRvbS54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorPCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAg
ICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8
aHRtbCAKK3htbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiAKK3htbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgorPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
IiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIxMDAiPgorICA8ZGVmcz4KKyAgICA8
Zm9udCBob3Jpei1hZHYteD0iNTEyIj4KKyAgICAgIDxmb250LWZhY2UKKyAgICAgICAgZm9udC1m
YW1pbHk9Ik1vamlreW8tdGVzdCIKKwl1bml0cy1wZXItZW09IjEwMjQiCisJcGFub3NlLTE9IjIg
MCA2IDkgMCAwIDAgMCAwIDAiCisJYXNjZW50PSI4NzAiCisJZGVzY2VudD0iLTE0MSIKKwliYXNl
bGluZT0iMCIvPgorICAgICAgPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjEwMjQiPjxwYXRo
IGQ9Ik00MDAgNDAwVjYyMEg2MjBWNDAwSDQwMHoiLz48L21pc3NpbmctZ2x5cGg+CisgICAgICA8
Z2x5cGggaWQ9Ik0wMDAwNzYiIHVuaWNvZGU9IiYjeDRlMDA7IiBob3Jpei1hZHYteD0iMTAyNCI+
PHBhdGggZD0iTTUzNyAtNDdRNTAxIC0xMDggNDg2IC02MlYyMzVIOTlRNTggMjM1IDc4IDI2NFE5
MiAyNTYgMTIwIDI1Nkg0ODZWNDMwSDI0M1EyMDIgNDMwIDIyMSA0NTlRMjM1IDQ1MCAyNjMgNDUw
SDQ4NlY2MjRIMTcxUTEzMCA2MjQgMTQ5IDY1NFExNjMgNjQ1IDE5MiA2NDVINDg2VjczN1E0ODYg
Nzk0IDQ3MiA4MjBRNTAzIDgyMCA1MjMgODE0VDU1NAorNzk4VDU2NyA3NzhUNTY5IDc2MFQ1NjAg
NzQ0VDU0OCA3MzBUNTQxIDcxMlQ1MzcgNjgwVjY0NUg3NjJRNzY1IDY0OCA3NjkgNjU5VDc3OCA2
NzVUNzg4IDY4M1Q4MDcgNjg2VDg0NyA2NzhUODkwIDY2MFQ5MTMgNjQ2VDkxOSA2MzZUOTA2IDYy
OFQ4NzEgNjI0SDUzN1Y0NTBINjkxUTY5MyA0NTQgNjk3IDQ2NVQ3MDYgNDgxVDcxNyA0ODhUNzM1
IDQ5MVQ3NzUgNDgzVDgxOCA0NjVUODQxIDQ1MVQ4NDcgNDQxVDgzNSA0MzNUODAwCis0MzBINTM3
VjI1Nkg3OThRODAxIDI1OSA4MDUgMjcwVDgxNCAyODZUODI0IDI5M1Q4NDMgMjk2VDg4MyAyODhU
OTI2IDI3MVQ5NDkgMjU2VDk1NSAyNDZUOTQyIDIzOFQ5MDcgMjM1SDUzN1YtNDd6Ii8+PC9nbHlw
aD4KKyAgICA8L2ZvbnQ+CisgIDwvZGVmcz4KKzxnPgorPHRleHQgeD0iMCIgeT0iODAiIHN0eWxl
PSJmb250LWZhbWlseTpNaW5nTGlVOyBmb250LXNpemU6NzI7ZmlsbDpibGFjayI+JiN4NGUwMDsK
Kzx0c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6TW9qaWt5by10ZXN0Ij4KKzxhbHRHbHlwaCBmb3Jt
YXQ9ImltYWdlL3N2Zyt4bWwiIGlkPSJhbHRHbHlwaCIgeGxpbms6aHJlZj0iI00wMDAwNzYiPiZh
bXA7TTAwMDA3Njs8L2FsdEdseXBoPiA8L3RzcGFuPiYjeDRlMDE7IDwvdGV4dD4gPC9nPiA8L3N2
Zz4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWx0R2x5cGgtZG9tLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3Jlc291cmNl
cy9hbHRHbHlwaC1kb20uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXNv
dXJjZXMvYWx0R2x5cGgtZG9tLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9yZXNvdXJjZXMvYWx0R2x5cGgtZG9tLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBA
CitkZXNjcmlwdGlvbigKKworIlRoaXMgdGVzdCBjaGVja3MgdGhhdCBTVkcgYWx0R2x5cGggZWxl
bWVudHMgY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBET00gb2JqZWN0LiIKKworKTsKKwordmFyIGFs
dEdseXBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsdEdseXBoIik7CitzaG91bGRCZSgi
YWx0R2x5cGgudGFnTmFtZSIsICciYWx0R2x5cGgiJyk7CitzaG91bGRCZSgiYWx0R2x5cGgubmFt
ZXNwYWNlVVJJIiwgJyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyInKTsKK3Nob3VsZEJlKCJh
bHRHbHlwaC5mb3JtYXQiLCAnImltYWdlL3N2Zyt4bWwiJyk7CitzaG91bGRUaHJvdygiYWx0R2x5
cGguZm9ybWF0ID0gJ3gnIik7CisKK3Nob3VsZEJlKCJhbHRHbHlwaC5nZXRTdGFydFBvc2l0aW9u
T2ZDaGFyKDApLngiLCAnMCcpOworCisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="8751"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>