<?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>188978</bug_id>
          
          <creation_ts>2018-08-26 23:28:39 -0700</creation_ts>
          <short_desc>[WinCairo] Add CryptoDigestOpenSSL</short_desc>
          <delta_ts>2018-09-01 22:34:15 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>lforschler</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1453815</commentid>
    <comment_count>0</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-26 23:28:39 -0700</bug_when>
    <thetext>It&apos;s nice to have a CryptoDigest implementation with OpenSSL/LibreSSL, which could potentially be shared with other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453835</commentid>
    <comment_count>1</comment_count>
      <attachid>348128</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-27 02:29:37 -0700</bug_when>
    <thetext>Created attachment 348128
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453957</commentid>
    <comment_count>2</comment_count>
      <attachid>348128</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-27 10:29:42 -0700</bug_when>
    <thetext>Comment on attachment 348128
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348128&amp;action=review

LGTM and adding tests is awesome.

I&apos;m just not sure we need all the #ifndef&apos;s hanging out.

&gt; Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp:38
&gt; +#ifndef OPENSSL_NO_SHA1

What are the cases where this and the other macros would be defined?

&gt; Tools/TestWebKitAPI/PlatformWin.cmake:129
&gt; +if (PAL_LIBRARY_TYPE MATCHES STATIC)

Could this go into the root CMakelists.txt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453993</commentid>
    <comment_count>3</comment_count>
      <attachid>348128</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 11:23:08 -0700</bug_when>
    <thetext>Comment on attachment 348128
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=348128&amp;action=review

&gt;&gt; Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp:38
&gt;&gt; +#ifndef OPENSSL_NO_SHA1
&gt; 
&gt; What are the cases where this and the other macros would be defined?

Do we want to support those cases?  I think probably not, especially not without a fallback.

&gt; Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp:71
&gt; +    : m_context(new CryptoDigestContext)

This is what std::make_unique is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454167</commentid>
    <comment_count>4</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-27 16:02:10 -0700</bug_when>
    <thetext>Myles and Alex after this would we like to create a TestPAL project? There&apos;s a legit test now in the repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454191</commentid>
    <comment_count>5</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-27 16:25:38 -0700</bug_when>
    <thetext>Thanks for the reviews. I&apos;m revising my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454197</commentid>
    <comment_count>6</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-27 16:31:00 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #2)
&gt; &gt; Tools/TestWebKitAPI/PlatformWin.cmake:129
&gt; &gt; +if (PAL_LIBRARY_TYPE MATCHES STATIC)
&gt; 
&gt; Could this go into the root CMakelists.txt?

I don&apos;t think so since somehow TestWebCoreLib is defined in each Platform*.cmake, perhaps due to JSCOnly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454204</commentid>
    <comment_count>7</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-27 16:34:59 -0700</bug_when>
    <thetext>(In reply to Yoshiaki Jitsukawa from comment #6)
&gt; (In reply to Don Olmstead from comment #2)
&gt; &gt; &gt; Tools/TestWebKitAPI/PlatformWin.cmake:129
&gt; &gt; &gt; +if (PAL_LIBRARY_TYPE MATCHES STATIC)
&gt; &gt; 
&gt; &gt; Could this go into the root CMakelists.txt?
&gt; 
&gt; I don&apos;t think so since somehow TestWebCoreLib is defined in each
&gt; Platform*.cmake, perhaps due to JSCOnly.

K I&apos;ll maybe take a look at the CMake stuff for the tests in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454206</commentid>
    <comment_count>8</comment_count>
      <attachid>348235</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-27 16:37:41 -0700</bug_when>
    <thetext>Created attachment 348235
Patch take2

Removing #ifndefs and switching to make_unique().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454397</commentid>
    <comment_count>9</comment_count>
      <attachid>348235</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-28 09:27:40 -0700</bug_when>
    <thetext>Comment on attachment 348235
Patch take2

View in context: https://bugs.webkit.org/attachment.cgi?id=348235&amp;action=review

&gt; Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp:81
&gt; +    case CryptoDigest::Algorithm::SHA_1:
&gt; +        delete toSHA1Context(m_context.get());
&gt; +        return;
&gt; +    case CryptoDigest::Algorithm::SHA_224:
&gt; +        delete toSHA224Context(m_context.get());
&gt; +        return;

This is what a virtual destructor is for.

&gt; Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp:96
&gt; +    std::unique_ptr&lt;CryptoDigest&gt; digest(new CryptoDigest);

This is also what make_unique is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454755</commentid>
    <comment_count>10</comment_count>
      <attachid>348399</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-29 05:38:26 -0700</bug_when>
    <thetext>Created attachment 348399
Patch take3

Using template to generate CryptoDigestContextImpl variants of SHA family.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454756</commentid>
    <comment_count>11</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-29 05:41:52 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; &gt; Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp:96
&gt; &gt; +    std::unique_ptr&lt;CryptoDigest&gt; digest(new CryptoDigest);
&gt; 
&gt; This is also what make_unique is for.

Since the constructor of CryptoDigest is private, unfortunately make_unique cannot invoke it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455106</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-29 18:58:43 -0700</bug_when>
    <thetext>Why don&apos;t we make the constructor public instead of having a static create method that returns a unique_ptr?  And why doesn&apos;t this replace wtf/SHA1.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455133</commentid>
    <comment_count>13</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-29 20:35:42 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; And why doesn&apos;t this replace wtf/SHA1.h?

I think that&apos;s because WTF::Persistence::Encoder and JSC::CodeBlockHash use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455141</commentid>
    <comment_count>14</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-08-29 20:47:20 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; Why don&apos;t we make the constructor public instead of having a static create
&gt; method that returns a unique_ptr?

I suppose we don&apos;t want to return a CryptoDigest instance with unsupported algorithm. As far as I see CryptoDigestWin lacks SHA_224.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456013</commentid>
    <comment_count>15</comment_count>
      <attachid>348399</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-01 22:33:59 -0700</bug_when>
    <thetext>Comment on attachment 348399
Patch take3

Clearing flags on attachment: 348399

Committed r235587: &lt;https://trac.webkit.org/changeset/235587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456014</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-01 22:34:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456015</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-01 22:34:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/44041807&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348128</attachid>
            <date>2018-08-27 02:29:37 -0700</date>
            <delta_ts>2018-08-27 16:37:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug188978-1.patch</filename>
            <type>text/plain</type>
            <size>18089</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGE5YzRiYmM1ZTczLi5mNDgwMWE5NDA5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDgtMjcgIFlvc2hpYWtpIEppdHN1a2F3
YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbV2luQ2Fpcm9dIEFk
ZCBDcnlwdG9EaWdpZXN0T3BlblNTTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg4OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgQ3J5cHRvRGlnZXN0IGltcGxlbWVudGF0aW9uIHdpdGggT3Bl
blNTTC9MaWJyZVNTTCBhbmQgbGV0IHRoZQorICAgICAgICBXaW5DYWlybyBwb3J0IHVzZSBpdC4K
KworICAgICAgICAqIHBhbC9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlOiBBZGQgQ3J5cHRvRGlnZXN0
V2luLmNwcCB0byBQQUxfU09VUkNFUworICAgICAgICAqIHBhbC9QbGF0Zm9ybVdpbi5jbWFrZTog
UmVtb3ZlIENyeXB0b0RpZ2VzdFdpbi5jcHAgZnJvbSBQQUxfU09VUkNFUworICAgICAgICAqIHBh
bC9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOiBBZGQgQ3J5cHRvRGlnZXN0T3BlblNTTCB0byBQQUxf
U09VUkNFUworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NM
LmNwcDogQWRkZWQuCisgICAgICAgIChQQUw6OnRvU0hBMUNvbnRleHQpOgorICAgICAgICAoUEFM
Ojp0b1NIQTIyNENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTI1NkNvbnRleHQpOgorICAg
ICAgICAoUEFMOjp0b1NIQTM4NENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTUxMkNvbnRl
eHQpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorCiAyMDE4LTA4LTI2
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBJ
bnRyb2R1Y2UgbmV3IHZhbHVlcyBmb3IgLWFwcGxlLXBheS1idXR0b24tdHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDM1MjE2NTJhY2M2
Li5hMWQyZGEyNGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQpAQCAtMjksNiArMjksOCBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogICAg
IGF2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCiAKICAgICBjZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKKworICAgIGNyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAogKQog
CiBsaXN0KEFQUEVORCBQQUxfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBjYmNiY2I5Mzk3OC4uODEwOGMyMDkx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw2ICsx
LDQgQEAKIGxpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCi0gICAgY3J5cHRvL3dpbi9DcnlwdG9EaWdl
c3RXaW4uY3BwCi0KICAgICBzeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAogCiAgICAgc3lzdGVtL3dp
bi9Tb3VuZFdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZv
cm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQppbmRleCBkODI2MjlhNjZkNC4uZTg4ZDA3NjEyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTEsMiArMSw2IEBACiBsaXN0
KEFQUEVORCBQQUxfUFVCTElDX0hFQURFUlMKICkKKworbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMK
KyAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAorKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVu
U1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGln
ZXN0T3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQw
MjhkYWUxZjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcApAQCAtMCwwICsxLDIxMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCisKKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFs
Z29yaXRobTsKKyAgICB2b2lkKiBzaGFDb250ZXh0OworfTsKKworI2lmbmRlZiBPUEVOU1NMX05P
X1NIQTEKK2lubGluZSBTSEFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTSEFfQ1RYKj4o
Y29udGV4dC0+c2hhQ29udGV4dCk7Cit9CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEEy
NTYKK2lubGluZSBTSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4
dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U0hBMjU2
X0NUWCo+KGNvbnRleHQtPnNoYUNvbnRleHQpOworfQoraW5saW5lIFNIQTI1Nl9DVFgqIHRvU0hB
MjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChj
b250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTSEEyNTZfQ1RYKj4oY29udGV4dC0+c2hhQ29udGV4dCk7
Cit9CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKK2lubGluZSBTSEE1MTJfQ1RY
KiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBB
U1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U0hBNTEyX0NUWCo+KGNvbnRleHQtPnNoYUNv
bnRleHQpOworfQoraW5saW5lIFNIQTUxMl9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdl
c3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTSEE1MTJfQ1RYKj4oY29udGV4dC0+c2hhQ29udGV4dCk7Cit9CisjZW5kaWYKKworQ3J5cHRv
RGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RD
b250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIHN3
aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEExCisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIGRlbGV0ZSB0
b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgor
I2lmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yNTY6CisgICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgp
KTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRl
IHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRv
U0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisjZW5kaWYK
KyAgICB9Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7CisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIFNIQV9DVFgqIGNvbnRleHQgPSBuZXcgU0hB
X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPnNoYUNvbnRleHQgPSBjb250ZXh0Owor
ICAgICAgICBTSEExX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAg
fQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBTSEEyNTZfQ1RYKiBjb250ZXh0ID0g
bmV3IFNIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5zaGFDb250ZXh0ID0g
Y29udGV4dDsKKyAgICAgICAgU0hBMjI0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBk
aWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKKyAgICAgICAgU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBTSEEyNTZfQ1RYOworICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+c2hhQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIFNIQTI1
Nl9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyNlbmRpZgor
I2lmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ6IHsKKyAgICAgICAgU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBTSEE1MTJf
Q1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+c2hhQ29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIFNIQTM4NF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAg
IH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAg
IFNIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5t
X2NvbnRleHQtPnNoYUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBTSEE1MTJfSW5pdChjb250
ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisjZW5kaWYKKyAgICB9CisKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5h
bGdvcml0aG0pIHsKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEExCisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIFNIQTFfVXBkYXRlKHRvU0hBMUNvbnRleHQo
bV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyNlbmRp
ZgorI2lmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6CisgICAgICAgIFNIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgU0hBMjU2X1VwZGF0
ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIFNIQTM4NF9VcGRhdGUo
dG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAg
ICAgICAgU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5w
dXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKK30KKworVmVjdG9y
PHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQ7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworI2lmbmRl
ZiBPUEVOU1NMX05PX1NIQTEKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MToKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShTSEFfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIFNI
QTFfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEEyNTYKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICByZXN1bHQucmVz
aXplKFNIQTIyNF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgU0hBMjI0X0ZpbmFsKHJlc3VsdC5k
YXRhKCksIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVz
dWx0LnJlc2l6ZShTSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIFNIQTI1Nl9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAg
IGJyZWFrOworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShTSEEz
ODRfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIFNIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0
b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNp
emUoU0hBNTEyX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBTSEE1MTJfRmluYWwocmVzdWx0LmRh
dGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsK
KyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQ
QUwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2
M2E4NzVjYzU4MC4uMmJkZmZjOTRkZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxOC0wOC0yNyAgWW9zaGlha2kg
Sml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5D
YWlyb10gQWRkIENyeXB0b0RpZ2llc3RPcGVuU1NMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg5NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3RzIGZvciB0aGUgUEFMOjpDcnlwdG9E
aWdlc3QgY2xhc3MuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtl
OgorICAgICAgICBBZGQgQ3J5cHRvRGlnZXN0LmNwcCB0byBUZXN0V2ViQ29yZUxpYl9Tb3VyY2Vz
LgorCisgICAgICAgIERlZmluZSAtRFNUQVRJQ0FMTFlfTElOS0VEX1dJVEhfUEFMPTEgdG8gYXZv
aWQgd2FybmluZ3Mgc2luY2UKKyAgICAgICAgd2l0aG91dCB0aGUgZGVmaW5pdGlvbiB0aGUgZnVu
Y3Rpb25zIG1hcmtlZCB3aXRoIFBBTF9FWFBPUlQgYXJlIHN1cHBvc2VkIHRvIGJlCisgICAgICAg
IGltcG9ydGVkIGZyb20gYW5vdGhlciBzaGFyZWQgbGlicmFyeSwgYnV0IGFzIGl0IGlzLCBUZXN0
V2ViQ29yZUxpYgorICAgICAgICBsaW5rcyBQQUwgc3RhdGljYWxseS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DcnlwdG9EaWdlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnRvSGV4KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmV4cGVj
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpleHBlY3RTSEExKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmV4cGVjdFNIQTIyNCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpleHBlY3RT
SEEyNTYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXhwZWN0U0hBMzg0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmV4cGVjdFNIQTUxMik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAxOC0wOC0yNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVzaW5nIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSB3aXRoIGEgcHJvdG9jb2wgdGhhdCBp
bmhlcml0cyBmcm9tIGEgbm9uLU5TT2JqZWN0IHByb3RvY29sIGNyYXNoZXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGZjNjMwOWVlZDFjLi5lYzU5MWVlYWEwNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCkBAIC03NSw2ICs3NSw3IEBAIGlmICgk
e1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgICkKICAgICBsaXN0KEFQUEVORCBUZXN0V2Vi
Q29yZUxpYl9TT1VSQ0VTCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvd2luL0JpdG1hcEltYWdlLmNwcAorICAgICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XZWJDb3JlL0NyeXB0b0RpZ2VzdC5jcHAKICAgICApCiBlbHNlICgpCiAgICAgbGlzdChBUFBF
TkQgdGVzdF93ZWJjb3JlX0xJQlJBUklFUwpAQCAtMTI1LDYgKzEyNiwxMCBAQCB0YXJnZXRfbGlu
a19saWJyYXJpZXMoVGVzdFdlYkNvcmVMaWIgJHt0ZXN0X3dlYmNvcmVfTElCUkFSSUVTfSkKIHNl
dF90YXJnZXRfcHJvcGVydGllcyhUZXN0V2ViQ29yZUxpYiBQUk9QRVJUSUVTIE9VVFBVVF9OQU1F
ICJUZXN0V2ViQ29yZUxpYiIpCiBhZGRfZGVwZW5kZW5jaWVzKFRlc3RXZWJDb3JlTGliICR7Zm9y
d2FyZGluZ19oZWFkZXJzX2RlcGVuZGVuY2llc30pCiAKK2lmIChQQUxfTElCUkFSWV9UWVBFIE1B
VENIRVMgU1RBVElDKQorICAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKFRlc3RXZWJDb3Jl
TGliIFBSSVZBVEUgLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1BBTD0xKQorZW5kaWYgKCkKKwog
YWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RPT0xTX0RJUn0vd2luL0RMTExhdW5j
aGVyL0RMTExhdW5jaGVyTWFpbi5jcHAKICkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DcnlwdG9EaWdlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NyeXB0b0RpZ2VzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmU2Y2M1NzQyYTg1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NyeXB0b0RpZ2VzdC5jcHAKQEAgLTAsMCArMSwxMjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8UEFML2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIENTdHJpbmcgdG9IZXgoV1RGOjpWZWN0
b3I8dWludDhfdD4mJiBoYXNoKQoreworICAgIGNvbnN0IGNoYXIgaGV4W10gPSAiMDEyMzQ1Njc4
OUFCQ0RFRiI7CisKKyAgICBXVEY6OlZlY3RvcjxjaGFyPiBidWZmZXIoaGFzaC5zaXplKCkgKiAy
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhhc2guc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgdWludDhfdCBoaSA9IGhhc2hbaV0gPj4gNDsKKyAgICAgICAgdWludDhfdCBsbyA9IGhhc2hb
aV0gJiAweDBGOworICAgICAgICBidWZmZXJbMiAqIGldID0gaGV4W2hpXTsKKyAgICAgICAgYnVm
ZmVyWzIgKiBpICsgMV0gPSBoZXhbbG9dOworICAgIH0KKworICAgIHJldHVybiBDU3RyaW5nKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorCitzdGF0aWMgdm9pZCBleHBlY3QoUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IENTdHJpbmcmIGlucHV0
LCBpbnQgcmVwZWF0LCBjb25zdCBDU3RyaW5nJiBleHBlY3RlZCkKK3sKKyAgICBhdXRvIGNyeXB0
b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoYWxnb3JpdGhtKTsKKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0OyArK2kpCisgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRk
Qnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5ndGgoKSk7CisKKyAgICBDU3RyaW5nIGFjdHVh
bCA9IHRvSGV4KGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7CisKKyAgICBBU1NFUlRfRVEo
ZXhwZWN0ZWQubGVuZ3RoKCksIGFjdHVhbC5sZW5ndGgoKSk7CisgICAgQVNTRVJUX1NUUkVRKGV4
cGVjdGVkLmRhdGEoKSwgYWN0dWFsLmRhdGEoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGV4cGVjdFNI
QTEoY29uc3QgQ1N0cmluZyYgaW5wdXQsIGludCByZXBlYXQsIGNvbnN0IENTdHJpbmcmIGV4cGVj
dGVkKQoreworICAgIGV4cGVjdChQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSwg
aW5wdXQsIHJlcGVhdCwgZXhwZWN0ZWQpOworfQorCitzdGF0aWMgdm9pZCBleHBlY3RTSEEyMjQo
Y29uc3QgQ1N0cmluZyYgaW5wdXQsIGludCByZXBlYXQsIGNvbnN0IENTdHJpbmcmIGV4cGVjdGVk
KQoreworICAgIGV4cGVjdChQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0LCBp
bnB1dCwgcmVwZWF0LCBleHBlY3RlZCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4cGVjdFNIQTI1Nihj
b25zdCBDU3RyaW5nJiBpbnB1dCwgaW50IHJlcGVhdCwgY29uc3QgQ1N0cmluZyYgZXhwZWN0ZWQp
Cit7CisgICAgZXhwZWN0KFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYsIGlu
cHV0LCByZXBlYXQsIGV4cGVjdGVkKTsKK30KKworc3RhdGljIHZvaWQgZXhwZWN0U0hBMzg0KGNv
bnN0IENTdHJpbmcmIGlucHV0LCBpbnQgcmVwZWF0LCBjb25zdCBDU3RyaW5nJiBleHBlY3RlZCkK
K3sKKyAgICBleHBlY3QoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCwgaW5w
dXQsIHJlcGVhdCwgZXhwZWN0ZWQpOworfQorCitzdGF0aWMgdm9pZCBleHBlY3RTSEE1MTIoY29u
c3QgQ1N0cmluZyYgaW5wdXQsIGludCByZXBlYXQsIGNvbnN0IENTdHJpbmcmIGV4cGVjdGVkKQor
eworICAgIGV4cGVjdChQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyLCBpbnB1
dCwgcmVwZWF0LCBleHBlY3RlZCk7Cit9CisKK1RFU1QoQ3J5cHRvRGlnZXN0LCBTSEExQ29tcHV0
YXRpb24pCit7CisgICAgLy8gRXhhbXBsZXMgdGFrZW4gZnJvbSBzYW1wbGUgY29kZSBpbiBSRkMg
MzE3NC4KKyAgICBleHBlY3RTSEExKCJhYmMiLCAxLCAiQTk5OTNFMzY0NzA2ODE2QUJBM0UyNTcx
Nzg1MEMyNkM5Q0QwRDg5RCIpOworICAgIGV4cGVjdFNIQTEoImFiY2RiY2RlY2RlZmRlZmdlZmdo
ZmdoaWdoaWpoaWpraWprbGprbG1rbG1ubG1ub21ub3Bub3BxIiwgMSwgIjg0OTgzRTQ0MUMzQkQy
NkVCQUFFNEFBMUY5NTEyOUU1RTU0NjcwRjEiKTsKKyAgICBleHBlY3RTSEExKCJhIiwgMTAwMDAw
MCwgIjM0QUE5NzNDRDRDNERBQTRGNjFFRUIyQkRCQUQyNzMxNjUzNDAxNkYiKTsKKyAgICBleHBl
Y3RTSEExKCIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1Njcw
MTIzNDU2NzAxMjM0NTY3IiwgMTAsICJERUEzNTZBMkNEREQ5MEM3QTdFQ0VEQzVFQkI1NjM5MzRG
NDYwNDUyIik7Cit9CisKK1RFU1QoQ3J5cHRvRGlnZXN0LCBTSEEyMjRDb21wdXRhdGlvbikKK3sK
KyAgICAvLyBFeGFtcGxlcyB0YWtlbiBmcm9tIHNhbXBsZSBjb2RlIGluIFJGQyAzODc0LgorICAg
IGV4cGVjdFNIQTIyNCgiYWJjIiwgMSwgIjIzMDk3RDIyMzQwNUQ4MjI4NjQyQTQ3N0JEQTI1NUIz
MkFBREJDRTRCREEwQjNGN0UzNkM5REE3Iik7CisgICAgZXhwZWN0U0hBMjI0KCJhYmNkYmNkZWNk
ZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIsIDEsICI3NTM4
OEIxNjUxMjc3NkNDNURCQTVEQTFGRDg5MDE1MEIwQzY0NTVDQjRGNThCMTk1MjUyMjUyNSIpOwor
ICAgIGV4cGVjdFNIQTIyNCgiYSIsIDEwMDAwMDAsICIyMDc5NDY1NTk4MEM5MUQ4QkJCNEMxRUE5
NzYxOEE0QkYwM0Y0MjU4MTk0OEIyRUU0RUU3QUQ2NyIpOworfQorCitURVNUKENyeXB0b0RpZ2Vz
dCwgU0hBMjU2Q29tcHV0YXRpb24pCit7CisgICAgLy8gRXhhbXBsZXMgdGFrZW4gZnJvbSBzYW1w
bGUgY29kZSBpbiBGSVBTLTE4MC4KKyAgICBleHBlY3RTSEEyNTYoImFiYyIsIDEsICJCQTc4MTZC
RjhGMDFDRkVBNDE0MTQwREU1REFFMjIyM0IwMDM2MUEzOTYxNzdBOUNCNDEwRkY2MUYyMDAxNUFE
Iik7CisgICAgZXhwZWN0U0hBMjU2KCJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lq
a2xqa2xta2xtbmxtbm9tbm9wbm9wcSIsIDEsICIyNDhENkE2MUQyMDYzOEI4RTVDMDI2OTMwQzNF
NjAzOUEzM0NFNDU5NjRGRjIxNjdGNkVDRURENDE5REIwNkMxIik7CisgICAgZXhwZWN0U0hBMjU2
KCJhIiwgMTAwMDAwMCwgIkNEQzc2RTVDOTkxNEZCOTI4MUExQzdFMjg0RDczRTY3RjE4MDlBNDhB
NDk3MjAwRTA0NkQzOUNDQzcxMTJDRDAiKTsKK30KKworVEVTVChDcnlwdG9EaWdlc3QsIFNIQTM4
NENvbXB1dGF0aW9uKQoreworICAgIC8vIEV4YW1wbGVzIHRha2VuIGZyb20gc2FtcGxlIGNvZGUg
aW4gRklQUy0xODAuCisgICAgZXhwZWN0U0hBMzg0KCJhYmMiLCAxLCAiQ0IwMDc1M0Y0NUEzNUU4
QkI1QTAzRDY5OUFDNjUwMDcyNzJDMzJBQjBFREVEMTYzMUE4QjYwNUE0M0ZGNUJFRDgwODYwNzJC
QTFFN0NDMjM1OEJBRUNBMTM0QzgyNUE3Iik7CisgICAgZXhwZWN0U0hBMzg0KCJhYmNkZWZnaGJj
ZGVmZ2hpY2RlZmdoaWpkZWZnaGlqa2VmZ2hpamtsZmdoaWprbG1naGlqa2xtbmhpamtsbW5vaWpr
bG1ub3Bqa2xtbm9wcWtsbW5vcHFybG1ub3BxcnNtbm9wcXJzdG5vcHFyc3R1IiwgMSwgIjA5MzMw
QzMzRjcxMTQ3RTgzRDE5MkZDNzgyQ0QxQjQ3NTMxMTFCMTczQjNCMDVEMjJGQTA4MDg2RTNCMEY3
MTJGQ0M3QzcxQTU1N0UyREI5NjZDM0U5RkE5MTc0NjAzOSIpOworICAgIGV4cGVjdFNIQTM4NCgi
YSIsIDEwMDAwMDAsICI5RDBFMTgwOTcxNjQ3NENCMDg2RTgzNEUzMTBBNEExQ0VEMTQ5RTlDMDBG
MjQ4NTI3OTcyQ0VDNTcwNEMyQTVCMDdCOEIzREMzOEVDQzRFQkFFOTdEREQ4N0YzRDg5ODUiKTsK
K30KKworVEVTVChDcnlwdG9EaWdlc3QsIFNIQTUxMkNvbXB1dGF0aW9uKQoreworICAgIC8vIEV4
YW1wbGVzIHRha2VuIGZyb20gc2FtcGxlIGNvZGUgaW4gRklQUy0xODAuCisgICAgZXhwZWN0U0hB
NTEyKCJhYmMiLCAxLCAiRERBRjM1QTE5MzYxN0FCQUNDNDE3MzQ5QUUyMDQxMzExMkU2RkE0RTg5
QTk3RUEyMEE5RUVFRTY0QjU1RDM5QTIxOTI5OTJBMjc0RkMxQTgzNkJBM0MyM0EzRkVFQkJENDU0
RDQ0MjM2NDNDRTgwRTJBOUFDOTRGQTU0Q0E0OUYiKTsKKyAgICBleHBlY3RTSEE1MTIoImFiY2Rl
ZmdoYmNkZWZnaGljZGVmZ2hpamRlZmdoaWprZWZnaGlqa2xmZ2hpamtsbWdoaWprbG1uaGlqa2xt
bm9pamtsbW5vcGprbG1ub3Bxa2xtbm9wcXJsbW5vcHFyc21ub3BxcnN0bm9wcXJzdHUiLCAxLCAi
OEU5NTlCNzVEQUUzMTNEQThDRjRGNzI4MTRGQzE0M0Y4Rjc3NzlDNkVCOUY3RkExNzI5OUFFQURC
Njg4OTAxODUwMUQyODlFNDkwMEY3RTQzMzFCOTlERUM0QjU0MzNBQzdEMzI5RUVCNkREMjY1NDVF
OTZFNTVCODc0QkU5MDkiKTsKKyAgICBleHBlY3RTSEE1MTIoImEiLCAxMDAwMDAwLCAiRTcxODQ4
M0QwQ0U3Njk2NDRFMkU0MkM3QkMxNUI0NjM4RTFGOThCMTNCMjA0NDI4NTYzMkE4MDNBRkE5NzNF
QkRFMEZGMjQ0ODc3RUE2MEE0Q0IwNDMyQ0U1NzdDMzFCRUIwMDlDNUMyQzQ5QUEyRTRFQURCMjE3
QUQ4Q0MwOUIiKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348235</attachid>
            <date>2018-08-27 16:37:41 -0700</date>
            <delta_ts>2018-08-29 05:38:26 -0700</delta_ts>
            <desc>Patch take2</desc>
            <filename>bug188978-2.patch</filename>
            <type>text/plain</type>
            <size>17598</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGE5YzRiYmM1ZTczLi5mNDgwMWE5NDA5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDgtMjcgIFlvc2hpYWtpIEppdHN1a2F3
YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbV2luQ2Fpcm9dIEFk
ZCBDcnlwdG9EaWdpZXN0T3BlblNTTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg4OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgQ3J5cHRvRGlnZXN0IGltcGxlbWVudGF0aW9uIHdpdGggT3Bl
blNTTC9MaWJyZVNTTCBhbmQgbGV0IHRoZQorICAgICAgICBXaW5DYWlybyBwb3J0IHVzZSBpdC4K
KworICAgICAgICAqIHBhbC9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlOiBBZGQgQ3J5cHRvRGlnZXN0
V2luLmNwcCB0byBQQUxfU09VUkNFUworICAgICAgICAqIHBhbC9QbGF0Zm9ybVdpbi5jbWFrZTog
UmVtb3ZlIENyeXB0b0RpZ2VzdFdpbi5jcHAgZnJvbSBQQUxfU09VUkNFUworICAgICAgICAqIHBh
bC9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOiBBZGQgQ3J5cHRvRGlnZXN0T3BlblNTTCB0byBQQUxf
U09VUkNFUworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NM
LmNwcDogQWRkZWQuCisgICAgICAgIChQQUw6OnRvU0hBMUNvbnRleHQpOgorICAgICAgICAoUEFM
Ojp0b1NIQTIyNENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTI1NkNvbnRleHQpOgorICAg
ICAgICAoUEFMOjp0b1NIQTM4NENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTUxMkNvbnRl
eHQpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorCiAyMDE4LTA4LTI2
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBJ
bnRyb2R1Y2UgbmV3IHZhbHVlcyBmb3IgLWFwcGxlLXBheS1idXR0b24tdHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDM1MjE2NTJhY2M2
Li5hMWQyZGEyNGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQpAQCAtMjksNiArMjksOCBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogICAg
IGF2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCiAKICAgICBjZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKKworICAgIGNyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAogKQog
CiBsaXN0KEFQUEVORCBQQUxfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBjYmNiY2I5Mzk3OC4uODEwOGMyMDkx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw2ICsx
LDQgQEAKIGxpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCi0gICAgY3J5cHRvL3dpbi9DcnlwdG9EaWdl
c3RXaW4uY3BwCi0KICAgICBzeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAogCiAgICAgc3lzdGVtL3dp
bi9Tb3VuZFdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZv
cm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQppbmRleCBkODI2MjlhNjZkNC4uZTg4ZDA3NjEyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTEsMiArMSw2IEBACiBsaXN0
KEFQUEVORCBQQUxfUFVCTElDX0hFQURFUlMKICkKKworbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMK
KyAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAorKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVu
U1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGln
ZXN0T3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI4
MDkwMDM1NTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCisKKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFs
Z29yaXRobTsKKyAgICB2b2lkKiBzaGFDb250ZXh0OworfTsKKworaW5saW5lIFNIQV9DVFgqIHRv
U0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQo
Y29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNIQV9DVFgqPihjb250ZXh0LT5zaGFDb250ZXh0KTsKK30K
KworaW5saW5lIFNIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0
KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTSEEyNTZf
Q1RYKj4oY29udGV4dC0+c2hhQ29udGV4dCk7Cit9CisKK2lubGluZSBTSEEyNTZfQ1RYKiB0b1NI
QTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQo
Y29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U0hBMjU2X0NUWCo+KGNvbnRleHQtPnNoYUNvbnRleHQp
OworfQorCitpbmxpbmUgU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENv
bnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNI
QTUxMl9DVFgqPihjb250ZXh0LT5zaGFDb250ZXh0KTsKK30KKworaW5saW5lIFNIQTUxMl9DVFgq
IHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFT
U0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTSEE1MTJfQ1RYKj4oY29udGV4dC0+c2hhQ29u
dGV4dCk7Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4
dChzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHQ+KCkpCit7Cit9CisKK0NyeXB0
b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29y
aXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAg
ICBkZWxldGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVs
ZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRl
IHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRv
U0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hB
NTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
CitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250
ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIFNIQV9D
VFgqIGNvbnRleHQgPSBuZXcgU0hBX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPnNo
YUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBTSEExX0luaXQoY29udGV4dCk7CisgICAgICAg
IHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQ6IHsKKyAgICAgICAgU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBTSEEyNTZfQ1RY
OworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+c2hhQ29udGV4dCA9IGNvbnRleHQ7CisgICAg
ICAgIFNIQTIyNF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0K
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIFNI
QTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgU0hBMjU2X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2Nv
bnRleHQtPnNoYUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBTSEEyNTZfSW5pdChjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBTSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3
IFNIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5zaGFDb250ZXh0ID0gY29u
dGV4dDsKKyAgICAgICAgU0hBMzg0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdl
c3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsK
KyAgICAgICAgU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBTSEE1MTJfQ1RYOworICAgICAgICBk
aWdlc3QtPm1fY29udGV4dC0+c2hhQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIFNIQTUxMl9J
bml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5h
bGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAg
ICAgICAgU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwg
bGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQ6CisgICAgICAgIFNIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgU0hBMjU2X1VwZGF0ZSh0
b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAg
ICAgICBTSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1
dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTI6CisgICAgICAgIFNIQTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGht
KSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIHJl
c3VsdC5yZXNpemUoU0hBX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBTSEExX0ZpbmFsKHJlc3Vs
dC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIHJl
c3VsdC5yZXNpemUoU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBTSEEyMjRfRmluYWwo
cmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAg
ICAgICByZXN1bHQucmVzaXplKFNIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgU0hBMjU2
X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShTSEEzODRfRElHRVNUX0xFTkdUSCk7CisgICAgICAg
IFNIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNpemUoU0hBNTEyX0RJR0VTVF9MRU5HVEgpOwor
ICAgICAgICBTSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjNhODc1Y2M1ODAuLjJiZGZmYzk0ZGYwIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTgtMDgtMjcgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255
LmNvbT4KKworICAgICAgICBbV2luQ2Fpcm9dIEFkZCBDcnlwdG9EaWdpZXN0T3BlblNTTAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4OTc4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0
cyBmb3IgdGhlIFBBTDo6Q3J5cHRvRGlnZXN0IGNsYXNzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgQWRkIENyeXB0b0RpZ2VzdC5jcHAgdG8g
VGVzdFdlYkNvcmVMaWJfU291cmNlcy4KKworICAgICAgICBEZWZpbmUgLURTVEFUSUNBTExZX0xJ
TktFRF9XSVRIX1BBTD0xIHRvIGF2b2lkIHdhcm5pbmdzIHNpbmNlCisgICAgICAgIHdpdGhvdXQg
dGhlIGRlZmluaXRpb24gdGhlIGZ1bmN0aW9ucyBtYXJrZWQgd2l0aCBQQUxfRVhQT1JUIGFyZSBz
dXBwb3NlZCB0byBiZQorICAgICAgICBpbXBvcnRlZCBmcm9tIGFub3RoZXIgc2hhcmVkIGxpYnJh
cnksIGJ1dCBhcyBpdCBpcywgVGVzdFdlYkNvcmVMaWIKKyAgICAgICAgbGlua3MgUEFMIHN0YXRp
Y2FsbHkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3J5cHRvRGln
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0b0hleCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpleHBlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXhwZWN0
U0hBMSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpleHBlY3RTSEEyMjQpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZXhwZWN0U0hBMjU2KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmV4
cGVjdFNIQTM4NCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpleHBlY3RTSEE1MTIpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDgtMjYgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2luZyBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ug
d2l0aCBhIHByb3RvY29sIHRoYXQgaW5oZXJpdHMgZnJvbSBhIG5vbi1OU09iamVjdCBwcm90b2Nv
bCBjcmFzaGVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNt
YWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBmYzYzMDll
ZWQxYy4uZWM1OTFlZWFhMDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1XaW4uY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQpA
QCAtNzUsNiArNzUsNyBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAgICApCiAg
ICAgbGlzdChBUFBFTkQgVGVzdFdlYkNvcmVMaWJfU09VUkNFUwogICAgICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL3dpbi9CaXRtYXBJbWFnZS5jcHAKKyAgICAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9DcnlwdG9EaWdlc3QuY3BwCiAgICAgKQog
ZWxzZSAoKQogICAgIGxpc3QoQVBQRU5EIHRlc3Rfd2ViY29yZV9MSUJSQVJJRVMKQEAgLTEyNSw2
ICsxMjYsMTAgQEAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRlc3RXZWJDb3JlTGliICR7dGVzdF93
ZWJjb3JlX0xJQlJBUklFU30pCiBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoVGVzdFdlYkNvcmVMaWIg
UFJPUEVSVElFUyBPVVRQVVRfTkFNRSAiVGVzdFdlYkNvcmVMaWIiKQogYWRkX2RlcGVuZGVuY2ll
cyhUZXN0V2ViQ29yZUxpYiAke2ZvcndhcmRpbmdfaGVhZGVyc19kZXBlbmRlbmNpZXN9KQogCitp
ZiAoUEFMX0xJQlJBUllfVFlQRSBNQVRDSEVTIFNUQVRJQykKKyAgICB0YXJnZXRfY29tcGlsZV9k
ZWZpbml0aW9ucyhUZXN0V2ViQ29yZUxpYiBQUklWQVRFIC1EU1RBVElDQUxMWV9MSU5LRURfV0lU
SF9QQUw9MSkKK2VuZGlmICgpCisKIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtU
T09MU19ESVJ9L3dpbi9ETExMYXVuY2hlci9ETExMYXVuY2hlck1haW4uY3BwCiApCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DcnlwdG9EaWdlc3QuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNmNjNTc0MmE4NQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DcnlwdG9EaWdlc3Qu
Y3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBD
U3RyaW5nIHRvSGV4KFdURjo6VmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCkKK3sKKyAgICBjb25zdCBj
aGFyIGhleFtdID0gIjAxMjM0NTY3ODlBQkNERUYiOworCisgICAgV1RGOjpWZWN0b3I8Y2hhcj4g
YnVmZmVyKGhhc2guc2l6ZSgpICogMik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoYXNo
LnNpemUoKTsgaSsrKSB7CisgICAgICAgIHVpbnQ4X3QgaGkgPSBoYXNoW2ldID4+IDQ7CisgICAg
ICAgIHVpbnQ4X3QgbG8gPSBoYXNoW2ldICYgMHgwRjsKKyAgICAgICAgYnVmZmVyWzIgKiBpXSA9
IGhleFtoaV07CisgICAgICAgIGJ1ZmZlclsyICogaSArIDFdID0gaGV4W2xvXTsKKyAgICB9CisK
KyAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30KKwor
c3RhdGljIHZvaWQgZXhwZWN0KFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGht
LCBjb25zdCBDU3RyaW5nJiBpbnB1dCwgaW50IHJlcGVhdCwgY29uc3QgQ1N0cmluZyYgZXhwZWN0
ZWQpCit7CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRl
KGFsZ29yaXRobSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdDsgKytpKQorICAg
ICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQubGVuZ3RoKCkp
OworCisgICAgQ1N0cmluZyBhY3R1YWwgPSB0b0hleChjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNo
KCkpOworCisgICAgQVNTRVJUX0VRKGV4cGVjdGVkLmxlbmd0aCgpLCBhY3R1YWwubGVuZ3RoKCkp
OworICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZC5kYXRhKCksIGFjdHVhbC5kYXRhKCkpOworfQor
CitzdGF0aWMgdm9pZCBleHBlY3RTSEExKGNvbnN0IENTdHJpbmcmIGlucHV0LCBpbnQgcmVwZWF0
LCBjb25zdCBDU3RyaW5nJiBleHBlY3RlZCkKK3sKKyAgICBleHBlY3QoUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzEsIGlucHV0LCByZXBlYXQsIGV4cGVjdGVkKTsKK30KKworc3Rh
dGljIHZvaWQgZXhwZWN0U0hBMjI0KGNvbnN0IENTdHJpbmcmIGlucHV0LCBpbnQgcmVwZWF0LCBj
b25zdCBDU3RyaW5nJiBleHBlY3RlZCkKK3sKKyAgICBleHBlY3QoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNCwgaW5wdXQsIHJlcGVhdCwgZXhwZWN0ZWQpOworfQorCitzdGF0
aWMgdm9pZCBleHBlY3RTSEEyNTYoY29uc3QgQ1N0cmluZyYgaW5wdXQsIGludCByZXBlYXQsIGNv
bnN0IENTdHJpbmcmIGV4cGVjdGVkKQoreworICAgIGV4cGVjdChQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2LCBpbnB1dCwgcmVwZWF0LCBleHBlY3RlZCk7Cit9CisKK3N0YXRp
YyB2b2lkIGV4cGVjdFNIQTM4NChjb25zdCBDU3RyaW5nJiBpbnB1dCwgaW50IHJlcGVhdCwgY29u
c3QgQ1N0cmluZyYgZXhwZWN0ZWQpCit7CisgICAgZXhwZWN0KFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQsIGlucHV0LCByZXBlYXQsIGV4cGVjdGVkKTsKK30KKworc3RhdGlj
IHZvaWQgZXhwZWN0U0hBNTEyKGNvbnN0IENTdHJpbmcmIGlucHV0LCBpbnQgcmVwZWF0LCBjb25z
dCBDU3RyaW5nJiBleHBlY3RlZCkKK3sKKyAgICBleHBlY3QoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMiwgaW5wdXQsIHJlcGVhdCwgZXhwZWN0ZWQpOworfQorCitURVNUKENy
eXB0b0RpZ2VzdCwgU0hBMUNvbXB1dGF0aW9uKQoreworICAgIC8vIEV4YW1wbGVzIHRha2VuIGZy
b20gc2FtcGxlIGNvZGUgaW4gUkZDIDMxNzQuCisgICAgZXhwZWN0U0hBMSgiYWJjIiwgMSwgIkE5
OTkzRTM2NDcwNjgxNkFCQTNFMjU3MTc4NTBDMjZDOUNEMEQ4OUQiKTsKKyAgICBleHBlY3RTSEEx
KCJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9w
cSIsIDEsICI4NDk4M0U0NDFDM0JEMjZFQkFBRTRBQTFGOTUxMjlFNUU1NDY3MEYxIik7CisgICAg
ZXhwZWN0U0hBMSgiYSIsIDEwMDAwMDAsICIzNEFBOTczQ0Q0QzREQUE0RjYxRUVCMkJEQkFEMjcz
MTY1MzQwMTZGIik7CisgICAgZXhwZWN0U0hBMSgiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEy
MzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NyIsIDEwLCAiREVBMzU2QTJDRERE
OTBDN0E3RUNFREM1RUJCNTYzOTM0RjQ2MDQ1MiIpOworfQorCitURVNUKENyeXB0b0RpZ2VzdCwg
U0hBMjI0Q29tcHV0YXRpb24pCit7CisgICAgLy8gRXhhbXBsZXMgdGFrZW4gZnJvbSBzYW1wbGUg
Y29kZSBpbiBSRkMgMzg3NC4KKyAgICBleHBlY3RTSEEyMjQoImFiYyIsIDEsICIyMzA5N0QyMjM0
MDVEODIyODY0MkE0NzdCREEyNTVCMzJBQURCQ0U0QkRBMEIzRjdFMzZDOURBNyIpOworICAgIGV4
cGVjdFNIQTIyNCgiYWJjZGJjZGVjZGVmZGVmZ2VmZ2hmZ2hpZ2hpamhpamtpamtsamtsbWtsbW5s
bW5vbW5vcG5vcHEiLCAxLCAiNzUzODhCMTY1MTI3NzZDQzVEQkE1REExRkQ4OTAxNTBCMEM2NDU1
Q0I0RjU4QjE5NTI1MjI1MjUiKTsKKyAgICBleHBlY3RTSEEyMjQoImEiLCAxMDAwMDAwLCAiMjA3
OTQ2NTU5ODBDOTFEOEJCQjRDMUVBOTc2MThBNEJGMDNGNDI1ODE5NDhCMkVFNEVFN0FENjciKTsK
K30KKworVEVTVChDcnlwdG9EaWdlc3QsIFNIQTI1NkNvbXB1dGF0aW9uKQoreworICAgIC8vIEV4
YW1wbGVzIHRha2VuIGZyb20gc2FtcGxlIGNvZGUgaW4gRklQUy0xODAuCisgICAgZXhwZWN0U0hB
MjU2KCJhYmMiLCAxLCAiQkE3ODE2QkY4RjAxQ0ZFQTQxNDE0MERFNURBRTIyMjNCMDAzNjFBMzk2
MTc3QTlDQjQxMEZGNjFGMjAwMTVBRCIpOworICAgIGV4cGVjdFNIQTI1NigiYWJjZGJjZGVjZGVm
ZGVmZ2VmZ2hmZ2hpZ2hpamhpamtpamtsamtsbWtsbW5sbW5vbW5vcG5vcHEiLCAxLCAiMjQ4RDZB
NjFEMjA2MzhCOEU1QzAyNjkzMEMzRTYwMzlBMzNDRTQ1OTY0RkYyMTY3RjZFQ0VERDQxOURCMDZD
MSIpOworICAgIGV4cGVjdFNIQTI1NigiYSIsIDEwMDAwMDAsICJDREM3NkU1Qzk5MTRGQjkyODFB
MUM3RTI4NEQ3M0U2N0YxODA5QTQ4QTQ5NzIwMEUwNDZEMzlDQ0M3MTEyQ0QwIik7Cit9CisKK1RF
U1QoQ3J5cHRvRGlnZXN0LCBTSEEzODRDb21wdXRhdGlvbikKK3sKKyAgICAvLyBFeGFtcGxlcyB0
YWtlbiBmcm9tIHNhbXBsZSBjb2RlIGluIEZJUFMtMTgwLgorICAgIGV4cGVjdFNIQTM4NCgiYWJj
IiwgMSwgIkNCMDA3NTNGNDVBMzVFOEJCNUEwM0Q2OTlBQzY1MDA3MjcyQzMyQUIwRURFRDE2MzFB
OEI2MDVBNDNGRjVCRUQ4MDg2MDcyQkExRTdDQzIzNThCQUVDQTEzNEM4MjVBNyIpOworICAgIGV4
cGVjdFNIQTM4NCgiYWJjZGVmZ2hiY2RlZmdoaWNkZWZnaGlqZGVmZ2hpamtlZmdoaWprbGZnaGlq
a2xtZ2hpamtsbW5oaWprbG1ub2lqa2xtbm9wamtsbW5vcHFrbG1ub3Bxcmxtbm9wcXJzbW5vcHFy
c3Rub3BxcnN0dSIsIDEsICIwOTMzMEMzM0Y3MTE0N0U4M0QxOTJGQzc4MkNEMUI0NzUzMTExQjE3
M0IzQjA1RDIyRkEwODA4NkUzQjBGNzEyRkNDN0M3MUE1NTdFMkRCOTY2QzNFOUZBOTE3NDYwMzki
KTsKKyAgICBleHBlY3RTSEEzODQoImEiLCAxMDAwMDAwLCAiOUQwRTE4MDk3MTY0NzRDQjA4NkU4
MzRFMzEwQTRBMUNFRDE0OUU5QzAwRjI0ODUyNzk3MkNFQzU3MDRDMkE1QjA3QjhCM0RDMzhFQ0M0
RUJBRTk3REREODdGM0Q4OTg1Iik7Cit9CisKK1RFU1QoQ3J5cHRvRGlnZXN0LCBTSEE1MTJDb21w
dXRhdGlvbikKK3sKKyAgICAvLyBFeGFtcGxlcyB0YWtlbiBmcm9tIHNhbXBsZSBjb2RlIGluIEZJ
UFMtMTgwLgorICAgIGV4cGVjdFNIQTUxMigiYWJjIiwgMSwgIkREQUYzNUExOTM2MTdBQkFDQzQx
NzM0OUFFMjA0MTMxMTJFNkZBNEU4OUE5N0VBMjBBOUVFRUU2NEI1NUQzOUEyMTkyOTkyQTI3NEZD
MUE4MzZCQTNDMjNBM0ZFRUJCRDQ1NEQ0NDIzNjQzQ0U4MEUyQTlBQzk0RkE1NENBNDlGIik7Cisg
ICAgZXhwZWN0U0hBNTEyKCJhYmNkZWZnaGJjZGVmZ2hpY2RlZmdoaWpkZWZnaGlqa2VmZ2hpamts
ZmdoaWprbG1naGlqa2xtbmhpamtsbW5vaWprbG1ub3Bqa2xtbm9wcWtsbW5vcHFybG1ub3BxcnNt
bm9wcXJzdG5vcHFyc3R1IiwgMSwgIjhFOTU5Qjc1REFFMzEzREE4Q0Y0RjcyODE0RkMxNDNGOEY3
Nzc5QzZFQjlGN0ZBMTcyOTlBRUFEQjY4ODkwMTg1MDFEMjg5RTQ5MDBGN0U0MzMxQjk5REVDNEI1
NDMzQUM3RDMyOUVFQjZERDI2NTQ1RTk2RTU1Qjg3NEJFOTA5Iik7CisgICAgZXhwZWN0U0hBNTEy
KCJhIiwgMTAwMDAwMCwgIkU3MTg0ODNEMENFNzY5NjQ0RTJFNDJDN0JDMTVCNDYzOEUxRjk4QjEz
QjIwNDQyODU2MzJBODAzQUZBOTczRUJERTBGRjI0NDg3N0VBNjBBNENCMDQzMkNFNTc3QzMxQkVC
MDA5QzVDMkM0OUFBMkU0RUFEQjIxN0FEOENDMDlCIik7Cit9CisKK30K
</data>
<flag name="review"
          id="365913"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348399</attachid>
            <date>2018-08-29 05:38:26 -0700</date>
            <delta_ts>2018-09-01 22:33:59 -0700</delta_ts>
            <desc>Patch take3</desc>
            <filename>bug188978-3.patch</filename>
            <type>text/plain</type>
            <size>16174</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGE5YzRiYmM1ZTczLi4wMjliN2QzMzc5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDgtMjcgIFlvc2hpYWtpIEppdHN1a2F3
YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbV2luQ2Fpcm9dIEFk
ZCBDcnlwdG9EaWdlc3RPcGVuU1NMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODg5NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBDcnlwdG9EaWdlc3QgaW1wbGVtZW50YXRpb24gd2l0aCBPcGVu
U1NML0xpYnJlU1NMIGFuZCBsZXQgdGhlCisgICAgICAgIFdpbkNhaXJvIHBvcnQgdXNlIGl0Lgor
CisgICAgICAgICogcGFsL1BsYXRmb3JtQXBwbGVXaW4uY21ha2U6IEFkZCBDcnlwdG9EaWdlc3RX
aW4uY3BwIHRvIFBBTF9TT1VSQ0VTCisgICAgICAgICogcGFsL1BsYXRmb3JtV2luLmNtYWtlOiBS
ZW1vdmUgQ3J5cHRvRGlnZXN0V2luLmNwcCBmcm9tIFBBTF9TT1VSQ0VTCisgICAgICAgICogcGFs
L1BsYXRmb3JtV2luQ2Fpcm8uY21ha2U6IEFkZCBDcnlwdG9EaWdlc3RPcGVuU1NMIHRvIFBBTF9T
T1VSQ0VTCisgICAgICAgICogcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFBBTDo6dG9TSEExQ29udGV4dCk6CisgICAgICAgIChQQUw6
OnRvU0hBMjI0Q29udGV4dCk6CisgICAgICAgIChQQUw6OnRvU0hBMjU2Q29udGV4dCk6CisgICAg
ICAgIChQQUw6OnRvU0hBMzg0Q29udGV4dCk6CisgICAgICAgIChQQUw6OnRvU0hBNTEyQ29udGV4
dCk6CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAg
KFBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFBBTDo6Q3J5cHRv
RGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToK
KyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisKIDIwMTgtMDgtMjYg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIElu
dHJvZHVjZSBuZXcgdmFsdWVzIGZvciAtYXBwbGUtcGF5LWJ1dHRvbi10eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggMzUyMTY1MmFjYzYu
LmExZDJkYTI0ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC0yOSw2ICsyOSw4IEBAIGxpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCiAgICAg
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAKIAogICAgIGNmL0NvcmVNZWRp
YVNvZnRMaW5rLmNwcAorCisgICAgY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCiApCiAK
IGxpc3QoQVBQRU5EIFBBTF9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGNiY2JjYjkzOTc4Li44MTA4YzIwOTFj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xLDYgKzEs
NCBAQAogbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKLSAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAKLQogICAgIHN5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCiAKICAgICBzeXN0ZW0vd2lu
L1NvdW5kV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9y
bVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbkNhaXJv
LmNtYWtlCmluZGV4IGQ4MjYyOWE2NmQ0Li5lODhkMDc2MTJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMSwyICsxLDYgQEAKIGxpc3Qo
QVBQRU5EIFBBTF9QVUJMSUNfSEVBREVSUwogKQorCitsaXN0KEFQUEVORCBQQUxfU09VUkNFUwor
ICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCispCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5T
U0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdl
c3RPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDNl
Y2Y1NmMyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3Qu
aCIKKworI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+CisKK25hbWVzcGFjZSB7CitzdHJ1Y3QgU0hB
MUZ1bmN0aW9ucyB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluaXQgPSBTSEExX0luaXQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZSA9IFNIQTFfVXBkYXRlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBmaW5hbCA9IFNIQTFfRmluYWw7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgZGlnZXN0TGVuZ3RoID0gU0hBX0RJR0VTVF9MRU5HVEg7Cit9OworCitzdHJ1
Y3QgU0hBMjI0RnVuY3Rpb25zIHsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW5pdCA9IFNI
QTIyNF9Jbml0OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB1cGRhdGUgPSBTSEEyMjRfVXBk
YXRlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmaW5hbCA9IFNIQTIyNF9GaW5hbDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkaWdlc3RMZW5ndGggPSBTSEEyMjRfRElHRVNUX0xF
TkdUSDsKK307CisKK3N0cnVjdCBTSEEyNTZGdW5jdGlvbnMgeworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBpbml0ID0gU0hBMjU2X0luaXQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHVw
ZGF0ZSA9IFNIQTI1Nl9VcGRhdGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZpbmFsID0g
U0hBMjU2X0ZpbmFsOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRpZ2VzdExlbmd0aCA9
IFNIQTI1Nl9ESUdFU1RfTEVOR1RIOworfTsKKworc3RydWN0IFNIQTM4NEZ1bmN0aW9ucyB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluaXQgPSBTSEEzODRfSW5pdDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gdXBkYXRlID0gU0hBMzg0X1VwZGF0ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gZmluYWwgPSBTSEEzODRfRmluYWw7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGlnZXN0TGVuZ3RoID0gU0hBMzg0X0RJR0VTVF9MRU5HVEg7Cit9OworCitzdHJ1Y3QgU0hB
NTEyRnVuY3Rpb25zIHsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW5pdCA9IFNIQTUxMl9J
bml0OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB1cGRhdGUgPSBTSEE1MTJfVXBkYXRlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmaW5hbCA9IFNIQTUxMl9GaW5hbDsKKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBkaWdlc3RMZW5ndGggPSBTSEE1MTJfRElHRVNUX0xFTkdUSDsK
K307Cit9CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7
CisgICAgdmlydHVhbCB+Q3J5cHRvRGlnZXN0Q29udGV4dCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpID0gMDsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBTSEFDb250ZXh0LCB0eXBlbmFtZSBTSEFGdW5jdGlvbnM+CitzdHJ1
Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwgOiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw+KCk7CisgICAgfQorCisgICAgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQorICAg
IHsKKyAgICAgICAgU0hBRnVuY3Rpb25zOjppbml0KCZtX2NvbnRleHQpOworICAgIH0KKworICAg
IHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBTSEFGdW5jdGlvbnM6OnVwZGF0ZSgmbV9jb250ZXh0LCBpbnB1dCwg
bGVuZ3RoKTsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUhhc2goKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChTSEFGdW5jdGlvbnM6
OmRpZ2VzdExlbmd0aCk7CisgICAgICAgIFNIQUZ1bmN0aW9uczo6ZmluYWwocmVzdWx0LmRhdGEo
KSwgJm1fY29udGV4dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcml2YXRl
OgorICAgIFNIQUNvbnRleHQgbV9jb250ZXh0OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9E
aWdlc3QoKQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworCisgICAgc3dpdGNoIChhbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAg
ZGlnZXN0LT5tX2NvbnRleHQgPSBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDxTSEFfQ1RYLCBTSEEx
RnVuY3Rpb25zPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRl
eHQgPSBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDxTSEEyNTZfQ1RYLCBTSEEyMjRGdW5jdGlvbnM+
OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBkaWdlc3QtPm1fY29udGV4dCA9IENyeXB0
b0RpZ2VzdENvbnRleHRJbXBsPFNIQTI1Nl9DVFgsIFNIQTI1NkZ1bmN0aW9ucz46OmNyZWF0ZSgp
OworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ6CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0ID0gQ3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw8U0hBNTEyX0NUWCwgU0hBMzg0RnVuY3Rpb25zPjo6Y3JlYXRlKCk7CisgICAgICAg
IHJldHVybiBkaWdlc3Q7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjoKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQgPSBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDxT
SEE1MTJfQ1RYLCBTSEE1MTJGdW5jdGlvbnM+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdl
c3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIEFT
U0VSVChtX2NvbnRleHQpOworICAgIG1fY29udGV4dC0+YWRkQnl0ZXMoaW5wdXQsIGxlbmd0aCk7
Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAg
ICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5jb21wdXRlSGFzaCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2M2E4NzVjYzU4MC4uNGY4NzAwZWJjYzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxOC0wOC0yNyAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNv
bnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWRkIENyeXB0b0RpZ2VzdE9wZW5TU0wKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODk3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVz
dHMgZm9yIHRoZSBQQUw6OkNyeXB0b0RpZ2VzdCBjbGFzcy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgIEFkZCBDcnlwdG9EaWdlc3QuY3BwIHRv
IFRlc3RXZWJDb3JlTGliX1NvdXJjZXMuCisKKyAgICAgICAgRGVmaW5lIC1EU1RBVElDQUxMWV9M
SU5LRURfV0lUSF9QQUw9MSB0byBhdm9pZCB3YXJuaW5ncyBzaW5jZQorICAgICAgICB3aXRob3V0
IHRoZSBkZWZpbml0aW9uIHRoZSBmdW5jdGlvbnMgbWFya2VkIHdpdGggUEFMX0VYUE9SVCBhcmUg
c3VwcG9zZWQgdG8gYmUKKyAgICAgICAgaW1wb3J0ZWQgZnJvbSBhbm90aGVyIHNoYXJlZCBsaWJy
YXJ5LCBidXQgYXMgaXQgaXMsIFRlc3RXZWJDb3JlTGliCisgICAgICAgIGxpbmtzIFBBTCBzdGF0
aWNhbGx5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NyeXB0b0Rp
Z2VzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9IZXgpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZXhwZWN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmV4cGVj
dFNIQTEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXhwZWN0U0hBMjI0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmV4cGVjdFNIQTI1Nik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpl
eHBlY3RTSEEzODQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXhwZWN0U0hBNTEyKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA4LTI2ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNpbmcgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
IHdpdGggYSBwcm90b2NvbCB0aGF0IGluaGVyaXRzIGZyb20gYSBub24tTlNPYmplY3QgcHJvdG9j
b2wgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5j
bWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggZmM2MzA5
ZWVkMWMuLmVjNTkxZWVhYTA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2luLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UK
QEAgLTc1LDYgKzc1LDcgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgKQog
ICAgIGxpc3QoQVBQRU5EIFRlc3RXZWJDb3JlTGliX1NPVVJDRVMKICAgICAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS93aW4vQml0bWFwSW1hZ2UuY3BwCisgICAgICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0LmNwcAogICAgICkK
IGVsc2UgKCkKICAgICBsaXN0KEFQUEVORCB0ZXN0X3dlYmNvcmVfTElCUkFSSUVTCkBAIC0xMjUs
NiArMTI2LDEwIEBAIHRhcmdldF9saW5rX2xpYnJhcmllcyhUZXN0V2ViQ29yZUxpYiAke3Rlc3Rf
d2ViY29yZV9MSUJSQVJJRVN9KQogc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFRlc3RXZWJDb3JlTGli
IFBST1BFUlRJRVMgT1VUUFVUX05BTUUgIlRlc3RXZWJDb3JlTGliIikKIGFkZF9kZXBlbmRlbmNp
ZXMoVGVzdFdlYkNvcmVMaWIgJHtmb3J3YXJkaW5nX2hlYWRlcnNfZGVwZW5kZW5jaWVzfSkKIAor
aWYgKFBBTF9MSUJSQVJZX1RZUEUgTUFUQ0hFUyBTVEFUSUMpCisgICAgdGFyZ2V0X2NvbXBpbGVf
ZGVmaW5pdGlvbnMoVGVzdFdlYkNvcmVMaWIgUFJJVkFURSAtRFNUQVRJQ0FMTFlfTElOS0VEX1dJ
VEhfUEFMPTEpCitlbmRpZiAoKQorCiBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7
VE9PTFNfRElSfS93aW4vRExMTGF1bmNoZXIvRExMTGF1bmNoZXJNYWluLmNwcAogKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NyeXB0b0RpZ2VzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTZjYzU3NDJhODUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0
LmNwcApAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMg
Q1N0cmluZyB0b0hleChXVEY6OlZlY3Rvcjx1aW50OF90PiYmIGhhc2gpCit7CisgICAgY29uc3Qg
Y2hhciBoZXhbXSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKworICAgIFdURjo6VmVjdG9yPGNoYXI+
IGJ1ZmZlcihoYXNoLnNpemUoKSAqIDIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFz
aC5zaXplKCk7IGkrKykgeworICAgICAgICB1aW50OF90IGhpID0gaGFzaFtpXSA+PiA0OworICAg
ICAgICB1aW50OF90IGxvID0gaGFzaFtpXSAmIDB4MEY7CisgICAgICAgIGJ1ZmZlclsyICogaV0g
PSBoZXhbaGldOworICAgICAgICBidWZmZXJbMiAqIGkgKyAxXSA9IGhleFtsb107CisgICAgfQor
CisgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cit9CisK
K3N0YXRpYyB2b2lkIGV4cGVjdChQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRo
bSwgY29uc3QgQ1N0cmluZyYgaW5wdXQsIGludCByZXBlYXQsIGNvbnN0IENTdHJpbmcmIGV4cGVj
dGVkKQoreworICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZShhbGdvcml0aG0pOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXQ7ICsraSkKKyAg
ICAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0aCgp
KTsKKworICAgIENTdHJpbmcgYWN0dWFsID0gdG9IZXgoY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFz
aCgpKTsKKworICAgIEFTU0VSVF9FUShleHBlY3RlZC5sZW5ndGgoKSwgYWN0dWFsLmxlbmd0aCgp
KTsKKyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWQuZGF0YSgpLCBhY3R1YWwuZGF0YSgpKTsKK30K
Kworc3RhdGljIHZvaWQgZXhwZWN0U0hBMShjb25zdCBDU3RyaW5nJiBpbnB1dCwgaW50IHJlcGVh
dCwgY29uc3QgQ1N0cmluZyYgZXhwZWN0ZWQpCit7CisgICAgZXhwZWN0KFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8xLCBpbnB1dCwgcmVwZWF0LCBleHBlY3RlZCk7Cit9CisKK3N0
YXRpYyB2b2lkIGV4cGVjdFNIQTIyNChjb25zdCBDU3RyaW5nJiBpbnB1dCwgaW50IHJlcGVhdCwg
Y29uc3QgQ1N0cmluZyYgZXhwZWN0ZWQpCit7CisgICAgZXhwZWN0KFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQsIGlucHV0LCByZXBlYXQsIGV4cGVjdGVkKTsKK30KKworc3Rh
dGljIHZvaWQgZXhwZWN0U0hBMjU2KGNvbnN0IENTdHJpbmcmIGlucHV0LCBpbnQgcmVwZWF0LCBj
b25zdCBDU3RyaW5nJiBleHBlY3RlZCkKK3sKKyAgICBleHBlY3QoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NiwgaW5wdXQsIHJlcGVhdCwgZXhwZWN0ZWQpOworfQorCitzdGF0
aWMgdm9pZCBleHBlY3RTSEEzODQoY29uc3QgQ1N0cmluZyYgaW5wdXQsIGludCByZXBlYXQsIGNv
bnN0IENTdHJpbmcmIGV4cGVjdGVkKQoreworICAgIGV4cGVjdChQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0LCBpbnB1dCwgcmVwZWF0LCBleHBlY3RlZCk7Cit9CisKK3N0YXRp
YyB2b2lkIGV4cGVjdFNIQTUxMihjb25zdCBDU3RyaW5nJiBpbnB1dCwgaW50IHJlcGVhdCwgY29u
c3QgQ1N0cmluZyYgZXhwZWN0ZWQpCit7CisgICAgZXhwZWN0KFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTIsIGlucHV0LCByZXBlYXQsIGV4cGVjdGVkKTsKK30KKworVEVTVChD
cnlwdG9EaWdlc3QsIFNIQTFDb21wdXRhdGlvbikKK3sKKyAgICAvLyBFeGFtcGxlcyB0YWtlbiBm
cm9tIHNhbXBsZSBjb2RlIGluIFJGQyAzMTc0LgorICAgIGV4cGVjdFNIQTEoImFiYyIsIDEsICJB
OTk5M0UzNjQ3MDY4MTZBQkEzRTI1NzE3ODUwQzI2QzlDRDBEODlEIik7CisgICAgZXhwZWN0U0hB
MSgiYWJjZGJjZGVjZGVmZGVmZ2VmZ2hmZ2hpZ2hpamhpamtpamtsamtsbWtsbW5sbW5vbW5vcG5v
cHEiLCAxLCAiODQ5ODNFNDQxQzNCRDI2RUJBQUU0QUExRjk1MTI5RTVFNTQ2NzBGMSIpOworICAg
IGV4cGVjdFNIQTEoImEiLCAxMDAwMDAwLCAiMzRBQTk3M0NENEM0REFBNEY2MUVFQjJCREJBRDI3
MzE2NTM0MDE2RiIpOworICAgIGV4cGVjdFNIQTEoIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAx
MjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjciLCAxMCwgIkRFQTM1NkEyQ0RE
RDkwQzdBN0VDRURDNUVCQjU2MzkzNEY0NjA0NTIiKTsKK30KKworVEVTVChDcnlwdG9EaWdlc3Qs
IFNIQTIyNENvbXB1dGF0aW9uKQoreworICAgIC8vIEV4YW1wbGVzIHRha2VuIGZyb20gc2FtcGxl
IGNvZGUgaW4gUkZDIDM4NzQuCisgICAgZXhwZWN0U0hBMjI0KCJhYmMiLCAxLCAiMjMwOTdEMjIz
NDA1RDgyMjg2NDJBNDc3QkRBMjU1QjMyQUFEQkNFNEJEQTBCM0Y3RTM2QzlEQTciKTsKKyAgICBl
eHBlY3RTSEEyMjQoImFiY2RiY2RlY2RlZmRlZmdlZmdoZmdoaWdoaWpoaWpraWprbGprbG1rbG1u
bG1ub21ub3Bub3BxIiwgMSwgIjc1Mzg4QjE2NTEyNzc2Q0M1REJBNURBMUZEODkwMTUwQjBDNjQ1
NUNCNEY1OEIxOTUyNTIyNTI1Iik7CisgICAgZXhwZWN0U0hBMjI0KCJhIiwgMTAwMDAwMCwgIjIw
Nzk0NjU1OTgwQzkxRDhCQkI0QzFFQTk3NjE4QTRCRjAzRjQyNTgxOTQ4QjJFRTRFRTdBRDY3Iik7
Cit9CisKK1RFU1QoQ3J5cHRvRGlnZXN0LCBTSEEyNTZDb21wdXRhdGlvbikKK3sKKyAgICAvLyBF
eGFtcGxlcyB0YWtlbiBmcm9tIHNhbXBsZSBjb2RlIGluIEZJUFMtMTgwLgorICAgIGV4cGVjdFNI
QTI1NigiYWJjIiwgMSwgIkJBNzgxNkJGOEYwMUNGRUE0MTQxNDBERTVEQUUyMjIzQjAwMzYxQTM5
NjE3N0E5Q0I0MTBGRjYxRjIwMDE1QUQiKTsKKyAgICBleHBlY3RTSEEyNTYoImFiY2RiY2RlY2Rl
ZmRlZmdlZmdoZmdoaWdoaWpoaWpraWprbGprbG1rbG1ubG1ub21ub3Bub3BxIiwgMSwgIjI0OEQ2
QTYxRDIwNjM4QjhFNUMwMjY5MzBDM0U2MDM5QTMzQ0U0NTk2NEZGMjE2N0Y2RUNFREQ0MTlEQjA2
QzEiKTsKKyAgICBleHBlY3RTSEEyNTYoImEiLCAxMDAwMDAwLCAiQ0RDNzZFNUM5OTE0RkI5Mjgx
QTFDN0UyODRENzNFNjdGMTgwOUE0OEE0OTcyMDBFMDQ2RDM5Q0NDNzExMkNEMCIpOworfQorCitU
RVNUKENyeXB0b0RpZ2VzdCwgU0hBMzg0Q29tcHV0YXRpb24pCit7CisgICAgLy8gRXhhbXBsZXMg
dGFrZW4gZnJvbSBzYW1wbGUgY29kZSBpbiBGSVBTLTE4MC4KKyAgICBleHBlY3RTSEEzODQoImFi
YyIsIDEsICJDQjAwNzUzRjQ1QTM1RThCQjVBMDNENjk5QUM2NTAwNzI3MkMzMkFCMEVERUQxNjMx
QThCNjA1QTQzRkY1QkVEODA4NjA3MkJBMUU3Q0MyMzU4QkFFQ0ExMzRDODI1QTciKTsKKyAgICBl
eHBlY3RTSEEzODQoImFiY2RlZmdoYmNkZWZnaGljZGVmZ2hpamRlZmdoaWprZWZnaGlqa2xmZ2hp
amtsbWdoaWprbG1uaGlqa2xtbm9pamtsbW5vcGprbG1ub3Bxa2xtbm9wcXJsbW5vcHFyc21ub3Bx
cnN0bm9wcXJzdHUiLCAxLCAiMDkzMzBDMzNGNzExNDdFODNEMTkyRkM3ODJDRDFCNDc1MzExMUIx
NzNCM0IwNUQyMkZBMDgwODZFM0IwRjcxMkZDQzdDNzFBNTU3RTJEQjk2NkMzRTlGQTkxNzQ2MDM5
Iik7CisgICAgZXhwZWN0U0hBMzg0KCJhIiwgMTAwMDAwMCwgIjlEMEUxODA5NzE2NDc0Q0IwODZF
ODM0RTMxMEE0QTFDRUQxNDlFOUMwMEYyNDg1Mjc5NzJDRUM1NzA0QzJBNUIwN0I4QjNEQzM4RUND
NEVCQUU5N0RERDg3RjNEODk4NSIpOworfQorCitURVNUKENyeXB0b0RpZ2VzdCwgU0hBNTEyQ29t
cHV0YXRpb24pCit7CisgICAgLy8gRXhhbXBsZXMgdGFrZW4gZnJvbSBzYW1wbGUgY29kZSBpbiBG
SVBTLTE4MC4KKyAgICBleHBlY3RTSEE1MTIoImFiYyIsIDEsICJEREFGMzVBMTkzNjE3QUJBQ0M0
MTczNDlBRTIwNDEzMTEyRTZGQTRFODlBOTdFQTIwQTlFRUVFNjRCNTVEMzlBMjE5Mjk5MkEyNzRG
QzFBODM2QkEzQzIzQTNGRUVCQkQ0NTRENDQyMzY0M0NFODBFMkE5QUM5NEZBNTRDQTQ5RiIpOwor
ICAgIGV4cGVjdFNIQTUxMigiYWJjZGVmZ2hiY2RlZmdoaWNkZWZnaGlqZGVmZ2hpamtlZmdoaWpr
bGZnaGlqa2xtZ2hpamtsbW5oaWprbG1ub2lqa2xtbm9wamtsbW5vcHFrbG1ub3Bxcmxtbm9wcXJz
bW5vcHFyc3Rub3BxcnN0dSIsIDEsICI4RTk1OUI3NURBRTMxM0RBOENGNEY3MjgxNEZDMTQzRjhG
Nzc3OUM2RUI5RjdGQTE3Mjk5QUVBREI2ODg5MDE4NTAxRDI4OUU0OTAwRjdFNDMzMUI5OURFQzRC
NTQzM0FDN0QzMjlFRUI2REQyNjU0NUU5NkU1NUI4NzRCRTkwOSIpOworICAgIGV4cGVjdFNIQTUx
MigiYSIsIDEwMDAwMDAsICJFNzE4NDgzRDBDRTc2OTY0NEUyRTQyQzdCQzE1QjQ2MzhFMUY5OEIx
M0IyMDQ0Mjg1NjMyQTgwM0FGQTk3M0VCREUwRkYyNDQ4NzdFQTYwQTRDQjA0MzJDRTU3N0MzMUJF
QjAwOUM1QzJDNDlBQTJFNEVBREIyMTdBRDhDQzA5QiIpOworfQorCit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>