<?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>20368</bug_id>
          
          <creation_ts>2008-08-12 18:27:57 -0700</creation_ts>
          <short_desc>Implement computed style for animation properties</short_desc>
          <delta_ts>2008-11-20 16:34:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88363</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-08-12 18:27:57 -0700</bug_when>
    <thetext>getComputedStyle() should work for animation-related properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89760</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-08-29 15:13:44 -0700</bug_when>
    <thetext>And CSSPropertyWebkitTransformOrigin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91281</commentid>
    <comment_count>2</comment_count>
      <attachid>23452</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-09-15 17:37:47 -0700</bug_when>
    <thetext>Created attachment 23452
patch + testcases

Also fixes computed style for transform origin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91848</commentid>
    <comment_count>3</comment_count>
      <attachid>23452</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-09-19 17:55:26 -0700</bug_when>
    <thetext>Comment on attachment 23452
patch + testcases

should not remove the support for transform origin -x and -y</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99536</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-20 13:42:50 -0800</bug_when>
    <thetext>I&apos;ll take this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99537</commentid>
    <comment_count>5</comment_count>
      <attachid>25322</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-20 13:48:07 -0800</bug_when>
    <thetext>Created attachment 25322
Patch, testcases, changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99542</commentid>
    <comment_count>6</comment_count>
      <attachid>25322</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-20 14:02:18 -0800</bug_when>
    <thetext>Comment on attachment 25322
Patch, testcases, changelog

&gt; +        case CSSPropertyWebkitAnimationDelay: {
&gt; +            RefPtr&lt;CSSValueList&gt; list = CSSValueList::createCommaSeparated();
&gt; +            const AnimationList* t = style-&gt;animations();
&gt; +            if (t) {
&gt; +                for (size_t i = 0; i &lt; t-&gt;size(); ++i)
&gt; +                    list-&gt;append(CSSPrimitiveValue::create(t-&gt;animation(i)-&gt;delay(), CSSPrimitiveValue::CSS_S));
&gt; +            } else
&gt; +                list-&gt;append(CSSPrimitiveValue::create(RenderStyle::initialAnimationDelay(), CSSPrimitiveValue::CSS_S));
&gt; +            return list.release();
&gt; +        }

These seem like just enough code that it would be better to have them in separate functions rather than in the giant switch statement.

However, that problem would solve itself if we changed this into a table instead of a switch, so I guess it can wait for that.

Where does the name &quot;t&quot; come from?

&gt; +                for (size_t i = 0; i &lt; t-&gt;size(); ++i) {
&gt; +                    list-&gt;append(CSSPrimitiveValue::create(t-&gt;animation(i)-&gt;name(), CSSPrimitiveValue::CSS_STRING));
&gt; +                }

Should be no braces here.

&gt; +                    int prop = t-&gt;animation(i)-&gt;property();

The type of this local variable, and of the property-related functions in Animation, should be CSSPropertyID, not int.

&gt; +                        propertyValue = CSSPrimitiveValue::create(getPropertyName(static_cast&lt;CSSPropertyID&gt;(prop)), CSSPrimitiveValue::CSS_STRING);

Because we don&apos;t want typecasts like this one.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99558</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-20 16:27:39 -0800</bug_when>
    <thetext>r38641 = 541dc7a2b929dcdbb39c15c9c9f683e97f298ab5 (trunk)
	M	WebCore/ChangeLog
	M	WebCore/rendering/style/RenderStyle.h
	M	WebCore/css/CSSComputedStyleDeclaration.cpp
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/css/computed-style-without-renderer-expected.txt
	M	LayoutTests/fast/css/computed-style-expected.txt
	A	LayoutTests/transforms/computed-style-origin-expected.txt
	A	LayoutTests/transforms/computed-style-origin.html
	M	LayoutTests/svg/css/getComputedStyle-basic-expected.txt
	A	LayoutTests/animations/computed-style.html
	A	LayoutTests/animations/computed-style-expected.txt
r38642 = 1a2c678115f23f608ee19472b79a288d0aabd217 (trunk)

I just noticed that I missed fixing one of Darin&apos;s issues. Follow-up coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99560</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-20 16:34:37 -0800</bug_when>
    <thetext>I filed bug 22389 on cleaning up animation-&gt;property(), since doing so with this change would be more invasive.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23452</attachid>
            <date>2008-09-15 17:37:47 -0700</date>
            <delta_ts>2008-11-20 13:48:07 -0800</delta_ts>
            <desc>patch + testcases</desc>
            <filename>comp-style.patch</filename>
            <type>text/plain</type>
            <size>21133</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NjhhY2YyLi40YWExZjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMDgtMDkt
MTUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZv
ciBhbmltYXRpb24gcHJvcGVydGllcy4KKyAgICAgICAgQWxzbyBmaXggY29tcHV0ZWQgc3R5bGUg
Zm9yIHRyYW5zZm9ybSBvcmlnaW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDM2OAorCisgICAgICAgICogYW5pbWF0aW9ucy9jb21wdXRlZC1zdHls
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvY29tcHV0ZWQtc3R5
bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNmb3Jtcy9jb21wdXRlZC1zdHlsZS1vcmln
aW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2Zvcm1zL2NvbXB1dGVkLXN0
eWxlLW9yaWdpbi5odG1sOiBBZGRlZC4KKworMjAwOC0wOS0xNSAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCiAKICAgICAg
ICAgVGVzdCBkZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBTaGFkb3dEYXRhIHdpdGggdHJhbnNpdGlv
bnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0ZWQtc3R5bGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZmFjYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUaGlzIHRlc3RzIGNvbXB1dGVkIHN0eWxlIHZhbHVl
cyBmcm9tIGFuaW1hdGlvbiBwcm9wZXJ0aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0xJworUEFT
UyB0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0yLCBhbmltMycKK1BBU1Mg
dGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EdXJhdGlvbiBpcyAnMTBzJworUEFTUyB0ZXN0MlN0
eWxlLndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIGlzICc1cywgMi41cycKK1BBU1MgdGVzdDFTdHls
ZS53ZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCBpcyAnMTAnCitQQVNTIHRlc3QyU3R5bGUu
d2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgaXMgJzEwLCBpbmZpbml0ZScKK1BBU1MgdGVz
dDFTdHlsZS53ZWJraXRBbmltYXRpb25QbGF5U3RhdGUgaXMgJ3BhdXNlZCcKK1BBU1MgdGVzdDJT
dHlsZS53ZWJraXRBbmltYXRpb25QbGF5U3RhdGUgaXMgJ3BhdXNlZCwgcnVubmluZycKK1BBU1Mg
dGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiBpcyAnY3ViaWMtYmV6aWVy
KDAsIDAsIDEsIDEpJworUEFTUyB0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uIGlzICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJlemllcigwLjQyLCAwLCAw
LjU4LCAxKScKK1BBU1MgdGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EaXJlY3Rpb24gaXMgJ25v
cm1hbCcKK1BBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25EaXJlY3Rpb24gaXMgJ25vcm1h
bCwgYWx0ZXJuYXRlJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMTVmNGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLmh0bWwKQEAgLTAsMCAr
MSw4MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjdGVzdDEgeworICAgICAgICB3aWR0aDogMjBweDsK
KyAgICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5h
bWU6IGFuaW0xOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOworICAg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEwOworICAgICAgICAtd2Vi
a2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7CisgICAgICAgIC13ZWJraXQtYW5pbWF0
aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1k
aXJlY3Rpb246IG5vcm1hbDsKKyAgICB9CisgICAgI3Rlc3QyIHsKKyAgICAgICAgd2lkdGg6IDIw
cHg7CisgICAgICAgIGhlaWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1
ZTsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAtd2Via2l0LWFuaW1hdGlv
bi1uYW1lOiBhbmltMiwgYW5pbTM7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9u
OiA1cywgMjUwMG1zOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6
IDEwLCBpbmZpbml0ZTsKKyAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZTogcGF1
c2VkLCBydW5uaW5nOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246
IGxpbmVhciwgZWFzZS1pbi1vdXQ7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlv
bjogbm9ybWFsLCBhbHRlcm5hdGU7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmlt
MSB7CisgICAgICAgIGZyb20geyBsZWZ0OiAxMHB4OyB9CisgICAgICAgIHRvIHsgbGVmdDogMjBw
eDsgfQorICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAgICBmcm9t
IHsgd2lkdGg6IDIwcHg7IH0KKyAgICAgICAgdG8geyB3aWR0aDogMjVweDsgfQorICAgIH0KKyAg
ICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTMgeworICAgICAgICBmcm9tIHsgbGVmdDogMTBweDsg
fQorICAgICAgICB0byB7IGxlZnQ6IDIwcHg7IH0KKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9InRlc3QxIj48L3A+Cis8cCBpZD0idGVzdDIiPjwvcD4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBjb21wdXRlZCBzdHlsZSB2YWx1ZXMgZnJvbSBhbmlt
YXRpb24gcHJvcGVydGllcy4iKTsKKwordmFyIHRlc3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QxIik7Cit2YXIgdGVzdDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDIi
KTsKKwordmFyIHRlc3QxU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0MSk7Cit2
YXIgdGVzdDJTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3QyKTsKKworc2hvdWxk
QmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uTmFtZSIsICInYW5pbTEnIik7CitzaG91bGRC
ZSgidGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25OYW1lIiwgIidhbmltMiwgYW5pbTMnIik7CisK
K3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIiwgIicxMHMnIik7
CitzaG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25EdXJhdGlvbiIsICInNXMsIDIu
NXMnIik7CisKK3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50IiwgIicxMCciKTsKK3Nob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50IiwgIicxMCwgaW5maW5pdGUnIik7CisKK3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvblBsYXlTdGF0ZSIsICIncGF1c2VkJyIpOworc2hvdWxkQmUoInRlc3QyU3R5
bGUud2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIiwgIidwYXVzZWQsIHJ1bm5pbmcnIik7CisKK3No
b3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidjdWJp
Yy1iZXppZXIoMCwgMCwgMSwgMSknIik7CitzaG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbiIsICInY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpLCBjdWJpYy1i
ZXppZXIoMC40MiwgMCwgMC41OCwgMSknIik7CisKK3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtp
dEFuaW1hdGlvbkRpcmVjdGlvbiIsICInbm9ybWFsJyIpOworc2hvdWxkQmUoInRlc3QyU3R5bGUu
d2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIiwgIidub3JtYWwsIGFsdGVybmF0ZSciKTsKKworZGVi
dWcoIiIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvY29tcHV0
ZWQtc3R5bGUtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvY29t
cHV0ZWQtc3R5bGUtb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41MTY2OTlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNm
b3Jtcy9jb21wdXRlZC1zdHlsZS1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1RoaXMgdGVzdHMgY29tcHV0ZWQgc3R5bGUgdmFsdWVzIGZvciB0cmFuc2Zvcm0gb3JpZ2luLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdFRy
YW5zZm9ybU9yaWdpbiBpcyAnMTBweCAxMHB4JworUEFTUyB0ZXN0MlN0eWxlLndlYmtpdFRyYW5z
Zm9ybU9yaWdpbiBpcyAnMTBweCAxMHB4JworUEFTUyB0ZXN0M1N0eWxlLndlYmtpdFRyYW5zZm9y
bU9yaWdpbiBpcyAnMHB4IDIwcHgnCitQQVNTIHRlc3Q0U3R5bGUud2Via2l0VHJhbnNmb3JtT3Jp
Z2luIGlzICc1cHggN3B4JworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy9jb21wdXRl
ZC1zdHlsZS1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvY29tcHV0ZWQtc3R5
bGUtb3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI2MDM4
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvY29tcHV0ZWQtc3R5
bGUtb3JpZ2luLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjdGVzdDEg
eworICAgICAgICB3aWR0aDogMjBweDsKKyAgICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCk7CisgICAgICAgIC8vIGRlZmF1bHQg
dHJhbnNmb3JtIG9yaWdpbgorICAgIH0KKyAgICAjdGVzdDIgeworICAgICAgICB3aWR0aDogMjBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3Jt
OiB0cmFuc2xhdGUoMCk7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUw
JTsKKyAgICB9CisgICAgI3Rlc3QzIHsKKyAgICAgICAgd2lkdGg6IDIwcHg7CisgICAgICAgIGhl
aWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAp
OworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAlIDEwMCU7CisgICAgfQorICAg
ICN0ZXN0NCB7CisgICAgICAgIHdpZHRoOiAyMHB4OworICAgICAgICBoZWlnaHQ6IDIwcHg7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTsKKyAgICAgICAgLXdl
YmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1cHggN3B4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0idGVzdDEiPjwvcD4KKzxwIGlkPSJ0ZXN0MiI+PC9wPgorPHAg
aWQ9InRlc3QzIj48L3A+Cis8cCBpZD0idGVzdDQiPjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyBjb21wdXRlZCBzdHlsZSB2YWx1ZXMgZm9yIHRyYW5zZm9ybSBvcmlnaW4uIik7
CisKK3ZhciB0ZXN0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpOwordmFyIHRl
c3QyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIik7Cit2YXIgdGVzdDMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMiKTsKK3ZhciB0ZXN0NCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0NCIpOworCit2YXIgdGVzdDFTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKHRlc3QxKTsKK3ZhciB0ZXN0MlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGVzdDIpOwordmFyIHRlc3QzU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0Myk7
Cit2YXIgdGVzdDRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3Q0KTsKKworc2hv
dWxkQmUoInRlc3QxU3R5bGUud2Via2l0VHJhbnNmb3JtT3JpZ2luIiwgIicxMHB4IDEwcHgnIik7
CitzaG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRUcmFuc2Zvcm1PcmlnaW4iLCAiJzEwcHggMTBw
eCciKTsKK3Nob3VsZEJlKCJ0ZXN0M1N0eWxlLndlYmtpdFRyYW5zZm9ybU9yaWdpbiIsICInMHB4
IDIwcHgnIik7CitzaG91bGRCZSgidGVzdDRTdHlsZS53ZWJraXRUcmFuc2Zvcm1PcmlnaW4iLCAi
JzVweCA3cHgnIik7CisKK2RlYnVnKCIiKTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUzNTEyYTQuLjhhZjAxMTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTggQEAKIDIwMDgtMDktMTUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBn
ZXRDb21wdXRlZFN0eWxlIGZvciBhbmltYXRpb24gcHJvcGVydGllcy4KKyAgICAgICAgQWxzbyBm
aXggY29tcHV0ZWQgc3R5bGUgZm9yIHRyYW5zZm9ybSBvcmlnaW4uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2OAorCisgICAgICAgIFRlc3RzOiBh
bmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMv
Y29tcHV0ZWQtc3R5bGUtb3JpZ2luLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgorCisyMDA4LTA5LTE1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KIAogICAgICAgICBB
ZGQgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgU2hhZG93RGF0YQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZWY4M2UyZS4uYmRlZjk1MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMzEsNiArMTMx
LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NT
UHJvcGVydHlaSW5kZXgsCiAgICAgQ1NTUHJvcGVydHlab29tLAogCisgICAgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25EZWxheSwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVj
dGlvbiwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAorICAgIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsCisgICAgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lLAorICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRl
LAorICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLAogICAgIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENsaXAsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLApAQCAtMTg2
LDggKzE5Myw3IEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsCiAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlV2lkdGgsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sCi0gICAg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAotICAgIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWSwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwK
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25EdXJhdGlvbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Q
cm9wZXJ0eSwKQEAgLTEwMDMsNiArMTAwOSw5NSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Blcgog
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZmlyc3RSZWdpb24u
cmVsZWFzZSgpKTsKICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25EZWxheTogeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOworICAgICAgICAg
ICAgaWYgKHQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNp
emUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgoKnQpW2ldLT5kZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1Mp
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKFJlbmRlclN0eWxlOjppbml0aWFsQW5pbWF0aW9uRGVsYXko
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAgICAgICAgICByZXR1cm4gbGlzdC5y
ZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkRpcmVjdGlvbjogeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOworICAgICAgICAgICAgaWYg
KHQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgoKnQpW2ldLT5kaXJlY3Rpb24oKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZUFsdGVybmF0ZSkpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpKTsKKyAgICAgICAg
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsK
KyAgICAgICAgICAgIGlmICh0KSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0LT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKCp0KVtpXS0+ZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFu
aW1hdGlvbkR1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAgICAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDogeworICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9u
cygpOworICAgICAgICAgICAgaWYgKHQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpdGVy
YXRpb25Db3VudCA9ICgqdClbaV0tPml0ZXJhdGlvbkNvdW50KCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpdGVyYXRpb25Db3VudCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVJbmZp
bml0ZSkpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpdGVyYXRpb25Db3VudCwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbk5hbWU6IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjb25z
dCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgIGlm
ICh0KSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgoKnQpW2ldLT5uYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxBbmltYXRpb25OYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZTogeworICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKKyAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0
aW9ucygpOworICAgICAgICAgICAgaWYgKHQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBw
cm9wID0gKCp0KVtpXS0+cGxheVN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9w
ID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlUnVubmlu
ZykpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVQ
YXVzZWQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVSdW5uaW5nKSk7CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1
bmN0aW9uOiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgY29uc3QgQW5pbWF0
aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CisgICAgICAgICAgICBpZiAodCkgewor
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRmID0gKCp0KVtpXS0+
dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1Rp
bWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh0Zi54MSgpLCB0Zi55MSgpLCB0Zi54MigpLCB0Zi55
MigpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGYgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh0Zi54MSgpLCB0Zi55MSgpLCB0Zi54MigpLCB0
Zi55MigpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6
CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+YXBw
ZWFyYW5jZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlOgpA
QCAtMTA0NiwyOCArMTE0MSwyNSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CiAgICAgICAgICAgICBy
ZXR1cm4gY29tcHV0ZWRUcmFuc2Zvcm0ocmVuZGVyZXIpOwotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcikgewot
ICAgICAgICAgICAgICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNm
b3JtT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5YKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToK
KyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjogeworICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikgewogICAgICAgICAgICAg
ICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgp
LmNhbGNNaW5WYWx1ZShib3guaGVpZ2h0KCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNNaW5W
YWx1ZShib3guaGVpZ2h0KCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkpKTsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3Jt
T3JpZ2luWSgpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9y
aWdpblkoKSk7CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheTogewogICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHls
ZS0+dHJhbnNpdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKCp0KVtpXS0+ZGVsYXko
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFuaW1hdGlvbkRl
bGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgICAgICAgICAgcmV0dXJuIGxp
c3QucmVsZWFzZSgpOwogICAgICAgICB9CkBAIC0xMDc3LDI2ICsxMTY5LDEwIEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKCgqdClbaV0tPmR1cmF0aW9u
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUmVuZGVyU3R5bGU6OmluaXRpYWxBbmltYXRpb25E
dXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKICAgICAgICAgICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAg
ICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpOwot
ICAgICAgICAgICAgaWYgKHQpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHQtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiB0ZiA9ICgqdClbaV0tPnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUodGYueDEoKSwg
dGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiB0ZiA9IFJlbmRlclN0eWxlOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24o
KTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnkyKCkpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKLSAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OiB7CiAgICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT50
cmFuc2l0aW9ucygpOwpAQCAtMTExMiwxMSArMTE4OCwyNCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHBy
b3BlcgogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGdldFByb3BlcnR5TmFtZShzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wKSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG5hbWUsIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoImFsbCIsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HKSk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlv
bjogeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxp
c3QqIHQgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKTsKKyAgICAgICAgICAgIGlmICh0KSB7CisgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGYgPSAoKnQpW2ldLT50aW1p
bmdGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnkyKCkp
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IFJlbmRlclN0eWxlOjppbml0aWFsQW5pbWF0
aW9uVGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnky
KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbToKQEAgLTExNjUsMTMgKzEyNTQsNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VW5pY29kZVJhbmdlOiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4K
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKLSAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5OgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRHVyYXRpb246Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudDoKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bk5hbWU6Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGU6
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlOgpAQCAtMTE4Miw3ICsxMjY0LDYgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9w
ZXIKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFZhcmlhYmxlRGVjbGFyYXRpb25CbG9jazoKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgYXJlIHVuaW1wbGVtZW50ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25322</attachid>
            <date>2008-11-20 13:48:07 -0800</date>
            <delta_ts>2008-11-20 14:02:18 -0800</delta_ts>
            <desc>Patch, testcases, changelog</desc>
            <filename>20368_patch.txt</filename>
            <type>text/plain</type>
            <size>29817</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjdkYzBkLi44ZWU1MjRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDgtMTEt
MjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzY4CisKKyAgICAgICAgVGVzdHMgZm9yIGNvbXB1dGVkIHZh
bHVlcyBvZiBhbmltYXRpb24gcHJvcGVydGllcywgYW5kCisgICAgICAgIGNoYW5nZSB0byBjb21w
dXRlZCB2YWx1ZSBvZiB0cmFuc2Zvcm0tb3JpZ2luLiBVcGRhdGVkIHRlc3RzCisgICAgICAgIHRo
YXQgZHVtcCBhbGwgY29tcHV0ZWQgdmFsdWVzLCB0byBpbmNsdWRlIGFuaW1hdGlvbiBhbmQgY2hh
bmdlZAorICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBh
bmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MvY29tcHV0
ZWQtc3R5bGUtd2l0aG91dC1yZW5kZXJlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2Nz
cy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0cmFuc2Zv
cm1zL2NvbXB1dGVkLXN0eWxlLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRyYW5zZm9ybXMvY29tcHV0ZWQtc3R5bGUtb3JpZ2luLmh0bWw6IEFkZGVkLgorCiAyMDA4LTEx
LTIwICBDYW1lcm9uIFp3YXJpY2ggIDx6d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
Y29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21w
dXRlZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNTNmYWNhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY29t
cHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1RoaXMgdGVzdHMgY29t
cHV0ZWQgc3R5bGUgdmFsdWVzIGZyb20gYW5pbWF0aW9uIHByb3BlcnRpZXMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uTmFt
ZSBpcyAnYW5pbTEnCitQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uTmFtZSBpcyAnYW5p
bTIsIGFuaW0zJworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIGlzICcx
MHMnCitQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRHVyYXRpb24gaXMgJzVzLCAyLjVz
JworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IGlzICcxMCcK
K1BBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCBpcyAnMTAsIGlu
ZmluaXRlJworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSBpcyAncGF1
c2VkJworUEFTUyB0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSBpcyAncGF1c2Vk
LCBydW5uaW5nJworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
IGlzICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSknCitQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKSwgY3ViaWMt
YmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiBpcyAnbm9ybWFsJworUEFTUyB0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbiBpcyAnbm9ybWFsLCBhbHRlcm5hdGUnCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL2NvbXB1dGVkLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1
dGVkLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIxNWY0
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0ZWQtc3R5
bGUuaHRtbApAQCAtMCwwICsxLDgzIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICN0ZXN0MSB7CisgICAg
ICAgIHdpZHRoOiAyMHB4OworICAgICAgICBoZWlnaHQ6IDIwcHg7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgLXdl
YmtpdC1hbmltYXRpb24tbmFtZTogYW5pbTE7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1
cmF0aW9uOiAxMHM7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDog
MTA7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsKKyAgICAg
ICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogbm9ybWFsOworICAgIH0KKyAgICAjdGVzdDIgewor
ICAgICAgICB3aWR0aDogMjBweDsKKyAgICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAg
IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0yLCBhbmltMzsKKyAgICAgICAgLXdlYmtpdC1h
bmltYXRpb24tZHVyYXRpb246IDVzLCAyNTAwbXM7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9u
LWl0ZXJhdGlvbi1jb3VudDogMTAsIGluZmluaXRlOworICAgICAgICAtd2Via2l0LWFuaW1hdGlv
bi1wbGF5LXN0YXRlOiBwYXVzZWQsIHJ1bm5pbmc7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9u
LXRpbWluZy1mdW5jdGlvbjogbGluZWFyLCBlYXNlLWluLW91dDsKKyAgICAgICAgLXdlYmtpdC1h
bmltYXRpb24tZGlyZWN0aW9uOiBub3JtYWwsIGFsdGVybmF0ZTsKKyAgICB9CisgICAgQC13ZWJr
aXQta2V5ZnJhbWVzIGFuaW0xIHsKKyAgICAgICAgZnJvbSB7IGxlZnQ6IDEwcHg7IH0KKyAgICAg
ICAgdG8geyBsZWZ0OiAyMHB4OyB9CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmlt
MiB7CisgICAgICAgIGZyb20geyB3aWR0aDogMjBweDsgfQorICAgICAgICB0byB7IHdpZHRoOiAy
NXB4OyB9CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltMyB7CisgICAgICAgIGZy
b20geyBsZWZ0OiAxMHB4OyB9CisgICAgICAgIHRvIHsgbGVmdDogMjBweDsgfQorICAgIH0KKzwv
c3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0idGVzdDEiPjwvcD4KKzxwIGlkPSJ0
ZXN0MiI+PC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGNvbXB1dGVkIHN0eWxl
IHZhbHVlcyBmcm9tIGFuaW1hdGlvbiBwcm9wZXJ0aWVzLiIpOworCit2YXIgdGVzdDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKTsKK3ZhciB0ZXN0MiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0MiIpOworCit2YXIgdGVzdDFTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKHRlc3QxKTsKK3ZhciB0ZXN0MlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGVzdDIpOworCitzaG91bGRCZSgidGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25OYW1lIiwgIidh
bmltMSciKTsKK3Nob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUiLCAiJ2Fu
aW0yLCBhbmltMyciKTsKKworc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRHVy
YXRpb24iLCAiJzEwcyciKTsKK3Nob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uIiwgIic1cywgMi41cyciKTsKKworc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwJyIpOworc2hvdWxkQmUoInRlc3QyU3R5bGUud2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwLCBpbmZpbml0ZSciKTsKKworc2hvdWxk
QmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIiwgIidwYXVzZWQnIik7Citz
aG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25QbGF5U3RhdGUiLCAiJ3BhdXNlZCwg
cnVubmluZyciKTsKKworc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24iLCAiJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKSciKTsKK3Nob3VsZEJlKCJ0ZXN0
MlN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSciKTsKKworc2hvdWxkQmUo
InRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIiwgIidub3JtYWwnIik7CitzaG91
bGRCZSgidGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25EaXJlY3Rpb24iLCAiJ25vcm1hbCwgYWx0
ZXJuYXRlJyIpOworCitkZWJ1ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CmluZGV4IGJhZDJlOTIuLjAyYmExMDUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
QEAgLTgxLDYgKzgxLDEzIEBAIHdvcmQtc3BhY2luZzogMHB4Owogd29yZC13cmFwOiBub3JtYWw7
CiB6LWluZGV4OiBhdXRvOwogem9vbTogMTsKKy13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwczsK
Ky13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogbm9ybWFsOworLXdlYmtpdC1hbmltYXRpb24t
ZHVyYXRpb246IDBzOworLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOworLXdl
YmtpdC1hbmltYXRpb24tbmFtZTogbm9uZTsKKy13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6
IHJ1bm5pbmc7Cistd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemll
cigwLjI1LCAwLjEsIDAuMjUsIDEpOwogLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogLXdlYmtp
dC1iYWNrZ3JvdW5kLWNsaXA6IGJvcmRlcjsKIC13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGU6
IHNvdXJjZS1vdmVyOwpAQCAtMTM2LDggKzE0Myw3IEBAIHpvb206IDE7CiAtd2Via2l0LXRleHQt
c3Ryb2tlLWNvbG9yOiByZ2IoMCwgMCwgMCk7CiAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAw
cHg7CiAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKLS13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14
OiAzOTJweDsKLS13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi15OiAyODhweDsKKy13ZWJraXQtdHJh
bnNmb3JtLW9yaWdpbjogMzkycHggMjg4cHg7CiAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDBz
OwogLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKIC13ZWJraXQtdHJhbnNpdGlvbi1w
cm9wZXJ0eTogYWxsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY29tcHV0ZWQt
c3R5bGUtd2l0aG91dC1yZW5kZXJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAppbmRleCBiNDNi
OTc1Li45ZTMwODQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb21wdXRlZC1z
dHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dApAQCAtODAs
NiArODAsMTMgQEAgQ29tcHV0ZWQgc3R5bGUgb2YgYW4gZWxlbWVudCB3aG9zZSBwYXJlbnQncyAn
ZGlzcGxheScgdmFsdWUgaXMgJ25vbmUnOgogICAgIHdvcmQtd3JhcDogbm9ybWFsCiAgICAgei1p
bmRleDogYXV0bwogICAgIHpvb206IDEKKyAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMHMK
KyAgICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IG5vcm1hbAorICAgIC13ZWJraXQtYW5p
bWF0aW9uLWR1cmF0aW9uOiAwcworICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3Vu
dDogMQorICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG5vbmUKKyAgICAtd2Via2l0LWFuaW1h
dGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nCisgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1
bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKQogICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbm9uZQogICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBib3JkZXIKICAgICAt
d2Via2l0LWJhY2tncm91bmQtY29tcG9zaXRlOiBzb3VyY2Utb3ZlcgpAQCAtMTM1LDggKzE0Miw3
IEBAIENvbXB1dGVkIHN0eWxlIG9mIGFuIGVsZW1lbnQgd2hvc2UgcGFyZW50J3MgJ2Rpc3BsYXkn
IHZhbHVlIGlzICdub25lJzoKICAgICAtd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yOiByZ2IoMCwg
MCwgMCkKICAgICAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHgKICAgICAtd2Via2l0LXRy
YW5zZm9ybTogbm9uZQotICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14OiA1MCUKLSAgICAt
d2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teTogNTAlCisgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3Jp
Z2luOiA1MCUgNTAlCiAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwcwogICAgIC13ZWJr
aXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHMKICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVy
dHk6IGFsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxl
LWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggMzJjZjg4My4uNWNiNjExZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQu
dHh0CkBAIC0xNjAsNiArMTYwLDIwIEBAIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoei1p
bmRleCkgOiBhdXRvCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHotaW5kZXgpIDog
W29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
em9vbSkgOiAxCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHpvb20pIDogW29iamVj
dCBDU1NQcmltaXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtp
dC1hbmltYXRpb24tZGVsYXkpIDogMHMKK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
LXdlYmtpdC1hbmltYXRpb24tZGVsYXkpIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCityZWN0OiBz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbikgOiBub3Jt
YWwKK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1hbmltYXRpb24tZGly
ZWN0aW9uKSA6IFtvYmplY3QgQ1NTVmFsdWVMaXN0XQorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbikgOiAwcworcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZSgtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbikgOiBbb2JqZWN0IENTU1Zh
bHVlTGlzdF0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1hbmltYXRpb24t
aXRlcmF0aW9uLWNvdW50KSA6IDEKK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdl
YmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KSA6IFtvYmplY3QgQ1NTVmFsdWVMaXN0XQor
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LWFuaW1hdGlvbi1uYW1lKSA6IG5v
bmUKK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1hbmltYXRpb24tbmFt
ZSkgOiBbb2JqZWN0IENTU1ZhbHVlTGlzdF0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZSkgOiBydW5uaW5nCityZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUpIDogW29iamVjdCBD
U1NWYWx1ZUxpc3RdCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtYW5pbWF0
aW9uLXRpbWluZy1mdW5jdGlvbikgOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKQor
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LWFuaW1hdGlvbi10aW1pbmct
ZnVuY3Rpb24pIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtYXBwZWFyYW5jZSkgOiBub25lCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKC13ZWJraXQtYXBwZWFyYW5jZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVl
XQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LWJhY2tncm91bmQtY2xpcCkg
OiBib3JkZXIKQEAgLTI3MCwxMCArMjg0LDggQEAgcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoKSA6IDBweAogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoKSA6IFtvYmplY3QgQ1NTUHJpbWl0
aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtdHJhbnNmb3Jt
KSA6IG5vbmUKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC10cmFuc2Zv
cm0pIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgpIDogMHB4Ci1yZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14KSA6IFtvYmplY3QgQ1NT
UHJpbWl0aXZlVmFsdWVdCi1yZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtdHJh
bnNmb3JtLW9yaWdpbi15KSA6IDBweAotcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgt
d2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQor
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4pIDog
MHB4IDBweAorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LXRyYW5zZm9y
bS1vcmlnaW4pIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSkgOiAwcwogcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZSgtd2Via2l0LXRyYW5zaXRpb24tZGVsYXkpIDogW29iamVjdCBDU1NWYWx1
ZUxpc3RdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtdHJhbnNpdGlvbi1k
dXJhdGlvbikgOiAwcwpAQCAtNTM2LDYgKzU0OCwyMCBAQCBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKHotaW5kZXgpIDogYXV0bwogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSh6LWluZGV4
KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KHpvb20pIDogMQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSh6b29tKSA6IFtvYmplY3Qg
Q1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtYW5p
bWF0aW9uLWRlbGF5KSA6IDBzCitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQt
YW5pbWF0aW9uLWRlbGF5KSA6IFtvYmplY3QgQ1NTVmFsdWVMaXN0XQorZzogc3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24pIDogbm9ybWFsCitnOiBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbikgOiBbb2Jq
ZWN0IENTU1ZhbHVlTGlzdF0KK2c6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1hbmlt
YXRpb24tZHVyYXRpb24pIDogMHMKK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtp
dC1hbmltYXRpb24tZHVyYXRpb24pIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCitnOiBzdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCkgOiAxCitn
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1j
b3VudCkgOiBbb2JqZWN0IENTU1ZhbHVlTGlzdF0KK2c6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1hbmltYXRpb24tbmFtZSkgOiBub25lCitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtYW5pbWF0aW9uLW5hbWUpIDogW29iamVjdCBDU1NWYWx1ZUxpc3RdCitnOiBz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUpIDogcnVu
bmluZworZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LWFuaW1hdGlvbi1wbGF5
LXN0YXRlKSA6IFtvYmplY3QgQ1NTVmFsdWVMaXN0XQorZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24pIDogY3ViaWMtYmV6aWVyKDAuMjUs
IDAuMSwgMC4yNSwgMSkKK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1hbmlt
YXRpb24tdGltaW5nLWZ1bmN0aW9uKSA6IFtvYmplY3QgQ1NTVmFsdWVMaXN0XQogZzogc3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LWFwcGVhcmFuY2UpIDogbm9uZQogZzogc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LWFwcGVhcmFuY2UpIDogW29iamVjdCBDU1NQcmltaXRp
dmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1iYWNrZ3JvdW5kLWNs
aXApIDogYm9yZGVyCkBAIC02NDYsMTAgKzY3Miw4IEBAIGc6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCkgOiAwcHgKIGc6IHN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXRyYW5zZm9ybSkgOiBu
b25lCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtdHJhbnNmb3JtKSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJr
aXQtdHJhbnNmb3JtLW9yaWdpbi14KSA6IDBweAotZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZSgtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVl
XQotZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teSkg
OiAwcHgKLWc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC10cmFuc2Zvcm0tb3Jp
Z2luLXkpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luKSA6IDBweCAwcHgKK2c6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luKSA6IFtvYmplY3QgQ1NTVmFs
dWVMaXN0XQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LXRyYW5zaXRpb24tZGVs
YXkpIDogMHMKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC10cmFuc2l0aW9u
LWRlbGF5KSA6IFtvYmplY3QgQ1NTVmFsdWVMaXN0XQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24pIDogMHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RyYW5zZm9ybXMvY29tcHV0ZWQtc3R5bGUtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RyYW5zZm9ybXMvY29tcHV0ZWQtc3R5bGUtb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTY2OTlmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy9jb21wdXRlZC1zdHlsZS1vcmlnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgY29tcHV0ZWQgc3R5bGUgdmFsdWVzIGZv
ciB0cmFuc2Zvcm0gb3JpZ2luLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB0ZXN0MVN0eWxlLndlYmtpdFRyYW5zZm9ybU9yaWdpbiBpcyAnMTBweCAxMHB4JworUEFTUyB0
ZXN0MlN0eWxlLndlYmtpdFRyYW5zZm9ybU9yaWdpbiBpcyAnMTBweCAxMHB4JworUEFTUyB0ZXN0
M1N0eWxlLndlYmtpdFRyYW5zZm9ybU9yaWdpbiBpcyAnMHB4IDIwcHgnCitQQVNTIHRlc3Q0U3R5
bGUud2Via2l0VHJhbnNmb3JtT3JpZ2luIGlzICc1cHggN3B4JworCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdHJhbnNmb3Jtcy9jb21wdXRlZC1zdHlsZS1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL3Ry
YW5zZm9ybXMvY29tcHV0ZWQtc3R5bGUtb3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYmI2MDM4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Ry
YW5zZm9ybXMvY29tcHV0ZWQtc3R5bGUtb3JpZ2luLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KKyAgICAjdGVzdDEgeworICAgICAgICB3aWR0aDogMjBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCk7
CisgICAgICAgIC8vIGRlZmF1bHQgdHJhbnNmb3JtIG9yaWdpbgorICAgIH0KKyAgICAjdGVzdDIg
eworICAgICAgICB3aWR0aDogMjBweDsKKyAgICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCk7CisgICAgICAgIC13ZWJraXQtdHJh
bnNmb3JtLW9yaWdpbjogNTAlIDUwJTsKKyAgICB9CisgICAgI3Rlc3QzIHsKKyAgICAgICAgd2lk
dGg6IDIwcHg7CisgICAgICAgIGhlaWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogYmx1ZTsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlKDApOworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46
IDAlIDEwMCU7CisgICAgfQorICAgICN0ZXN0NCB7CisgICAgICAgIHdpZHRoOiAyMHB4OworICAg
ICAgICBoZWlnaHQ6IDIwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZSgwKTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1cHggN3B4OworICAg
IH0KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0idGVzdDEiPjwvcD4KKzxw
IGlkPSJ0ZXN0MiI+PC9wPgorPHAgaWQ9InRlc3QzIj48L3A+Cis8cCBpZD0idGVzdDQiPjwvcD4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBjb21wdXRlZCBzdHlsZSB2YWx1ZXMgZm9y
IHRyYW5zZm9ybSBvcmlnaW4uIik7CisKK3ZhciB0ZXN0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0MSIpOwordmFyIHRlc3QyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qy
Iik7Cit2YXIgdGVzdDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMiKTsKK3ZhciB0
ZXN0NCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NCIpOworCit2YXIgdGVzdDFTdHls
ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKK3ZhciB0ZXN0MlN0eWxlID0gd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdDIpOwordmFyIHRlc3QzU3R5bGUgPSB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXN0Myk7Cit2YXIgdGVzdDRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKHRlc3Q0KTsKKworc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0VHJhbnNmb3JtT3Jp
Z2luIiwgIicxMHB4IDEwcHgnIik7CitzaG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRUcmFuc2Zv
cm1PcmlnaW4iLCAiJzEwcHggMTBweCciKTsKK3Nob3VsZEJlKCJ0ZXN0M1N0eWxlLndlYmtpdFRy
YW5zZm9ybU9yaWdpbiIsICInMHB4IDIwcHgnIik7CitzaG91bGRCZSgidGVzdDRTdHlsZS53ZWJr
aXRUcmFuc2Zvcm1PcmlnaW4iLCAiJzVweCA3cHgnIik7CisKK2RlYnVnKCIiKTsKK3N1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcx
MDU1ZjEuLjdlYzdlNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDgtMTEtMjAgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzY4CisKKyAgICAgICAgSW1wbGVtZW50IGdldENvbXB1dGVkU3R5bGUgZm9yIGFuaW1hdGlv
biBwcm9wZXJ0aWVzLiBSZW1vdmUgaW5kaXZpZHVhbAorICAgICAgICBjb21wdXRlZCB2YWx1ZXMg
Zm9yIHRyYW5zZm9ybS1vcmlnaW4teCwgdHJhbnNmb3JtLW9yaWdpbi15LCBhbmQganVzdAorICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtLW9yaWdpbiBpbnN0ZWFkLgorICAgICAgICAKKyAgICAgICAg
VGVzdHM6IGFuaW1hdGlvbnMvY29tcHV0ZWQtc3R5bGUuaHRtbAorICAgICAgICAgICAgICAgdHJh
bnNmb3Jtcy9jb21wdXRlZC1zdHlsZS1vcmlnaW4uaHRtbAorCisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKToKKwogMjAwOC0xMS0yMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBjMGY3MmVjLi40NzY0MWU1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEzMSw2ICsxMzEs
MTMgQEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQ
cm9wZXJ0eVpJbmRleCwKICAgICBDU1NQcm9wZXJ0eVpvb20sCiAKKyAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkRlbGF5LAorICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0
aW9uLAorICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sCisgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKKyAgICBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbk5hbWUsCisgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUs
CisgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
Q2xpcCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsCkBAIC0xODYs
OCArMTkzLDcgQEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwKICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VXaWR0aCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwKLSAgICBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5ZLAorICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLAog
ICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LAogICAgIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblBy
b3BlcnR5LApAQCAtMTAwMyw2ICsxMDA5LDk1IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmaXJzdFJlZ2lvbi5y
ZWxlYXNlKCkpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkRlbGF5OiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAg
Y29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CisgICAgICAgICAg
ICBpZiAodCkgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6
ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHQtPmFuaW1hdGlvbihpKS0+ZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFuaW1hdGlv
bkRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAgICAgICAgcmV0dXJu
IGxpc3QucmVsZWFzZSgpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25EaXJlY3Rpb246IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKKyAgICAgICAg
ICAgIGlmICh0KSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodC0+YW5pbWF0aW9uKGkpLT5k
aXJlY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUFsdGVybmF0ZSkpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3Jt
YWwpKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246IHsKKyAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUt
PmFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgIGlmICh0KSB7CisgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodC0+YW5pbWF0aW9uKGkpLT5k
dXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KFJlbmRlclN0eWxlOjppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
OiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlz
dCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CisgICAgICAgICAgICBpZiAodCkgeworICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbkNvdW50ID0gdC0+YW5pbWF0aW9uKGkpLT5pdGVy
YXRpb25Db3VudCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uQ291bnQgPCAw
KQorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSW5maW5pdGUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoaXRlcmF0aW9uQ291bnQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUmVuZGVyU3R5bGU6
OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOworICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICB9
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lOiB7CisgICAgICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOworICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxl
LT5hbmltYXRpb25zKCk7CisgICAgICAgICAgICBpZiAodCkgeworICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodC0+YW5pbWF0aW9uKGkp
LT5uYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSkpOworICAgICAg
ICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGU6IHsKKyAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CisgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMo
KTsKKyAgICAgICAgICAgIGlmICh0KSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgcHJvcCA9
IHQtPmFuaW1hdGlvbihpKS0+cGxheVN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChw
cm9wID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlUnVu
bmluZykpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVQYXVzZWQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVSdW5uaW5nKSk7CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uOiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CisgICAgICAgICAgICBpZiAodCkg
eworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRmID0gdC0+YW5p
bWF0aW9uKGkpLT50aW1pbmdGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRm
LngyKCksIHRmLnkyKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IFJlbmRlclN0eWxl
Ojppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCks
IHRmLngyKCksIHRmLnkyKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBs
aXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QXBwZWFyYW5jZToKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHN0eWxlLT5hcHBlYXJhbmNlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySW1hZ2U6CkBAIC0xMDQ2LDI4ICsxMTQxLDI1IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKICAg
ICAgICAgICAgIHJldHVybiBjb21wdXRlZFRyYW5zZm9ybShyZW5kZXJlcik7Ci0gICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgotICAgICAgICAgICAgaWYgKHJl
bmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBib3ggPSBzaXppbmdCb3gocmVuZGVy
ZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0
eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0aCgpKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblgoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW5ZOgorICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
OiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAg
ICAgICAgICAgICAgICAgSW50UmVjdCBib3ggPSBzaXppbmdCb3gocmVuZGVyZXIpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zv
cm1PcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0
aCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5Z
KCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSkpOworICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxl
LT50cmFuc2Zvcm1PcmlnaW5ZKCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+
dHJhbnNmb3JtT3JpZ2luWSgpKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5
OiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlz
dCogdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKQogICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0LT5h
bmltYXRpb24oaSktPmRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUmVuZGVyU3R5bGU6
OmluaXRpYWxBbmltYXRpb25EZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKICAg
ICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKICAgICAgICAgfQpAQCAtMTA3Nyw0NCAr
MTE2OSw0MSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgaWYgKHQpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh0LT5hbmltYXRpb24oaSktPmR1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUmVu
ZGVyU3R5bGU6OmluaXRpYWxBbmltYXRpb25EdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1MpKTsKICAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOiB7
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHk6IHsKICAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0g
c3R5bGUtPnRyYW5zaXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRmID0gdC0+YW5pbWF0aW9uKGkpLT50aW1p
bmdGdW5jdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnkyKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHByb3AgPSB0LT5hbmltYXRpb24oaSktPnByb3Bl
cnR5KCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT0gY0FuaW1hdGVOb25lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHByb3AgPT0gY0FuaW1hdGVBbGwpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBbGwpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShnZXRQcm9wZXJ0eU5hbWUoc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
Ryk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGYgPSBSZW5kZXJTdHlsZTo6aW5pdGlh
bEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh0Zi54MSgpLCB0Zi55MSgpLCB0Zi54Migp
LCB0Zi55MigpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVBbGwpKTsKICAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OiB7
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246
IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0
KiB0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW50IHByb3AgPSB0LT5hbmltYXRpb24oaSktPnByb3BlcnR5KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wID09IGNBbmltYXRlTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg
PSAibm9uZSI7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3AgPT0gY0FuaW1hdGVB
bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gImFsbCI7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBnZXRQcm9wZXJ0eU5h
bWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcCkpOwotICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShuYW1lLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiYgdGYgPSB0LT5hbmltYXRpb24oaSktPnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUo
dGYueDEoKSwgdGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOwogICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rp
b24mIHRmID0gUmVuZGVyU3R5bGU6OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpOwor
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVh
dGUodGYueDEoKSwgdGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKCJhbGwiLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwog
ICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgpAQCAtMTE2NSwxMyArMTI1NCw2IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZShpbnQgcHJvcGVyCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lk
dGg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6IC8vIE9ubHkgdXNlZCBp
biBAZm9udC1mYWNlIHJ1bGVzLgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6Ci0gICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb246Ci0gICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbjoKLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgotICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZToKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvblBsYXlTdGF0ZToKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
UmFkaXVzOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6CkBAIC0xMTgyLDcgKzEyNjQsNiBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
azoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VmFyaWFibGVEZWNsYXJh
dGlvbkJsb2NrOgogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBhcmUgdW5pbXBsZW1l
bnRlZC4K
</data>
<flag name="review"
          id="11721"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>