<?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>160089</bug_id>
          
          <creation_ts>2016-07-22 10:44:37 -0700</creation_ts>
          <short_desc>Removing IndexedDatabases that have stored blobs doesn&apos;t remove the blob files</short_desc>
          <delta_ts>2016-07-22 15:33:07 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213622</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-22 10:44:37 -0700</bug_when>
    <thetext>Removing IndexedDatabases that have stored blobs doesn&apos;t remove the blob files

&lt;rdar://problem/27495748&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213659</commentid>
    <comment_count>1</comment_count>
      <attachid>284352</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-22 11:40:28 -0700</bug_when>
    <thetext>Created attachment 284352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213663</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-22 11:41:38 -0700</bug_when>
    <thetext>Attachment 284352 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobThenDelete.mm:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobThenDelete.mm:90:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213673</commentid>
    <comment_count>3</comment_count>
      <attachid>284352</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-22 11:59:30 -0700</bug_when>
    <thetext>Comment on attachment 284352
Patch

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

Presumably a step in the right direction but I think there may be more to be done here.

What happens if the process crashes or battery runs out part way through the deletion process? Is there some mechanism to make sure that we return and delete what remains? If so, then it seems important to delete the database file last, since if the file does not exist, we skip the entire deletion process.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:561
&gt; +        Vector&lt;String&gt; blobPaths = listDirectory(databasePath, &quot;[0-9]*.blob&quot;);
&gt; +        for (auto&amp; blobPath : blobPaths) {

The local variable for blobPaths isn’t needed. The for loop extends its lifetime appropriately. It wouldn’t if we were calling a function on it, but it does because it’s the value of the thing after the colon. But maybe you prefer this style.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:564
&gt; +            // We need to validate each filename contains only digits before deleting it.

This comment comes close to saying “why” but doesn’t quite do it.

Where is the comment that explains the basic strategy. Why do we need to any of these files? Why do we need to delete all of these files? Why do we need to delete only these files? I have a guess about the strategy, but it would be really nice to be explicit.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:570
&gt; +            if (filename.length() &lt; 6)

I suggest putting length() in a local variable since it’s ned below in a loop and its implementation is not necessarily trivial enough to be hoisted out of it.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:577
&gt; +                if (!(filename[i] &gt;= &apos;0&apos; &amp;&amp; filename[i] &lt;= &apos;9&apos;)) {

I think isASCIIDigit would be better here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213709</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-22 13:19:36 -0700</bug_when>
    <thetext>All great comments I will address. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213738</commentid>
    <comment_count>5</comment_count>
      <attachid>284372</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-22 14:22:16 -0700</bug_when>
    <thetext>Created attachment 284372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213742</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-22 14:24:46 -0700</bug_when>
    <thetext>Attachment 284372 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobThenDelete.mm:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobThenDelete.mm:90:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213743</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-22 14:26:58 -0700</bug_when>
    <thetext>This new patch addresses all feedback, except for:

(In reply to comment #3)
&gt; What happens if the process crashes or battery runs out part way through the
&gt; deletion process? Is there some mechanism to make sure that we return and
&gt; delete what remains? If so, then it seems important to delete the database
&gt; file last, since if the file does not exist, we skip the entire deletion
&gt; process.

I did address deleting the sqlite3 database file last, which means if the process crashes/battery runs out partway through deleting blobs, the *next* attempt to delete the database will pick up where it left off.

I did *not* attempt to address the point that if there&apos;s a crash/power-outage, that the deletion process should automatically pick up where it left off.

There are strategies that could be applied to accomplish that, but I&apos;m not sure they&apos;re worth the effort for this edge case.

A lot of interesting tricks can be played to make the entire thing be atomic once APFS is widely deployed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213771</commentid>
    <comment_count>8</comment_count>
      <attachid>284372</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-22 15:33:02 -0700</bug_when>
    <thetext>Comment on attachment 284372
Patch

Clearing flags on attachment: 284372

Committed r203622: &lt;http://trac.webkit.org/changeset/203622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213772</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-22 15:33:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284352</attachid>
            <date>2016-07-22 11:40:28 -0700</date>
            <delta_ts>2016-07-22 14:22:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160089-20160722113927.patch</filename>
            <type>text/plain</type>
            <size>16865</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI2MWNiNWQ3MGU4NThk
MjM2MTUwZTYwNGMwMzBjNTZiODhlZThkYi4uMzQ2MWY3NjFmMzZlNzk1NTRiNGMxYzllYTA0OTQx
MGJhOWZlY2E0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA3LTIyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmluZyBJbmRleGVk
RGF0YWJhc2VzIHRoYXQgaGF2ZSBzdG9yZWQgYmxvYnMgZG9lc24ndCByZW1vdmUgdGhlIGJsb2Ig
ZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjAwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0ZWQgYnkgQVBJIHRlc3QgSW5kZXhlZERCLlN0b3JlQmxvYlRoZW5EZWxldGUuCisKKyAgICAg
ICAgQmxvYiBmaWxlbmFtZXMgZXhpc3QgaW4gdGhlIElEQiBkaXJlY3Rvcnkgd2l0aCB0aGUgbmFt
ZSAiWzAtOV0rLmJsb2IiLgorICAgICAgICAKKyAgICAgICAgVGhhdCBpcywgb25lIG9yIG1vcmUg
ZGlnaXRzLCBmb2xsb3dlZCBieSAiLmJsb2IiLgorICAgICAgICAKKyAgICAgICAgU28gd2hlbiB3
ZSBkZWxldGUgYW4gSW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgZmlsZXMsIHdlIHNob3Vs
ZCBkZWxldGUgdGhvc2UgYmxvYiBmaWxlcyBhcyB3ZWxsLgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6cmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aCk6CisKIDIwMTYtMDct
MjEgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBU
aGUgR1NUUkVBTUVSX0dMIHBhdGggaW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoKSBpcyBtaXNzaW5nIGEgbXV0ZXggbG9jawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApp
bmRleCBhYWI1YmU1MDM2MjZiYzE3NTZjY2VjNTlmODBjOTJlMTRlMGMzZTA3Li4zYzE4ZDMyYmYy
M2EwNjgyNDlmYzdhZDVkNmQ0NTBmMjRlOGVlN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtNTU2LDYgKzU1
NiwzNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0
IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICB9CiAKICAgICAgICAgU1FM
aXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGRhdGFiYXNlRmlsZSk7CisKKyAgICAg
ICAgVmVjdG9yPFN0cmluZz4gYmxvYlBhdGhzID0gbGlzdERpcmVjdG9yeShkYXRhYmFzZVBhdGgs
ICJbMC05XSouYmxvYiIpOworICAgICAgICBmb3IgKGF1dG8mIGJsb2JQYXRoIDogYmxvYlBhdGhz
KSB7CisgICAgICAgICAgICAvLyBVc2luZyBnbG9iYmluZyB0aGVyZSdzIG5vIHdheSB0byBnZXQg
ZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggMS1vci1tb3JlIGRpZ2l0cy4KKyAgICAgICAgICAgIC8v
IFRoZSBhYm92ZSBnbG9iYmluZyBnaXZlcyB1cyBmaWxlcyB0aGF0IHN0YXJ0IHdpdGggYSBkaWdp
dCBhbmQgZW5kcyB3aXRoICIuYmxvYiIsIGJ1dCB0aGVyZSBtaWdodCBiZSBub24tZGlnaXRzIGlu
IGJldHdlZW4uCisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHZhbGlkYXRlIGVhY2ggZmlsZW5h
bWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0LgorICAgICAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKGJsb2JQYXRoKTsKKworICAgICAgICAg
ICAgQVNTRVJUKGZpbGVuYW1lLmxlbmd0aCgpID49IDYpOworICAgICAgICAgICAgQVNTRVJUKGZp
bGVuYW1lLmVuZHNXaXRoKCIuYmxvYiIpKTsKKworICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmxl
bmd0aCgpIDwgNikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgh
ZmlsZW5hbWUuZW5kc1dpdGgoIi5ibG9iIikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGJvb2wgdmFsaWRGaWxlbmFtZSA9IHRydWU7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZW5hbWUubGVuZ3RoKCkgLSA1OyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIShmaWxlbmFtZVtpXSA+PSAnMCcgJiYgZmlsZW5hbWVbaV0gPD0gJzkn
KSkgeworICAgICAgICAgICAgICAgICAgICB2YWxpZEZpbGVuYW1lID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHZhbGlkRmlsZW5hbWUpCisgICAgICAgICAgICAgICAgZGVsZXRlRmls
ZShibG9iUGF0aCk7CisgICAgICAgIH0KKwogICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShk
YXRhYmFzZVBhdGgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGFkZDU1ODlkYjc2NmExNTYwZGVkMGYxMmVmMDQ5MTg4MGM0NmE0
ZDMuLjY0ZjEyYWI4YmM1MThhOTAzZmYwODhmZmI5ZWZmOWRlYmE2MjBjMmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNi0wNy0yMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZpbmcgSW5kZXhlZERhdGFiYXNlcyB0aGF0IGhhdmUgc3RvcmVkIGJsb2JzIGRvZXNuJ3Qg
cmVtb3ZlIHRoZSBibG9iIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwMDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9TdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sOiBBZGRlZC4KKwog
MjAxNi0wNy0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gV2ViIHZpZXcgYmFja2dyb3VuZCBjb2xvcnMgZG9uJ3Qgd29yayBpbiBh
Y2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3
ZjkwMzg2MmMzZjBiNjM3N2ZiZjM1YWZiNGYyNTliMGMyMThlYTEuLjgxMTVlYzA3ZTcxN2Q1OGI1
NzY2MGQ2ZTU2YjBhN2NjZTNmNGY0NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OCw2
ICs3OCw4IEBACiAJCTUxMDQ3Nzc4MUQyOTkyM0IwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVy
eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3
Nzc1MUQyOThFMDMwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSAqLzsgfTsKIAkJNTEz
OTNFMjIxNTIzOTUyRDAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5M0Ux
RDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCAq
LzsgfTsKIAkJNTE0MkIyNzMxNTE3QzhDODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVS
TC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRt
bCAqLzsgfTsKKwkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxl
dGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0
bWwgKi87IH07CisJCTUxNUJFMTcxMUQ0MjhFNEIwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVs
ZXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1
QkUxNzAxRDQyOEJEMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUubW0gKi87IH07CiAJ
CTUxNzE0RUI0MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5o
dG1sICovOyB9OwogCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJ
REJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJ
REJDbGVhbnVwLTIuaHRtbCAqLzsgfTsKIAkJNTE3MTRFQjgxQ0Y4Q0ExNzAwNDcyM0M0IC8qIFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2ls
bElEQkNsZWFudXAubW0gKi87IH07CkBAIC00OTMsNiArNDk1LDcgQEAKIAkJCWRzdFBhdGggPSBU
ZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmls
ZXMgPSAoCisJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxl
dGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5RTU5NDExRDNFQjVBQzAwRTND
NjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5
RTU5NDIxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQzMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlv
bkNhY2hlLmRiLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTc0NSw2ICs3NDgsOCBAQAog
CQk1MTM5M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9u
QmFzaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQyQjI3MDE1MTdDODhC
MDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyogQ29udGV4dE1l
bnVDYW5Db3B5VVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb250ZXh0TWVu
dUNhbkNvcHlVUkwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUxNkUx
RDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhl
bkRlbGV0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3Jl
QmxvYlRoZW5EZWxldGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUIy
MUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQg
LyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxs
SURCQ2xlYW51cC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMzgsNiArMTI0Myw3IEBACiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVp
cmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIw
MTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAog
CQkJCTJEOUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKKwkJCQk1
MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLywKIAkJ
CQk3Q0MzRTFGQTE5N0UyMzQxMDBCRTYyNTIgLyogVXNlckNvbnRlbnRDb250cm9sbGVyLm1tICov
LAogCQkJCTdDODgyRTAzMUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkLm1tICov
LAogCQkJCTdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0lu
Lm1tICovLApAQCAtMTM1NCw2ICsxMzYwLDcgQEAKIAkJCQk0NkM1MTlFMzFEMzU2Mjk2MDBEQUE1
MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlICovLAogCQkJCTQ2QzUx
OUU0MUQzNTYyOTYwMERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3Jh
Z2Utc2htICovLAogCQkJCTdDQ0I5OTIyMUQzQjQ0RTcwMDM5MjJGNiAvKiBvcGVuLW11bHRpcGxl
LWV4dGVybmFsLXVybC5odG1sICovLAorCQkJCTUxNUJFMTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBT
dG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjND
NCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0RUIzMUNG
OEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAogCQkJ
KTsKQEAgLTIyMDUsNiArMjIxMiw3IEBACiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8q
IFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTcxQTQx
MUExMzAwNDQ3QzRDIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTgzNUNGOTY3MUQyNUZDRDYwMDFBNjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxNzExRDQyOEU0QjAwREQ3QzY4
IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFB
NDExQUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YwQjFBNDExQUU2MDA0NDdDNEMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNFMEJEMUQwQTY1MEMwMEZFQkNGMyAvKiBGdWxsc2NyZWVuVG9wQ29u
dGVudEluc2V0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNDA4YjI4YWY2YTkyZDYwNjZmMmUxOWVkZjQwMjczODhjYTY3OTkzCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVC
bG9iVGhlbkRlbGV0ZS5tbQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dC5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGJvb2wgcmVhZHlUb0NvbnRpbnVlOwor
c3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOworCitA
aW50ZXJmYWNlIFN0b3JlQmxvYk1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTdG9yZUJsb2JNZXNzYWdlSGFu
ZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRy
b2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdL
U2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwor
ICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworQGVuZAorCitURVNUKEluZGV4
ZWREQiwgU3RvcmVCbG9iVGhlbkRlbGV0ZSkKK3sKKyAgICBSZXRhaW5QdHI8U3RvcmVCbG9iTWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU3RvcmVCbG9iTWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAg
IFtjb25maWd1cmF0aW9uIF9zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczpZRVNd
OworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJTdG9yZUJsb2JUb0JlRGVsZXRlZCIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWFkeVRvQ29udGludWUpOworICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nlc3MiLCAoTlNT
dHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgTlNTdHJpbmcgKmJsb2JG
aWxlUGF0aCA9IFtAIn4vTGlicmFyeS9XZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9J
bmRleGVkREIvZmlsZV9fMC9TdG9yZUJsb2JUb0JlRGVsZXRlZC8xLmJsb2IiIHN0cmluZ0J5RXhw
YW5kaW5nVGlsZGVJblBhdGhdOworICAgIE5TU3RyaW5nICpkYXRhYmFzZUZpbGVQYXRoID0gW0Ai
fi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL0luZGV4ZWREQi9maWxl
X18wL1N0b3JlQmxvYlRvQmVEZWxldGVkL0luZGV4ZWREQi5zcWxpdGUzIiBzdHJpbmdCeUV4cGFu
ZGluZ1RpbGRlSW5QYXRoXTsKKworICAgIC8vIFRoZSBkYXRhYmFzZSBmaWxlIGFuZCBibG9iIGZp
bGUgc2hvdWxkIGRlZmluaXRlbHkgYmUgdGhlcmUgcmlnaHQgbm93LgorICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmls
ZVBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOworCisgICAgLy8gTWFrZSBzb21l
IG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFs
aWRhdGUgdGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBkZWxldGVkLgorICAgIE5TU3Ry
aW5nICpvdGhlckJsb2IxID0gW0Aifi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNp
dGVEYXRhL0luZGV4ZWREQi9maWxlX18wL1N0b3JlQmxvYlRvQmVEZWxldGVkLzcxODIuYmxvYiIg
c3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisgICAgTlNTdHJpbmcgKm90aGVyQmxvYjIg
PSBbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvSW5kZXhlZERC
L2ZpbGVfXzAvU3RvcmVCbG9iVG9CZURlbGV0ZWQvMWEuYmxvYiIgc3RyaW5nQnlFeHBhbmRpbmdU
aWxkZUluUGF0aF07CisgICAgTlNTdHJpbmcgKm90aGVyQmxvYjMgPSBbQCJ+L0xpYnJhcnkvV2Vi
S2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCL2ZpbGVfXzAvU3RvcmVCbG9i
VG9CZURlbGV0ZWQvYTEuYmxvYiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisgICAg
TlNTdHJpbmcgKm90aGVyQmxvYjQgPSBbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkv
V2Vic2l0ZURhdGEvSW5kZXhlZERCL2ZpbGVfXzAvU3RvcmVCbG9iVG9CZURlbGV0ZWQvLmJsb2Ii
IHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2Ix
IGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRl
bUF0UGF0aDpibG9iRmlsZVBhdGggdG9QYXRoOm90aGVyQmxvYjIgZXJyb3I6bmlsXTsKKyAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0
aCB0b1BhdGg6b3RoZXJCbG9iMyBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2I0
IGVycm9yOm5pbF07CisKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBk
aXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmls
ZVBhdGhdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CisKKyAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSBmYWtlIGJsb2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUg
aXMgZ29uZS4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IxXSk7CisKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSBmYWtlIGJsb2IgZmlsZXMgd2l0aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUg
c3RpbGwgdGhlcmUuCisgICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2IzXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CisKKyAgICAgICAgLy8gTm93IGRl
bGV0ZSB0aGVtIHNvIHdlJ3JlIG5vdCBsZWF2aW5nIGZpbGVzIGFyb3VuZC4KKyAgICAgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOm90aGVyQmxvYjIg
ZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1v
dmVJdGVtQXRQYXRoOm90aGVyQmxvYjMgZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOm90aGVyQmxvYjQgZXJyb3I6bmls
XTsKKworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TdG9yZUJsb2JU
b0JlRGVsZXRlZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
U3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2FmOTcyYWQzMDMxNzdmYzEy
MzA1YzRjYzMwNmFmOWFlMjNiMjNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRtbApAQCAtMCww
ICsxLDQxIEBACis8c2NyaXB0PgorCit2YXIgZGJOYW1lID0gIlN0b3JlQmxvYlRvQmVEZWxldGVk
IjsKK3ZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYk5hbWUp
OworcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKQoreworICAgIGNvbnRpbnVlVGVzdCgp
OworfQorcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKK3sKKyAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRXJyb3IgZGVsZXRpbmcg
ZGF0YWJhc2UnKTsKK30KKwordmFyIGRiOworCitmdW5jdGlvbiBjb250aW51ZVRlc3QoZXZlbnQp
Cit7CisgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKwor
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBkYiA9
IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoIlRlc3RTdG9yZSIpOworCisgICAgICAgIGNvbnN0IGJsb2JEYXRhID0gWyJmdW4g
IiwgInRpbWVzICIsICJhbGwgIiwgImFyb3VuZCEiXTsKKyAgICAgICAgbGV0IGJsb2IgPSBuZXcg
QmxvYihibG9iRGF0YSwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSk7CisKKyAgICAgICAgdmFyIGFk
ZFJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoYmxvYiwgIkJsb2JLZXkiKTsKKyAgICAgICAgYWRk
UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRXJyb3Igc3RvcmluZyBi
bG9iIGluIGRhdGFiYXNlJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkYi5jbG9zZSgpOworICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnU3VjY2Vzcycp
OworICAgIH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0Vycm9y
IHN0b3JpbmcgYmxvYiBpbiBkYXRhYmFzZScpOworICAgIH0KK30KKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284372</attachid>
            <date>2016-07-22 14:22:16 -0700</date>
            <delta_ts>2016-07-22 15:33:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160089-20160722142114.patch</filename>
            <type>text/plain</type>
            <size>17828</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI2MWNiNWQ3MGU4NThk
MjM2MTUwZTYwNGMwMzBjNTZiODhlZThkYi4uNDNmY2MzMDU4ZTViNjI4NTJkZDYzYTU5ZTlmMjdh
OTdhMTkyM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA3LTIyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmluZyBJbmRleGVk
RGF0YWJhc2VzIHRoYXQgaGF2ZSBzdG9yZWQgYmxvYnMgZG9lc24ndCByZW1vdmUgdGhlIGJsb2Ig
ZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjAwODkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUZXN0
ZWQgYnkgQVBJIHRlc3QgSW5kZXhlZERCLlN0b3JlQmxvYlRoZW5EZWxldGUuCisKKyAgICAgICAg
QmxvYiBmaWxlbmFtZXMgZXhpc3QgaW4gdGhlIElEQiBkaXJlY3Rvcnkgd2l0aCB0aGUgbmFtZSAi
WzAtOV0rLmJsb2IiLgorICAgICAgICAKKyAgICAgICAgVGhhdCBpcywgb25lIG9yIG1vcmUgZGln
aXRzLCBmb2xsb3dlZCBieSAiLmJsb2IiLgorICAgICAgICAKKyAgICAgICAgU28gd2hlbiB3ZSBk
ZWxldGUgYW4gSW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgZmlsZXMsIHdlIHNob3VsZCBk
ZWxldGUgdGhvc2UgYmxvYiBmaWxlcyBhcyB3ZWxsLgorICAgICAgICAKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6cmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aCk6CisKIDIwMTYtMDctMjEg
IE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUaGUg
R1NUUkVBTUVSX0dMIHBhdGggaW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIoKSBpcyBtaXNzaW5nIGEgbXV0ZXggbG9jawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRl
eCBhYWI1YmU1MDM2MjZiYzE3NTZjY2VjNTlmODBjOTJlMTRlMGMzZTA3Li5kMTgwNTlmMjViNzUx
YjJkYjFjMTBhOGExNDcyYzliYjVmMTU1NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtNTU1LDEwICs1NTUs
NTIgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChjb25zdCBT
dHJpbmcmIG9yaWdpblBhdGgsIHN0ZDo6Y2hyb24KICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCisgICAgICAgIC8vIERlbGV0aW5nIHRoaXMgZGF0YWJhc2UgbWVhbnMgd2Ug
bmVlZCB0byBkZWxldGUgYWxsIGZpbGVzIHRoYXQgcmVwcmVzZW50IGl0LgorICAgICAgICAvLyBU
aGlzIGluY2x1ZGVzOgorICAgICAgICAvLyAgICAgLSBUaGUgZGlyZWN0b3J5IGl0c2VsZiwgd2hp
Y2ggaXMgbmFtZWQgYWZ0ZXIgdGhlIGRhdGFiYXNlLgorICAgICAgICAvLyAgICAgLSBJbmRleGVk
REIuc3FsaXRlMyBhbmQgcmVsYXRlZCBTUUxpdGUgZmlsZXMuCisgICAgICAgIC8vICAgICAtIEJs
b2IgZmlsZXMgdGhhdCB3ZSBzdG9yZWQgaW4gdGhlIGRpcmVjdG9yeS4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gVG8gYmUgY29uc2VydmF0aXZlLCB3ZSBzaG91bGQgKm5vdCogdHJ5IHRvIGRlbGV0
ZSBmaWxlcyB0aGF0IGFyZSB1bmV4cGVjdGVkOworICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZWxldGUgZmlsZXMgd2UgdGhpbmsgd2UgcHV0IHRoZXJlLgorICAgICAgICAvLworICAgICAgICAv
LyBJbmRleGVkREIgYmxvYiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRl
Y2ltYWwgaW50ZWdlciwKKyAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmls
ZXMgd2Ugc2hvdWxkIGJlIHRyeWluZyB0byBkZWxldGUuCisgICAgICAgIGZvciAoYXV0byYgYmxv
YlBhdGggOiBsaXN0RGlyZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAg
ICAgICAgICAgIC8vIEdsb2JiaW5nIGNhbid0IGdpdmUgdXMgb25seSBmaWxlbmFtZXMgc3RhcnRp
bmcgd2l0aCAxLW9yLW1vcmUgZGlnaXRzLgorICAgICAgICAgICAgLy8gVGhlIGFib3ZlIGdsb2Ji
aW5nIGdpdmVzIHVzIGZpbGVzIHRoYXQgc3RhcnQgd2l0aCBhIGRpZ2l0IGFuZCBlbmRzIHdpdGgg
Ii5ibG9iIiwgYnV0IHRoZXJlIG1pZ2h0IGJlIG5vbi1kaWdpdHMgaW4gYmV0d2Vlbi4KKyAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gdmFsaWRhdGUgdGhhdCBlYWNoIGZpbGVuYW1lIGNvbnRhaW5z
IG9ubHkgZGlnaXRzIGJlZm9yZSBkZWxldGluZyBpdCwgYXMgYW55IG90aGVyIGZpbGVzIGFyZSBu
b3Qgb25lcyB3ZSBwdXQgdGhlcmUuCisgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRo
R2V0RmlsZU5hbWUoYmxvYlBhdGgpOworICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9
IGZpbGVuYW1lLmxlbmd0aCgpOworCisgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGgg
Pj0gNik7CisgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWUuZW5kc1dpdGgoIi5ibG9iIikpOwor
CisgICAgICAgICAgICBpZiAoZmlsZW5hbWUubGVuZ3RoKCkgPCA2KQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aCgiLmJsb2IiKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYm9vbCB2YWxpZEZpbGVu
YW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlbmFt
ZUxlbmd0aCAtIDU7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGZp
bGVuYW1lW2ldKSkgeworICAgICAgICAgICAgICAgICAgICB2YWxpZEZpbGVuYW1lID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHZhbGlkRmlsZW5hbWUpCisgICAgICAgICAgICAgICAg
ZGVsZXRlRmlsZShibG9iUGF0aCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgZGVsZXRl
IEluZGV4ZWREQi5zcWxpdGUzIGFuZCByZWxhdGVkIFNRTGl0ZSBmaWxlcy4KICAgICAgICAgU1FM
aXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGRhdGFiYXNlRmlsZSk7CisKKyAgICAg
ICAgLy8gQW5kIGZpbmFsbHksIGlmIHdlIGNhbiwgZGVsZXRlIHRoZSBlbXB0eSBkaXJlY3Rvcnku
CiAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRhdGFiYXNlUGF0aCk7CiAgICAgfQogCisg
ICAgLy8gSWYgbm8gZGF0YWJhc2VzIHJlbWFpbiBmb3IgdGhpcyBvcmlnaW4sIHdlIGNhbiBkZWxl
dGUgdGhlIG9yaWdpbiBkaXJlY3RvcnkgYXMgd2VsbC4KICAgICBkZWxldGVFbXB0eURpcmVjdG9y
eShvcmlnaW5QYXRoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGFkZDU1ODlkYjc2NmExNTYwZGVkMGYxMmVmMDQ5MTg4MGM0NmE0ZDMu
LjBhNGM1Y2U4MjFjOGI3MGI2N2M0YjlkMDRjOTVkYTZkNjdhOGIzMzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Ni0wNy0yMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZpbmcgSW5kZXhlZERhdGFiYXNlcyB0aGF0IGhhdmUgc3RvcmVkIGJsb2JzIGRvZXNuJ3QgcmVt
b3ZlIHRoZSBibG9iIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwMDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TdG9y
ZUJsb2JUaGVuRGVsZXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9TdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sOiBBZGRlZC4KKwogMjAxNi0w
Ny0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gV2ViIHZpZXcgYmFja2dyb3VuZCBjb2xvcnMgZG9uJ3Qgd29yayBpbiBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3ZjkwMzg2
MmMzZjBiNjM3N2ZiZjM1YWZiNGYyNTliMGMyMThlYTEuLjgxMTVlYzA3ZTcxN2Q1OGI1NzY2MGQ2
ZTU2YjBhN2NjZTNmNGY0NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OCw2ICs3OCw4
IEBACiAJCTUxMDQ3Nzc4MUQyOTkyM0IwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3Nzc1MUQy
OThFMDMwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSAqLzsgfTsKIAkJNTEzOTNFMjIx
NTIzOTUyRDAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5M0UxRDE1MjM5
NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCAqLzsgfTsK
IAkJNTE0MkIyNzMxNTE3QzhDODAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NDJCMjcyMTUxN0M4OTEwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCAqLzsg
fTsKKwkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi87
IH07CisJCTUxNUJFMTcxMUQ0MjhFNEIwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzAx
RDQyOEJEMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUubW0gKi87IH07CiAJCTUxNzE0
RUI0MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0
RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICov
OyB9OwogCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTIuaHRtbCAqLzsgfTsKIAkJNTE3MTRFQjgxQ0Y4Q0ExNzAwNDcyM0M0IC8qIFdlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0gKi87IH07CkBAIC00OTMsNiArNDk1LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2Vi
S2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAo
CisJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5RTU5NDExRDNFQjVBQzAwRTNDNjJFIC8q
IEFwcGxpY2F0aW9uQ2FjaGUuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5RTU5NDIx
RDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTVDOUU1OTQzMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hl
LmRiLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTc0NSw2ICs3NDgsOCBAQAogCQk1MTM5
M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQyQjI3MDE1MTdDODhCMDBDMzJC
MTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5D
b3B5VVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb250ZXh0TWVudUNhbkNv
cHlVUkwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUxNkUxRDQyODhG
RjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JlQmxvYlRo
ZW5EZWxldGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUIyMUNGOEM3
NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2Vi
UHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xl
YW51cC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMzgs
NiArMTI0Myw3IEBACiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNl
ckFjdGlvbkZvclBsYXliYWNrLm1tICovLAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAv
KiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJE
OUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKKwkJCQk1MTVCRTE3
MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLywKIAkJCQk3Q0Mz
RTFGQTE5N0UyMzQxMDBCRTYyNTIgLyogVXNlckNvbnRlbnRDb250cm9sbGVyLm1tICovLAogCQkJ
CTdDODgyRTAzMUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkLm1tICovLAogCQkJ
CTdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICov
LApAQCAtMTM1NCw2ICsxMzYwLDcgQEAKIAkJCQk0NkM1MTlFMzFEMzU2Mjk2MDBEQUE1MUEgLyog
TG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubG9jYWxzdG9yYWdlICovLAogCQkJCTQ2QzUxOUU0MUQz
NTYyOTYwMERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5sb2NhbHN0b3JhZ2Utc2ht
ICovLAogCQkJCTdDQ0I5OTIyMUQzQjQ0RTcwMDM5MjJGNiAvKiBvcGVuLW11bHRpcGxlLWV4dGVy
bmFsLXVybC5odG1sICovLAorCQkJCTUxNUJFMTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBTdG9yZUJs
b2JUb0JlRGVsZXRlZC5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBX
ZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0RUIzMUNGOEM3NjEw
MDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAogCQkJKTsKQEAg
LTIyMDUsNiArMjIxMiw3IEBACiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRm
b3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTcxQTQxMUExMzAw
NDQ3QzRDIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzNUNG
OTY3MUQyNUZDRDYwMDFBNjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxNzExRDQyOEU0QjAwREQ3QzY4IC8qIFN0
b3JlQmxvYlRoZW5EZWxldGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDExQUY2
MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQjFB
NDExQUU2MDA0NDdDNEMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNFMEJEMUQwQTY1MEMwMEZFQkNGMyAvKiBGdWxsc2NyZWVuVG9wQ29udGVudElu
c2V0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNDA4YjI4YWY2YTkyZDYwNjZmMmUxOWVkZjQwMjczODhjYTY3OTkzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVCbG9iVGhl
bkRlbGV0ZS5tbQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgor
I2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGJvb2wgcmVhZHlUb0NvbnRpbnVlOworc3RhdGlj
IFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOworCitAaW50ZXJm
YWNlIFN0b3JlQmxvYk1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTdG9yZUJsb2JNZXNzYWdlSGFuZGxlcgor
CistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
Kil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0
TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIGxh
c3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworQGVuZAorCitURVNUKEluZGV4ZWREQiwg
U3RvcmVCbG9iVGhlbkRlbGV0ZSkKK3sKKyAgICBSZXRhaW5QdHI8U3RvcmVCbG9iTWVzc2FnZUhh
bmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU3RvcmVCbG9iTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIFtjb25m
aWd1cmF0aW9uIF9zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczpZRVNdOworCisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJTdG9yZUJsb2JUb0JlRGVsZXRlZCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFk
eVRvQ29udGludWUpOworICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nlc3MiLCAoTlNTdHJpbmcg
KilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgTlNTdHJpbmcgKmJsb2JGaWxlUGF0
aCA9IFtAIn4vTGlicmFyeS9XZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9JbmRleGVk
REIvZmlsZV9fMC9TdG9yZUJsb2JUb0JlRGVsZXRlZC8xLmJsb2IiIHN0cmluZ0J5RXhwYW5kaW5n
VGlsZGVJblBhdGhdOworICAgIE5TU3RyaW5nICpkYXRhYmFzZUZpbGVQYXRoID0gW0Aifi9MaWJy
YXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL0luZGV4ZWREQi9maWxlX18wL1N0
b3JlQmxvYlRvQmVEZWxldGVkL0luZGV4ZWREQi5zcWxpdGUzIiBzdHJpbmdCeUV4cGFuZGluZ1Rp
bGRlSW5QYXRoXTsKKworICAgIC8vIFRoZSBkYXRhYmFzZSBmaWxlIGFuZCBibG9iIGZpbGUgc2hv
dWxkIGRlZmluaXRlbHkgYmUgdGhlcmUgcmlnaHQgbm93LgorICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhd
KTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOworCisgICAgLy8gTWFrZSBzb21lIG90aGVy
IC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUg
dGhhdCBvbmx5IGFwcHJvcHJpYXRlIGZpbGVzIGFyZSBkZWxldGVkLgorICAgIE5TU3RyaW5nICpv
dGhlckJsb2IxID0gW0Aifi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRh
L0luZGV4ZWREQi9maWxlX18wL1N0b3JlQmxvYlRvQmVEZWxldGVkLzcxODIuYmxvYiIgc3RyaW5n
QnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisgICAgTlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbQCJ+
L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCL2ZpbGVf
XzAvU3RvcmVCbG9iVG9CZURlbGV0ZWQvMWEuYmxvYiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUlu
UGF0aF07CisgICAgTlNTdHJpbmcgKm90aGVyQmxvYjMgPSBbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rl
c3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCL2ZpbGVfXzAvU3RvcmVCbG9iVG9CZURl
bGV0ZWQvYTEuYmxvYiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CisgICAgTlNTdHJp
bmcgKm90aGVyQmxvYjQgPSBbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0
ZURhdGEvSW5kZXhlZERCL2ZpbGVfXzAvU3RvcmVCbG9iVG9CZURlbGV0ZWQvLmJsb2IiIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2IxIGVycm9y
Om5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0
aDpibG9iRmlsZVBhdGggdG9QYXRoOm90aGVyQmxvYjIgZXJyb3I6bmlsXTsKKyAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0b1Bh
dGg6b3RoZXJCbG9iMyBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2I0IGVycm9y
Om5pbF07CisKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhd
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CisKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSBmYWtlIGJsb2IgZmlsZSB3aXRoIGEgdmFsaWQgYmxvYiBmaWxlIG5hbWUgaXMgZ29u
ZS4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IxXSk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBmYWtlIGJsb2IgZmlsZXMgd2l0aCBpbnZhbGlkIGJsb2IgZmlsZSBuYW1lcyBhcmUgc3RpbGwg
dGhlcmUuCisgICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2Iz
XSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0XSk7CisKKyAgICAgICAgLy8gTm93IGRlbGV0ZSB0
aGVtIHNvIHdlJ3JlIG5vdCBsZWF2aW5nIGZpbGVzIGFyb3VuZC4KKyAgICAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOm90aGVyQmxvYjIgZXJyb3I6
bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVt
QXRQYXRoOm90aGVyQmxvYjMgZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOm90aGVyQmxvYjQgZXJyb3I6bmlsXTsKKwor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TdG9yZUJsb2JUb0JlRGVs
ZXRlZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVC
bG9iVG9CZURlbGV0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2FmOTcyYWQzMDMxNzdmYzEyMzA1YzRj
YzMwNmFmOWFlMjNiMjNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRtbApAQCAtMCwwICsxLDQx
IEBACis8c2NyaXB0PgorCit2YXIgZGJOYW1lID0gIlN0b3JlQmxvYlRvQmVEZWxldGVkIjsKK3Zh
ciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYk5hbWUpOworcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKQoreworICAgIGNvbnRpbnVlVGVzdCgpOworfQor
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRXJyb3IgZGVsZXRpbmcgZGF0YWJh
c2UnKTsKK30KKwordmFyIGRiOworCitmdW5jdGlvbiBjb250aW51ZVRlc3QoZXZlbnQpCit7Cisg
ICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKworICAgIHJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBkYiA9IGUudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoIlRlc3RTdG9yZSIpOworCisgICAgICAgIGNvbnN0IGJsb2JEYXRhID0gWyJmdW4gIiwgInRp
bWVzICIsICJhbGwgIiwgImFyb3VuZCEiXTsKKyAgICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihi
bG9iRGF0YSwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSk7CisKKyAgICAgICAgdmFyIGFkZFJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQoYmxvYiwgIkJsb2JLZXkiKTsKKyAgICAgICAgYWRkUmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRXJyb3Igc3RvcmluZyBibG9iIGlu
IGRhdGFiYXNlJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBkYi5jbG9zZSgpOworICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnU3VjY2VzcycpOworICAg
IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0Vycm9yIHN0b3Jp
bmcgYmxvYiBpbiBkYXRhYmFzZScpOworICAgIH0KK30KKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>