<?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>197898</bug_id>
          
          <creation_ts>2019-05-14 16:51:21 -0700</creation_ts>
          <short_desc>Only cache bytecode for API clients in data vaults</short_desc>
          <delta_ts>2019-05-22 15:00:09 -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>JavaScriptCore</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="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mitz</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1536303</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-14 16:51:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/45945449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536304</commentid>
    <comment_count>1</comment_count>
      <attachid>369910</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-14 16:54:54 -0700</bug_when>
    <thetext>Created attachment 369910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536309</commentid>
    <comment_count>2</comment_count>
      <attachid>369910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-14 17:23:41 -0700</bug_when>
    <thetext>Comment on attachment 369910
Patch

How does this not break all of our API tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536310</commentid>
    <comment_count>3</comment_count>
      <attachid>369910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-14 17:25:21 -0700</bug_when>
    <thetext>Comment on attachment 369910
Patch

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

&gt; Source/JavaScriptCore/API/JSScript.mm:87
&gt; +#if USE(APPLE_INTERNAL_SDK)

I don&apos;t like this. We should mock this API for non-apple internal builds. Those functions should still be linked against.

&gt; Source/JavaScriptCore/API/JSScript.mm:88
&gt; +    if (rootless_check_datavault_flag(FileSystem::fileSystemRepresentation(directory).data(), nullptr)) {

What does this do on iOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536311</commentid>
    <comment_count>4</comment_count>
      <attachid>369910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-14 17:27:25 -0700</bug_when>
    <thetext>Comment on attachment 369910
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSScript.mm:87
&gt;&gt; +#if USE(APPLE_INTERNAL_SDK)
&gt; 
&gt; I don&apos;t like this. We should mock this API for non-apple internal builds. Those functions should still be linked against.

Check out something like wtf/spi/darwin/SandboxSPI.h for how we do stuff like this. FWIW, the code that uses this inside Source/WebKit is also doing the thing we try not to do, so we could fix that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536312</commentid>
    <comment_count>5</comment_count>
      <attachid>369910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-14 17:31:05 -0700</bug_when>
    <thetext>Comment on attachment 369910
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSScript.mm:88
&gt;&gt; +    if (rootless_check_datavault_flag(FileSystem::fileSystemRepresentation(directory).data(), nullptr)) {
&gt; 
&gt; What does this do on iOS?

Does the second argument not matter here? Comment inside AuxiliaryProcessMac.mm seems to indicate it must match the data vault plist entry:
// These strings must match the last segment of the &quot;com.apple.rootless.storage.&lt;this part must match&gt;&quot; entry in each
// process&apos;s restricted entitlements file (ex. Configurations/Networking-OSX-restricted.entitlements).
constexpr const char* processStorageClass(AuxiliaryProcess::ProcessType type)
{
    switch (type) {
    case AuxiliaryProcess::ProcessType::WebContent:
        return &quot;WebKitWebContentSandbox&quot;;
    case AuxiliaryProcess::ProcessType::Network:
        return &quot;WebKitNetworkingSandbox&quot;;
    case AuxiliaryProcess::ProcessType::Plugin:
        return &quot;WebKitPluginSandbox&quot;;
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536398</commentid>
    <comment_count>6</comment_count>
      <attachid>369910</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-15 03:39:50 -0700</bug_when>
    <thetext>Comment on attachment 369910
Patch

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

Sorry, I didn&apos;t mean to r? just yet. I do need to fix the tests, just not quite sure how to go about it yet.

&gt;&gt;&gt; Source/JavaScriptCore/API/JSScript.mm:87
&gt;&gt;&gt; +#if USE(APPLE_INTERNAL_SDK)
&gt;&gt; 
&gt;&gt; I don&apos;t like this. We should mock this API for non-apple internal builds. Those functions should still be linked against.
&gt; 
&gt; Check out something like wtf/spi/darwin/SandboxSPI.h for how we do stuff like this. FWIW, the code that uses this inside Source/WebKit is also doing the thing we try not to do, so we could fix that as well.

Sounds good, I&apos;ll do that.

&gt;&gt;&gt; Source/JavaScriptCore/API/JSScript.mm:88
&gt;&gt;&gt; +    if (rootless_check_datavault_flag(FileSystem::fileSystemRepresentation(directory).data(), nullptr)) {
&gt;&gt; 
&gt;&gt; What does this do on iOS?
&gt; 
&gt; Does the second argument not matter here? Comment inside AuxiliaryProcessMac.mm seems to indicate it must match the data vault plist entry:
&gt; // These strings must match the last segment of the &quot;com.apple.rootless.storage.&lt;this part must match&gt;&quot; entry in each
&gt; // process&apos;s restricted entitlements file (ex. Configurations/Networking-OSX-restricted.entitlements).
&gt; constexpr const char* processStorageClass(AuxiliaryProcess::ProcessType type)
&gt; {
&gt;     switch (type) {
&gt;     case AuxiliaryProcess::ProcessType::WebContent:
&gt;         return &quot;WebKitWebContentSandbox&quot;;
&gt;     case AuxiliaryProcess::ProcessType::Network:
&gt;         return &quot;WebKitNetworkingSandbox&quot;;
&gt;     case AuxiliaryProcess::ProcessType::Plugin:
&gt;         return &quot;WebKitPluginSandbox&quot;;
&gt;     }
&gt; }

The second argument is optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536446</commentid>
    <comment_count>7</comment_count>
      <attachid>369958</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-15 09:11:24 -0700</bug_when>
    <thetext>Created attachment 369958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537279</commentid>
    <comment_count>8</comment_count>
      <attachid>370158</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-17 15:10:48 -0700</bug_when>
    <thetext>Created attachment 370158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537358</commentid>
    <comment_count>9</comment_count>
      <attachid>370158</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-05-17 19:26:17 -0700</bug_when>
    <thetext>Comment on attachment 370158
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        For security reasons, enforce that API clients only store cached bytecode in data vaults.

Please elaborate on what these security reasons are, and how data vaults help solve the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537472</commentid>
    <comment_count>10</comment_count>
      <attachid>370220</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-19 04:58:42 -0700</bug_when>
    <thetext>Created attachment 370220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537679</commentid>
    <comment_count>11</comment_count>
      <attachid>370220</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-20 13:20:34 -0700</bug_when>
    <thetext>Comment on attachment 370220
Patch

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

r=me unless this will break open source API tests.

&gt; Source/JavaScriptCore/API/JSScript.mm:107
&gt; +    if (!validateBytecodeCachePath(cachePath, error))
&gt; +        return nil;

Should we only do this check if the client is an internal client? Won&apos;t this cause API tests for builds that are not using the internal SDK to fail?

Maybe I&apos;m missing something though.

&gt; Source/JavaScriptCore/API/JSScript.mm:121
&gt; +    if (!validateBytecodeCachePath(cachePath, error))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537815</commentid>
    <comment_count>12</comment_count>
      <attachid>370300</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-20 23:13:23 -0700</bug_when>
    <thetext>Created attachment 370300
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537820</commentid>
    <comment_count>13</comment_count>
      <attachid>370300</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-20 23:52:23 -0700</bug_when>
    <thetext>Comment on attachment 370300
Patch for landing

Clearing flags on attachment: 370300

Committed r245564: &lt;https://trac.webkit.org/changeset/245564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537821</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-20 23:52:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537949</commentid>
    <comment_count>15</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-21 12:20:57 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537950</commentid>
    <comment_count>16</comment_count>
      <attachid>370333</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-21 12:21:00 -0700</bug_when>
    <thetext>Created attachment 370333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537954</commentid>
    <comment_count>17</comment_count>
      <attachid>370333</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-21 12:33:25 -0700</bug_when>
    <thetext>Comment on attachment 370333
Patch

Seems correct to me but I&apos;d get someone else to double check this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537971</commentid>
    <comment_count>18</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-21 13:30:23 -0700</bug_when>
    <thetext>Committed r245594: &lt;https://trac.webkit.org/changeset/245594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537972</commentid>
    <comment_count>19</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-21 13:32:20 -0700</bug_when>
    <thetext>Landed the fix for production builds in r245594: &lt;https://trac.webkit.org/changeset/245594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538339</commentid>
    <comment_count>20</comment_count>
      <attachid>370300</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 13:23:38 -0700</bug_when>
    <thetext>Comment on attachment 370300
Patch for landing

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

&gt; Source/JavaScriptCore/API/JSScript.mm:80
&gt; +            createError([NSString stringWithFormat:@&quot;Cache path `%s` already exists and is not a file&quot;, systemPath.utf8().data()], error);

Why not %@? Don&apos;t think this is guaranteed to be ascii


ditto below

&gt; Source/JavaScriptCore/testapi.entitlements:10
&gt; +&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&gt; +&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
&gt; +&lt;plist version=&quot;1.0&quot;&gt;
&gt; +&lt;dict&gt;
&gt; +	&lt;key&gt;com.apple.security.cs.allow-jit&lt;/key&gt;
&gt; +	&lt;true/&gt;
&gt; +	&lt;key&gt;com.apple.rootless.storage.JavaScriptCore&lt;/key&gt;
&gt; +	&lt;true/&gt;
&gt; +&lt;/dict&gt;
&gt; +&lt;/plist&gt;

What happens when someone in non internal SDK tries to build testapi with this entitlement? Does it just work or is it a compile error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538393</commentid>
    <comment_count>21</comment_count>
      <attachid>370300</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-22 15:00:09 -0700</bug_when>
    <thetext>Comment on attachment 370300
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/API/JSScript.mm:80
&gt;&gt; +            createError([NSString stringWithFormat:@&quot;Cache path `%s` already exists and is not a file&quot;, systemPath.utf8().data()], error);
&gt; 
&gt; Why not %@? Don&apos;t think this is guaranteed to be ascii
&gt; 
&gt; 
&gt; ditto below

I didn&apos;t know I could use %@ with non-ObjC objects.

&gt;&gt; Source/JavaScriptCore/testapi.entitlements:10
&gt;&gt; +&lt;/plist&gt;
&gt; 
&gt; What happens when someone in non internal SDK tries to build testapi with this entitlement? Does it just work or is it a compile error?

The entitlement was supposed to only be applied if HAVE_INTERNAL_SDK, otherwise testapi will crash on launch. I think I might have gotten it wrong though, I&apos;ll test it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369910</attachid>
            <date>2019-05-14 16:54:54 -0700</date>
            <delta_ts>2019-05-15 09:11:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197898-20190515015452.patch</filename>
            <type>text/plain</type>
            <size>3978</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NzMyNTI0ZDY5MWIzZWVkYmMwYjk3YTg4MWNkNjhiMDY5NTM1ZTczLi5hMTZkNTBmY2RhZjUxNmVh
MGU5NGU1MmQwYTM1ZTZjYTg0OWQzN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOS0wNS0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPbmx5IGNhY2hlIGJ5dGVjb2RlIGNsaWVudHMgZm9yIEFQSSBpbiBkYXRh
IHZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3ODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk0NTQ0OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywg
ZW5mb3JjZSB0aGF0IEFQSSBjbGllbnRzIG9ubHkgc3RvcmUgY2FjaGVkIGJ5dGVjb2RlIGluIGRh
dGEgdmF1bHRzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFsaWRh
dGVCeXRlY29kZUNhY2hlUGF0aCk6CisgICAgICAgICgrW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTp3
aXRoU291cmNlOmFuZFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVhbE1hY2hpbmU6
ZXJyb3I6XSk6CisgICAgICAgICgrW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTptZW1vcnlNYXBwZWRG
cm9tQVNDSUlGaWxlOndpdGhTb3VyY2VVUkw6YW5kQnl0ZWNvZGVDYWNoZTppblZpcnR1YWxNYWNo
aW5lOmVycm9yOl0pOgorCiAyMDE5LTA1LTE0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHJlc3RvcmF0aW9uIG9mIG5vbi11bmlm
aWVkIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Njcmlw
dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggYmRiZDY4
MjI4M2YzNmM2NTE0Y2YyNzM2ZmZkYWEwMTJjODUxMjBjZi4uZGExZWYzZDUxMGJkMTAwZTNmOWVj
NDg0N2E5NjdmZDYxODFmMDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1t
CkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUg
PHJvb3RsZXNzLmg+CisjZW5kaWYKKwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAKIEBpbXBs
ZW1lbnRhdGlvbiBKU1NjcmlwdCB7CkBAIC02MCw5ICs2NCw0MSBAQCBzdGF0aWMgSlNTY3JpcHQg
KmNyZWF0ZUVycm9yKE5TU3RyaW5nICptZXNzYWdlLCBOU0Vycm9yKiogZXJyb3IpCiAgICAgcmV0
dXJuIG5pbDsKIH0KIAorc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VS
TCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCit7CisgICAgVVJMIGNhY2hlUGF0aFVSTChb
Y2FjaGVQYXRoIGFic29sdXRlVVJMXSk7CisgICAgaWYgKCFjYWNoZVBhdGhVUkwuaXNMb2NhbEZp
bGUoKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IkNhY2hlIHBhdGggJUAgaXMgbm90IGEgbG9jYWwgZmlsZSIsIHN0YXRpY19jYXN0PE5TU3RyaW5n
ICo+KGNhY2hlUGF0aFVSTCldLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBTdHJpbmcgc3lzdGVtUGF0aCA9IGNhY2hlUGF0aFVSTC5maWxlU3lzdGVtUGF0aCgp
OworICAgIFN0cmluZyBkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHN5c3Rl
bVBhdGgpOworICAgIGlmIChkaXJlY3RvcnkuaXNOdWxsKCkpIHsKKyAgICAgICAgY3JlYXRlRXJy
b3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDYWNoZSBwYXRoICVAIGRvZXMgbm90IGNv
bnRhaW4gaW4gYSB2YWxpZCBkaXJlY3RvcnkiLCBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihjYWNo
ZVBhdGhVUkwpXSwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpIHsKKyAgICAgICAgY3JlYXRlRXJyb3IoW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDYWNoZSBkaXJlY3RvcnkgJXMgaXMgbm90IGEgZGly
ZWN0b3J5IG9yIGRvZXMgbm90IGV4aXN0IiwgZGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCldLCBlcnJv
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorICAgIGlmIChyb290bGVzc19jaGVja19kYXRhdmF1bHRfZmxhZyhGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KS5kYXRhKCksIG51bGxwdHIpKSB7
CisgICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUg
ZGlyZWN0b3J5ICVzIGlzIG5vdCBhIGRhdGEgdmF1bHQiLCBkaXJlY3RvcnkudXRmOCgpLmRhdGEo
KV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0
VHlwZSl0eXBlIHdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGFuZFNvdXJjZVVSTDooTlNV
UkwgKilzb3VyY2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTooTlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0
dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZtIGVycm9yOihvdXQgTlNFcnJvciAqKill
cnJvcgogewotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgaWYgKCF2YWxpZGF0ZUJ5dGVj
b2RlQ2FjaGVQYXRoKGNhY2hlUGF0aCwgZXJyb3IpKQorICAgICAgICByZXR1cm4gbmlsOworCiAg
ICAgSlNTY3JpcHQgKnJlc3VsdCA9IFtbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CiAgICAgcmVzdWx0LT5tX3ZpcnR1YWxNYWNoaW5lID0gdm07CiAgICAgcmVzdWx0LT5tX3R5
cGUgPSB0eXBlOwpAQCAtNzUsNyArMTExLDkgQEAgKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlw
ZTooSlNTY3JpcHRUeXBlKXR5cGUgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgYW4KIAog
KyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlwZTooSlNTY3JpcHRUeXBlKXR5cGUgbWVtb3J5TWFw
cGVkRnJvbUFTQ0lJRmlsZTooTlNVUkwgKilmaWxlUGF0aCB3aXRoU291cmNlVVJMOihOU1VSTCAq
KXNvdXJjZVVSTCBhbmRCeXRlY29kZUNhY2hlOihOU1VSTCAqKWNhY2hlUGF0aCBpblZpcnR1YWxN
YWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdm0gZXJyb3I6KG91dCBOU0Vycm9yICoqKWVycm9y
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBpZiAoIXZhbGlkYXRlQnl0ZWNvZGVD
YWNoZVBhdGgoY2FjaGVQYXRoLCBlcnJvcikpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBV
UkwgZmlsZVBhdGhVUkwoW2ZpbGVQYXRoIGFic29sdXRlVVJMXSk7CiAgICAgaWYgKCFmaWxlUGF0
aFVSTC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJGaWxlIHBhdGggJUAgaXMgbm90IGEgbG9jYWwgZmlsZSIsIHN0
YXRpY19jYXN0PE5TU3RyaW5nICo+KGZpbGVQYXRoVVJMKV0sIGVycm9yKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369958</attachid>
            <date>2019-05-15 09:11:24 -0700</date>
            <delta_ts>2019-05-17 15:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197898-20190515181122.patch</filename>
            <type>text/plain</type>
            <size>16687</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NzMyNTI0ZDY5MWIzZWVkYmMwYjk3YTg4MWNkNjhiMDY5NTM1ZTczLi5iMWNiYmI1YjEwNWRmNTM0
MmZiMTcxNDM2M2Y2NWQzNzhlMTAwZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wNS0xNSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPbmx5IGNhY2hlIGJ5dGVjb2RlIGZvciBBUEkgY2xpZW50cyBpbiBkYXRh
IHZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3ODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk0NTQ0OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywg
ZW5mb3JjZSB0aGF0IEFQSSBjbGllbnRzIG9ubHkgc3RvcmUgY2FjaGVkIGJ5dGVjb2RlIGluIGRh
dGEgdmF1bHRzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFsaWRh
dGVCeXRlY29kZUNhY2hlUGF0aCk6CisgICAgICAgICgrW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTp3
aXRoU291cmNlOmFuZFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVhbE1hY2hpbmU6
ZXJyb3I6XSk6CisgICAgICAgICgrW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTptZW1vcnlNYXBwZWRG
cm9tQVNDSUlGaWxlOndpdGhTb3VyY2VVUkw6YW5kQnl0ZWNvZGVDYWNoZTppblZpcnR1YWxNYWNo
aW5lOmVycm9yOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAo
dGVzdE1vZHVsZUJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAodGVzdFByb2dyYW1CeXRlY29kZUNh
Y2hlKToKKyAgICAgICAgKHRlc3RCeXRlY29kZUNhY2hlV2l0aFN5bnRheEVycm9yKToKKyAgICAg
ICAgKHRlc3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQp
OgorICAgICAgICAodGVzdENhY2hlRmlsZUZhaWxzV2hlbkl0c0FscmVhZHlDYWNoZWQpOgorICAg
ICAgICAodGVzdENhbkNhY2hlTWFueUZpbGVzV2l0aFRoZVNhbWVWTSk6CisgICAgICAgICh0ZXN0
SXNVc2luZ0J5dGVjb2RlQ2FjaGVBY2Nlc3Nvcik6CisgICAgICAgICh0ZXN0Qnl0ZWNvZGVDYWNo
ZVZhbGlkYXRpb24pOgorICAgICAgICAodGVzdE9iamVjdGl2ZUNBUEkpOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE5LTA1LTE0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHJlc3RvcmF0aW9uIG9mIG5vbi11
bmlmaWVkIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA2YmM2MGFhN2U0YmY3NGFhMjc1NDYxYzRhYzE4NWNhYTRkOTgy
NjAxLi4wZWJkOGNkYjE0MTQ0OTc4OWM4MmJiNmRjOTc0MTExNjE0OTVmMDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTA1LTE1ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgorCisgICAgICAgIE9ubHkgY2FjaGUgYnl0ZWNvZGUgZm9yIEFQSSBjbGllbnRzIGluIGRhdGEg
dmF1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTc4OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgU1BJIHRvIGNoZWNrIGlmIGEgZmlsZXN5c3RlbSBwYXRoIGlzIHJlc3RyaWN0ZWQgYXMgYSBk
YXRhIHZhdWx0LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmg6IEFkZGVkLgorCiAyMDE5LTA1
LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ1MjgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
Y3JpcHQubW0KaW5kZXggYmRiZDY4MjI4M2YzNmM2NTE0Y2YyNzM2ZmZkYWEwMTJjODUxMjBjZi4u
NmNmNDRiYjcwYmIxMjU1MmNhMGVhYzMxOWU1ZDIzN2RkMDJmMTI4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zOCw4ICszOCwxMCBAQAogI2ltcG9ydCAiUGFyc2Vy
RXJyb3IuaCIKICNpbXBvcnQgIlN5bWJvbC5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0
U1BJLmg+CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC02MCw5ICs2Miw1MCBAQCBz
dGF0aWMgSlNTY3JpcHQgKmNyZWF0ZUVycm9yKE5TU3RyaW5nICptZXNzYWdlLCBOU0Vycm9yKiog
ZXJyb3IpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29k
ZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCit7CisgICAgaWYg
KCFjYWNoZVBhdGgpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVVJMIGNhY2hlUGF0aFVS
TChbY2FjaGVQYXRoIGFic29sdXRlVVJMXSk7CisgICAgaWYgKCFjYWNoZVBhdGhVUkwuaXNMb2Nh
bEZpbGUoKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkNhY2hlIHBhdGggYCVAYCBpcyBub3QgYSBsb2NhbCBmaWxlIiwgc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4oY2FjaGVQYXRoVVJMKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIFN0cmluZyBzeXN0ZW1QYXRoID0gY2FjaGVQYXRoVVJMLmZpbGVTeXN0ZW1Q
YXRoKCk7CisKKyAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YShzeXN0ZW1QYXRoKSkgeworICAgICAgICBpZiAobWV0YWRhdGEtPnR5cGUgIT0gRmlsZU1ldGFk
YXRhOjpUeXBlOjpGaWxlKSB7CisgICAgICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkNhY2hlIHBhdGggYCVzYCBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90
IGEgZmlsZSIsIHN5c3RlbVBhdGgudXRmOCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cmluZyBkaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHN5c3RlbVBhdGgpOworICAgIGlmIChkaXJlY3Rv
cnkuaXNOdWxsKCkpIHsKKyAgICAgICAgY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJDYWNoZSBwYXRoIGAlc2AgZG9lcyBub3QgY29udGFpbiBpbiBhIHZhbGlkIGRpcmVj
dG9yeSIsIHN5c3RlbVBhdGgudXRmOCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGRp
cmVjdG9yeSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKSB7Cisg
ICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgZGly
ZWN0b3J5IGAlc2AgaXMgbm90IGEgZGlyZWN0b3J5IG9yIGRvZXMgbm90IGV4aXN0IiwgZGlyZWN0
b3J5LnV0ZjgoKS5kYXRhKCldLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoTElLRUxZKCFKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0
YVZhdWx0RW5mb3JjZW1lbnQoKSkgJiYgcm9vdGxlc3NfY2hlY2tfZGF0YXZhdWx0X2ZsYWcoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSkuZGF0YSgpLCBudWxs
cHRyKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IkNhY2hlIGRpcmVjdG9yeSBgJXNgIGlzIG5vdCBhIGRhdGEgdmF1bHQiLCBkaXJlY3RvcnkudXRm
OCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCiArIChpbnN0YW5jZXR5cGUpc2NyaXB0T2ZUeXBlOihKU1Njcmlw
dFR5cGUpdHlwZSB3aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBhbmRTb3VyY2VVUkw6KE5T
VVJMICopc291cmNlVVJMIGFuZEJ5dGVjb2RlQ2FjaGU6KE5TVVJMICopY2FjaGVQYXRoIGluVmly
dHVhbE1hY2hpbmU6KEpTVmlydHVhbE1hY2hpbmUgKil2bSBlcnJvcjoob3V0IE5TRXJyb3IgKiop
ZXJyb3IKIHsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworICAgIGlmICghdmFsaWRhdGVCeXRl
Y29kZUNhY2hlUGF0aChjYWNoZVBhdGgsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwog
ICAgIEpTU2NyaXB0ICpyZXN1bHQgPSBbW1tKU1NjcmlwdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwogICAgIHJlc3VsdC0+bV92aXJ0dWFsTWFjaGluZSA9IHZtOwogICAgIHJlc3VsdC0+bV90
eXBlID0gdHlwZTsKQEAgLTc1LDcgKzExOCw5IEBAICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5
cGU6KEpTU2NyaXB0VHlwZSl0eXBlIHdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGFuCiAK
ICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIG1lbW9yeU1h
cHBlZEZyb21BU0NJSUZpbGU6KE5TVVJMICopZmlsZVBhdGggd2l0aFNvdXJjZVVSTDooTlNVUkwg
Kilzb3VyY2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTooTlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0dWFs
TWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZtIGVycm9yOihvdXQgTlNFcnJvciAqKillcnJv
cgogewotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgaWYgKCF2YWxpZGF0ZUJ5dGVjb2Rl
Q2FjaGVQYXRoKGNhY2hlUGF0aCwgZXJyb3IpKQorICAgICAgICByZXR1cm4gbmlsOworCiAgICAg
VVJMIGZpbGVQYXRoVVJMKFtmaWxlUGF0aCBhYnNvbHV0ZVVSTF0pOwogICAgIGlmICghZmlsZVBh
dGhVUkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yKFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiRmlsZSBwYXRoICVAIGlzIG5vdCBhIGxvY2FsIGZpbGUiLCBz
dGF0aWNfY2FzdDxOU1N0cmluZyAqPihmaWxlUGF0aFVSTCldLCBlcnJvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggNTY0OTY3N2JkYjAxN2UyNTRj
MDk2NzZkNjNiNmExNzExMzMwYzBhMS4uMWE4NjgwOWIwNTI3Mjg1NzZkMTcyOTUzNTU1MjQxMWY2
MTgwMDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpA
QCAtMjA3OCw2ICsyMDc4LDcgQEAgc3RhdGljIE5TVVJMICp0ZW1wRmlsZShOU1N0cmluZyAqc3Ry
aW5nKQogCiBzdGF0aWMgdm9pZCB0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSgpCiB7CisgICAgSlND
OjpPcHRpb25zOjpkaXNhYmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSB0
cnVlOwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBOU1N0cmluZyAqZm9vU291cmNl
ID0gQCJpbXBvcnQgJ290aGVyRGlyZWN0b3J5L2Jhei5qcyc7IGV4cG9ydCBsZXQgbiA9IG51bGw7
IjsKICAgICAgICAgTlNTdHJpbmcgKmJhclNvdXJjZSA9IEAiaW1wb3J0IHsgbiB9IGZyb20gJy4u
L2Zvby5qcyc7IGV4cG9ydCBsZXQgZm9vID0gKCkgPT4gbjsiOwpAQCAtMjEzNiwxMCArMjEzNywx
MiBAQCBzdGF0aWMgdm9pZCB0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSgpCiAgICAgICAgIHJlbW92
ZWRBbGwgJj0gW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpiYXpDYWNoZVBhdGggZXJyb3I6
bmlsXTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJSZW1vdmVkIGFsbCB0ZW1wIGZpbGVzIGNyZWF0
ZWQiLCByZW1vdmVkQWxsKTsKICAgICB9CisgICAgSlNDOjpPcHRpb25zOjpkaXNhYmxlQnl0ZWNv
ZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQg
dGVzdFByb2dyYW1CeXRlY29kZUNhY2hlKCkKIHsKKyAgICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVC
eXRlY29kZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQoKSA9IHRydWU7CiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CiAgICAgICAgIE5TU3RyaW5nICpmb29Tb3VyY2UgPSBAImZ1bmN0aW9uIGZvbygp
IHsgcmV0dXJuIDQyOyB9OyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiA0MDsgfTsgZm9vKCkgKyBi
YXIoKTsiOwogICAgICAgICBOU1VSTCAqZm9vQ2FjaGVQYXRoID0gdGVtcEZpbGUoQCJmb28uanMu
Y2FjaGUiKTsKQEAgLTIxNjAsMTAgKzIxNjMsMTIgQEAgc3RhdGljIHZvaWQgdGVzdFByb2dyYW1C
eXRlY29kZUNhY2hlKCkKICAgICAgICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJl
bW92ZUl0ZW1BdFVSTDpmb29DYWNoZVBhdGggZXJyb3I6bmlsXTsKICAgICAgICAgY2hlY2tSZXN1
bHQoQCJSZW1vdmVkIGFsbCB0ZW1wIGZpbGVzIGNyZWF0ZWQiLCByZW1vdmVkQWxsKTsKICAgICB9
CisgICAgSlNDOjpPcHRpb25zOjpkaXNhYmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2Vt
ZW50KCkgPSBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEJ5dGVjb2RlQ2FjaGVXaXRoU3lu
dGF4RXJyb3IoSlNTY3JpcHRUeXBlIHR5cGUpCiB7CisgICAgSlNDOjpPcHRpb25zOjpkaXNhYmxl
Qnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSB0cnVlOwogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewogICAgICAgICBOU1N0cmluZyAqZm9vU291cmNlID0gQCJ0aGlzIGlzIGEgc3lu
dGF4IGVycm9yIjsKICAgICAgICAgTlNVUkwgKmZvb0NhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9v
LmpzLmNhY2hlIik7CkBAIC0yMTc2LDEwICsyMTgxLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RCeXRl
Y29kZUNhY2hlV2l0aFN5bnRheEVycm9yKEpTU2NyaXB0VHlwZSB0eXBlKQogICAgICAgICBSRUxF
QVNFX0FTU0VSVChlcnJvcik7CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiR290IGVycm9yIHdoZW4g
dHJ5aW5nIHRvIGNhY2hlIGJ5dGVjb2RlIGZvciBhIHNjcmlwdCB3aXRoIGEgc3ludGF4IGVycm9y
LiIsIFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiVW5hYmxlIHRvIGdlbmVy
YXRlIGJ5dGVjb2RlIGZvciB0aGlzIEpTU2NyaXB0IGJlY2F1c2Ugb2YgYSBwYXJzZXIgZXJyb3Ii
XSk7CiAgICAgfQorICAgIEpTQzo6T3B0aW9uczo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1
bHRFbmZvcmNlbWVudCgpID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RCeXRlY29kZUNh
Y2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoYm9vbCBmb3JjZURpc2tDYWNo
ZSkKIHsKKyAgICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0YVZhdWx0RW5m
b3JjZW1lbnQoKSA9IHRydWU7CisKICAgICBOU1VSTCAqY2FjaGVQYXRoID0gdGVtcEZpbGUoQCJj
YWNoZVBhdGguY2FjaGUiKTsKICAgICBOU1VSTCAqc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJteS1wYXRoIl07CiAKQEAgLTIyMjAsNiArMjIyOCw4IEBAIHN0YXRpYyB2b2lkIHRl
c3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoYm9vbCBm
b3JjZURpc2tDCiAgICAgTlNGaWxlTWFuYWdlciogZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl07CiAgICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJl
bW92ZUl0ZW1BdFVSTDpjYWNoZVBhdGggZXJyb3I6bmlsXTsKICAgICBjaGVja1Jlc3VsdChAIlJl
bW92ZWQgYWxsIHRlbXAgZmlsZXMgY3JlYXRlZCIsIHJlbW92ZWRBbGwpOworCisgICAgSlNDOjpP
cHRpb25zOjpkaXNhYmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSBmYWxz
ZTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFByb2dyYW1KU1NjcmlwdEV4Y2VwdGlvbigpCkBAIC0y
MjQ1LDYgKzIyNTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJvZ3JhbUpTU2NyaXB0RXhjZXB0aW9u
KCkKIAogc3RhdGljIHZvaWQgdGVzdENhY2hlRmlsZUZhaWxzV2hlbkl0c0FscmVhZHlDYWNoZWQo
KQogeworICAgIEpTQzo6T3B0aW9uczo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1bHRFbmZv
cmNlbWVudCgpID0gdHJ1ZTsKICAgICBOU1VSTCogY2FjaGVQYXRoID0gdGVtcEZpbGUoQCJmb28u
cHJvZ3JhbS5jYWNoZSIpOwogICAgIE5TVVJMKiBzb3VyY2VVUkwgPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAIm15LXBhdGgiXTsKICAgICBOU1N0cmluZyAqc291cmNlID0gQCJmdW5jdGlvbiBmb28o
KSB7IHJldHVybiA0MjsgfSBmb28oKTsiOwpAQCAtMjI3NywxMCArMjI4OCwxMiBAQCBzdGF0aWMg
dm9pZCB0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVuSXRzQWxyZWFkeUNhY2hlZCgpCiAgICAgTlNGaWxl
TWFuYWdlciogZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAg
ICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpjYWNoZVBh
dGggZXJyb3I6bmlsXTsKICAgICBjaGVja1Jlc3VsdChAIlN1Y2Nlc3NmdWxseSByZW1vdmVkIGNh
Y2hlIGZpbGUiLCByZW1vdmVkQWxsKTsKKyAgICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29k
ZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQoKSA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCB0
ZXN0Q2FuQ2FjaGVNYW55RmlsZXNXaXRoVGhlU2FtZVZNKCkKIHsKKyAgICBKU0M6Ok9wdGlvbnM6
OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQoKSA9IHRydWU7CiAgICAg
TlNNdXRhYmxlQXJyYXkgKmNhY2hlUGF0aHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XTsKICAgICBOU011dGFibGVBcnJheSAqc2NyaXB0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdOwogCkBAIC0yMzE5LDEwICsyMzMyLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RDYW5DYWNo
ZU1hbnlGaWxlc1dpdGhUaGVTYW1lVk0oKQogICAgICAgICByZW1vdmVkQWxsICY9IFtmaWxlTWFu
YWdlciByZW1vdmVJdGVtQXRVUkw6cGF0aCBlcnJvcjpuaWxdOwogCiAgICAgY2hlY2tSZXN1bHQo
QCJSZW1vdmVkIGFsbCBjYWNoZSBmaWxlcyIsIHJlbW92ZWRBbGwpOworICAgIEpTQzo6T3B0aW9u
czo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1bHRFbmZvcmNlbWVudCgpID0gZmFsc2U7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKCkKIHsKKyAg
ICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQo
KSA9IHRydWU7CiAgICAgTlNVUkwqIGNhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9vLnByb2dyYW0u
Y2FjaGUiKTsKICAgICBOU1VSTCogc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJt
eS1wYXRoIl07CiAgICAgTlNTdHJpbmcgKnNvdXJjZSA9IEAiZnVuY3Rpb24gZm9vKCkgeyByZXR1
cm4gMTMzNzsgfSBmb28oKTsiOwpAQCAtMjM1NCw2ICsyMzY5LDI5IEBAIHN0YXRpYyB2b2lkIHRl
c3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKCkKICAgICBOU0ZpbGVNYW5hZ2VyKiBmaWxl
TWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICBCT09MIHJlbW92
ZWRBbGwgPSBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmNhY2hlUGF0aCBlcnJvcjpuaWxd
OwogICAgIGNoZWNrUmVzdWx0KEAiU3VjY2Vzc2Z1bGx5IHJlbW92ZWQgY2FjaGUgZmlsZSIsIHJl
bW92ZWRBbGwpOworICAgIEpTQzo6T3B0aW9uczo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1
bHRFbmZvcmNlbWVudCgpID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RCeXRlY29kZUNh
Y2hlVmFsaWRhdGlvbigpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKworICAgICAgICBhdXRv
IHRlc3RVUkwgPSBbJl0oTlNVUkwqIGNhY2hlVVJMLCBOU1N0cmluZyogZXhwZWN0ZWRFcnJvck1l
c3NhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIE5TRXJyb3IqIGVycm9yOworICAgICAgICAg
ICAgSlNTY3JpcHQgKnNjcmlwdCA9IFtKU1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2NyaXB0VHlw
ZVByb2dyYW0gd2l0aFNvdXJjZTpAIiIgYW5kU291cmNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAibXktcGF0aCJdIGFuZEJ5dGVjb2RlQ2FjaGU6Y2FjaGVVUkwgaW5WaXJ0dWFsTWFjaGluZTpj
b250ZXh0LnZpcnR1YWxNYWNoaW5lIGVycm9yOiZlcnJvcl07CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghc2NyaXB0KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yKTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nKiB0ZXN0RGVzY2lwdGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQ2FjaGUgcGF0aCB2YWxpZGF0aW9uIGZvciBgJUBgIGZhaWxzIHdpdGggbWVzc2Fn
ZSBgJUBgIiwgY2FjaGVVUkwuYWJzb2x1dGVTdHJpbmcsIGV4cGVjdGVkRXJyb3JNZXNzYWdlXTsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KHRlc3REZXNjaXB0aW9uLCBbZXJyb3IuZGVzY3JpcHRp
b24gY29udGFpbnNTdHJpbmc6ZXhwZWN0ZWRFcnJvck1lc3NhZ2VdKTsKKyAgICAgICAgfTsKKwor
ICAgICAgICB0ZXN0VVJMKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl0sIEAiQ2FjaGUgcGF0aCBg
YCBpcyBub3QgYSBsb2NhbCBmaWxlIik7CisgICAgICAgIHRlc3RVUkwoW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJmaWxlOi8vLyJdLCBAIkNhY2hlIHBhdGggYC9gIGFscmVhZHkgZXhpc3RzIGFuZCBp
cyBub3QgYSBmaWxlIik7CisgICAgICAgIHRlc3RVUkwoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJm
aWxlOi8vL2EvYi9jL2QvZSJdLCBAIkNhY2hlIGRpcmVjdG9yeSBgL2EvYi9jL2RgIGlzIG5vdCBh
IGRpcmVjdG9yeSBvciBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICB0ZXN0VVJMKFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiZmlsZTovLy9wcml2YXRlL3RtcC9maWxlLmNhY2hlIl0sIEAiQ2FjaGUg
ZGlyZWN0b3J5IGAvcHJpdmF0ZS90bXBgIGlzIG5vdCBhIGRhdGEgdmF1bHQiKTsKKyAgICB9CiB9
CiAKIEBpbnRlcmZhY2UgSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIDogSlNDb250ZXh0IDxK
U01vZHVsZUxvYWRlckRlbGVnYXRlPgpAQCAtMjYyOCw2ICsyNjY2LDcgQEAgdm9pZCB0ZXN0T2Jq
ZWN0aXZlQ0FQSShjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDYWNoZUZpbGVGYWls
c1doZW5JdHNBbHJlYWR5Q2FjaGVkKCkpOwogICAgIFJVTih0ZXN0Q2FuQ2FjaGVNYW55RmlsZXNX
aXRoVGhlU2FtZVZNKCkpOwogICAgIFJVTih0ZXN0SXNVc2luZ0J5dGVjb2RlQ2FjaGVBY2Nlc3Nv
cigpKTsKKyAgICBSVU4odGVzdEJ5dGVjb2RlQ2FjaGVWYWxpZGF0aW9uKCkpOwogCiAgICAgUlVO
KHRlc3RMb2FkZXJSZWplY3RzTmlsU2NyaXB0VVJMKCkpOwogICAgIFJVTih0ZXN0TG9hZGVyUmVq
ZWN0c0ZhaWxlZEZldGNoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CmluZGV4IDZiYzE1MDAyMWEzYTUwMDNlOGJiMTRhNDgyY2UxOTMwNTYyZmM1ZDguLjhkZTAyNmY1
MTM2MzYyOTRlN2VmODMzMDBiZjk3YTM4OGYyZTk0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKQEAgLTUxOCw2ICs1MTgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoYm9vbCwgdmFsaWRhdGVB
YnN0cmFjdEludGVycHJldGVyU3RhdGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCiAg
ICAgdihkb3VibGUsIHZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlUHJvYmFiaWxpdHks
IDAuNSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGR1bXBKSVRNZW1v
cnlQYXRoLCBudWxscHRyLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCisgICAgdihib29sLCBkaXNh
YmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50LCBmYWxzZSwgUmVzdHJpY3RlZCwg
IkRpc2FibGVtZW50IGVuZm9yY2VtZW50IHRoYXQgdGhlIGJ5dGVjb2RlIGNhY2hlIG11c3QgYmUg
c3RvcmVkIGluIGEgZGF0YSB2YXVsdCBmb3IgdGVzdGluZyBwdXJwb3NlcyIpIFwKIAogCiBlbnVt
IE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDMwMjA0ZmNkODg4MmZhMTU1YzYxNzQ1YTNmMzNkODkyNjg5Yjc4N2IuLjg4MjQ1
MzVhMzYyMjU4MWE4ZDg3MTQ0YjZiMTA3MDBkNDcxMTcyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjg4LDYgKzI4OCw3IEBACiAJCTE0Njk0MTk0MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NoZWR1bGVQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
Njk0MTlBMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2RyYWluZWRQb29s
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5
RTQ2IC8qIERhdGFWYXVsdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YXRhVmF1bHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5RUYxNjIxNkJC
RkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyaVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTc4NUU3MURG
QjMzMDEwMDIwOUJEMSAvKiBPcmRpbmFsTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9yZGluYWxOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2Myw2ICsxMzY0LDcgQEAKIAkJQ0U3M0UwMjMxOURD
QjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5RTQ2IC8qIERhdGFWYXVsdFNQSS5o
ICovLAogCQkJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRjaFNQSS5oICovLAog
CQkJCTkzRERFOTMxMUNEQzA1MkQwMEZEMzQ5MSAvKiBkeWxkU1BJLmggKi8sCiAJCQkJQTUwOThB
RkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL0RhdGFWYXVsdFNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZDIyNTE3NTA1NGFlMGQ0OTQzNGJm
NmJiMTAyOWRjZWQzOGI5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL0RhdGFWYXVsdFNQSS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIE9TKERBUldJ
TikKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxyb290bGVzcy5oPgor
I2VuZGlmCisKK2ludCByb290bGVzc19jaGVja19kYXRhdmF1bHRfZmxhZyhjb25zdCBjaGFyICpw
YXRoLCBjb25zdCBjaGFyICpzdG9yYWdlX2NsYXNzKTsKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370158</attachid>
            <date>2019-05-17 15:10:48 -0700</date>
            <delta_ts>2019-05-19 04:58:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197898-20190518001046.patch</filename>
            <type>text/plain</type>
            <size>16743</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NzMyNTI0ZDY5MWIzZWVkYmMwYjk3YTg4MWNkNjhiMDY5NTM1ZTczLi5iMWNiYmI1YjEwNWRmNTM0
MmZiMTcxNDM2M2Y2NWQzNzhlMTAwZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wNS0xNSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPbmx5IGNhY2hlIGJ5dGVjb2RlIGZvciBBUEkgY2xpZW50cyBpbiBkYXRh
IHZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3ODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk0NTQ0OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywg
ZW5mb3JjZSB0aGF0IEFQSSBjbGllbnRzIG9ubHkgc3RvcmUgY2FjaGVkIGJ5dGVjb2RlIGluIGRh
dGEgdmF1bHRzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFsaWRh
dGVCeXRlY29kZUNhY2hlUGF0aCk6CisgICAgICAgICgrW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTp3
aXRoU291cmNlOmFuZFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVhbE1hY2hpbmU6
ZXJyb3I6XSk6CisgICAgICAgICgrW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTptZW1vcnlNYXBwZWRG
cm9tQVNDSUlGaWxlOndpdGhTb3VyY2VVUkw6YW5kQnl0ZWNvZGVDYWNoZTppblZpcnR1YWxNYWNo
aW5lOmVycm9yOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAo
dGVzdE1vZHVsZUJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAodGVzdFByb2dyYW1CeXRlY29kZUNh
Y2hlKToKKyAgICAgICAgKHRlc3RCeXRlY29kZUNhY2hlV2l0aFN5bnRheEVycm9yKToKKyAgICAg
ICAgKHRlc3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQp
OgorICAgICAgICAodGVzdENhY2hlRmlsZUZhaWxzV2hlbkl0c0FscmVhZHlDYWNoZWQpOgorICAg
ICAgICAodGVzdENhbkNhY2hlTWFueUZpbGVzV2l0aFRoZVNhbWVWTSk6CisgICAgICAgICh0ZXN0
SXNVc2luZ0J5dGVjb2RlQ2FjaGVBY2Nlc3Nvcik6CisgICAgICAgICh0ZXN0Qnl0ZWNvZGVDYWNo
ZVZhbGlkYXRpb24pOgorICAgICAgICAodGVzdE9iamVjdGl2ZUNBUEkpOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE5LTA1LTE0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHJlc3RvcmF0aW9uIG9mIG5vbi11
bmlmaWVkIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA2YmM2MGFhN2U0YmY3NGFhMjc1NDYxYzRhYzE4NWNhYTRkOTgy
NjAxLi4wZWJkOGNkYjE0MTQ0OTc4OWM4MmJiNmRjOTc0MTExNjE0OTVmMDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTA1LTE1ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgorCisgICAgICAgIE9ubHkgY2FjaGUgYnl0ZWNvZGUgZm9yIEFQSSBjbGllbnRzIGluIGRhdGEg
dmF1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTc4OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgU1BJIHRvIGNoZWNrIGlmIGEgZmlsZXN5c3RlbSBwYXRoIGlzIHJlc3RyaWN0ZWQgYXMgYSBk
YXRhIHZhdWx0LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmg6IEFkZGVkLgorCiAyMDE5LTA1
LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ1MjgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
Y3JpcHQubW0KaW5kZXggYmRiZDY4MjI4M2YzNmM2NTE0Y2YyNzM2ZmZkYWEwMTJjODUxMjBjZi4u
NmNmNDRiYjcwYmIxMjU1MmNhMGVhYzMxOWU1ZDIzN2RkMDJmMTI4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zOCw4ICszOCwxMCBAQAogI2ltcG9ydCAiUGFyc2Vy
RXJyb3IuaCIKICNpbXBvcnQgIlN5bWJvbC5oIgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0
U1BJLmg+CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC02MCw5ICs2Miw1MCBAQCBz
dGF0aWMgSlNTY3JpcHQgKmNyZWF0ZUVycm9yKE5TU3RyaW5nICptZXNzYWdlLCBOU0Vycm9yKiog
ZXJyb3IpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29k
ZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCit7CisgICAgaWYg
KCFjYWNoZVBhdGgpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVVJMIGNhY2hlUGF0aFVS
TChbY2FjaGVQYXRoIGFic29sdXRlVVJMXSk7CisgICAgaWYgKCFjYWNoZVBhdGhVUkwuaXNMb2Nh
bEZpbGUoKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkNhY2hlIHBhdGggYCVAYCBpcyBub3QgYSBsb2NhbCBmaWxlIiwgc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4oY2FjaGVQYXRoVVJMKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIFN0cmluZyBzeXN0ZW1QYXRoID0gY2FjaGVQYXRoVVJMLmZpbGVTeXN0ZW1Q
YXRoKCk7CisKKyAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YShzeXN0ZW1QYXRoKSkgeworICAgICAgICBpZiAobWV0YWRhdGEtPnR5cGUgIT0gRmlsZU1ldGFk
YXRhOjpUeXBlOjpGaWxlKSB7CisgICAgICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkNhY2hlIHBhdGggYCVzYCBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90
IGEgZmlsZSIsIHN5c3RlbVBhdGgudXRmOCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cmluZyBkaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHN5c3RlbVBhdGgpOworICAgIGlmIChkaXJlY3Rv
cnkuaXNOdWxsKCkpIHsKKyAgICAgICAgY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJDYWNoZSBwYXRoIGAlc2AgZG9lcyBub3QgY29udGFpbiBpbiBhIHZhbGlkIGRpcmVj
dG9yeSIsIHN5c3RlbVBhdGgudXRmOCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGRp
cmVjdG9yeSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKSB7Cisg
ICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgZGly
ZWN0b3J5IGAlc2AgaXMgbm90IGEgZGlyZWN0b3J5IG9yIGRvZXMgbm90IGV4aXN0IiwgZGlyZWN0
b3J5LnV0ZjgoKS5kYXRhKCldLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoTElLRUxZKCFKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0
YVZhdWx0RW5mb3JjZW1lbnQoKSkgJiYgcm9vdGxlc3NfY2hlY2tfZGF0YXZhdWx0X2ZsYWcoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSkuZGF0YSgpLCBudWxs
cHRyKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IkNhY2hlIGRpcmVjdG9yeSBgJXNgIGlzIG5vdCBhIGRhdGEgdmF1bHQiLCBkaXJlY3RvcnkudXRm
OCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCiArIChpbnN0YW5jZXR5cGUpc2NyaXB0T2ZUeXBlOihKU1Njcmlw
dFR5cGUpdHlwZSB3aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBhbmRTb3VyY2VVUkw6KE5T
VVJMICopc291cmNlVVJMIGFuZEJ5dGVjb2RlQ2FjaGU6KE5TVVJMICopY2FjaGVQYXRoIGluVmly
dHVhbE1hY2hpbmU6KEpTVmlydHVhbE1hY2hpbmUgKil2bSBlcnJvcjoob3V0IE5TRXJyb3IgKiop
ZXJyb3IKIHsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworICAgIGlmICghdmFsaWRhdGVCeXRl
Y29kZUNhY2hlUGF0aChjYWNoZVBhdGgsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwog
ICAgIEpTU2NyaXB0ICpyZXN1bHQgPSBbW1tKU1NjcmlwdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwogICAgIHJlc3VsdC0+bV92aXJ0dWFsTWFjaGluZSA9IHZtOwogICAgIHJlc3VsdC0+bV90
eXBlID0gdHlwZTsKQEAgLTc1LDcgKzExOCw5IEBAICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5
cGU6KEpTU2NyaXB0VHlwZSl0eXBlIHdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGFuCiAK
ICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIG1lbW9yeU1h
cHBlZEZyb21BU0NJSUZpbGU6KE5TVVJMICopZmlsZVBhdGggd2l0aFNvdXJjZVVSTDooTlNVUkwg
Kilzb3VyY2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTooTlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0dWFs
TWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZtIGVycm9yOihvdXQgTlNFcnJvciAqKillcnJv
cgogewotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgaWYgKCF2YWxpZGF0ZUJ5dGVjb2Rl
Q2FjaGVQYXRoKGNhY2hlUGF0aCwgZXJyb3IpKQorICAgICAgICByZXR1cm4gbmlsOworCiAgICAg
VVJMIGZpbGVQYXRoVVJMKFtmaWxlUGF0aCBhYnNvbHV0ZVVSTF0pOwogICAgIGlmICghZmlsZVBh
dGhVUkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yKFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiRmlsZSBwYXRoICVAIGlzIG5vdCBhIGxvY2FsIGZpbGUiLCBz
dGF0aWNfY2FzdDxOU1N0cmluZyAqPihmaWxlUGF0aFVSTCldLCBlcnJvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KaW5kZXggNTY0OTY3N2JkYjAxN2UyNTRj
MDk2NzZkNjNiNmExNzExMzMwYzBhMS4uMWE4NjgwOWIwNTI3Mjg1NzZkMTcyOTUzNTU1MjQxMWY2
MTgwMDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpA
QCAtMjA3OCw2ICsyMDc4LDcgQEAgc3RhdGljIE5TVVJMICp0ZW1wRmlsZShOU1N0cmluZyAqc3Ry
aW5nKQogCiBzdGF0aWMgdm9pZCB0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSgpCiB7CisgICAgSlND
OjpPcHRpb25zOjpkaXNhYmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSB0
cnVlOwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBOU1N0cmluZyAqZm9vU291cmNl
ID0gQCJpbXBvcnQgJ290aGVyRGlyZWN0b3J5L2Jhei5qcyc7IGV4cG9ydCBsZXQgbiA9IG51bGw7
IjsKICAgICAgICAgTlNTdHJpbmcgKmJhclNvdXJjZSA9IEAiaW1wb3J0IHsgbiB9IGZyb20gJy4u
L2Zvby5qcyc7IGV4cG9ydCBsZXQgZm9vID0gKCkgPT4gbjsiOwpAQCAtMjEzNiwxMCArMjEzNywx
MiBAQCBzdGF0aWMgdm9pZCB0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSgpCiAgICAgICAgIHJlbW92
ZWRBbGwgJj0gW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpiYXpDYWNoZVBhdGggZXJyb3I6
bmlsXTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJSZW1vdmVkIGFsbCB0ZW1wIGZpbGVzIGNyZWF0
ZWQiLCByZW1vdmVkQWxsKTsKICAgICB9CisgICAgSlNDOjpPcHRpb25zOjpkaXNhYmxlQnl0ZWNv
ZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQg
dGVzdFByb2dyYW1CeXRlY29kZUNhY2hlKCkKIHsKKyAgICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVC
eXRlY29kZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQoKSA9IHRydWU7CiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CiAgICAgICAgIE5TU3RyaW5nICpmb29Tb3VyY2UgPSBAImZ1bmN0aW9uIGZvbygp
IHsgcmV0dXJuIDQyOyB9OyBmdW5jdGlvbiBiYXIoKSB7IHJldHVybiA0MDsgfTsgZm9vKCkgKyBi
YXIoKTsiOwogICAgICAgICBOU1VSTCAqZm9vQ2FjaGVQYXRoID0gdGVtcEZpbGUoQCJmb28uanMu
Y2FjaGUiKTsKQEAgLTIxNjAsMTAgKzIxNjMsMTIgQEAgc3RhdGljIHZvaWQgdGVzdFByb2dyYW1C
eXRlY29kZUNhY2hlKCkKICAgICAgICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJl
bW92ZUl0ZW1BdFVSTDpmb29DYWNoZVBhdGggZXJyb3I6bmlsXTsKICAgICAgICAgY2hlY2tSZXN1
bHQoQCJSZW1vdmVkIGFsbCB0ZW1wIGZpbGVzIGNyZWF0ZWQiLCByZW1vdmVkQWxsKTsKICAgICB9
CisgICAgSlNDOjpPcHRpb25zOjpkaXNhYmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2Vt
ZW50KCkgPSBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEJ5dGVjb2RlQ2FjaGVXaXRoU3lu
dGF4RXJyb3IoSlNTY3JpcHRUeXBlIHR5cGUpCiB7CisgICAgSlNDOjpPcHRpb25zOjpkaXNhYmxl
Qnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSB0cnVlOwogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewogICAgICAgICBOU1N0cmluZyAqZm9vU291cmNlID0gQCJ0aGlzIGlzIGEgc3lu
dGF4IGVycm9yIjsKICAgICAgICAgTlNVUkwgKmZvb0NhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9v
LmpzLmNhY2hlIik7CkBAIC0yMTc2LDEwICsyMTgxLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RCeXRl
Y29kZUNhY2hlV2l0aFN5bnRheEVycm9yKEpTU2NyaXB0VHlwZSB0eXBlKQogICAgICAgICBSRUxF
QVNFX0FTU0VSVChlcnJvcik7CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiR290IGVycm9yIHdoZW4g
dHJ5aW5nIHRvIGNhY2hlIGJ5dGVjb2RlIGZvciBhIHNjcmlwdCB3aXRoIGEgc3ludGF4IGVycm9y
LiIsIFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiVW5hYmxlIHRvIGdlbmVy
YXRlIGJ5dGVjb2RlIGZvciB0aGlzIEpTU2NyaXB0IGJlY2F1c2Ugb2YgYSBwYXJzZXIgZXJyb3Ii
XSk7CiAgICAgfQorICAgIEpTQzo6T3B0aW9uczo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1
bHRFbmZvcmNlbWVudCgpID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RCeXRlY29kZUNh
Y2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoYm9vbCBmb3JjZURpc2tDYWNo
ZSkKIHsKKyAgICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0YVZhdWx0RW5m
b3JjZW1lbnQoKSA9IHRydWU7CisKICAgICBOU1VSTCAqY2FjaGVQYXRoID0gdGVtcEZpbGUoQCJj
YWNoZVBhdGguY2FjaGUiKTsKICAgICBOU1VSTCAqc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJteS1wYXRoIl07CiAKQEAgLTIyMjAsNiArMjIyOCw4IEBAIHN0YXRpYyB2b2lkIHRl
c3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoYm9vbCBm
b3JjZURpc2tDCiAgICAgTlNGaWxlTWFuYWdlciogZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl07CiAgICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJl
bW92ZUl0ZW1BdFVSTDpjYWNoZVBhdGggZXJyb3I6bmlsXTsKICAgICBjaGVja1Jlc3VsdChAIlJl
bW92ZWQgYWxsIHRlbXAgZmlsZXMgY3JlYXRlZCIsIHJlbW92ZWRBbGwpOworCisgICAgSlNDOjpP
cHRpb25zOjpkaXNhYmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50KCkgPSBmYWxz
ZTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFByb2dyYW1KU1NjcmlwdEV4Y2VwdGlvbigpCkBAIC0y
MjQ1LDYgKzIyNTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJvZ3JhbUpTU2NyaXB0RXhjZXB0aW9u
KCkKIAogc3RhdGljIHZvaWQgdGVzdENhY2hlRmlsZUZhaWxzV2hlbkl0c0FscmVhZHlDYWNoZWQo
KQogeworICAgIEpTQzo6T3B0aW9uczo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1bHRFbmZv
cmNlbWVudCgpID0gdHJ1ZTsKICAgICBOU1VSTCogY2FjaGVQYXRoID0gdGVtcEZpbGUoQCJmb28u
cHJvZ3JhbS5jYWNoZSIpOwogICAgIE5TVVJMKiBzb3VyY2VVUkwgPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAIm15LXBhdGgiXTsKICAgICBOU1N0cmluZyAqc291cmNlID0gQCJmdW5jdGlvbiBmb28o
KSB7IHJldHVybiA0MjsgfSBmb28oKTsiOwpAQCAtMjI3NywxMCArMjI4OCwxMiBAQCBzdGF0aWMg
dm9pZCB0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVuSXRzQWxyZWFkeUNhY2hlZCgpCiAgICAgTlNGaWxl
TWFuYWdlciogZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAg
ICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpjYWNoZVBh
dGggZXJyb3I6bmlsXTsKICAgICBjaGVja1Jlc3VsdChAIlN1Y2Nlc3NmdWxseSByZW1vdmVkIGNh
Y2hlIGZpbGUiLCByZW1vdmVkQWxsKTsKKyAgICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29k
ZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQoKSA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCB0
ZXN0Q2FuQ2FjaGVNYW55RmlsZXNXaXRoVGhlU2FtZVZNKCkKIHsKKyAgICBKU0M6Ok9wdGlvbnM6
OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQoKSA9IHRydWU7CiAgICAg
TlNNdXRhYmxlQXJyYXkgKmNhY2hlUGF0aHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XTsKICAgICBOU011dGFibGVBcnJheSAqc2NyaXB0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdOwogCkBAIC0yMzE5LDEwICsyMzMyLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RDYW5DYWNo
ZU1hbnlGaWxlc1dpdGhUaGVTYW1lVk0oKQogICAgICAgICByZW1vdmVkQWxsICY9IFtmaWxlTWFu
YWdlciByZW1vdmVJdGVtQXRVUkw6cGF0aCBlcnJvcjpuaWxdOwogCiAgICAgY2hlY2tSZXN1bHQo
QCJSZW1vdmVkIGFsbCBjYWNoZSBmaWxlcyIsIHJlbW92ZWRBbGwpOworICAgIEpTQzo6T3B0aW9u
czo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1bHRFbmZvcmNlbWVudCgpID0gZmFsc2U7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKCkKIHsKKyAg
ICBKU0M6Ok9wdGlvbnM6OmRpc2FibGVCeXRlY29kZUNhY2hlRGF0YVZhdWx0RW5mb3JjZW1lbnQo
KSA9IHRydWU7CiAgICAgTlNVUkwqIGNhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9vLnByb2dyYW0u
Y2FjaGUiKTsKICAgICBOU1VSTCogc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJt
eS1wYXRoIl07CiAgICAgTlNTdHJpbmcgKnNvdXJjZSA9IEAiZnVuY3Rpb24gZm9vKCkgeyByZXR1
cm4gMTMzNzsgfSBmb28oKTsiOwpAQCAtMjM1NCw2ICsyMzY5LDI5IEBAIHN0YXRpYyB2b2lkIHRl
c3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKCkKICAgICBOU0ZpbGVNYW5hZ2VyKiBmaWxl
TWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICBCT09MIHJlbW92
ZWRBbGwgPSBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmNhY2hlUGF0aCBlcnJvcjpuaWxd
OwogICAgIGNoZWNrUmVzdWx0KEAiU3VjY2Vzc2Z1bGx5IHJlbW92ZWQgY2FjaGUgZmlsZSIsIHJl
bW92ZWRBbGwpOworICAgIEpTQzo6T3B0aW9uczo6ZGlzYWJsZUJ5dGVjb2RlQ2FjaGVEYXRhVmF1
bHRFbmZvcmNlbWVudCgpID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RCeXRlY29kZUNh
Y2hlVmFsaWRhdGlvbigpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKworICAgICAgICBhdXRv
IHRlc3RVUkwgPSBbJl0oTlNVUkwqIGNhY2hlVVJMLCBOU1N0cmluZyogZXhwZWN0ZWRFcnJvck1l
c3NhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIE5TRXJyb3IqIGVycm9yOworICAgICAgICAg
ICAgSlNTY3JpcHQgKnNjcmlwdCA9IFtKU1NjcmlwdCBzY3JpcHRPZlR5cGU6a0pTU2NyaXB0VHlw
ZVByb2dyYW0gd2l0aFNvdXJjZTpAIiIgYW5kU291cmNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAibXktcGF0aCJdIGFuZEJ5dGVjb2RlQ2FjaGU6Y2FjaGVVUkwgaW5WaXJ0dWFsTWFjaGluZTpj
b250ZXh0LnZpcnR1YWxNYWNoaW5lIGVycm9yOiZlcnJvcl07CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghc2NyaXB0KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yKTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nKiB0ZXN0RGVzY2lwdGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQ2FjaGUgcGF0aCB2YWxpZGF0aW9uIGZvciBgJUBgIGZhaWxzIHdpdGggbWVzc2Fn
ZSBgJUBgIiwgY2FjaGVVUkwuYWJzb2x1dGVTdHJpbmcsIGV4cGVjdGVkRXJyb3JNZXNzYWdlXTsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KHRlc3REZXNjaXB0aW9uLCBbZXJyb3IuZGVzY3JpcHRp
b24gY29udGFpbnNTdHJpbmc6ZXhwZWN0ZWRFcnJvck1lc3NhZ2VdKTsKKyAgICAgICAgfTsKKwor
ICAgICAgICB0ZXN0VVJMKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl0sIEAiQ2FjaGUgcGF0aCBg
YCBpcyBub3QgYSBsb2NhbCBmaWxlIik7CisgICAgICAgIHRlc3RVUkwoW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJmaWxlOi8vLyJdLCBAIkNhY2hlIHBhdGggYC9gIGFscmVhZHkgZXhpc3RzIGFuZCBp
cyBub3QgYSBmaWxlIik7CisgICAgICAgIHRlc3RVUkwoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJm
aWxlOi8vL2EvYi9jL2QvZSJdLCBAIkNhY2hlIGRpcmVjdG9yeSBgL2EvYi9jL2RgIGlzIG5vdCBh
IGRpcmVjdG9yeSBvciBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICB0ZXN0VVJMKFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiZmlsZTovLy9wcml2YXRlL3RtcC9maWxlLmNhY2hlIl0sIEAiQ2FjaGUg
ZGlyZWN0b3J5IGAvcHJpdmF0ZS90bXBgIGlzIG5vdCBhIGRhdGEgdmF1bHQiKTsKKyAgICB9CiB9
CiAKIEBpbnRlcmZhY2UgSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIDogSlNDb250ZXh0IDxK
U01vZHVsZUxvYWRlckRlbGVnYXRlPgpAQCAtMjYyOCw2ICsyNjY2LDcgQEAgdm9pZCB0ZXN0T2Jq
ZWN0aXZlQ0FQSShjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDYWNoZUZpbGVGYWls
c1doZW5JdHNBbHJlYWR5Q2FjaGVkKCkpOwogICAgIFJVTih0ZXN0Q2FuQ2FjaGVNYW55RmlsZXNX
aXRoVGhlU2FtZVZNKCkpOwogICAgIFJVTih0ZXN0SXNVc2luZ0J5dGVjb2RlQ2FjaGVBY2Nlc3Nv
cigpKTsKKyAgICBSVU4odGVzdEJ5dGVjb2RlQ2FjaGVWYWxpZGF0aW9uKCkpOwogCiAgICAgUlVO
KHRlc3RMb2FkZXJSZWplY3RzTmlsU2NyaXB0VVJMKCkpOwogICAgIFJVTih0ZXN0TG9hZGVyUmVq
ZWN0c0ZhaWxlZEZldGNoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CmluZGV4IDZiYzE1MDAyMWEzYTUwMDNlOGJiMTRhNDgyY2UxOTMwNTYyZmM1ZDguLjhkZTAyNmY1
MTM2MzYyOTRlN2VmODMzMDBiZjk3YTM4OGYyZTk0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKQEAgLTUxOCw2ICs1MTgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoYm9vbCwgdmFsaWRhdGVB
YnN0cmFjdEludGVycHJldGVyU3RhdGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCiAg
ICAgdihkb3VibGUsIHZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlUHJvYmFiaWxpdHks
IDAuNSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGR1bXBKSVRNZW1v
cnlQYXRoLCBudWxscHRyLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCisgICAgdihib29sLCBkaXNh
YmxlQnl0ZWNvZGVDYWNoZURhdGFWYXVsdEVuZm9yY2VtZW50LCBmYWxzZSwgUmVzdHJpY3RlZCwg
IkRpc2FibGVtZW50IGVuZm9yY2VtZW50IHRoYXQgdGhlIGJ5dGVjb2RlIGNhY2hlIG11c3QgYmUg
c3RvcmVkIGluIGEgZGF0YSB2YXVsdCBmb3IgdGVzdGluZyBwdXJwb3NlcyIpIFwKIAogCiBlbnVt
IE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDMwMjA0ZmNkODg4MmZhMTU1YzYxNzQ1YTNmMzNkODkyNjg5Yjc4N2IuLjg4MjQ1
MzVhMzYyMjU4MWE4ZDg3MTQ0YjZiMTA3MDBkNDcxMTcyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjg4LDYgKzI4OCw3IEBACiAJCTE0Njk0MTk0MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NoZWR1bGVQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
Njk0MTlBMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2RyYWluZWRQb29s
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5
RTQ2IC8qIERhdGFWYXVsdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YXRhVmF1bHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5RUYxNjIxNkJC
RkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyaVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTc4NUU3MURG
QjMzMDEwMDIwOUJEMSAvKiBPcmRpbmFsTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9yZGluYWxOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2Myw2ICsxMzY0LDcgQEAKIAkJQ0U3M0UwMjMxOURD
QjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5RTQ2IC8qIERhdGFWYXVsdFNQSS5o
ICovLAogCQkJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRjaFNQSS5oICovLAog
CQkJCTkzRERFOTMxMUNEQzA1MkQwMEZEMzQ5MSAvKiBkeWxkU1BJLmggKi8sCiAJCQkJQTUwOThB
RkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL0RhdGFWYXVsdFNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NGJlZjkyNmM5MGMxMmY0ZjdkMTZj
ZDk0NjlmNjRmMjljYTk1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL0RhdGFWYXVsdFNQSS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIE9TKERBUldJ
TikKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxyb290bGVzcy5oPgor
I2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitpbnQgcm9vdGxlc3NfY2hlY2tfZGF0YXZh
dWx0X2ZsYWcoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3RvcmFnZV9jbGFzcyk7CisK
K1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIE9TKERBUldJTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370220</attachid>
            <date>2019-05-19 04:58:42 -0700</date>
            <delta_ts>2019-05-20 23:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197898-20190519135840.patch</filename>
            <type>text/plain</type>
            <size>22374</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NzMyNTI0ZDY5MWIzZWVkYmMwYjk3YTg4MWNkNjhiMDY5NTM1ZTczLi4wNWFhNTc3MGE3MmU4ZWM0
YjUwMTdkYTI2YTU5Zjk1NmVjZTg1YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxOS0wNS0xOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPbmx5IGNhY2hlIGJ5dGVjb2RlIGZvciBBUEkgY2xpZW50cyBpbiBkYXRh
IHZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3ODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk0NTQ0OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmZvcmNlIHRoYXQgQVBJIGNsaWVu
dHMgb25seSBzdG9yZSBjYWNoZWQgYnl0ZWNvZGUgaW4gZGF0YSB2YXVsdHMuIFRoaXMgcHJldmVu
dHMKKyAgICAgICAgYW5vdGhlciBwcm9jZXNzIGZyb20gY29tcHJvbWlzaW5nIHRoZSBjdXJyZW50
IG9uZSBieSB0YW1wZXJpbmcgd2l0aCB0aGUgYnl0ZWNvZGUuCisKKyAgICAgICAgKiBBUEkvSlNT
Y3JpcHQubW06CisgICAgICAgICh2YWxpZGF0ZUJ5dGVjb2RlQ2FjaGVQYXRoKToKKyAgICAgICAg
KCtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOndpdGhTb3VyY2U6YW5kU291cmNlVVJMOmFuZEJ5dGVj
b2RlQ2FjaGU6aW5WaXJ0dWFsTWFjaGluZTplcnJvcjpdKToKKyAgICAgICAgKCtbSlNTY3JpcHQg
c2NyaXB0T2ZUeXBlOm1lbW9yeU1hcHBlZEZyb21BU0NJSUZpbGU6d2l0aFNvdXJjZVVSTDphbmRC
eXRlY29kZUNhY2hlOmluVmlydHVhbE1hY2hpbmU6ZXJyb3I6XSk6CisgICAgICAgICogQVBJL3Rl
c3RzL3Rlc3RhcGkubW06CisgICAgICAgIChjYWNoZUZpbGVJbkRhdGFWYXVsdCk6CisgICAgICAg
ICh0ZXN0TW9kdWxlQnl0ZWNvZGVDYWNoZSk6CisgICAgICAgICh0ZXN0UHJvZ3JhbUJ5dGVjb2Rl
Q2FjaGUpOgorICAgICAgICAodGVzdEJ5dGVjb2RlQ2FjaGVXaXRoU3ludGF4RXJyb3IpOgorICAg
ICAgICAodGVzdEJ5dGVjb2RlQ2FjaGVXaXRoU2FtZUNhY2hlRmlsZUFuZERpZmZlcmVudFNjcmlw
dCk6CisgICAgICAgICh0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVuSXRzQWxyZWFkeUNhY2hlZCk6Cisg
ICAgICAgICh0ZXN0Q2FuQ2FjaGVNYW55RmlsZXNXaXRoVGhlU2FtZVZNKToKKyAgICAgICAgKHRl
c3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKToKKyAgICAgICAgKHRlc3RCeXRlY29kZUNh
Y2hlVmFsaWRhdGlvbik6CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSSk6CisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWc6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB0ZXN0YXBpLmVu
dGl0bGVtZW50czogQWRkZWQuCisKIDIwMTktMDUtMTQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtp
cnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcmVzdG9yYXRpb24gb2Ygbm9u
LXVuaWZpZWQgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZiYzYwYWE3ZTRiZjc0YWEyNzU0NjFjNGFjMTg1Y2FhNGQ5
ODI2MDEuLmYwNmY3YzhmNGFiNzAyN2ZjMDFkMGRiNjZiZGRmYWMzYjUzYWZkMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTktMDUtMTkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgT25seSBjYWNoZSBieXRlY29kZSBmb3IgQVBJIGNsaWVudHMgaW4gZGF0
YSB2YXVsdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5Nzg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBTUEkgdG8gY2hlY2sgaWYgYSBmaWxlc3lzdGVtIHBhdGggaXMgcmVzdHJpY3RlZCBhcyBh
IGRhdGEgdmF1bHQuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9EYXRhVmF1bHRTUEkuaDogQWRkZWQuCisKIDIwMTkt
MDUtMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDUyODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1NjcmlwdC5tbQppbmRleCBiZGJkNjgyMjgzZjM2YzY1MTRjZjI3MzZmZmRhYTAxMmM4NTEyMGNm
Li40NTViYWEyZDE4MGM0YjI2YTkxMjExNjNkMGZiNDZjMGQwZjFmYThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KQEAgLTM4LDggKzM4LDEwIEBACiAjaW1wb3J0ICJQYXJz
ZXJFcnJvci5oIgogI2ltcG9ydCAiU3ltYm9sLmgiCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9EYXRhVmF1
bHRTUEkuaD4KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAKQEAgLTYwLDkgKzYyLDUwIEBA
IHN0YXRpYyBKU1NjcmlwdCAqY3JlYXRlRXJyb3IoTlNTdHJpbmcgKm1lc3NhZ2UsIE5TRXJyb3Iq
KiBlcnJvcikKICAgICByZXR1cm4gbmlsOwogfQogCitzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ5dGVj
b2RlQ2FjaGVQYXRoKE5TVVJMKiBjYWNoZVBhdGgsIE5TRXJyb3IqKiBlcnJvcikKK3sKKyAgICBp
ZiAoIWNhY2hlUGF0aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBVUkwgY2FjaGVQYXRo
VVJMKFtjYWNoZVBhdGggYWJzb2x1dGVVUkxdKTsKKyAgICBpZiAoIWNhY2hlUGF0aFVSTC5pc0xv
Y2FsRmlsZSgpKSB7CisgICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiQ2FjaGUgcGF0aCBgJUBgIGlzIG5vdCBhIGxvY2FsIGZpbGUiLCBzdGF0aWNfY2FzdDxO
U1N0cmluZyAqPihjYWNoZVBhdGhVUkwpXSwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgU3RyaW5nIHN5c3RlbVBhdGggPSBjYWNoZVBhdGhVUkwuZmlsZVN5c3Rl
bVBhdGgoKTsKKworICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFk
YXRhKHN5c3RlbVBhdGgpKSB7CisgICAgICAgIGlmIChtZXRhZGF0YS0+dHlwZSAhPSBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGUpIHsKKyAgICAgICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgcGF0aCBgJXNgIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBu
b3QgYSBmaWxlIiwgc3lzdGVtUGF0aC51dGY4KCkuZGF0YSgpXSwgZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIGRpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc3lzdGVtUGF0aCk7CisgICAgaWYgKGRpcmVj
dG9yeS5pc051bGwoKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkNhY2hlIHBhdGggYCVzYCBkb2VzIG5vdCBjb250YWluIGluIGEgdmFsaWQgZGly
ZWN0b3J5Iiwgc3lzdGVtUGF0aC51dGY4KCkuZGF0YSgpXSwgZXJyb3IpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3Rvcnko
ZGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpIHsK
KyAgICAgICAgY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDYWNoZSBk
aXJlY3RvcnkgYCVzYCBpcyBub3QgYSBkaXJlY3Rvcnkgb3IgZG9lcyBub3QgZXhpc3QiLCBkaXJl
Y3RvcnkudXRmOCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmIChyb290bGVzc19jaGVja19kYXRhdmF1bHRfZmxhZyhGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KS5kYXRhKCksIG51bGxwdHIpKSB7Cisg
ICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgZGly
ZWN0b3J5IGAlc2AgaXMgbm90IGEgZGF0YSB2YXVsdCIsIGRpcmVjdG9yeS51dGY4KCkuZGF0YSgp
XSwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBl
IHdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGFuZFNvdXJjZVVSTDooTlNVUkwgKilzb3Vy
Y2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTooTlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGlu
ZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZtIGVycm9yOihvdXQgTlNFcnJvciAqKillcnJvcgogewot
ICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgaWYgKCF2YWxpZGF0ZUJ5dGVjb2RlQ2FjaGVQ
YXRoKGNhY2hlUGF0aCwgZXJyb3IpKQorICAgICAgICByZXR1cm4gbmlsOworCiAgICAgSlNTY3Jp
cHQgKnJlc3VsdCA9IFtbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAg
cmVzdWx0LT5tX3ZpcnR1YWxNYWNoaW5lID0gdm07CiAgICAgcmVzdWx0LT5tX3R5cGUgPSB0eXBl
OwpAQCAtNzUsNyArMTE4LDkgQEAgKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlwZTooSlNTY3Jp
cHRUeXBlKXR5cGUgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgYW4KIAogKyAoaW5zdGFu
Y2V0eXBlKXNjcmlwdE9mVHlwZTooSlNTY3JpcHRUeXBlKXR5cGUgbWVtb3J5TWFwcGVkRnJvbUFT
Q0lJRmlsZTooTlNVUkwgKilmaWxlUGF0aCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVS
TCBhbmRCeXRlY29kZUNhY2hlOihOU1VSTCAqKWNhY2hlUGF0aCBpblZpcnR1YWxNYWNoaW5lOihK
U1ZpcnR1YWxNYWNoaW5lICopdm0gZXJyb3I6KG91dCBOU0Vycm9yICoqKWVycm9yCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBpZiAoIXZhbGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgo
Y2FjaGVQYXRoLCBlcnJvcikpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBVUkwgZmlsZVBh
dGhVUkwoW2ZpbGVQYXRoIGFic29sdXRlVVJMXSk7CiAgICAgaWYgKCFmaWxlUGF0aFVSTC5pc0xv
Y2FsRmlsZSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJGaWxlIHBhdGggJUAgaXMgbm90IGEgbG9jYWwgZmlsZSIsIHN0YXRpY19jYXN0
PE5TU3RyaW5nICo+KGZpbGVQYXRoVVJMKV0sIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCA1NjQ5Njc3YmRiMDE3ZTI1NGMwOTY3NmQ2M2I2
YTE3MTEzMzBjMGExLi41MjUzYjAyZjcyMmE4NjJmN2MwMzE3MTdhMjUzNWVjM2MwZTZjMjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC00MCw2ICs0
MCw3IEBACiAjaW1wb3J0ICJKU1dyYXBwZXJNYXBUZXN0cy5oIgogI2ltcG9ydCAiUmVncmVzczE0
MTI3NS5oIgogI2ltcG9ydCAiUmVncmVzczE0MTgwOS5oIgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vRGF0YVZhdWx0U1BJLmg+CiAKICNpZiBfX2hhc19pbmNsdWRlKDxsaWJwcm9jLmg+KQogI2Rl
ZmluZSBIQVNfTElCUFJPQyAxCkBAIC0yMDc2LDYgKzIwNzcsMjcgQEAgc3RhdGljIE5TVVJMICp0
ZW1wRmlsZShOU1N0cmluZyAqc3RyaW5nKQogICAgIHJldHVybiBbdGVtcERpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3RyaW5nXTsKIH0KIAorc3RhdGljIE5TVVJMKiBjYWNo
ZUZpbGVJbkRhdGFWYXVsdChOU1N0cmluZyogbmFtZSkKK3sKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorICAgIHN0YXRpYyBOU1VSTCogZGF0YVZhdWx0VVJMOworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgICAgICBj
aGFyIHVzZXJEaXJbUEFUSF9NQVhdOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25mc3RyKF9D
U19EQVJXSU5fVVNFUl9ESVIsIHVzZXJEaXIsIHNpemVvZih1c2VyRGlyKSkpOworCisgICAgICAg
IE5TU3RyaW5nICp1c2VyRGlyUGF0aCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
c3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjp1c2VyRGlyIGxlbmd0aDpzdHJsZW4o
dXNlckRpcildOworICAgICAgICBkYXRhVmF1bHRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnVzZXJEaXJQYXRoIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIGRhdGFWYXVsdFVSTCA9IFtk
YXRhVmF1bHRVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSmF2YVNjcmlwdENvcmUi
IGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIHJvb3RsZXNzX21rZGlyX2RhdGF2YXVsdChkYXRh
VmF1bHRVUkwucGF0aC5VVEY4U3RyaW5nLCAwNzAwLCAiSmF2YVNjcmlwdENvcmUiKTsKKyAgICB9
KTsKKworICAgIHJldHVybiBbZGF0YVZhdWx0VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpuYW1lIGlzRGlyZWN0b3J5Ok5PXTsKKyNlbHNlCisgICAgcmV0dXJuIHRlbXBGaWxlKG5hbWUp
OworI2VuZGlmCit9CisKIHN0YXRpYyB2b2lkIHRlc3RNb2R1bGVCeXRlY29kZUNhY2hlKCkKIHsK
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTIwODcsOSArMjEwOSw5IEBAIHN0YXRpYyB2b2lk
IHRlc3RNb2R1bGVCeXRlY29kZUNhY2hlKCkKICAgICAgICAgTlNVUkwgKmJhclBhdGggPSB0ZW1w
RmlsZShAImJhci5qcyIpOwogICAgICAgICBOU1VSTCAqYmF6UGF0aCA9IHRlbXBGaWxlKEAiYmF6
LmpzIik7CiAKLSAgICAgICAgTlNVUkwgKmZvb0NhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9vLmpz
LmNhY2hlIik7Ci0gICAgICAgIE5TVVJMICpiYXJDYWNoZVBhdGggPSB0ZW1wRmlsZShAImJhci5q
cy5jYWNoZSIpOwotICAgICAgICBOU1VSTCAqYmF6Q2FjaGVQYXRoID0gdGVtcEZpbGUoQCJiYXou
anMuY2FjaGUiKTsKKyAgICAgICAgTlNVUkwgKmZvb0NhY2hlUGF0aCA9IGNhY2hlRmlsZUluRGF0
YVZhdWx0KEAiZm9vLmpzLmNhY2hlIik7CisgICAgICAgIE5TVVJMICpiYXJDYWNoZVBhdGggPSBj
YWNoZUZpbGVJbkRhdGFWYXVsdChAImJhci5qcy5jYWNoZSIpOworICAgICAgICBOU1VSTCAqYmF6
Q2FjaGVQYXRoID0gY2FjaGVGaWxlSW5EYXRhVmF1bHQoQCJiYXouanMuY2FjaGUiKTsKIAogICAg
ICAgICBOU1VSTCAqZm9vRmFrZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL2Zvby5q
cyJdOwogICAgICAgICBOU1VSTCAqYmFyRmFrZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OkAiL2RpcmVjdG9yeS9iYXIuanMiXTsKQEAgLTIxMTAsNyArMjEzMiw4IEBAIHN0YXRpYyB2b2lk
IHRlc3RNb2R1bGVCeXRlY29kZUNhY2hlKCkKICAgICAgICAgICAgICAgICBzY3JpcHQgPSBbSlNT
Y3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1NjcmlwdFR5cGVNb2R1bGUgbWVtb3J5TWFwcGVkRnJvbUFT
Q0lJRmlsZTpiYXpQYXRoIHdpdGhTb3VyY2VVUkw6YmF6RmFrZVBhdGggYW5kQnl0ZWNvZGVDYWNo
ZTpiYXpDYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTpjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGVy
cm9yOm5pbF07CiAKICAgICAgICAgICAgIGlmIChzY3JpcHQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIVtzY3JpcHQgY2FjaGVCeXRlY29kZVdpdGhFcnJvcjpuaWxdKQorICAgICAgICAgICAgICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICAgICAgICAgIGlmICghW3NjcmlwdCBjYWNo
ZUJ5dGVjb2RlV2l0aEVycm9yOiZlcnJvcl0pCiAgICAgICAgICAgICAgICAgICAgIENSQVNIKCk7
CiAgICAgICAgICAgICAgICAgW3Jlc29sdmUgY2FsbFdpdGhBcmd1bWVudHM6QFtzY3JpcHRdXTsK
ICAgICAgICAgICAgIH0gZWxzZQpAQCAtMjE0Miw3ICsyMTY1LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFByb2dyYW1CeXRlY29kZUNhY2hlKCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAg
ICAgTlNTdHJpbmcgKmZvb1NvdXJjZSA9IEAiZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gNDI7IH07
IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIDQwOyB9OyBmb28oKSArIGJhcigpOyI7Ci0gICAgICAg
IE5TVVJMICpmb29DYWNoZVBhdGggPSB0ZW1wRmlsZShAImZvby5qcy5jYWNoZSIpOworICAgICAg
ICBOU1VSTCAqZm9vQ2FjaGVQYXRoID0gY2FjaGVGaWxlSW5EYXRhVmF1bHQoQCJmb28uanMuY2Fj
aGUiKTsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGlu
aXRdOwogICAgICAgICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTpr
SlNTY3JpcHRUeXBlUHJvZ3JhbSB3aXRoU291cmNlOmZvb1NvdXJjZSBhbmRTb3VyY2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJteS1wYXRoIl0gYW5kQnl0ZWNvZGVDYWNoZTpmb29DYWNoZVBh
dGggaW5WaXJ0dWFsTWFjaGluZTpjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGVycm9yOm5pbF07CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjcmlwdCk7CkBAIC0yMTY2LDcgKzIxODksNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0Qnl0ZWNvZGVDYWNoZVdpdGhTeW50YXhFcnJvcihKU1NjcmlwdFR5cGUgdHlw
ZSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgTlNTdHJpbmcgKmZvb1NvdXJj
ZSA9IEAidGhpcyBpcyBhIHN5bnRheCBlcnJvciI7Ci0gICAgICAgIE5TVVJMICpmb29DYWNoZVBh
dGggPSB0ZW1wRmlsZShAImZvby5qcy5jYWNoZSIpOworICAgICAgICBOU1VSTCAqZm9vQ2FjaGVQ
YXRoID0gY2FjaGVGaWxlSW5EYXRhVmF1bHQoQCJmb28uanMuY2FjaGUiKTsKICAgICAgICAgSlND
b250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwogICAgICAgICBKU1Nj
cmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTp0eXBlIHdpdGhTb3VyY2U6Zm9v
U291cmNlIGFuZFNvdXJjZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIm15LXBhdGgiXSBhbmRC
eXRlY29kZUNhY2hlOmZvb0NhY2hlUGF0aCBpblZpcnR1YWxNYWNoaW5lOmNvbnRleHQudmlydHVh
bE1hY2hpbmUgZXJyb3I6bmlsXTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NyaXB0KTsKQEAg
LTIxODAsNyArMjIwMyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RCeXRlY29kZUNhY2hlV2l0aFN5bnRh
eEVycm9yKEpTU2NyaXB0VHlwZSB0eXBlKQogCiBzdGF0aWMgdm9pZCB0ZXN0Qnl0ZWNvZGVDYWNo
ZVdpdGhTYW1lQ2FjaGVGaWxlQW5kRGlmZmVyZW50U2NyaXB0KGJvb2wgZm9yY2VEaXNrQ2FjaGUp
CiB7Ci0gICAgTlNVUkwgKmNhY2hlUGF0aCA9IHRlbXBGaWxlKEAiY2FjaGVQYXRoLmNhY2hlIik7
CisKKyAgICBOU1VSTCAqY2FjaGVQYXRoID0gY2FjaGVGaWxlSW5EYXRhVmF1bHQoQCJjYWNoZVBh
dGguY2FjaGUiKTsKICAgICBOU1VSTCAqc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJteS1wYXRoIl07CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTIyMjAsNiArMjI0NCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZm
ZXJlbnRTY3JpcHQoYm9vbCBmb3JjZURpc2tDCiAgICAgTlNGaWxlTWFuYWdlciogZmlsZU1hbmFn
ZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgQk9PTCByZW1vdmVkQWxs
ID0gW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpjYWNoZVBhdGggZXJyb3I6bmlsXTsKICAg
ICBjaGVja1Jlc3VsdChAIlJlbW92ZWQgYWxsIHRlbXAgZmlsZXMgY3JlYXRlZCIsIHJlbW92ZWRB
bGwpOworCiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RQcm9ncmFtSlNTY3JpcHRFeGNlcHRpb24oKQpA
QCAtMjI0NSw3ICsyMjcwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFByb2dyYW1KU1NjcmlwdEV4Y2Vw
dGlvbigpCiAKIHN0YXRpYyB2b2lkIHRlc3RDYWNoZUZpbGVGYWlsc1doZW5JdHNBbHJlYWR5Q2Fj
aGVkKCkKIHsKLSAgICBOU1VSTCogY2FjaGVQYXRoID0gdGVtcEZpbGUoQCJmb28ucHJvZ3JhbS5j
YWNoZSIpOworICAgIE5TVVJMKiBjYWNoZVBhdGggPSBjYWNoZUZpbGVJbkRhdGFWYXVsdChAImZv
by5wcm9ncmFtLmNhY2hlIik7CiAgICAgTlNVUkwqIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAibXktcGF0aCJdOwogICAgIE5TU3RyaW5nICpzb3VyY2UgPSBAImZ1bmN0aW9uIGZv
bygpIHsgcmV0dXJuIDQyOyB9IGZvbygpOyI7CiAKQEAgLTIyODUsNyArMjMxMCw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RDYW5DYWNoZU1hbnlGaWxlc1dpdGhUaGVTYW1lVk0oKQogICAgIE5TTXV0YWJs
ZUFycmF5ICpzY3JpcHRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKLSAgICAgICAgW2NhY2hlUGF0aHMg
YWRkT2JqZWN0OnRlbXBGaWxlKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiY2FjaGUtJWQu
Y2FjaGUiLCBpXSldOworICAgICAgICBbY2FjaGVQYXRocyBhZGRPYmplY3Q6Y2FjaGVGaWxlSW5E
YXRhVmF1bHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjYWNoZS0lZC5jYWNoZSIsIGld
KV07CiAKICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxv
Y10gaW5pdF07CiAgICAgYm9vbCBjYWNoZWRBbGwgPSB0cnVlOwpAQCAtMjMyMyw3ICsyMzQ4LDcg
QEAgc3RhdGljIHZvaWQgdGVzdENhbkNhY2hlTWFueUZpbGVzV2l0aFRoZVNhbWVWTSgpCiAKIHN0
YXRpYyB2b2lkIHRlc3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKCkKIHsKLSAgICBOU1VS
TCogY2FjaGVQYXRoID0gdGVtcEZpbGUoQCJmb28ucHJvZ3JhbS5jYWNoZSIpOworICAgIE5TVVJM
KiBjYWNoZVBhdGggPSBjYWNoZUZpbGVJbkRhdGFWYXVsdChAImZvby5wcm9ncmFtLmNhY2hlIik7
CiAgICAgTlNVUkwqIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAibXktcGF0aCJd
OwogICAgIE5TU3RyaW5nICpzb3VyY2UgPSBAImZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuIDEzMzc7
IH0gZm9vKCk7IjsKIApAQCAtMjM1Niw2ICsyMzgxLDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3RJc1Vz
aW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29yKCkKICAgICBjaGVja1Jlc3VsdChAIlN1Y2Nlc3NmdWxs
eSByZW1vdmVkIGNhY2hlIGZpbGUiLCByZW1vdmVkQWxsKTsKIH0KIAorc3RhdGljIHZvaWQgdGVz
dEJ5dGVjb2RlQ2FjaGVWYWxpZGF0aW9uKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAg
ICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworCisg
ICAgICAgIGF1dG8gdGVzdEludmFsaWRDYWNoZVVSTCA9IFsmXShOU1VSTCogY2FjaGVVUkwsIE5T
U3RyaW5nKiBleHBlY3RlZEVycm9yTWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgTlNF
cnJvciogZXJyb3I7CisgICAgICAgICAgICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0IHNj
cmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlUHJvZ3JhbSB3aXRoU291cmNlOkAiIiBhbmRTb3VyY2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJteS1wYXRoIl0gYW5kQnl0ZWNvZGVDYWNoZTpjYWNo
ZVVSTCBpblZpcnR1YWxNYWNoaW5lOmNvbnRleHQudmlydHVhbE1hY2hpbmUgZXJyb3I6JmVycm9y
XTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzY3JpcHQpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZXJyb3IpOworICAgICAgICAgICAgTlNTdHJpbmcqIHRlc3REZXNjaXB0aW9u
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDYWNoZSBwYXRoIHZhbGlkYXRpb24gZm9y
IGAlQGAgZmFpbHMgd2l0aCBtZXNzYWdlIGAlQGAiLCBjYWNoZVVSTC5hYnNvbHV0ZVN0cmluZywg
ZXhwZWN0ZWRFcnJvck1lc3NhZ2VdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQodGVzdERlc2Np
cHRpb24sIFtlcnJvci5kZXNjcmlwdGlvbiBjb250YWluc1N0cmluZzpleHBlY3RlZEVycm9yTWVz
c2FnZV0pOworICAgICAgICB9OworCisgICAgICAgIHRlc3RJbnZhbGlkQ2FjaGVVUkwoW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCIiXSwgQCJDYWNoZSBwYXRoIGBgIGlzIG5vdCBhIGxvY2FsIGZpbGUi
KTsKKyAgICAgICAgdGVzdEludmFsaWRDYWNoZVVSTChbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZp
bGU6Ly8vIl0sIEAiQ2FjaGUgcGF0aCBgL2AgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIGZp
bGUiKTsKKyAgICAgICAgdGVzdEludmFsaWRDYWNoZVVSTChbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImZpbGU6Ly8vYS9iL2MvZC9lIl0sIEAiQ2FjaGUgZGlyZWN0b3J5IGAvYS9iL2MvZGAgaXMgbm90
IGEgZGlyZWN0b3J5IG9yIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHRlc3RJbnZhbGlkQ2Fj
aGVVUkwoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vL3ByaXZhdGUvdG1wL2ZpbGUuY2Fj
aGUiXSwgQCJDYWNoZSBkaXJlY3RvcnkgYC9wcml2YXRlL3RtcGAgaXMgbm90IGEgZGF0YSB2YXVs
dCIpOworICAgIH0KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKworICAgICAgICBhdXRvIHRlc3RWYWxpZENhY2hlVVJMID0gWyZdKE5TVVJMKiBj
YWNoZVVSTCkKKyAgICAgICAgeworICAgICAgICAgICAgTlNFcnJvciogZXJyb3I7CisgICAgICAg
ICAgICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRU
eXBlUHJvZ3JhbSB3aXRoU291cmNlOkAiIiBhbmRTb3VyY2VVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJteS1wYXRoIl0gYW5kQnl0ZWNvZGVDYWNoZTpjYWNoZVVSTCBpblZpcnR1YWxNYWNoaW5l
OmNvbnRleHQudmlydHVhbE1hY2hpbmUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgICAgIE5TU3Ry
aW5nKiB0ZXN0RGVzY2lwdGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUg
cGF0aCB2YWxpZGF0aW9uIGZvciBgJUBgIHBhc3NlZCIsIGNhY2hlVVJMLmFic29sdXRlU3RyaW5n
XTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KHRlc3REZXNjaXB0aW9uLCBzY3JpcHQgJiYgIWVy
cm9yKTsKKyAgICAgICAgfTsKKworICAgICAgICB0ZXN0VmFsaWRDYWNoZVVSTChjYWNoZUZpbGVJ
bkRhdGFWYXVsdChAImZpbGUuY2FjaGUiKSk7CisgICAgfQorI2VuZGlmCit9CisKIEBpbnRlcmZh
Y2UgSlNDb250ZXh0RmlsZUxvYWRlckRlbGVnYXRlIDogSlNDb250ZXh0IDxKU01vZHVsZUxvYWRl
ckRlbGVnYXRlPgogCiArIChpbnN0YW5jZXR5cGUpbmV3Q29udGV4dDsKQEAgLTI2MjgsNiArMjY5
MSw3IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJV
Tih0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVuSXRzQWxyZWFkeUNhY2hlZCgpKTsKICAgICBSVU4odGVz
dENhbkNhY2hlTWFueUZpbGVzV2l0aFRoZVNhbWVWTSgpKTsKICAgICBSVU4odGVzdElzVXNpbmdC
eXRlY29kZUNhY2hlQWNjZXNzb3IoKSk7CisgICAgUlVOKHRlc3RCeXRlY29kZUNhY2hlVmFsaWRh
dGlvbigpKTsKIAogICAgIFJVTih0ZXN0TG9hZGVyUmVqZWN0c05pbFNjcmlwdFVSTCgpKTsKICAg
ICBSVU4odGVzdExvYWRlclJlamVjdHNGYWlsZWRGZXRjaCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2Nv
bmZpZwppbmRleCA1ODIxMDdjMjBmYzcwYmNlNzg2MzhmYTZlZmVjYjJhYzkzOTEyNmRmLi5mMjI4
NjQ2Mjk2YzdiNjI5MmY2OGNhZjQwOTJkNDljNWEzYWI5ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhj
Y29uZmlnCkBAIC0yMSwxMSArMjEsMjcgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAKKyNpbmNsdWRlPyAiLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2
ZUludGVybmFsU0RLLnhjY29uZmlnIgogI2luY2x1ZGUgIkZlYXR1cmVEZWZpbmVzLnhjY29uZmln
IgogI2luY2x1ZGUgIlZlcnNpb24ueGNjb25maWciCiAKIElOU1RBTExfUEFUSCA9ICQoSkFWQVND
UklQVENPUkVfRlJBTUVXT1JLU19ESVIpLyQoSkFWQVNDUklQVENPUkVfUkVTT1VSQ0VTX0RJUik7
CiBQUk9EVUNUX05BTUUgPSAkKFRBUkdFVF9OQU1FKTsKKworVVNFX0lOVEVSTkFMX1NESyA9ICQo
VVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsKK1VTRV9JTlRFUk5BTF9TREtfUHJv
ZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVfSU5URVJOQUxf
U0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwor
CitDT0RFX1NJR05fSURFTlRJVFlbc2RrPW1hY29zeCpdID0gJChDT0RFX1NJR05fSURFTlRJVFlf
JChVU0VfSU5URVJOQUxfU0RLKSkKKworQ09ERV9TSUdOX0lERU5USVRZXyA9ICQoQ09ERV9TSUdO
X0lERU5USVRZX05PKTsKK0NPREVfU0lHTl9JREVOVElUWV9OTyA9IC07CitDT0RFX1NJR05fSURF
TlRJVFlfWUVTID0gJChXS19FTkdJTkVFUklOR19DT0RFX1NJR05fSURFTlRJVFkpOworCitDT0RF
X1NJR05fRU5USVRMRU1FTlRTW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0VOVElUTEVNRU5U
U19tYWNvc3hfJChUQVJHRVRfTkFNRSkpOworQ09ERV9TSUdOX0VOVElUTEVNRU5UU19tYWNvc3hf
dGVzdGFwaSA9IHRlc3RhcGkuZW50aXRsZW1lbnRzOworCiBDT0RFX1NJR05fRU5USVRMRU1FTlRT
W3Nkaz1pcGhvbmUqXSA9ICQoQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfJChUQVJHRVRfTkFN
RSkpOwogQ09ERV9TSUdOX0VOVElUTEVNRU5UU19pb3NfbWluaWRvbSA9IGVudGl0bGVtZW50cy5w
bGlzdDsKIENPREVfU0lHTl9FTlRJVExFTUVOVFNfaW9zX3Rlc3RhaXIgPSBlbnRpdGxlbWVudHMu
cGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdlMjFlMGIwN2M1MzJjYzdh
ODFiNzUxMDA0MWFiMjIyNGM5ZDJlNzEuLjhlNDEzM2EwMTViZWVjMWRjN2FjMzU2ZGRlMmYyY2Iz
ODY4MTRiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjEyLDYgKzMyMTIs
NyBAQAogCQkxNDQyNTY1RjE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaXRoU2NvcGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQyNTY2MDE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRo
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXaXRoU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0Q0EzNEYyMjFGMDM3OTAwODE3Nzg5IC8q
IENhY2hlZEJ5dGVjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZEJ5dGVjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NTM0ODU3MjI5MTcz
N0YwMEIxQzJFQiAvKiB0ZXN0YXBpLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
ZW50aXRsZW1lbnRzOyBwYXRoID0gdGVzdGFwaS5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cm9uZ0lubGluZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ1QzUwN0YwRDlERjYzQjAwODhGNkI5IC8qIENh
bGxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NkFBQjJBMEI2NkE4NDkwMEU1NUYxNiAvKiBK
U1N0cmluZ1JlZkNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmlu
Z1JlZkNGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTc3LDYgKzUxNzgsNyBA
QAogCQkJCUE3QzIyNUNDMTM5OTgxRjEwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9y
LnB5ICovLAogCQkJCTc5RDdCMEUyMjExNTJGRDMwMEZFN0M2NCAvKiBhbGxvdy1qaXQtbWFjT1Mu
ZW50aXRsZW1lbnRzICovLAogCQkJCTc5RDdCMEUxMjExNTJGRDIwMEZFN0M2NCAvKiBlbnRpdGxl
bWVudHMucGxpc3QgKi8sCisJCQkJMTQ1MzQ4NTcyMjkxNzM3RjAwQjFDMkVCIC8qIHRlc3RhcGku
ZW50aXRsZW1lbnRzICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8s
CiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQkwRkVD
ODRCMjFCREFDRDVFMDA4MEZGNzQgLyogYjMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdGFwaS5lbnRpdGxlbWVudHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dGFwaS5lbnRpdGxlbWVudHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliMGEyYmYzYWEwNWUyYTBlMzhjZTYzNjAx
ZTlkMTBlZjhlOWQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0YXBpLmVudGl0bGVtZW50cwpAQCAtMCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RU
RCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3Qt
MS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Y29tLmFwcGxl
LnNlY3VyaXR5LmNzLmFsbG93LWppdDwva2V5PgorCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5y
b290bGVzcy5zdG9yYWdlLkphdmFTY3JpcHRDb3JlPC9rZXk+CisJPHRydWUvPgorPC9kaWN0Pgor
PC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMw
MjA0ZmNkODg4MmZhMTU1YzYxNzQ1YTNmMzNkODkyNjg5Yjc4N2IuLjg4MjQ1MzVhMzYyMjU4MWE4
ZDg3MTQ0YjZiMTA3MDBkNDcxMTcyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjg4LDYgKzI4OCw3IEBACiAJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0
NiAvKiBTY2hlZHVsZVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2No
ZWR1bGVQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTlBMTZFQUIx
MEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5RTQ2IC8qIERhdGFW
YXVsdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVmF1bHRTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMx
IC8qIFRyaVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyaVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTc4NUU3MURGQjMzMDEwMDIwOUJE
MSAvKiBPcmRpbmFsTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9y
ZGluYWxOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IwRjYxNUU0
NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM2Myw2ICsxMzY0LDcgQEAKIAkJQ0U3M0UwMjMxOURDQjdBQjAwNTgwRDVD
IC8qIGRhcndpbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5RTQ2IC8qIERhdGFWYXVsdFNQSS5oICovLAogCQkJCUU0
MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRjaFNQSS5oICovLAogCQkJCTkzRERFOTMx
MUNEQzA1MkQwMEZEMzQ5MSAvKiBkeWxkU1BJLmggKi8sCiAJCQkJQTUwOThBRkYxQzE2OUUwNzAw
MDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Nw
aS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0RhdGFW
YXVsdFNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NGJlZjkyNmM5MGMxMmY0ZjdkMTZjZDk0NjlmNjRmMjlj
YTk1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0RhdGFW
YXVsdFNQSS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIE9TKERBUldJTikKKworI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxyb290bGVzcy5oPgorI2VuZGlmCisKK1dU
Rl9FWFRFUk5fQ19CRUdJTgorCitpbnQgcm9vdGxlc3NfY2hlY2tfZGF0YXZhdWx0X2ZsYWcoY29u
c3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3RvcmFnZV9jbGFzcyk7CisKK1dURl9FWFRFUk5f
Q19FTkQKKworI2VuZGlmIC8vIE9TKERBUldJTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370300</attachid>
            <date>2019-05-20 23:13:23 -0700</date>
            <delta_ts>2019-05-20 23:52:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-197898-20190521081321.patch</filename>
            <type>text/plain</type>
            <size>22407</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NzMyNTI0ZDY5MWIzZWVkYmMwYjk3YTg4MWNkNjhiMDY5NTM1ZTczLi4zMzk5ZDU1ZTk4Y2RiMzhk
YzVhMDAxMmIyNDdmZmNiMTlhNjQ4MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxOS0wNS0xOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPbmx5IGNhY2hlIGJ5dGVjb2RlIGZvciBBUEkgY2xpZW50cyBpbiBkYXRh
IHZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3ODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk0NTQ0OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgRW5mb3JjZSB0aGF0IEFQSSBjbGllbnRz
IG9ubHkgc3RvcmUgY2FjaGVkIGJ5dGVjb2RlIGluIGRhdGEgdmF1bHRzLiBUaGlzIHByZXZlbnRz
CisgICAgICAgIGFub3RoZXIgcHJvY2VzcyBmcm9tIGNvbXByb21pc2luZyB0aGUgY3VycmVudCBv
bmUgYnkgdGFtcGVyaW5nIHdpdGggdGhlIGJ5dGVjb2RlLgorCisgICAgICAgICogQVBJL0pTU2Ny
aXB0Lm1tOgorICAgICAgICAodmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aCk6CisgICAgICAgICgr
W0pTU2NyaXB0IHNjcmlwdE9mVHlwZTp3aXRoU291cmNlOmFuZFNvdXJjZVVSTDphbmRCeXRlY29k
ZUNhY2hlOmluVmlydHVhbE1hY2hpbmU6ZXJyb3I6XSk6CisgICAgICAgICgrW0pTU2NyaXB0IHNj
cmlwdE9mVHlwZTptZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOndpdGhTb3VyY2VVUkw6YW5kQnl0
ZWNvZGVDYWNoZTppblZpcnR1YWxNYWNoaW5lOmVycm9yOl0pOgorICAgICAgICAqIEFQSS90ZXN0
cy90ZXN0YXBpLm1tOgorICAgICAgICAoY2FjaGVGaWxlSW5EYXRhVmF1bHQpOgorICAgICAgICAo
dGVzdE1vZHVsZUJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAodGVzdFByb2dyYW1CeXRlY29kZUNh
Y2hlKToKKyAgICAgICAgKHRlc3RCeXRlY29kZUNhY2hlV2l0aFN5bnRheEVycm9yKToKKyAgICAg
ICAgKHRlc3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQp
OgorICAgICAgICAodGVzdENhY2hlRmlsZUZhaWxzV2hlbkl0c0FscmVhZHlDYWNoZWQpOgorICAg
ICAgICAodGVzdENhbkNhY2hlTWFueUZpbGVzV2l0aFRoZVNhbWVWTSk6CisgICAgICAgICh0ZXN0
SXNVc2luZ0J5dGVjb2RlQ2FjaGVBY2Nlc3Nvcik6CisgICAgICAgICh0ZXN0Qnl0ZWNvZGVDYWNo
ZVZhbGlkYXRpb24pOgorICAgICAgICAodGVzdE9iamVjdGl2ZUNBUEkpOgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogdGVzdGFwaS5lbnRp
dGxlbWVudHM6IEFkZGVkLgorCiAyMDE5LTA1LTE0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHJlc3RvcmF0aW9uIG9mIG5vbi11
bmlmaWVkIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA2YmM2MGFhN2U0YmY3NGFhMjc1NDYxYzRhYzE4NWNhYTRkOTgy
NjAxLi42ZTk3M2E1ODMzMjE2ZGQzNzcxODVlOTA1NjA2NDI0ZGUzM2EzMDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTA1LTE5ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgorCisgICAgICAgIE9ubHkgY2FjaGUgYnl0ZWNvZGUgZm9yIEFQSSBjbGllbnRzIGluIGRhdGEg
dmF1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTc4OTgKKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgQWRk
IFNQSSB0byBjaGVjayBpZiBhIGZpbGVzeXN0ZW0gcGF0aCBpcyByZXN0cmljdGVkIGFzIGEgZGF0
YSB2YXVsdC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oOiBBZGRlZC4KKwogMjAxOS0wNS0x
NCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0NTI4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2Ny
aXB0Lm1tCmluZGV4IGJkYmQ2ODIyODNmMzZjNjUxNGNmMjczNmZmZGFhMDEyYzg1MTIwY2YuLmIz
YWQwMzdkNjg2YTllNGE1Y2FiMDVhOTk4NGU4N2M0NWZiYTcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtMzgsOCArMzgsMTAgQEAKICNpbXBvcnQgIlBhcnNlckVy
cm9yLmgiCiAjaW1wb3J0ICJTeW1ib2wuaCIKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1
ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQ
SS5oPgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIApAQCAtNjAsOSArNjIsNTIgQEAgc3Rh
dGljIEpTU2NyaXB0ICpjcmVhdGVFcnJvcihOU1N0cmluZyAqbWVzc2FnZSwgTlNFcnJvcioqIGVy
cm9yKQogICAgIHJldHVybiBuaWw7CiB9CiAKK3N0YXRpYyBib29sIHZhbGlkYXRlQnl0ZWNvZGVD
YWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9yKQoreworICAgIGlmICgh
Y2FjaGVQYXRoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFVSTCBjYWNoZVBhdGhVUkwo
W2NhY2hlUGF0aCBhYnNvbHV0ZVVSTF0pOworICAgIGlmICghY2FjaGVQYXRoVVJMLmlzTG9jYWxG
aWxlKCkpIHsKKyAgICAgICAgY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJDYWNoZSBwYXRoIGAlQGAgaXMgbm90IGEgbG9jYWwgZmlsZSIsIHN0YXRpY19jYXN0PE5TU3Ry
aW5nICo+KGNhY2hlUGF0aFVSTCldLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBTdHJpbmcgc3lzdGVtUGF0aCA9IGNhY2hlUGF0aFVSTC5maWxlU3lzdGVtUGF0
aCgpOworCisgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
c3lzdGVtUGF0aCkpIHsKKyAgICAgICAgaWYgKG1ldGFkYXRhLT50eXBlICE9IEZpbGVNZXRhZGF0
YTo6VHlwZTo6RmlsZSkgeworICAgICAgICAgICAgY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJDYWNoZSBwYXRoIGAlc2AgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBh
IGZpbGUiLCBzeXN0ZW1QYXRoLnV0ZjgoKS5kYXRhKCldLCBlcnJvcik7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTdHJpbmcgZGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShzeXN0ZW1QYXRoKTsKKyAgICBpZiAoZGlyZWN0b3J5
LmlzTnVsbCgpKSB7CisgICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiQ2FjaGUgcGF0aCBgJXNgIGRvZXMgbm90IGNvbnRhaW4gaW4gYSB2YWxpZCBkaXJlY3Rv
cnkiLCBzeXN0ZW1QYXRoLnV0ZjgoKS5kYXRhKCldLCBlcnJvcik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShkaXJl
Y3RvcnksIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkgeworICAg
ICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkNhY2hlIGRpcmVj
dG9yeSBgJXNgIGlzIG5vdCBhIGRpcmVjdG9yeSBvciBkb2VzIG5vdCBleGlzdCIsIGRpcmVjdG9y
eS51dGY4KCkuZGF0YSgpXSwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBpZiAocm9vdGxlc3NfY2hlY2tfZGF0
YXZhdWx0X2ZsYWcoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9y
eSkuZGF0YSgpLCBudWxscHRyKSkgeworICAgICAgICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkNhY2hlIGRpcmVjdG9yeSBgJXNgIGlzIG5vdCBhIGRhdGEgdmF1bHQi
LCBkaXJlY3RvcnkudXRmOCgpLmRhdGEoKV0sIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKICsgKGluc3RhbmNldHlw
ZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIHdpdGhTb3VyY2U6KE5TU3RyaW5nICop
c291cmNlIGFuZFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgYW5kQnl0ZWNvZGVDYWNoZToo
TlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZt
IGVycm9yOihvdXQgTlNFcnJvciAqKillcnJvcgogewotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7
CisgICAgaWYgKCF2YWxpZGF0ZUJ5dGVjb2RlQ2FjaGVQYXRoKGNhY2hlUGF0aCwgZXJyb3IpKQor
ICAgICAgICByZXR1cm4gbmlsOworCiAgICAgSlNTY3JpcHQgKnJlc3VsdCA9IFtbW0pTU2NyaXB0
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgcmVzdWx0LT5tX3ZpcnR1YWxNYWNoaW5l
ID0gdm07CiAgICAgcmVzdWx0LT5tX3R5cGUgPSB0eXBlOwpAQCAtNzUsNyArMTIwLDkgQEAgKyAo
aW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlwZTooSlNTY3JpcHRUeXBlKXR5cGUgd2l0aFNvdXJjZToo
TlNTdHJpbmcgKilzb3VyY2UgYW4KIAogKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlwZTooSlNT
Y3JpcHRUeXBlKXR5cGUgbWVtb3J5TWFwcGVkRnJvbUFTQ0lJRmlsZTooTlNVUkwgKilmaWxlUGF0
aCB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBhbmRCeXRlY29kZUNhY2hlOihOU1VS
TCAqKWNhY2hlUGF0aCBpblZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdm0gZXJy
b3I6KG91dCBOU0Vycm9yICoqKWVycm9yCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAg
ICBpZiAoIXZhbGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoY2FjaGVQYXRoLCBlcnJvcikpCisgICAg
ICAgIHJldHVybiBuaWw7CisKICAgICBVUkwgZmlsZVBhdGhVUkwoW2ZpbGVQYXRoIGFic29sdXRl
VVJMXSk7CiAgICAgaWYgKCFmaWxlUGF0aFVSTC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1
cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGaWxlIHBhdGggJUAg
aXMgbm90IGEgbG9jYWwgZmlsZSIsIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGZpbGVQYXRoVVJM
KV0sIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpp
bmRleCA1NjQ5Njc3YmRiMDE3ZTI1NGMwOTY3NmQ2M2I2YTE3MTEzMzBjMGExLi41MjUzYjAyZjcy
MmE4NjJmN2MwMzE3MTdhMjUzNWVjM2MwZTZjMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJKU1dyYXBw
ZXJNYXBUZXN0cy5oIgogI2ltcG9ydCAiUmVncmVzczE0MTI3NS5oIgogI2ltcG9ydCAiUmVncmVz
czE0MTgwOS5oIgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmg+CiAKICNp
ZiBfX2hhc19pbmNsdWRlKDxsaWJwcm9jLmg+KQogI2RlZmluZSBIQVNfTElCUFJPQyAxCkBAIC0y
MDc2LDYgKzIwNzcsMjcgQEAgc3RhdGljIE5TVVJMICp0ZW1wRmlsZShOU1N0cmluZyAqc3RyaW5n
KQogICAgIHJldHVybiBbdGVtcERpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
c3RyaW5nXTsKIH0KIAorc3RhdGljIE5TVVJMKiBjYWNoZUZpbGVJbkRhdGFWYXVsdChOU1N0cmlu
ZyogbmFtZSkKK3sKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIHN0YXRpYyBOU1VS
TCogZGF0YVZhdWx0VVJMOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgICAgICBjaGFyIHVzZXJEaXJbUEFUSF9NQVhdOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9ESVIsIHVzZXJE
aXIsIHNpemVvZih1c2VyRGlyKSkpOworCisgICAgICAgIE5TU3RyaW5nICp1c2VyRGlyUGF0aCA9
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjp1c2VyRGlyIGxlbmd0aDpzdHJsZW4odXNlckRpcildOworICAgICAgICBkYXRh
VmF1bHRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnVzZXJEaXJQYXRoIGlzRGlyZWN0b3J5
OllFU107CisgICAgICAgIGRhdGFWYXVsdFVSTCA9IFtkYXRhVmF1bHRVUkwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiSmF2YVNjcmlwdENvcmUiIGlzRGlyZWN0b3J5OllFU107CisgICAg
ICAgIHJvb3RsZXNzX21rZGlyX2RhdGF2YXVsdChkYXRhVmF1bHRVUkwucGF0aC5VVEY4U3RyaW5n
LCAwNzAwLCAiSmF2YVNjcmlwdENvcmUiKTsKKyAgICB9KTsKKworICAgIHJldHVybiBbZGF0YVZh
dWx0VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpuYW1lIGlzRGlyZWN0b3J5Ok5PXTsK
KyNlbHNlCisgICAgcmV0dXJuIHRlbXBGaWxlKG5hbWUpOworI2VuZGlmCit9CisKIHN0YXRpYyB2
b2lkIHRlc3RNb2R1bGVCeXRlY29kZUNhY2hlKCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
QEAgLTIwODcsOSArMjEwOSw5IEBAIHN0YXRpYyB2b2lkIHRlc3RNb2R1bGVCeXRlY29kZUNhY2hl
KCkKICAgICAgICAgTlNVUkwgKmJhclBhdGggPSB0ZW1wRmlsZShAImJhci5qcyIpOwogICAgICAg
ICBOU1VSTCAqYmF6UGF0aCA9IHRlbXBGaWxlKEAiYmF6LmpzIik7CiAKLSAgICAgICAgTlNVUkwg
KmZvb0NhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9vLmpzLmNhY2hlIik7Ci0gICAgICAgIE5TVVJM
ICpiYXJDYWNoZVBhdGggPSB0ZW1wRmlsZShAImJhci5qcy5jYWNoZSIpOwotICAgICAgICBOU1VS
TCAqYmF6Q2FjaGVQYXRoID0gdGVtcEZpbGUoQCJiYXouanMuY2FjaGUiKTsKKyAgICAgICAgTlNV
UkwgKmZvb0NhY2hlUGF0aCA9IGNhY2hlRmlsZUluRGF0YVZhdWx0KEAiZm9vLmpzLmNhY2hlIik7
CisgICAgICAgIE5TVVJMICpiYXJDYWNoZVBhdGggPSBjYWNoZUZpbGVJbkRhdGFWYXVsdChAImJh
ci5qcy5jYWNoZSIpOworICAgICAgICBOU1VSTCAqYmF6Q2FjaGVQYXRoID0gY2FjaGVGaWxlSW5E
YXRhVmF1bHQoQCJiYXouanMuY2FjaGUiKTsKIAogICAgICAgICBOU1VSTCAqZm9vRmFrZVBhdGgg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL2Zvby5qcyJdOwogICAgICAgICBOU1VSTCAqYmFy
RmFrZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL2RpcmVjdG9yeS9iYXIuanMiXTsK
QEAgLTIxMTAsNyArMjEzMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RNb2R1bGVCeXRlY29kZUNhY2hl
KCkKICAgICAgICAgICAgICAgICBzY3JpcHQgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1Nj
cmlwdFR5cGVNb2R1bGUgbWVtb3J5TWFwcGVkRnJvbUFTQ0lJRmlsZTpiYXpQYXRoIHdpdGhTb3Vy
Y2VVUkw6YmF6RmFrZVBhdGggYW5kQnl0ZWNvZGVDYWNoZTpiYXpDYWNoZVBhdGggaW5WaXJ0dWFs
TWFjaGluZTpjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGVycm9yOm5pbF07CiAKICAgICAgICAgICAg
IGlmIChzY3JpcHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIVtzY3JpcHQgY2FjaGVCeXRlY29k
ZVdpdGhFcnJvcjpuaWxdKQorICAgICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwor
ICAgICAgICAgICAgICAgIGlmICghW3NjcmlwdCBjYWNoZUJ5dGVjb2RlV2l0aEVycm9yOiZlcnJv
cl0pCiAgICAgICAgICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgICAgICAgICAgW3Jlc29s
dmUgY2FsbFdpdGhBcmd1bWVudHM6QFtzY3JpcHRdXTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAt
MjE0Miw3ICsyMTY1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFByb2dyYW1CeXRlY29kZUNhY2hlKCkK
IHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgTlNTdHJpbmcgKmZvb1NvdXJjZSA9
IEAiZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gNDI7IH07IGZ1bmN0aW9uIGJhcigpIHsgcmV0dXJu
IDQwOyB9OyBmb28oKSArIGJhcigpOyI7Ci0gICAgICAgIE5TVVJMICpmb29DYWNoZVBhdGggPSB0
ZW1wRmlsZShAImZvby5qcy5jYWNoZSIpOworICAgICAgICBOU1VSTCAqZm9vQ2FjaGVQYXRoID0g
Y2FjaGVGaWxlSW5EYXRhVmF1bHQoQCJmb28uanMuY2FjaGUiKTsKICAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwogICAgICAgICBKU1NjcmlwdCAq
c2NyaXB0ID0gW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlUHJvZ3JhbSB3aXRo
U291cmNlOmZvb1NvdXJjZSBhbmRTb3VyY2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJteS1w
YXRoIl0gYW5kQnl0ZWNvZGVDYWNoZTpmb29DYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTpjb250
ZXh0LnZpcnR1YWxNYWNoaW5lIGVycm9yOm5pbF07CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNj
cmlwdCk7CkBAIC0yMTY2LDcgKzIxODksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Qnl0ZWNvZGVDYWNo
ZVdpdGhTeW50YXhFcnJvcihKU1NjcmlwdFR5cGUgdHlwZSkKIHsKICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKICAgICAgICAgTlNTdHJpbmcgKmZvb1NvdXJjZSA9IEAidGhpcyBpcyBhIHN5bnRheCBl
cnJvciI7Ci0gICAgICAgIE5TVVJMICpmb29DYWNoZVBhdGggPSB0ZW1wRmlsZShAImZvby5qcy5j
YWNoZSIpOworICAgICAgICBOU1VSTCAqZm9vQ2FjaGVQYXRoID0gY2FjaGVGaWxlSW5EYXRhVmF1
bHQoQCJmb28uanMuY2FjaGUiKTsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0Nv
bnRleHQgYWxsb2NdIGluaXRdOwogICAgICAgICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0
IHNjcmlwdE9mVHlwZTp0eXBlIHdpdGhTb3VyY2U6Zm9vU291cmNlIGFuZFNvdXJjZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAIm15LXBhdGgiXSBhbmRCeXRlY29kZUNhY2hlOmZvb0NhY2hlUGF0
aCBpblZpcnR1YWxNYWNoaW5lOmNvbnRleHQudmlydHVhbE1hY2hpbmUgZXJyb3I6bmlsXTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc2NyaXB0KTsKQEAgLTIxODAsNyArMjIwMyw4IEBAIHN0YXRp
YyB2b2lkIHRlc3RCeXRlY29kZUNhY2hlV2l0aFN5bnRheEVycm9yKEpTU2NyaXB0VHlwZSB0eXBl
KQogCiBzdGF0aWMgdm9pZCB0ZXN0Qnl0ZWNvZGVDYWNoZVdpdGhTYW1lQ2FjaGVGaWxlQW5kRGlm
ZmVyZW50U2NyaXB0KGJvb2wgZm9yY2VEaXNrQ2FjaGUpCiB7Ci0gICAgTlNVUkwgKmNhY2hlUGF0
aCA9IHRlbXBGaWxlKEAiY2FjaGVQYXRoLmNhY2hlIik7CisKKyAgICBOU1VSTCAqY2FjaGVQYXRo
ID0gY2FjaGVGaWxlSW5EYXRhVmF1bHQoQCJjYWNoZVBhdGguY2FjaGUiKTsKICAgICBOU1VSTCAq
c291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJteS1wYXRoIl07CiAKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKQEAgLTIyMjAsNiArMjI0NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCeXRl
Y29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoYm9vbCBmb3JjZURp
c2tDCiAgICAgTlNGaWxlTWFuYWdlciogZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl07CiAgICAgQk9PTCByZW1vdmVkQWxsID0gW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0
ZW1BdFVSTDpjYWNoZVBhdGggZXJyb3I6bmlsXTsKICAgICBjaGVja1Jlc3VsdChAIlJlbW92ZWQg
YWxsIHRlbXAgZmlsZXMgY3JlYXRlZCIsIHJlbW92ZWRBbGwpOworCiB9CiAKIHN0YXRpYyB2b2lk
IHRlc3RQcm9ncmFtSlNTY3JpcHRFeGNlcHRpb24oKQpAQCAtMjI0NSw3ICsyMjcwLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFByb2dyYW1KU1NjcmlwdEV4Y2VwdGlvbigpCiAKIHN0YXRpYyB2b2lkIHRl
c3RDYWNoZUZpbGVGYWlsc1doZW5JdHNBbHJlYWR5Q2FjaGVkKCkKIHsKLSAgICBOU1VSTCogY2Fj
aGVQYXRoID0gdGVtcEZpbGUoQCJmb28ucHJvZ3JhbS5jYWNoZSIpOworICAgIE5TVVJMKiBjYWNo
ZVBhdGggPSBjYWNoZUZpbGVJbkRhdGFWYXVsdChAImZvby5wcm9ncmFtLmNhY2hlIik7CiAgICAg
TlNVUkwqIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAibXktcGF0aCJdOwogICAg
IE5TU3RyaW5nICpzb3VyY2UgPSBAImZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuIDQyOyB9IGZvbygp
OyI7CiAKQEAgLTIyODUsNyArMjMxMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDYW5DYWNoZU1hbnlG
aWxlc1dpdGhUaGVTYW1lVk0oKQogICAgIE5TTXV0YWJsZUFycmF5ICpzY3JpcHRzID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkKLSAgICAgICAgW2NhY2hlUGF0aHMgYWRkT2JqZWN0OnRlbXBGaWxlKFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiY2FjaGUtJWQuY2FjaGUiLCBpXSldOworICAgICAgICBb
Y2FjaGVQYXRocyBhZGRPYmplY3Q6Y2FjaGVGaWxlSW5EYXRhVmF1bHQoW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJjYWNoZS0lZC5jYWNoZSIsIGldKV07CiAKICAgICBKU1ZpcnR1YWxNYWNo
aW5lICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07CiAgICAgYm9vbCBjYWNo
ZWRBbGwgPSB0cnVlOwpAQCAtMjMyMyw3ICsyMzQ4LDcgQEAgc3RhdGljIHZvaWQgdGVzdENhbkNh
Y2hlTWFueUZpbGVzV2l0aFRoZVNhbWVWTSgpCiAKIHN0YXRpYyB2b2lkIHRlc3RJc1VzaW5nQnl0
ZWNvZGVDYWNoZUFjY2Vzc29yKCkKIHsKLSAgICBOU1VSTCogY2FjaGVQYXRoID0gdGVtcEZpbGUo
QCJmb28ucHJvZ3JhbS5jYWNoZSIpOworICAgIE5TVVJMKiBjYWNoZVBhdGggPSBjYWNoZUZpbGVJ
bkRhdGFWYXVsdChAImZvby5wcm9ncmFtLmNhY2hlIik7CiAgICAgTlNVUkwqIHNvdXJjZVVSTCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAibXktcGF0aCJdOwogICAgIE5TU3RyaW5nICpzb3VyY2Ug
PSBAImZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuIDEzMzc7IH0gZm9vKCk7IjsKIApAQCAtMjM1Niw2
ICsyMzgxLDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3RJc1VzaW5nQnl0ZWNvZGVDYWNoZUFjY2Vzc29y
KCkKICAgICBjaGVja1Jlc3VsdChAIlN1Y2Nlc3NmdWxseSByZW1vdmVkIGNhY2hlIGZpbGUiLCBy
ZW1vdmVkQWxsKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEJ5dGVjb2RlQ2FjaGVWYWxpZGF0aW9u
KCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworCisgICAgICAgIGF1dG8gdGVzdEludmFsaWRD
YWNoZVVSTCA9IFsmXShOU1VSTCogY2FjaGVVUkwsIE5TU3RyaW5nKiBleHBlY3RlZEVycm9yTWVz
c2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgTlNFcnJvciogZXJyb3I7CisgICAgICAgICAg
ICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBl
UHJvZ3JhbSB3aXRoU291cmNlOkAiIiBhbmRTb3VyY2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJteS1wYXRoIl0gYW5kQnl0ZWNvZGVDYWNoZTpjYWNoZVVSTCBpblZpcnR1YWxNYWNoaW5lOmNv
bnRleHQudmlydHVhbE1hY2hpbmUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFzY3JpcHQpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IpOworICAg
ICAgICAgICAgTlNTdHJpbmcqIHRlc3REZXNjaXB0aW9uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJDYWNoZSBwYXRoIHZhbGlkYXRpb24gZm9yIGAlQGAgZmFpbHMgd2l0aCBtZXNzYWdl
IGAlQGAiLCBjYWNoZVVSTC5hYnNvbHV0ZVN0cmluZywgZXhwZWN0ZWRFcnJvck1lc3NhZ2VdOwor
ICAgICAgICAgICAgY2hlY2tSZXN1bHQodGVzdERlc2NpcHRpb24sIFtlcnJvci5kZXNjcmlwdGlv
biBjb250YWluc1N0cmluZzpleHBlY3RlZEVycm9yTWVzc2FnZV0pOworICAgICAgICB9OworCisg
ICAgICAgIHRlc3RJbnZhbGlkQ2FjaGVVUkwoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXSwgQCJD
YWNoZSBwYXRoIGBgIGlzIG5vdCBhIGxvY2FsIGZpbGUiKTsKKyAgICAgICAgdGVzdEludmFsaWRD
YWNoZVVSTChbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8vIl0sIEAiQ2FjaGUgcGF0aCBg
L2AgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIGZpbGUiKTsKKyAgICAgICAgdGVzdEludmFs
aWRDYWNoZVVSTChbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8vYS9iL2MvZC9lIl0sIEAi
Q2FjaGUgZGlyZWN0b3J5IGAvYS9iL2MvZGAgaXMgbm90IGEgZGlyZWN0b3J5IG9yIGRvZXMgbm90
IGV4aXN0Iik7CisgICAgICAgIHRlc3RJbnZhbGlkQ2FjaGVVUkwoW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJmaWxlOi8vL3ByaXZhdGUvdG1wL2ZpbGUuY2FjaGUiXSwgQCJDYWNoZSBkaXJlY3Rvcnkg
YC9wcml2YXRlL3RtcGAgaXMgbm90IGEgZGF0YSB2YXVsdCIpOworICAgIH0KKworI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKworICAgICAgICBhdXRv
IHRlc3RWYWxpZENhY2hlVVJMID0gWyZdKE5TVVJMKiBjYWNoZVVSTCkKKyAgICAgICAgeworICAg
ICAgICAgICAgTlNFcnJvciogZXJyb3I7CisgICAgICAgICAgICBKU1NjcmlwdCAqc2NyaXB0ID0g
W0pTU2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlUHJvZ3JhbSB3aXRoU291cmNlOkAi
IiBhbmRTb3VyY2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJteS1wYXRoIl0gYW5kQnl0ZWNv
ZGVDYWNoZTpjYWNoZVVSTCBpblZpcnR1YWxNYWNoaW5lOmNvbnRleHQudmlydHVhbE1hY2hpbmUg
ZXJyb3I6JmVycm9yXTsKKyAgICAgICAgICAgIE5TU3RyaW5nKiB0ZXN0RGVzY2lwdGlvbiA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgcGF0aCB2YWxpZGF0aW9uIGZvciBgJUBg
IHBhc3NlZCIsIGNhY2hlVVJMLmFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KHRlc3REZXNjaXB0aW9uLCBzY3JpcHQgJiYgIWVycm9yKTsKKyAgICAgICAgfTsKKworICAg
ICAgICB0ZXN0VmFsaWRDYWNoZVVSTChjYWNoZUZpbGVJbkRhdGFWYXVsdChAImZpbGUuY2FjaGUi
KSk7CisgICAgfQorI2VuZGlmCit9CisKIEBpbnRlcmZhY2UgSlNDb250ZXh0RmlsZUxvYWRlckRl
bGVnYXRlIDogSlNDb250ZXh0IDxKU01vZHVsZUxvYWRlckRlbGVnYXRlPgogCiArIChpbnN0YW5j
ZXR5cGUpbmV3Q29udGV4dDsKQEAgLTI2MjgsNiArMjY5MSw3IEBAIHZvaWQgdGVzdE9iamVjdGl2
ZUNBUEkoY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVu
SXRzQWxyZWFkeUNhY2hlZCgpKTsKICAgICBSVU4odGVzdENhbkNhY2hlTWFueUZpbGVzV2l0aFRo
ZVNhbWVWTSgpKTsKICAgICBSVU4odGVzdElzVXNpbmdCeXRlY29kZUNhY2hlQWNjZXNzb3IoKSk7
CisgICAgUlVOKHRlc3RCeXRlY29kZUNhY2hlVmFsaWRhdGlvbigpKTsKIAogICAgIFJVTih0ZXN0
TG9hZGVyUmVqZWN0c05pbFNjcmlwdFVSTCgpKTsKICAgICBSVU4odGVzdExvYWRlclJlamVjdHNG
YWlsZWRGZXRjaCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZpZwppbmRleCA1ODIxMDdjMjBmYzcw
YmNlNzg2MzhmYTZlZmVjYjJhYzkzOTEyNmRmLi5mMjI4NjQ2Mjk2YzdiNjI5MmY2OGNhZjQwOTJk
NDljNWEzYWI5ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCkBAIC0yMSwxMSArMjEsMjcg
QEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAKKyNpbmNsdWRlPyAiLi4vLi4v
Li4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2ZUludGVybmFsU0RLLnhjY29uZmlnIgog
I2luY2x1ZGUgIkZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIgogI2luY2x1ZGUgIlZlcnNpb24ueGNj
b25maWciCiAKIElOU1RBTExfUEFUSCA9ICQoSkFWQVNDUklQVENPUkVfRlJBTUVXT1JLU19ESVIp
LyQoSkFWQVNDUklQVENPUkVfUkVTT1VSQ0VTX0RJUik7CiBQUk9EVUNUX05BTUUgPSAkKFRBUkdF
VF9OQU1FKTsKKworVVNFX0lOVEVSTkFMX1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18kKENPTkZJ
R1VSQVRJT04pKTsKK1VTRV9JTlRFUk5BTF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRF
Uk5BTF9TREtfRGVidWcgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5BTF9TREtf
UmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5BTF9TREspOworCitDT0RFX1NJR05fSURFTlRJVFlbc2Rr
PW1hY29zeCpdID0gJChDT0RFX1NJR05fSURFTlRJVFlfJChVU0VfSU5URVJOQUxfU0RLKSkKKwor
Q09ERV9TSUdOX0lERU5USVRZXyA9ICQoQ09ERV9TSUdOX0lERU5USVRZX05PKTsKK0NPREVfU0lH
Tl9JREVOVElUWV9OTyA9IC07CitDT0RFX1NJR05fSURFTlRJVFlfWUVTID0gJChXS19FTkdJTkVF
UklOR19DT0RFX1NJR05fSURFTlRJVFkpOworCitDT0RFX1NJR05fRU5USVRMRU1FTlRTW3Nkaz1t
YWNvc3gqXSA9ICQoQ09ERV9TSUdOX0VOVElUTEVNRU5UU19tYWNvc3hfJChUQVJHRVRfTkFNRSkp
OworQ09ERV9TSUdOX0VOVElUTEVNRU5UU19tYWNvc3hfdGVzdGFwaSA9IHRlc3RhcGkuZW50aXRs
ZW1lbnRzOworCiBDT0RFX1NJR05fRU5USVRMRU1FTlRTW3Nkaz1pcGhvbmUqXSA9ICQoQ09ERV9T
SUdOX0VOVElUTEVNRU5UU19pb3NfJChUQVJHRVRfTkFNRSkpOwogQ09ERV9TSUdOX0VOVElUTEVN
RU5UU19pb3NfbWluaWRvbSA9IGVudGl0bGVtZW50cy5wbGlzdDsKIENPREVfU0lHTl9FTlRJVExF
TUVOVFNfaW9zX3Rlc3RhaXIgPSBlbnRpdGxlbWVudHMucGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDdlMjFlMGIwN2M1MzJjYzdhODFiNzUxMDA0MWFiMjIyNGM5ZDJlNzEu
LjhlNDEzM2EwMTViZWVjMWRjN2FjMzU2ZGRlMmYyY2IzODY4MTRiODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zMjEyLDYgKzMyMTIsNyBAQAogCQkxNDQyNTY1RjE1RURFOThE
MDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNXaXRoU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDQyNTY2MDE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXaXRoU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQ0Q0EzNEYyMjFGMDM3OTAwODE3Nzg5IC8qIENhY2hlZEJ5dGVjb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEJ5dGVjb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0NTM0ODU3MjI5MTczN0YwMEIxQzJFQiAvKiB0ZXN0YXBpLmVu
dGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gdGVz
dGFwaS5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NTcyMjg1
MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cm9uZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQ1QzUwN0YwRDlERjYzQjAwODhGNkI5IC8qIENhbGxEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0NkFBQjJBMEI2NkE4NDkwMEU1NUYxNiAvKiBKU1N0cmluZ1JlZkNGLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ1JlZkNGLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MTc3LDYgKzUxNzgsNyBAQAogCQkJCUE3QzIyNUNDMTM5OTgxRjEw
MEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5ICovLAogCQkJCTc5RDdCMEUyMjEx
NTJGRDMwMEZFN0M2NCAvKiBhbGxvdy1qaXQtbWFjT1MuZW50aXRsZW1lbnRzICovLAogCQkJCTc5
RDdCMEUxMjExNTJGRDIwMEZFN0M2NCAvKiBlbnRpdGxlbWVudHMucGxpc3QgKi8sCisJCQkJMTQ1
MzQ4NTcyMjkxNzM3RjAwQjFDMkVCIC8qIHRlc3RhcGkuZW50aXRsZW1lbnRzICovLAogCQkJCTE0
MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAw
MUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQkwRkVDODRCMjFCREFDRDVFMDA4MEZGNzQgLyog
YjMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdGFwaS5lbnRpdGxl
bWVudHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdGFwaS5lbnRpdGxlbWVudHMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTliMGEyYmYzYWEwNWUyYTBlMzhjZTYzNjAxZTlkMTBlZjhlOWQ2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0YXBpLmVudGl0bGVtZW50cwpAQCAt
MCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFE
T0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDov
L3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lv
bj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmNzLmFsbG93LWppdDwv
a2V5PgorCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLkphdmFTY3Jp
cHRDb3JlPC9rZXk+CisJPHRydWUvPgorPC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMwMjA0ZmNkODg4MmZhMTU1YzYxNzQ1YTNm
MzNkODkyNjg5Yjc4N2IuLjg4MjQ1MzVhMzYyMjU4MWE4ZDg3MTQ0YjZiMTA3MDBkNDcxMTcyMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjg4LDYgKzI4
OCw3IEBACiAJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZWR1bGVQYWlyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTlBMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5l
ZFBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b2RyYWluZWRQb29s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0
NiAvKiBBdXRvZHJhaW5lZFBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXV0b2RyYWluZWRQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQ5MzNFMjEyMjhDMjJERjAwRjc5RTQ2IC8qIERhdGFWYXVsdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVmF1bHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyaVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0RTc4NUU3MURGQjMzMDEwMDIwOUJEMSAvKiBPcmRpbmFsTnVtYmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yZGluYWxOdW1iZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRl
ZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVk
QXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2Myw2ICsxMzY0
LDcgQEAKIAkJQ0U3M0UwMjMxOURDQjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5
RTQ2IC8qIERhdGFWYXVsdFNQSS5oICovLAogCQkJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAv
KiBEaXNwYXRjaFNQSS5oICovLAogCQkJCTkzRERFOTMxMUNEQzA1MkQwMEZEMzQ5MSAvKiBkeWxk
U1BJLmggKi8sCiAJCQkJQTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0
NGJlZjkyNmM5MGMxMmY0ZjdkMTZjZDk0NjlmNjRmMjljYTk1NzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oCkBAIC0wLDAgKzEsNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIE9TKERBUldJTikKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisj
aW1wb3J0IDxyb290bGVzcy5oPgorI2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitpbnQg
cm9vdGxlc3NfY2hlY2tfZGF0YXZhdWx0X2ZsYWcoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hh
ciAqc3RvcmFnZV9jbGFzcyk7CisKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIE9TKERB
UldJTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370333</attachid>
            <date>2019-05-21 12:21:00 -0700</date>
            <delta_ts>2019-05-21 13:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197898-20190521212058.patch</filename>
            <type>text/plain</type>
            <size>1675</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTBmNmViMjkxMjViYjEyMTA1NGIyZDM3NWNhOWYwY2JmNjFmMDI2Li43OTA5N2E2ZDU0MTBiNDE0
ZGRhYjk4YzY0MzdiOGFkNmU0NThkZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wNS0yMSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggcHJvZHVjdGlvbiBidWlsZCBhZnRlciByMjQ1NTY0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJvZHVjdGlvbiBj
b25maWd1cmF0aW9uIHNob3VsZCBub3Qgc2V0IENPREVfU0lHTl9JREVOVElUWS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnOgorCiAyMDE5LTA1LTIx
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4IGFkZCBVTlVTRURfUEFSQU0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWcK
aW5kZXggZjIyODY0NjI5NmM3YjYyOTJmNjhjYWY0MDkyZDQ5YzVhM2FiOWZkMS4uMjYzOTQyZDIy
NTMxNTRhMDg5ZjJjOGViNzdkMjE2MzAwMmI3ZDIxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZp
ZwpAQCAtMzMsNyArMzMsMTEgQEAgVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0gWUVTOwog
VVNFX0lOVEVSTkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwogVVNFX0lOVEVS
TkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CiAKLUNPREVfU0lHTl9JREVO
VElUWVtzZGs9bWFjb3N4Kl0gPSAkKENPREVfU0lHTl9JREVOVElUWV8kKFVTRV9JTlRFUk5BTF9T
REspKQorQ09ERV9TSUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQoQ09ERV9TSUdOX0lERU5U
SVRZXyQoQ09ORklHVVJBVElPTikpOworCitDT0RFX1NJR05fSURFTlRJVFlfUHJvZHVjdGlvbiA9
ICQoQ09ERV9TSUdOX0lERU5USVRZX05PKTsKK0NPREVfU0lHTl9JREVOVElUWV9EZWJ1ZyA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1JlbGVhc2UgPSAkKENPREVfU0lHTl9JREVOVElUWV8kKFVTRV9JTlRFUk5BTF9TREspKTsK
IAogQ09ERV9TSUdOX0lERU5USVRZXyA9ICQoQ09ERV9TSUdOX0lERU5USVRZX05PKTsKIENPREVf
U0lHTl9JREVOVElUWV9OTyA9IC07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>