<?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>155188</bug_id>
          
          <creation_ts>2016-03-08 13:25:25 -0800</creation_ts>
          <short_desc>Web Inspector: Add a way to create a Heap Snapshot</short_desc>
          <delta_ts>2016-03-08 17:59:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>155190</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172166</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 13:25:25 -0800</bug_when>
    <thetext>* SUMMARY
Add a way to create a Heap Snapshot.

HeapAgent.snapshot =&gt; (error, timestamp, snapshotData)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172168</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-08 13:26:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/25042222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172169</commentid>
    <comment_count>2</comment_count>
      <attachid>273322</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 13:28:25 -0800</bug_when>
    <thetext>Created attachment 273322
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172178</commentid>
    <comment_count>3</comment_count>
      <attachid>273324</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 13:42:58 -0800</bug_when>
    <thetext>Created attachment 273324
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172198</commentid>
    <comment_count>4</comment_count>
      <attachid>273334</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 13:53:28 -0800</bug_when>
    <thetext>Created attachment 273334
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172223</commentid>
    <comment_count>5</comment_count>
      <attachid>273341</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 14:26:12 -0800</bug_when>
    <thetext>Created attachment 273341
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172302</commentid>
    <comment_count>6</comment_count>
      <attachid>273341</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-08 16:39:56 -0800</bug_when>
    <thetext>Comment on attachment 273341
[PATCH] Proposed Fix

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

very clean. r=me

&gt; LayoutTests/inspector/heap/snapshot.html:22
&gt; +                resolve();

I&apos;m assuming these magic numbers come from builtins / injected scripts?

&gt; Source/JavaScriptCore/inspector/protocol/Heap.json:18
&gt; +            &quot;type&quot;: &quot;string&quot;

I am tempted to add JSON and base64 to the protocol, if we add more uses (which we will).

&gt; Source/WebInspectorUI/UserInterface/Models/HeapSnapshot.js:88
&gt; +            let nodePayload = nodes[i];

I assume this loop body is what led you to complain about slow array restructuring.

&gt; Source/WebInspectorUI/UserInterface/Models/HeapSnapshot.js:116
&gt; +        console.assert(rootNode, &quot;Node with identifier 0 is the artificial &lt;root&gt; node.&quot;);

s/artificial/synthetic/

&gt; Source/WebInspectorUI/UserInterface/Models/HeapSnapshotEdge.js:30
&gt; +        this.from = from;

Might be worth adding a comment saying this is a directed edge between two HeapSnapshotNodes, &apos;to&apos; and &apos;from&apos;. Adding assertions to that effect is probably a perf problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172305</commentid>
    <comment_count>7</comment_count>
      <attachid>273341</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 16:43:52 -0800</bug_when>
    <thetext>Comment on attachment 273341
[PATCH] Proposed Fix

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

&gt;&gt; LayoutTests/inspector/heap/snapshot.html:22
&gt;&gt; +                resolve();
&gt; 
&gt; I&apos;m assuming these magic numbers come from builtins / injected scripts?

Nope, the magic numbers are just low ball estimates to ensure they are not 0. The heap size should be at least 1kb for a page, with at least 100 objects (all the builtin APIs), and at least one &quot;Window&quot;.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Heap.json:18
&gt;&gt; +            &quot;type&quot;: &quot;string&quot;
&gt; 
&gt; I am tempted to add JSON and base64 to the protocol, if we add more uses (which we will).

Yeah, I considered this! Worth adding in the future for sure.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/HeapSnapshot.js:88
&gt;&gt; +            let nodePayload = nodes[i];
&gt; 
&gt; I assume this loop body is what led you to complain about slow array restructuring.

Correct.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/HeapSnapshotEdge.js:30
&gt;&gt; +        this.from = from;
&gt; 
&gt; Might be worth adding a comment saying this is a directed edge between two HeapSnapshotNodes, &apos;to&apos; and &apos;from&apos;. Adding assertions to that effect is probably a perf problem.

Yes, adding an assert was a performance problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172307</commentid>
    <comment_count>8</comment_count>
      <attachid>273367</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-08 16:47:48 -0800</bug_when>
    <thetext>Created attachment 273367
[PATCH] For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172320</commentid>
    <comment_count>9</comment_count>
      <attachid>273367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-08 17:38:30 -0800</bug_when>
    <thetext>Comment on attachment 273367
[PATCH] For Landing

Clearing flags on attachment: 273367

Committed r197822: &lt;http://trac.webkit.org/changeset/197822&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273322</attachid>
            <date>2016-03-08 13:28:25 -0800</date>
            <delta_ts>2016-03-08 13:42:58 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>heap-snapshot.patch</filename>
            <type>text/plain</type>
            <size>23666</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODlkNmRhLi4xNDY3MWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMt
MDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBTbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC9z
bmFwc2hvdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9oZWFwL3Nu
YXBzaG90Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTA4ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1tYXJr
ZXItb3JpZW50LWZyb20tYW5nbGUtdG8tYXV0b3N0YXJ0cmV2ZXJzZS5odG1sIG9uIGlvcy1zaW11
bGF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg1MTRhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgZm9yIHRoZSBIZWFwLnNuYXBzaG90IGNvbW1hbmQu
CisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBIZWFwLnNuYXBzaG90CistLSBSdW5uaW5nIHRl
c3QgY2FzZTogVHJpZ2dlclNuYXBzaG90CitQQVNTOiBTaG91bGQgbm90IGhhdmUgYW4gZXJyb3Ig
Y3JlYXRpbmcgYSBzbmFwc2hvdC4KK1BBU1M6IFNuYXBzaG90IHNpemUgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxa2IuCitQQVNTOiBTbmFwc2hvdCBvYmplY3QgY291bnQgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxMDAuCitQQVNTOiBTbmFwc2hvdCBzaG91bGQgaW5jbHVkZSBhIGNsYXNzIGNhdGVn
b3J5IGZvciAnV2luZG93Jy4KK1BBU1M6IFNuYXBzaG93IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0
IG9uZSAnV2luZG93JyBpbnN0YW5jZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2hlYXAvc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBz
aG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ3YWQzOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90Lmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJIZWFwLnNuYXBzaG90Iik7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmlnZ2VyU25hcHNob3Qi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkNhbGxpbmcgSGVhcC5zbmFwc2hvdCBzaG91bGQgY3Jl
YXRlIGEgaGVhcCBzbmFwc2hvdC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNu
YXBzaG90U3RyaW5nRGF0YSkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYW4gZXJyb3IgY3JlYXRpbmcgYSBzbmFw
c2hvdC4iKTsKKyAgICAgICAgICAgICAgICBsZXQgcGF5bG9hZCA9IEpTT04ucGFyc2Uoc25hcHNo
b3RTdHJpbmdEYXRhKTsKKyAgICAgICAgICAgICAgICBsZXQgc25hcHNob3QgPSBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LmZyb21QYXlsb2FkKHBheWxvYWQpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChzbmFwc2hvdC50b3RhbFNpemUgPiAxMDI0LCAiU25hcHNo
b3Qgc2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDFrYi4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QudG90YWxPYmplY3RDb3VudCA+IDEwMCwg
IlNuYXBzaG90IG9iamVjdCBjb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEwMC4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QuY2F0ZWdvcmll
cy5nZXQoIldpbmRvdyIpLCAiU25hcHNob3Qgc2hvdWxkIGluY2x1ZGUgYSBjbGFzcyBjYXRlZ29y
eSBmb3IgJ1dpbmRvdycuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHNuYXBzaG90Lmluc3RhbmNlc1dpdGhDbGFzc05hbWUoIldpbmRvdyIpLmxlbmd0aCA+IDAs
ICJTbmFwc2hvdyBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCBvbmUgJ1dpbmRvdycgaW5zdGFuY2Uu
Iik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IGZvciB0
aGUgSGVhcC5zbmFwc2hvdCBjb21tYW5kLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDJlZTA4MDAuLjRmMzNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGEgd2F5IHRvIGNy
ZWF0ZSBhIEhlYXAgU25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9ySGVhcEFnZW50OjpzbmFwc2hvdCk6CisgICAgICAgIFRha2UgYSBoZWFwIHNuYXBzaG90
IGFuZCByZXR1cm4gdGhlIEpTT04gc3RyaW5nIHJlc3VsdC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uOgorICAgICAgICBSZW1vdmUgdW51c2VkIG9wdGlvbmFs
IGluZmVycmVkTmFtZS4gT3VyIGRpc3BsYXlOYW1lIHdvdWxkIGJlIGluZmVycmVkLgorCiAyMDE2
LTAzLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtF
UzZdIFJlZ3VsYXIgRXhwcmVzc2lvbiBjYW5vbmljYWxpemF0aW9uIHRhYmxlcyBmb3IgVW5pY29k
ZSBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdXNlIFVuaWNvZGUgQ2FzZUZvbGRpbmcudHh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCAyY2JjM2YzLi5hMDU5ZDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JIZWFwQWdlbnQuaCIKIAorI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzUsNiArNzYsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiAKICAg
ICBtX2Vudmlyb25tZW50LnZtKCkuaGVhcC5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKworICAgIGNs
ZWFySGVhcFNuYXBzaG90cygpOwogfQogCiB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2MoRXJy
b3JTdHJpbmcmKQpAQCAtODUsNiArODgsMjYgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6Omdj
KEVycm9yU3RyaW5nJikKICAgICB2bS5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9ySGVhcEFnZW50OjpzbmFwc2hvdChFcnJvclN0cmluZyYsIGRvdWJsZSogdGlt
ZXN0YW1wLCBTdHJpbmcqIHNuYXBzaG90RGF0YSkKK3sKKyAgICBWTSYgdm0gPSBtX2Vudmlyb25t
ZW50LnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgSGVhcFNuYXBzaG90
QnVpbGRlciBzbmFwc2hvdEJ1aWxkZXIodm0uZW5zdXJlSGVhcFByb2ZpbGVyKCkpOworICAgIHNu
YXBzaG90QnVpbGRlci5idWlsZFNuYXBzaG90KCk7CisKKyAgICAqdGltZXN0YW1wID0gbV9lbnZp
cm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWUoKTsKKyAgICAqc25hcHNo
b3REYXRhID0gc25hcHNob3RCdWlsZGVyLmpzb24oWyZdIChjb25zdCBIZWFwU25hcHNob3ROb2Rl
JiBub2RlKSB7CisgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2VsbC0+
c3RydWN0dXJlKHZtKSkgeworICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFtX2Vudmlyb25tZW50LmNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworfQor
CiBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5
cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikK
IHsKICAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewpAQCAtMTM2LDQgKzE1OSwxMCBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoSGVhcE9wZXJhdGlvbiBvcGVyYXRp
b24pCiAgICAgbV9nY1N0YXJ0VGltZSA9IE5BTjsKIH0KIAordm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OmNsZWFySGVhcFNuYXBzaG90cygpCit7CisgICAgaWYgKEhlYXBQcm9maWxlciogaGVhcFBy
b2ZpbGVyID0gbV9lbnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxlcigpKQorICAgICAgICBoZWFw
UHJvZmlsZXItPmNsZWFyU25hcHNob3RzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAppbmRleCBiMTk3NGUzLi5lMjc3NDU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuaApAQCAtNTAsMTUgKzUwLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2MoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNuYXBzaG90KEVycm9yU3RyaW5nJiwgZG91YmxlKiB0aW1lc3RhbXAsIFN0cmluZyogc25hcHNo
b3REYXRhKSBvdmVycmlkZTsKIAogICAgIC8vIEhlYXBPYnNlcnZlcgogICAgIHZvaWQgd2lsbEdh
cmJhZ2VDb2xsZWN0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChKU0M6
OkhlYXBPcGVyYXRpb24pIG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xlYXJIZWFw
U25hcHNob3RzKCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcEZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEhlYXBCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZp
cm9ubWVudDsKKwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9n
Y1N0YXJ0VGltZSB7IE5BTiB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgppbmRleCBkMGY5ZGMwLi40ZjFiZDk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Rl
YnVnZ2VyLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9EZWJ1Z2dlci5qc29uCkBAIC02MCw3ICs2MCw2IEBACiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJsb2NhdGlvbiIsICIkcmVmIjogIkxvY2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkxvY2F0
aW9uIG9mIHRoZSBmdW5jdGlvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk5h
bWUgb2YgdGhlIGZ1bmN0aW9uLiBOb3QgcHJlc2VudCBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucy4i
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkaXNwbGF5TmFtZSIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJEaXNwbGF5IG5hbWUgb2Yg
dGhlIGZ1bmN0aW9uKHNwZWNpZmllZCBpbiAnZGlzcGxheU5hbWUnIHByb3BlcnR5IG9uIHRoZSBm
dW5jdGlvbiBvYmplY3QpLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImluZmVycmVk
TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJOYW1lIG9mIHRoZSBmdW5jdGlvbiBpbmZlcnJlZCBmcm9tIGl0cyBpbml0aWFsIGFzc2lnbm1l
bnQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NvcGVDaGFpbiIsICJ0eXBlIjog
ImFycmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJTY29wZSIgfSwg
ImRlc2NyaXB0aW9uIjogIlNjb3BlIGNoYWluIGZvciB0aGlzIGNsb3N1cmUuIiB9CiAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IHRo
ZSBmdW5jdGlvbi4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL0hlYXAuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvSGVhcC5qc29uCmluZGV4IGVhYzMzNDYuLjBlMmJhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCkBAIC0xMSw2ICsx
MSwxMSBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRUaW1lIiwgInR5cGUiOiAi
bnVtYmVyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kVGltZSIsICJ0eXBlIjog
Im51bWJlciIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAiaWQiOiAiSGVhcFNuYXBzaG90RGF0YSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiSmF2YVNjcmlwdENvcmUgSGVhcFNuYXBzaG90IEpTT04gZGF0YS4iLAorICAgICAgICAgICAg
InR5cGUiOiAic3RyaW5nIgogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBA
IC0yNSw2ICszMCwxNCBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJnYyIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVHJpZ2dlciBhIGZ1bGwgZ2FyYmFnZSBjb2xsZWN0
aW9uLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic25hcHNo
b3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBoZWFwIHNuYXBzaG90LiIs
CisgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRp
bWVzdGFtcCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNuYXBzaG90RGF0YSIsICIkcmVmIjogIkhlYXBTbmFwc2hvdERhdGEiIH0KKyAgICAgICAgICAg
IF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nCmluZGV4IGZlM2YyN2UuLmRlZjZmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDM2IEBACiAyMDE2LTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGEgd2F5IHRvIGNyZWF0ZSBhIEhl
YXAgU25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9U
ZXN0Lmh0bWw6CisgICAgICAgIEFkZCBuZXcgTW9kZWwgcmVzb3VyY2VzLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RDbGFzc0NhdGVnb3J5KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5m
cm9tUGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZS5nZXQgcm9vdE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuZ2V0IG5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJv
dG90eXBlLmdldCBpZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLmdldCBpbnN0YW5jZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuZ2V0IGNhdGVnb3JpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0IHRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgdG90YWxPYmplY3RDb3VudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5pbnN0YW5jZXNXaXRoQ2xh
c3NOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLm5v
ZGVXaXRoT2JqZWN0SWRlbnRpZmllcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
SGVhcFNuYXBzaG90RWRnZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90
b3R5cGUuc3RyaW5naWZ5KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25h
cHNob3ROb2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2RlKToKKyAgICAgICAgRGF0YSBzdHJ1Y3R1cmVzIGZvciBhIEhlYXBTbmFwc2hvdC4KKworMjAx
Ni0wMy0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEltYWdlcyBiZWluZyBibG9ja2VkIGJ5IENTUCAyLjAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE4MgogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjUwNDA2NDA+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYTM0NmU4NC4uNWQyNDdkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzA4LDYgKzMwOCw5IEBA
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HYXJiYWdlQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9HcmFkaWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9IZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvSGVhcFNuYXBzaG90RWRnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9IZWFwU25hcHNob3ROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0luZGV4ZWREYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFw
U25hcHNob3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
SGVhcFNuYXBzaG90LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZTQx
NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENsYXNzQ2F0ZWdvcnkgPSBjbGFzcyBIZWFwU25hcHNo
b3RDbGFzc0NhdGVnb3J5Cit7CisgICAgY29uc3RydWN0b3IoY2xhc3NOYW1lKQorICAgIHsKKyAg
ICAgICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgICAgIHRoaXMuc2l6ZSA9IDA7
CisgICAgICAgIHRoaXMuY291bnQgPSAwOworICAgICAgICB0aGlzLmludGVybmFsQ291bnQgPSAw
OworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3QgPSBjbGFzcyBIZWFwU25h
cHNob3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3Iocm9v
dE5vZGUsIG5vZGVzLCBub2RlTWFwKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAg
ICBjb25zb2xlLmFzc2VydCghcm9vdE5vZGUgfHwgcm9vdE5vZGUgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVzIGlu
c3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgIHRoaXMuX3Jvb3ROb2RlID0gcm9vdE5vZGU7Cisg
ICAgICAgIHRoaXMuX25vZGVzID0gbm9kZXM7CisgICAgICAgIHRoaXMuX25vZGVNYXAgPSBub2Rl
TWFwOworCisgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Ll9uZXh0QXZhaWxhYmxlU25hcHNob3RJZGVudGlmaWVyKys7CisgICAgICAgIHRoaXMuX2lu
c3RhbmNlcyA9IG5vZGVzOworCisgICAgICAgIGxldCBjYXRlZ29yaWVzID0ge307CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxl
dCB7Y2xhc3NOYW1lLCBzaXplLCBpbnRlcm5hbH0gPSBub2Rlc1tpXTsKKworICAgICAgICAgICAg
bGV0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjbGFzc05hbWVdOworICAgICAgICAgICAgaWYgKCFj
YXRlZ29yeSkKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbY2xhc3NOYW1l
XSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q2xhc3NDYXRlZ29yeShjbGFzc05hbWUp
OworCisgICAgICAgICAgICBjYXRlZ29yeS5zaXplICs9IHNpemU7CisgICAgICAgICAgICBjYXRl
Z29yeS5jb3VudCsrOworICAgICAgICAgICAgaWYgKGludGVybmFsKQorICAgICAgICAgICAgICAg
IGNhdGVnb3J5LmludGVybmFsQ291bnQrKzsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9jYXRl
Z29yaWVzID0gTWFwLmZyb21PYmplY3QoY2F0ZWdvcmllcyk7CisKKyAgICAgICAgdGhpcy5fdG90
YWxTaXplID0gMDsKKyAgICAgICAgdGhpcy5fdG90YWxPYmplY3RDb3VudCA9IDA7CisgICAgICAg
IGZvciAobGV0IHtjb3VudCwgc2l6ZX0gb2YgdGhpcy5fY2F0ZWdvcmllcy52YWx1ZXMoKSkgewor
ICAgICAgICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7CisgICAgICAgICAgICB0aGlzLl90
b3RhbE9iamVjdENvdW50ICs9IGNvdW50OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gU3Rh
dGljCisKKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKKyAgICB7CisgICAgICAgIGxl
dCB7dmVyc2lvbiwgbm9kZXMsIG5vZGVDbGFzc05hbWVzLCBlZGdlcywgZWRnZVR5cGVzfSA9IHBh
eWxvYWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZlcnNpb24gPT09IDEsICJPbmx5IGtub3cg
aG93IHRvIGhhbmRsZSBKYXZhU2NyaXB0Q29yZSBIZWFwIFNuYXBzaG90IEZvcm1hdCBWZXJzaW9u
IDEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZWRnZVR5cGVzLmV2ZXJ5KCh0eXBlKSA9PiB0
eXBlIGluIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLkVkZ2VUeXBlKSwgIlVuZXhwZWN0
ZWQgZWRnZSB0eXBlIiwgZWRnZVR5cGVzKTsKKworICAgICAgICBsZXQgbm9kZU1hcCA9IG5ldyBN
YXA7CisKKyAgICAgICAgLy8gVHVybiBub2RlcyBpbnRvIHJlYWwgbm9kZXMuCisgICAgICAgIGZv
ciAobGV0IGkgPSAwLCBsZW5ndGggPSBub2Rlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgbGV0IG5vZGVQYXlsb2FkID0gbm9kZXNbaV07CisgICAgICAgICAgICBsZXQg
aWQgPSBub2RlUGF5bG9hZFswXTsKKyAgICAgICAgICAgIGxldCBzaXplID0gbm9kZVBheWxvYWRb
MV07CisgICAgICAgICAgICBsZXQgY2xhc3NOYW1lSW5kZXggPSBub2RlUGF5bG9hZFsyXTsKKyAg
ICAgICAgICAgIGxldCBpbnRlcm5hbCA9IG5vZGVQYXlsb2FkWzNdOworCisgICAgICAgICAgICBs
ZXQgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShpZCwgbm9kZUNsYXNz
TmFtZXNbY2xhc3NOYW1lSW5kZXhdLCBzaXplLCAhIWludGVybmFsKTsKKyAgICAgICAgICAgIG5v
ZGVNYXAuc2V0KGlkLCBub2RlKTsKKyAgICAgICAgICAgIG5vZGVzW2ldID0gbm9kZTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFR1cm4gZWRnZXMgaW50byByZWFsIGVkZ2VzIGFuZCBzZXQgdGhl
bSBvbiB0aGUgbm9kZXMuCisgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBlZGdlcy5s
ZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVkZ2VQYXlsb2FkID0g
ZWRnZXNbaV07CisgICAgICAgICAgICBsZXQgZnJvbUlkZW50aWZpZXIgPSBlZGdlUGF5bG9hZFsw
XTsKKyAgICAgICAgICAgIGxldCB0b0lkZW50aWZpZXIgPSBlZGdlUGF5bG9hZFsxXTsKKyAgICAg
ICAgICAgIGxldCBlZGdlVHlwZUluZGV4ID0gZWRnZVBheWxvYWRbMl07CisgICAgICAgICAgICBs
ZXQgZGF0YSA9IGVkZ2VQYXlsb2FkWzNdOworCisgICAgICAgICAgICBsZXQgZnJvbSA9IG5vZGVN
YXAuZ2V0KGZyb21JZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGxldCB0byA9IG5vZGVNYXAuZ2V0
KHRvSWRlbnRpZmllcik7CisgICAgICAgICAgICBsZXQgZWRnZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZShmcm9tLCB0bywgZWRnZVR5cGVzW2VkZ2VUeXBlSW5kZXhdLCBkYXRh
KTsKKyAgICAgICAgICAgIGZyb20ub3V0Z29pbmdFZGdlcy5wdXNoKGVkZ2UpOworICAgICAgICAg
ICAgdG8uaW5jb21pbmdFZGdlcy5wdXNoKGVkZ2UpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Um9vdCBub2RlLgorICAgICAgICBsZXQgcm9vdE5vZGUgPSBub2RlTWFwLmdldCgwKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQocm9vdE5vZGUsICJOb2RlIHdpdGggaWRlbnRpZmllciAwIGlzIHRo
ZSBhcnRpZmljaWFsIDxyb290PiBub2RlLiIpOworICAgICAgICBjb25zb2xlLmFzc2VydChyb290
Tm9kZS5vdXRnb2luZ0VkZ2VzLmxlbmd0aCA+IDAsICJUaGlzIGhhZCBiZXR0ZXIgaGF2ZSBjaGls
ZHJlbiEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdE5vZGUuaW5jb21pbmdFZGdlcy5s
ZW5ndGggPT09IDAsICJUaGlzIGhhZCBiZXR0ZXIgbm90IGhhdmUgYmFjayByZWZlcmVuY2VzISIp
OworCisgICAgICAgIC8vIE1hcmsgR0Mgcm9vdHMuCisgICAgICAgIGxldCByb290Tm9kZUVkZ2Vz
ID0gcm9vdE5vZGUub3V0Z29pbmdFZGdlczsKKyAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0
aCA9IHJvb3ROb2RlRWRnZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBy
b290Tm9kZUVkZ2VzW2ldLnRvLmdjUm9vdCA9IHRydWU7CisKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KHJvb3ROb2RlLCBub2Rlcywgbm9kZU1hcCk7CisgICAg
fQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgcm9vdE5vZGUoKSB7IHJldHVybiB0aGlzLl9y
b290Tm9kZTsgfQorICAgIGdldCBub2RlcygpIHsgcmV0dXJuIHRoaXMuX25vZGVzOyB9CisgICAg
Z2V0IGlkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9pZGVudGlmaWVyOyB9CisgICAgZ2V0IGlu
c3RhbmNlcygpIHsgcmV0dXJuIHRoaXMuX2luc3RhbmNlczsgfQorICAgIGdldCBjYXRlZ29yaWVz
KCkgeyByZXR1cm4gdGhpcy5fY2F0ZWdvcmllczsgfQorICAgIGdldCB0b3RhbFNpemUoKSB7IHJl
dHVybiB0aGlzLl90b3RhbFNpemU7IH0KKyAgICBnZXQgdG90YWxPYmplY3RDb3VudCgpIHsgcmV0
dXJuIHRoaXMuX3RvdGFsT2JqZWN0Q291bnQ7IH0KKworICAgIGluc3RhbmNlc1dpdGhDbGFzc05h
bWUoY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9pbnN0YW5jZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGxldCBjZWxsID0gdGhpcy5faW5zdGFuY2VzW2ldOworICAgICAgICAgICAgaWYgKGNl
bGwuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNo
KGNlbGwpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRzOworICAgIH0KKworICAg
IG5vZGVXaXRoT2JqZWN0SWRlbnRpZmllcihpZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9ub2RlTWFwLmdldChpZCk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5fbmV4dEF2YWlsYWJsZVNuYXBzaG90SWRlbnRpZmllciA9IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNo
b3RFZGdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMmM3OWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvSGVhcFNuYXBzaG90RWRnZS5qcwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UgPSBjbGFzcyBIZWFwU25hcHNob3RFZGdlCit7Cisg
ICAgY29uc3RydWN0b3IoZnJvbSwgdG8sIHR5cGUsIGRhdGEpCisgICAgeworICAgICAgICB0aGlz
LmZyb20gPSBmcm9tOworICAgICAgICB0aGlzLnRvID0gdG87CisgICAgICAgIHRoaXMudHlwZSA9
IHR5cGU7CisgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CisgICAgfQorfTsKKworV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEVkZ2UuRWRnZVR5cGUgPSB7CisgICAgSW50ZXJuYWw6ICJJbnRlcm5h
bCIsICAgICAgIC8vIE5vIGRhdGEuCisgICAgUHJvcGVydHk6ICJQcm9wZXJ0eSIsICAgICAgIC8v
IGRhdGEgaXMgc3RyaW5nIHByb3BlcnR5IG5hbWUuCisgICAgSW5kZXg6ICJJbmRleCIsICAgICAg
ICAgICAgIC8vIGRhdGEgaXMgbnVtZXJpYyBpbmRleC4KKyAgICBWYXJpYWJsZTogIlZhcmlhYmxl
IiwgICAgICAgLy8gZGF0YSBpcyBzdHJpbmcgdmFyaWFibGUgbmFtZS4KK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFw
U25hcHNob3ROb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MmFm
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcwpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUgPSBjbGFzcyBIZWFwU25hcHNob3ROb2Rl
Cit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgY2xhc3NOYW1lLCBzaXplLCBpbnRlcm5h
bCkKKyAgICB7CisgICAgICAgIHRoaXMuaWQgPSBpZGVudGlmaWVyOworICAgICAgICB0aGlzLmNs
YXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5zaXplID0gc2l6ZTsgCisgICAgICAg
IHRoaXMuaW50ZXJuYWwgPSBpbnRlcm5hbDsKKyAgICAgICAgdGhpcy5nY1Jvb3QgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5vdXRnb2luZ0VkZ2VzID0gW107CisgICAgICAgIHRoaXMuaW5jb21pbmdF
ZGdlcyA9IFtdOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKaW5kZXggZWEzYTE2My4uMDlhYmNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMTEyLDYgKzExMiw5IEBACiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9GcmFtZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9HYXJiYWdlQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9IZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSGVh
cFNuYXBzaG90RWRnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9IZWFw
U25hcHNob3ROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4
ZWREYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3NjcmlwdD4KQEAgLTExOSw2
ICsxMjIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5b3V0SW5zdHJ1bWVudC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlvdXRUaW1lbGluZVJlY29yZC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXp5U291cmNlQ29kZUxvY2F0
aW9uLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL01lbW9yeUNhdGVnb3J5
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL01lbW9yeUluc3RydW1lbnQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTWVtb3J5VGltZWxpbmVSZWNv
cmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTmV0d29ya0luc3RydW1l
bnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTmV0d29ya1RpbWVsaW5l
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL09iamVjdFByZXZpZXcuanMi
Pjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273324</attachid>
            <date>2016-03-08 13:42:58 -0800</date>
            <delta_ts>2016-03-08 13:53:28 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>snapshot-3.patch</filename>
            <type>text/plain</type>
            <size>24558</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODlkNmRhLi4xNDY3MWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMt
MDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBTbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC9z
bmFwc2hvdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9oZWFwL3Nu
YXBzaG90Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTA4ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1tYXJr
ZXItb3JpZW50LWZyb20tYW5nbGUtdG8tYXV0b3N0YXJ0cmV2ZXJzZS5odG1sIG9uIGlvcy1zaW11
bGF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg1MTRhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgZm9yIHRoZSBIZWFwLnNuYXBzaG90IGNvbW1hbmQu
CisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBIZWFwLnNuYXBzaG90CistLSBSdW5uaW5nIHRl
c3QgY2FzZTogVHJpZ2dlclNuYXBzaG90CitQQVNTOiBTaG91bGQgbm90IGhhdmUgYW4gZXJyb3Ig
Y3JlYXRpbmcgYSBzbmFwc2hvdC4KK1BBU1M6IFNuYXBzaG90IHNpemUgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxa2IuCitQQVNTOiBTbmFwc2hvdCBvYmplY3QgY291bnQgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxMDAuCitQQVNTOiBTbmFwc2hvdCBzaG91bGQgaW5jbHVkZSBhIGNsYXNzIGNhdGVn
b3J5IGZvciAnV2luZG93Jy4KK1BBU1M6IFNuYXBzaG93IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0
IG9uZSAnV2luZG93JyBpbnN0YW5jZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2hlYXAvc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBz
aG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ3YWQzOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90Lmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJIZWFwLnNuYXBzaG90Iik7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmlnZ2VyU25hcHNob3Qi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkNhbGxpbmcgSGVhcC5zbmFwc2hvdCBzaG91bGQgY3Jl
YXRlIGEgaGVhcCBzbmFwc2hvdC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNu
YXBzaG90U3RyaW5nRGF0YSkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYW4gZXJyb3IgY3JlYXRpbmcgYSBzbmFw
c2hvdC4iKTsKKyAgICAgICAgICAgICAgICBsZXQgcGF5bG9hZCA9IEpTT04ucGFyc2Uoc25hcHNo
b3RTdHJpbmdEYXRhKTsKKyAgICAgICAgICAgICAgICBsZXQgc25hcHNob3QgPSBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LmZyb21QYXlsb2FkKHBheWxvYWQpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChzbmFwc2hvdC50b3RhbFNpemUgPiAxMDI0LCAiU25hcHNo
b3Qgc2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDFrYi4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QudG90YWxPYmplY3RDb3VudCA+IDEwMCwg
IlNuYXBzaG90IG9iamVjdCBjb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEwMC4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QuY2F0ZWdvcmll
cy5nZXQoIldpbmRvdyIpLCAiU25hcHNob3Qgc2hvdWxkIGluY2x1ZGUgYSBjbGFzcyBjYXRlZ29y
eSBmb3IgJ1dpbmRvdycuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHNuYXBzaG90Lmluc3RhbmNlc1dpdGhDbGFzc05hbWUoIldpbmRvdyIpLmxlbmd0aCA+IDAs
ICJTbmFwc2hvdyBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCBvbmUgJ1dpbmRvdycgaW5zdGFuY2Uu
Iik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IGZvciB0
aGUgSGVhcC5zbmFwc2hvdCBjb21tYW5kLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDJlZTA4MDAuLjRmMzNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGEgd2F5IHRvIGNy
ZWF0ZSBhIEhlYXAgU25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9ySGVhcEFnZW50OjpzbmFwc2hvdCk6CisgICAgICAgIFRha2UgYSBoZWFwIHNuYXBzaG90
IGFuZCByZXR1cm4gdGhlIEpTT04gc3RyaW5nIHJlc3VsdC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uOgorICAgICAgICBSZW1vdmUgdW51c2VkIG9wdGlvbmFs
IGluZmVycmVkTmFtZS4gT3VyIGRpc3BsYXlOYW1lIHdvdWxkIGJlIGluZmVycmVkLgorCiAyMDE2
LTAzLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtF
UzZdIFJlZ3VsYXIgRXhwcmVzc2lvbiBjYW5vbmljYWxpemF0aW9uIHRhYmxlcyBmb3IgVW5pY29k
ZSBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdXNlIFVuaWNvZGUgQ2FzZUZvbGRpbmcudHh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCAyY2JjM2YzLi5hMDU5ZDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JIZWFwQWdlbnQuaCIKIAorI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzUsNiArNzYsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiAKICAg
ICBtX2Vudmlyb25tZW50LnZtKCkuaGVhcC5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKworICAgIGNs
ZWFySGVhcFNuYXBzaG90cygpOwogfQogCiB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2MoRXJy
b3JTdHJpbmcmKQpAQCAtODUsNiArODgsMjYgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6Omdj
KEVycm9yU3RyaW5nJikKICAgICB2bS5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9ySGVhcEFnZW50OjpzbmFwc2hvdChFcnJvclN0cmluZyYsIGRvdWJsZSogdGlt
ZXN0YW1wLCBTdHJpbmcqIHNuYXBzaG90RGF0YSkKK3sKKyAgICBWTSYgdm0gPSBtX2Vudmlyb25t
ZW50LnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgSGVhcFNuYXBzaG90
QnVpbGRlciBzbmFwc2hvdEJ1aWxkZXIodm0uZW5zdXJlSGVhcFByb2ZpbGVyKCkpOworICAgIHNu
YXBzaG90QnVpbGRlci5idWlsZFNuYXBzaG90KCk7CisKKyAgICAqdGltZXN0YW1wID0gbV9lbnZp
cm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWUoKTsKKyAgICAqc25hcHNo
b3REYXRhID0gc25hcHNob3RCdWlsZGVyLmpzb24oWyZdIChjb25zdCBIZWFwU25hcHNob3ROb2Rl
JiBub2RlKSB7CisgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2VsbC0+
c3RydWN0dXJlKHZtKSkgeworICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFtX2Vudmlyb25tZW50LmNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworfQor
CiBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5
cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikK
IHsKICAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewpAQCAtMTM2LDQgKzE1OSwxMCBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoSGVhcE9wZXJhdGlvbiBvcGVyYXRp
b24pCiAgICAgbV9nY1N0YXJ0VGltZSA9IE5BTjsKIH0KIAordm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OmNsZWFySGVhcFNuYXBzaG90cygpCit7CisgICAgaWYgKEhlYXBQcm9maWxlciogaGVhcFBy
b2ZpbGVyID0gbV9lbnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxlcigpKQorICAgICAgICBoZWFw
UHJvZmlsZXItPmNsZWFyU25hcHNob3RzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAppbmRleCBiMTk3NGUzLi5lM2Q4YTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JIZWFwQWdl
bnRfaAogI2RlZmluZSBJbnNwZWN0b3JIZWFwQWdlbnRfaAogCisjaW5jbHVkZSAiSGVhcFNuYXBz
aG90LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgImhlYXAvSGVhcE9i
c2VydmVyLmgiCkBAIC01MCwxNSArNTEsMTkgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnYyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc25h
cHNob3QoRXJyb3JTdHJpbmcmLCBkb3VibGUqIHRpbWVzdGFtcCwgU3RyaW5nKiBzbmFwc2hvdERh
dGEpIG92ZXJyaWRlOwogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9pZCB3aWxsR2FyYmFn
ZUNvbGxlY3QoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEpTQzo6SGVh
cE9wZXJhdGlvbikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdm9pZCBjbGVhckhlYXBTbmFw
c2hvdHMoKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPiBt
X2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SGVhcEJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25t
ZW50OworCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGRvdWJsZSBtX2djU3Rh
cnRUaW1lIHsgTkFOIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uCmluZGV4IGQwZjlkYzAuLjRmMWJkOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRGVidWdn
ZXIuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Rl
YnVnZ2VyLmpzb24KQEAgLTYwLDcgKzYwLDYgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImxvY2F0aW9uIiwgIiRyZWYiOiAiTG9jYXRpb24iLCAiZGVzY3JpcHRpb24iOiAiTG9jYXRpb24g
b2YgdGhlIGZ1bmN0aW9uLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiTmFtZSBv
ZiB0aGUgZnVuY3Rpb24uIE5vdCBwcmVzZW50IGZvciBhbm9ueW1vdXMgZnVuY3Rpb25zLiIgfSwK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpc3BsYXlOYW1lIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgbmFtZSBvZiB0aGUg
ZnVuY3Rpb24oc3BlY2lmaWVkIGluICdkaXNwbGF5TmFtZScgcHJvcGVydHkgb24gdGhlIGZ1bmN0
aW9uIG9iamVjdCkuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5mZXJyZWROYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk5h
bWUgb2YgdGhlIGZ1bmN0aW9uIGluZmVycmVkIGZyb20gaXRzIGluaXRpYWwgYXNzaWdubWVudC4i
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY29wZUNoYWluIiwgInR5cGUiOiAiYXJy
YXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIlNjb3BlIiB9LCAiZGVz
Y3JpcHRpb24iOiAiU2NvcGUgY2hhaW4gZm9yIHRoaXMgY2xvc3VyZS4iIH0KICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIGZ1
bmN0aW9uLiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvSGVhcC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9IZWFwLmpzb24KaW5kZXggZWFjMzM0Ni4uMGUyYmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24KQEAgLTExLDYgKzExLDEx
IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydFRpbWUiLCAidHlwZSI6ICJudW1i
ZXIiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRUaW1lIiwgInR5cGUiOiAibnVt
YmVyIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJpZCI6ICJIZWFwU25hcHNob3REYXRhIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJK
YXZhU2NyaXB0Q29yZSBIZWFwU25hcHNob3QgSlNPTiBkYXRhLiIsCisgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciCiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKQEAgLTI1
LDYgKzMwLDE0IEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdjIiwKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJUcmlnZ2VyIGEgZnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24u
IgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzbmFwc2hvdCIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGFrZSBhIGhlYXAgc25hcHNob3QuIiwKKyAg
ICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0
YW1wIiwgInR5cGUiOiAibnVtYmVyIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic25h
cHNob3REYXRhIiwgIiRyZWYiOiAiSGVhcFNuYXBzaG90RGF0YSIgfQorICAgICAgICAgICAgXQog
ICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cK
aW5kZXggZmUzZjI3ZS4uZGVmNmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMzYgQEAKIDIwMTYtMDMtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBT
bmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbDoKKyAgICAgICAgQWRkIG5ldyBNb2RlbCByZXNvdXJjZXMuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3QuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdENsYXNzQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LmZyb21Q
YXlsb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdl
dCByb290Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZS5nZXQgbm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuZ2V0IGlkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuZ2V0IGluc3RhbmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90LnByb3RvdHlwZS5nZXQgY2F0ZWdvcmllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZS5nZXQgdG90YWxTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdldCB0b3RhbE9iamVjdENvdW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmluc3RhbmNlc1dpdGhDbGFzc05h
bWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUubm9kZVdp
dGhPYmplY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9IZWFw
U25hcHNob3RFZGdlLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RFZGdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLnByb3RvdHlw
ZS5zdHJpbmdpZnkpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hv
dE5vZGUuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUp
OgorICAgICAgICBEYXRhIHN0cnVjdHVyZXMgZm9yIGEgSGVhcFNuYXBzaG90LgorCisyMDE2LTAz
LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogSW1hZ2VzIGJlaW5nIGJsb2NrZWQgYnkgQ1NQIDIuMAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTgyCiAgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNTA0MDY0MD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggOGU0MTgxNS4uMjBiZGJiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRp
ZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGls
aXRpZXMuanMKQEAgLTk0LDYgKzk0LDE3IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3Qu
cHJvdG90eXBlLCAidmFsdWVGb3JDYXNlSW5zZW5zaXRpdmVLZXkiLAogICAgIH0KIH0pOwogCitP
YmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLCAiZnJvbU9iamVjdCIsCit7CisgICAgdmFsdWU6IGZ1
bmN0aW9uKG9iamVjdCkKKyAgICB7CisgICAgICAgIGxldCBtYXAgPSBuZXcgTWFwOworICAgICAg
ICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KQorICAgICAgICAgICAgbWFwLnNldChrZXksIG9iamVj
dFtrZXldKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9Cit9KTsKKwogT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KE1hcC5wcm90b3R5cGUsICJ0YWtlIiwKIHsKICAgICB2YWx1ZTogZnVuY3Rpb24o
a2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmlu
ZGV4IGEzNDZlODQuLjVkMjQ3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKQEAgLTMwOCw2ICszMDgsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvR2FyYmFnZUNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvR2VvbWV0cnkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvR3Jh
ZGllbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0hlYXBTbmFwc2hvdEVkZ2Uu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2UuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVJbmRleC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGU0MTUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hv
dC5qcwpAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RDbGFzc0NhdGVnb3J5ID0gY2xhc3MgSGVhcFNuYXBzaG90Q2xhc3NDYXRlZ29yeQorewor
ICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1l
ID0gY2xhc3NOYW1lOworICAgICAgICB0aGlzLnNpemUgPSAwOworICAgICAgICB0aGlzLmNvdW50
ID0gMDsKKyAgICAgICAgdGhpcy5pbnRlcm5hbENvdW50ID0gMDsKKyAgICB9Cit9OworCitXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90ID0gY2xhc3MgSGVhcFNuYXBzaG90IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHJvb3ROb2RlLCBub2Rlcywgbm9kZU1h
cCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXJv
b3ROb2RlIHx8IHJvb3ROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGUpOworICAgICAgICBjb25zb2xlLmFzc2VydChub2RlcyBpbnN0YW5jZW9mIEFycmF5KTsKKwor
ICAgICAgICB0aGlzLl9yb290Tm9kZSA9IHJvb3ROb2RlOworICAgICAgICB0aGlzLl9ub2RlcyA9
IG5vZGVzOworICAgICAgICB0aGlzLl9ub2RlTWFwID0gbm9kZU1hcDsKKworICAgICAgICB0aGlz
Ll9pZGVudGlmaWVyID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5fbmV4dEF2YWlsYWJsZVNu
YXBzaG90SWRlbnRpZmllcisrOworICAgICAgICB0aGlzLl9pbnN0YW5jZXMgPSBub2RlczsKKwor
ICAgICAgICBsZXQgY2F0ZWdvcmllcyA9IHt9OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IG5vZGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQge2NsYXNzTmFtZSwgc2l6ZSwg
aW50ZXJuYWx9ID0gbm9kZXNbaV07CisKKyAgICAgICAgICAgIGxldCBjYXRlZ29yeSA9IGNhdGVn
b3JpZXNbY2xhc3NOYW1lXTsKKyAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpCisgICAgICAgICAg
ICAgICAgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2NsYXNzTmFtZV0gPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdENsYXNzQ2F0ZWdvcnkoY2xhc3NOYW1lKTsKKworICAgICAgICAgICAgY2F0
ZWdvcnkuc2l6ZSArPSBzaXplOworICAgICAgICAgICAgY2F0ZWdvcnkuY291bnQrKzsKKyAgICAg
ICAgICAgIGlmIChpbnRlcm5hbCkKKyAgICAgICAgICAgICAgICBjYXRlZ29yeS5pbnRlcm5hbENv
dW50Kys7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY2F0ZWdvcmllcyA9IE1hcC5mcm9tT2Jq
ZWN0KGNhdGVnb3JpZXMpOworCisgICAgICAgIHRoaXMuX3RvdGFsU2l6ZSA9IDA7CisgICAgICAg
IHRoaXMuX3RvdGFsT2JqZWN0Q291bnQgPSAwOworICAgICAgICBmb3IgKGxldCB7Y291bnQsIHNp
emV9IG9mIHRoaXMuX2NhdGVnb3JpZXMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIHRoaXMuX3Rv
dGFsU2l6ZSArPSBzaXplOworICAgICAgICAgICAgdGhpcy5fdG90YWxPYmplY3RDb3VudCArPSBj
b3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGZy
b21QYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgICAgICBsZXQge3ZlcnNpb24sIG5vZGVzLCBu
b2RlQ2xhc3NOYW1lcywgZWRnZXMsIGVkZ2VUeXBlc30gPSBwYXlsb2FkOworICAgICAgICBjb25z
b2xlLmFzc2VydCh2ZXJzaW9uID09PSAxLCAiT25seSBrbm93IGhvdyB0byBoYW5kbGUgSmF2YVNj
cmlwdENvcmUgSGVhcCBTbmFwc2hvdCBGb3JtYXQgVmVyc2lvbiAxIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGVkZ2VUeXBlcy5ldmVyeSgodHlwZSkgPT4gdHlwZSBpbiBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZS5FZGdlVHlwZSksICJVbmV4cGVjdGVkIGVkZ2UgdHlwZSIsIGVkZ2VU
eXBlcyk7CisKKyAgICAgICAgbGV0IG5vZGVNYXAgPSBuZXcgTWFwOworCisgICAgICAgIC8vIFR1
cm4gbm9kZXMgaW50byByZWFsIG5vZGVzLgorICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3Ro
ID0gbm9kZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBub2Rl
UGF5bG9hZCA9IG5vZGVzW2ldOworICAgICAgICAgICAgbGV0IGlkID0gbm9kZVBheWxvYWRbMF07
CisgICAgICAgICAgICBsZXQgc2l6ZSA9IG5vZGVQYXlsb2FkWzFdOworICAgICAgICAgICAgbGV0
IGNsYXNzTmFtZUluZGV4ID0gbm9kZVBheWxvYWRbMl07CisgICAgICAgICAgICBsZXQgaW50ZXJu
YWwgPSBub2RlUGF5bG9hZFszXTsKKworICAgICAgICAgICAgbGV0IG5vZGUgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoaWQsIG5vZGVDbGFzc05hbWVzW2NsYXNzTmFtZUluZGV4
XSwgc2l6ZSwgISFpbnRlcm5hbCk7CisgICAgICAgICAgICBub2RlTWFwLnNldChpZCwgbm9kZSk7
CisgICAgICAgICAgICBub2Rlc1tpXSA9IG5vZGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBU
dXJuIGVkZ2VzIGludG8gcmVhbCBlZGdlcyBhbmQgc2V0IHRoZW0gb24gdGhlIG5vZGVzLgorICAg
ICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gZWRnZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIGxldCBlZGdlUGF5bG9hZCA9IGVkZ2VzW2ldOworICAgICAgICAg
ICAgbGV0IGZyb21JZGVudGlmaWVyID0gZWRnZVBheWxvYWRbMF07CisgICAgICAgICAgICBsZXQg
dG9JZGVudGlmaWVyID0gZWRnZVBheWxvYWRbMV07CisgICAgICAgICAgICBsZXQgZWRnZVR5cGVJ
bmRleCA9IGVkZ2VQYXlsb2FkWzJdOworICAgICAgICAgICAgbGV0IGRhdGEgPSBlZGdlUGF5bG9h
ZFszXTsKKworICAgICAgICAgICAgbGV0IGZyb20gPSBub2RlTWFwLmdldChmcm9tSWRlbnRpZmll
cik7CisgICAgICAgICAgICBsZXQgdG8gPSBub2RlTWFwLmdldCh0b0lkZW50aWZpZXIpOworICAg
ICAgICAgICAgbGV0IGVkZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UoZnJv
bSwgdG8sIGVkZ2VUeXBlc1tlZGdlVHlwZUluZGV4XSwgZGF0YSk7CisgICAgICAgICAgICBmcm9t
Lm91dGdvaW5nRWRnZXMucHVzaChlZGdlKTsKKyAgICAgICAgICAgIHRvLmluY29taW5nRWRnZXMu
cHVzaChlZGdlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJvb3Qgbm9kZS4KKyAgICAgICAg
bGV0IHJvb3ROb2RlID0gbm9kZU1hcC5nZXQoMCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJv
b3ROb2RlLCAiTm9kZSB3aXRoIGlkZW50aWZpZXIgMCBpcyB0aGUgYXJ0aWZpY2lhbCA8cm9vdD4g
bm9kZS4iKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdE5vZGUub3V0Z29pbmdFZGdlcy5s
ZW5ndGggPiAwLCAiVGhpcyBoYWQgYmV0dGVyIGhhdmUgY2hpbGRyZW4hIik7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJvb3ROb2RlLmluY29taW5nRWRnZXMubGVuZ3RoID09PSAwLCAiVGhpcyBo
YWQgYmV0dGVyIG5vdCBoYXZlIGJhY2sgcmVmZXJlbmNlcyEiKTsKKworICAgICAgICAvLyBNYXJr
IEdDIHJvb3RzLgorICAgICAgICBsZXQgcm9vdE5vZGVFZGdlcyA9IHJvb3ROb2RlLm91dGdvaW5n
RWRnZXM7CisgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSByb290Tm9kZUVkZ2VzLmxl
bmd0aDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgcm9vdE5vZGVFZGdlc1tpXS50by5n
Y1Jvb3QgPSB0cnVlOworCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdChyb290Tm9kZSwgbm9kZXMsIG5vZGVNYXApOworICAgIH0KKworICAgIC8vIFB1YmxpYwor
CisgICAgZ2V0IHJvb3ROb2RlKCkgeyByZXR1cm4gdGhpcy5fcm9vdE5vZGU7IH0KKyAgICBnZXQg
bm9kZXMoKSB7IHJldHVybiB0aGlzLl9ub2RlczsgfQorICAgIGdldCBpZGVudGlmaWVyKCkgeyBy
ZXR1cm4gdGhpcy5faWRlbnRpZmllcjsgfQorICAgIGdldCBpbnN0YW5jZXMoKSB7IHJldHVybiB0
aGlzLl9pbnN0YW5jZXM7IH0KKyAgICBnZXQgY2F0ZWdvcmllcygpIHsgcmV0dXJuIHRoaXMuX2Nh
dGVnb3JpZXM7IH0KKyAgICBnZXQgdG90YWxTaXplKCkgeyByZXR1cm4gdGhpcy5fdG90YWxTaXpl
OyB9CisgICAgZ2V0IHRvdGFsT2JqZWN0Q291bnQoKSB7IHJldHVybiB0aGlzLl90b3RhbE9iamVj
dENvdW50OyB9CisKKyAgICBpbnN0YW5jZXNXaXRoQ2xhc3NOYW1lKGNsYXNzTmFtZSkKKyAgICB7
CisgICAgICAgIGxldCByZXN1bHRzID0gW107CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
dGhpcy5faW5zdGFuY2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgY2VsbCA9IHRo
aXMuX2luc3RhbmNlc1tpXTsKKyAgICAgICAgICAgIGlmIChjZWxsLmNsYXNzTmFtZSA9PT0gY2xh
c3NOYW1lKQorICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChjZWxsKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICB9CisKKyAgICBub2RlV2l0aE9iamVjdElkZW50
aWZpZXIoaWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbm9kZU1hcC5nZXQoaWQpOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3QuX25leHRBdmFpbGFibGVTbmFw
c2hvdElkZW50aWZpZXIgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdEVkZ2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjJjNzlhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdEVkZ2Uu
anMKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RFZGdlID0gY2xhc3MgSGVhcFNuYXBzaG90RWRnZQoreworICAgIGNvbnN0cnVjdG9yKGZyb20s
IHRvLCB0eXBlLCBkYXRhKQorICAgIHsKKyAgICAgICAgdGhpcy5mcm9tID0gZnJvbTsKKyAgICAg
ICAgdGhpcy50byA9IHRvOworICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICB0aGlz
LmRhdGEgPSBkYXRhOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdl
LkVkZ2VUeXBlID0geworICAgIEludGVybmFsOiAiSW50ZXJuYWwiLCAgICAgICAvLyBObyBkYXRh
LgorICAgIFByb3BlcnR5OiAiUHJvcGVydHkiLCAgICAgICAvLyBkYXRhIGlzIHN0cmluZyBwcm9w
ZXJ0eSBuYW1lLgorICAgIEluZGV4OiAiSW5kZXgiLCAgICAgICAgICAgICAvLyBkYXRhIGlzIG51
bWVyaWMgaW5kZXguCisgICAgVmFyaWFibGU6ICJWYXJpYWJsZSIsICAgICAgIC8vIGRhdGEgaXMg
c3RyaW5nIHZhcmlhYmxlIG5hbWUuCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdE5vZGUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjJhZmFiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hv
dE5vZGUuanMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlID0gY2xhc3MgSGVhcFNuYXBzaG90Tm9kZQoreworICAgIGNvbnN0cnVjdG9y
KGlkZW50aWZpZXIsIGNsYXNzTmFtZSwgc2l6ZSwgaW50ZXJuYWwpCisgICAgeworICAgICAgICB0
aGlzLmlkID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7
CisgICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7IAorICAgICAgICB0aGlzLmludGVybmFsID0gaW50
ZXJuYWw7CisgICAgICAgIHRoaXMuZ2NSb290ID0gZmFsc2U7CisgICAgICAgIHRoaXMub3V0Z29p
bmdFZGdlcyA9IFtdOworICAgICAgICB0aGlzLmluY29taW5nRWRnZXMgPSBbXTsKKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4
IGVhM2ExNjMuLjA5YWJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKQEAgLTExMiw2ICsxMTIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvR2FyYmFnZUNv
bGxlY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvR2VvbWV0cnku
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0hlYXBTbmFwc2hvdEVkZ2UuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2UuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVJbmRleC5qcyI+PC9zY3JpcHQ+CkBAIC0xMTksNiArMTIyLDkgQEAKICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0xheW91dEluc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvTGF5b3V0VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9NZW1vcnlDYXRlZ29yeS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9NZW1vcnlJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL01lbW9yeVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL05ldHdvcmtJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL05ldHdvcmtUaW1lbGluZS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9PYmplY3RQcmV2aWV3LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273334</attachid>
            <date>2016-03-08 13:53:28 -0800</date>
            <delta_ts>2016-03-08 14:26:12 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>snapshot-4.patch</filename>
            <type>text/plain</type>
            <size>24598</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODlkNmRhLi4xNDY3MWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMt
MDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBTbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC9z
bmFwc2hvdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9oZWFwL3Nu
YXBzaG90Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTA4ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1tYXJr
ZXItb3JpZW50LWZyb20tYW5nbGUtdG8tYXV0b3N0YXJ0cmV2ZXJzZS5odG1sIG9uIGlvcy1zaW11
bGF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg1MTRhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgZm9yIHRoZSBIZWFwLnNuYXBzaG90IGNvbW1hbmQu
CisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBIZWFwLnNuYXBzaG90CistLSBSdW5uaW5nIHRl
c3QgY2FzZTogVHJpZ2dlclNuYXBzaG90CitQQVNTOiBTaG91bGQgbm90IGhhdmUgYW4gZXJyb3Ig
Y3JlYXRpbmcgYSBzbmFwc2hvdC4KK1BBU1M6IFNuYXBzaG90IHNpemUgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxa2IuCitQQVNTOiBTbmFwc2hvdCBvYmplY3QgY291bnQgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxMDAuCitQQVNTOiBTbmFwc2hvdCBzaG91bGQgaW5jbHVkZSBhIGNsYXNzIGNhdGVn
b3J5IGZvciAnV2luZG93Jy4KK1BBU1M6IFNuYXBzaG93IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0
IG9uZSAnV2luZG93JyBpbnN0YW5jZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2hlYXAvc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBz
aG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ3YWQzOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90Lmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJIZWFwLnNuYXBzaG90Iik7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmlnZ2VyU25hcHNob3Qi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkNhbGxpbmcgSGVhcC5zbmFwc2hvdCBzaG91bGQgY3Jl
YXRlIGEgaGVhcCBzbmFwc2hvdC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNu
YXBzaG90U3RyaW5nRGF0YSkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYW4gZXJyb3IgY3JlYXRpbmcgYSBzbmFw
c2hvdC4iKTsKKyAgICAgICAgICAgICAgICBsZXQgcGF5bG9hZCA9IEpTT04ucGFyc2Uoc25hcHNo
b3RTdHJpbmdEYXRhKTsKKyAgICAgICAgICAgICAgICBsZXQgc25hcHNob3QgPSBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LmZyb21QYXlsb2FkKHBheWxvYWQpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChzbmFwc2hvdC50b3RhbFNpemUgPiAxMDI0LCAiU25hcHNo
b3Qgc2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDFrYi4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QudG90YWxPYmplY3RDb3VudCA+IDEwMCwg
IlNuYXBzaG90IG9iamVjdCBjb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEwMC4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QuY2F0ZWdvcmll
cy5nZXQoIldpbmRvdyIpLCAiU25hcHNob3Qgc2hvdWxkIGluY2x1ZGUgYSBjbGFzcyBjYXRlZ29y
eSBmb3IgJ1dpbmRvdycuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHNuYXBzaG90Lmluc3RhbmNlc1dpdGhDbGFzc05hbWUoIldpbmRvdyIpLmxlbmd0aCA+IDAs
ICJTbmFwc2hvdyBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCBvbmUgJ1dpbmRvdycgaW5zdGFuY2Uu
Iik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IGZvciB0
aGUgSGVhcC5zbmFwc2hvdCBjb21tYW5kLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDJlZTA4MDAuLjRmMzNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGEgd2F5IHRvIGNy
ZWF0ZSBhIEhlYXAgU25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9ySGVhcEFnZW50OjpzbmFwc2hvdCk6CisgICAgICAgIFRha2UgYSBoZWFwIHNuYXBzaG90
IGFuZCByZXR1cm4gdGhlIEpTT04gc3RyaW5nIHJlc3VsdC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uOgorICAgICAgICBSZW1vdmUgdW51c2VkIG9wdGlvbmFs
IGluZmVycmVkTmFtZS4gT3VyIGRpc3BsYXlOYW1lIHdvdWxkIGJlIGluZmVycmVkLgorCiAyMDE2
LTAzLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtF
UzZdIFJlZ3VsYXIgRXhwcmVzc2lvbiBjYW5vbmljYWxpemF0aW9uIHRhYmxlcyBmb3IgVW5pY29k
ZSBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdXNlIFVuaWNvZGUgQ2FzZUZvbGRpbmcudHh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCAyY2JjM2YzLi42NWZmM2QxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JIZWFwQWdlbnQuaCIKIAorI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9TdG9wd2F0Y2guaD4KQEAgLTc1LDYgKzc3LDggQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogCiAgICAgbV9l
bnZpcm9ubWVudC52bSgpLmhlYXAucmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisKKyAgICBjbGVhckhl
YXBTbmFwc2hvdHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdjKEVycm9yU3Ry
aW5nJikKQEAgLTg1LDYgKzg5LDI2IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnYyhFcnJv
clN0cmluZyYpCiAgICAgdm0uaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOwogfQogCit2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6c25hcHNob3QoRXJyb3JTdHJpbmcmLCBkb3VibGUqIHRpbWVzdGFt
cCwgU3RyaW5nKiBzbmFwc2hvdERhdGEpCit7CisgICAgVk0mIHZtID0gbV9lbnZpcm9ubWVudC52
bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKworICAgIEhlYXBTbmFwc2hvdEJ1aWxk
ZXIgc25hcHNob3RCdWlsZGVyKHZtLmVuc3VyZUhlYXBQcm9maWxlcigpKTsKKyAgICBzbmFwc2hv
dEJ1aWxkZXIuYnVpbGRTbmFwc2hvdCgpOworCisgICAgKnRpbWVzdGFtcCA9IG1fZW52aXJvbm1l
bnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CisgICAgKnNuYXBzaG90RGF0
YSA9IHNuYXBzaG90QnVpbGRlci5qc29uKFsmXSAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYgbm9k
ZSkgeworICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLmNlbGwtPnN0cnVj
dHVyZSh2bSkpIHsKKyAgICAgICAgICAgIGlmIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9l
bnZpcm9ubWVudC5jYW5BY2Nlc3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKK30KKwogc3Rh
dGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlIHBy
b3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7CiAg
ICAgc3dpdGNoIChvcGVyYXRpb24pIHsKQEAgLTEzNiw0ICsxNjAsMTAgQEAgdm9pZCBJbnNwZWN0
b3JIZWFwQWdlbnQ6OmRpZEdhcmJhZ2VDb2xsZWN0KEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQog
ICAgIG1fZ2NTdGFydFRpbWUgPSBOQU47CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojpj
bGVhckhlYXBTbmFwc2hvdHMoKQoreworICAgIGlmIChIZWFwUHJvZmlsZXIqIGhlYXBQcm9maWxl
ciA9IG1fZW52aXJvbm1lbnQudm0oKS5oZWFwUHJvZmlsZXIoKSkKKyAgICAgICAgaGVhcFByb2Zp
bGVyLT5jbGVhclNuYXBzaG90cygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmgKaW5kZXggYjE5NzRlMy4uZTNkOGE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSW5zcGVjdG9ySGVhcEFnZW50X2gK
ICNkZWZpbmUgSW5zcGVjdG9ySGVhcEFnZW50X2gKIAorI2luY2x1ZGUgIkhlYXBTbmFwc2hvdC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJoZWFwL0hlYXBPYnNlcnZl
ci5oIgpAQCAtNTAsMTUgKzUxLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2MoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNuYXBzaG90
KEVycm9yU3RyaW5nJiwgZG91YmxlKiB0aW1lc3RhbXAsIFN0cmluZyogc25hcHNob3REYXRhKSBv
dmVycmlkZTsKIAogICAgIC8vIEhlYXBPYnNlcnZlcgogICAgIHZvaWQgd2lsbEdhcmJhZ2VDb2xs
ZWN0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChKU0M6OkhlYXBPcGVy
YXRpb24pIG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xlYXJIZWFwU25hcHNob3Rz
KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEhlYXBCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsK
KwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9nY1N0YXJ0VGlt
ZSB7IE5BTiB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgppbmRleCBkMGY5ZGMwLi40ZjFiZDk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpz
b24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dl
ci5qc29uCkBAIC02MCw3ICs2MCw2IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2Nh
dGlvbiIsICIkcmVmIjogIkxvY2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkxvY2F0aW9uIG9mIHRo
ZSBmdW5jdGlvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUi
OiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhl
IGZ1bmN0aW9uLiBOb3QgcHJlc2VudCBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucy4iIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJkaXNwbGF5TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJEaXNwbGF5IG5hbWUgb2YgdGhlIGZ1bmN0
aW9uKHNwZWNpZmllZCBpbiAnZGlzcGxheU5hbWUnIHByb3BlcnR5IG9uIHRoZSBmdW5jdGlvbiBv
YmplY3QpLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImluZmVycmVkTmFtZSIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJOYW1lIG9m
IHRoZSBmdW5jdGlvbiBpbmZlcnJlZCBmcm9tIGl0cyBpbml0aWFsIGFzc2lnbm1lbnQuIiB9LAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NvcGVDaGFpbiIsICJ0eXBlIjogImFycmF5Iiwg
Im9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJTY29wZSIgfSwgImRlc2NyaXB0
aW9uIjogIlNjb3BlIGNoYWluIGZvciB0aGlzIGNsb3N1cmUuIiB9CiAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBmdW5jdGlv
bi4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0hlYXAuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVh
cC5qc29uCmluZGV4IGVhYzMzNDYuLjBlMmJhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCkBAIC0xMSw2ICsxMSwxMSBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRUaW1lIiwgInR5cGUiOiAibnVtYmVyIiB9
LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kVGltZSIsICJ0eXBlIjogIm51bWJlciIg
fQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQi
OiAiSGVhcFNuYXBzaG90RGF0YSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSmF2YVNj
cmlwdENvcmUgSGVhcFNuYXBzaG90IEpTT04gZGF0YS4iLAorICAgICAgICAgICAgInR5cGUiOiAi
c3RyaW5nIgogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yNSw2ICsz
MCwxNCBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJnYyIsCiAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiVHJpZ2dlciBhIGZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uLiIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic25hcHNob3QiLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBoZWFwIHNuYXBzaG90LiIsCisgICAgICAg
ICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpbWVzdGFtcCIs
ICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNuYXBzaG90
RGF0YSIsICIkcmVmIjogIkhlYXBTbmFwc2hvdERhdGEiIH0KKyAgICAgICAgICAgIF0KICAgICAg
ICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IDkwZWVkZWMuLjNiNDM3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2
IEBACiAyMDE2LTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGEgd2F5IHRvIGNyZWF0ZSBhIEhlYXAgU25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6
CisgICAgICAgIEFkZCBuZXcgTW9kZWwgcmVzb3VyY2VzLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RDbGFzc0NhdGVnb3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5mcm9tUGF5bG9h
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgcm9v
dE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0
IG5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdl
dCBpZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlLmdldCBpbnN0YW5jZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuZ2V0IGNhdGVnb3JpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuZ2V0IHRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZS5nZXQgdG90YWxPYmplY3RDb3VudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5pbnN0YW5jZXNXaXRoQ2xhc3NOYW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLm5vZGVXaXRoT2Jq
ZWN0SWRlbnRpZmllcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBz
aG90RWRnZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRn
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUuc3Ry
aW5naWZ5KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3ROb2Rl
LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKToKKyAg
ICAgICAgRGF0YSBzdHJ1Y3R1cmVzIGZvciBhIEhlYXBTbmFwc2hvdC4KKworMjAxNi0wMy0wOCAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IE1pc2NlbGxhbmVvdXMgaW5zcGVjdG9yIGZpeGVzIGZvciB0eXBvcyAvIHN0YWxlIGNv
ZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE5
MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
VXRpbGl0aWVzLmpzCmluZGV4IDhlNDE4MTUuLjIwYmRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC05NCw2
ICs5NCwxNyBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgInZhbHVl
Rm9yQ2FzZUluc2Vuc2l0aXZlS2V5IiwKICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3Bl
cnR5KE1hcCwgImZyb21PYmplY3QiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbihvYmplY3QpCisg
ICAgeworICAgICAgICBsZXQgbWFwID0gbmV3IE1hcDsKKyAgICAgICAgZm9yIChsZXQga2V5IGlu
IG9iamVjdCkKKyAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBvYmplY3Rba2V5XSk7CisgICAgICAg
IHJldHVybiBtYXA7CisgICAgfQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXAucHJv
dG90eXBlLCAidGFrZSIsCiB7CiAgICAgdmFsdWU6IGZ1bmN0aW9uKGtleSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBhMzQ2ZTg0Li41ZDI0
N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CkBAIC0zMDgsNiArMzA4LDkgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0dhcmJhZ2VDb2xs
ZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0dlb21ldHJ5Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0dyYWRpZW50LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0hlYXBTbmFwc2hvdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3RFZGdlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0hlYXBTbmFwc2hvdE5vZGUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5k
ZXguanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzhlNDE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3QuanMKQEAgLTAsMCArMSwx
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q2xhc3NDYXRlZ29y
eSA9IGNsYXNzIEhlYXBTbmFwc2hvdENsYXNzQ2F0ZWdvcnkKK3sKKyAgICBjb25zdHJ1Y3Rvcihj
bGFzc05hbWUpCisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAg
ICAgICAgdGhpcy5zaXplID0gMDsKKyAgICAgICAgdGhpcy5jb3VudCA9IDA7CisgICAgICAgIHRo
aXMuaW50ZXJuYWxDb3VudCA9IDA7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdCA9IGNsYXNzIEhlYXBTbmFwc2hvdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sK
KyAgICBjb25zdHJ1Y3Rvcihyb290Tm9kZSwgbm9kZXMsIG5vZGVNYXApCisgICAgeworICAgICAg
ICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFyb290Tm9kZSB8fCByb290Tm9k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQobm9kZXMgaW5zdGFuY2VvZiBBcnJheSk7CisKKyAgICAgICAgdGhpcy5fcm9v
dE5vZGUgPSByb290Tm9kZTsKKyAgICAgICAgdGhpcy5fbm9kZXMgPSBub2RlczsKKyAgICAgICAg
dGhpcy5fbm9kZU1hcCA9IG5vZGVNYXA7CisKKyAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QuX25leHRBdmFpbGFibGVTbmFwc2hvdElkZW50aWZpZXIr
KzsKKyAgICAgICAgdGhpcy5faW5zdGFuY2VzID0gbm9kZXM7CisKKyAgICAgICAgbGV0IGNhdGVn
b3JpZXMgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgbGV0IHtjbGFzc05hbWUsIHNpemUsIGludGVybmFsfSA9IG5vZGVz
W2ldOworCisgICAgICAgICAgICBsZXQgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2NsYXNzTmFtZV07
CisgICAgICAgICAgICBpZiAoIWNhdGVnb3J5KQorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0g
Y2F0ZWdvcmllc1tjbGFzc05hbWVdID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDbGFz
c0NhdGVnb3J5KGNsYXNzTmFtZSk7CisKKyAgICAgICAgICAgIGNhdGVnb3J5LnNpemUgKz0gc2l6
ZTsKKyAgICAgICAgICAgIGNhdGVnb3J5LmNvdW50Kys7CisgICAgICAgICAgICBpZiAoaW50ZXJu
YWwpCisgICAgICAgICAgICAgICAgY2F0ZWdvcnkuaW50ZXJuYWxDb3VudCsrOworICAgICAgICB9
CisgICAgICAgIHRoaXMuX2NhdGVnb3JpZXMgPSBNYXAuZnJvbU9iamVjdChjYXRlZ29yaWVzKTsK
KworICAgICAgICB0aGlzLl90b3RhbFNpemUgPSAwOworICAgICAgICB0aGlzLl90b3RhbE9iamVj
dENvdW50ID0gMDsKKyAgICAgICAgZm9yIChsZXQge2NvdW50LCBzaXplfSBvZiB0aGlzLl9jYXRl
Z29yaWVzLnZhbHVlcygpKSB7CisgICAgICAgICAgICB0aGlzLl90b3RhbFNpemUgKz0gc2l6ZTsK
KyAgICAgICAgICAgIHRoaXMuX3RvdGFsT2JqZWN0Q291bnQgKz0gY291bnQ7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBmcm9tUGF5bG9hZChwYXlsb2Fk
KQorICAgIHsKKyAgICAgICAgbGV0IHt2ZXJzaW9uLCBub2Rlcywgbm9kZUNsYXNzTmFtZXMsIGVk
Z2VzLCBlZGdlVHlwZXN9ID0gcGF5bG9hZDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmVyc2lv
biA9PT0gMSwgIk9ubHkga25vdyBob3cgdG8gaGFuZGxlIEphdmFTY3JpcHRDb3JlIEhlYXAgU25h
cHNob3QgRm9ybWF0IFZlcnNpb24gMSIpOworICAgICAgICBjb25zb2xlLmFzc2VydChlZGdlVHlw
ZXMuZXZlcnkoKHR5cGUpID0+IHR5cGUgaW4gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Uu
RWRnZVR5cGUpLCAiVW5leHBlY3RlZCBlZGdlIHR5cGUiLCBlZGdlVHlwZXMpOworCisgICAgICAg
IGxldCBub2RlTWFwID0gbmV3IE1hcDsKKworICAgICAgICAvLyBUdXJuIG5vZGVzIGludG8gcmVh
bCBub2Rlcy4KKyAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgbm9kZVBheWxvYWQgPSBub2Rlc1tp
XTsKKyAgICAgICAgICAgIGxldCBpZCA9IG5vZGVQYXlsb2FkWzBdOworICAgICAgICAgICAgbGV0
IHNpemUgPSBub2RlUGF5bG9hZFsxXTsKKyAgICAgICAgICAgIGxldCBjbGFzc05hbWVJbmRleCA9
IG5vZGVQYXlsb2FkWzJdOworICAgICAgICAgICAgbGV0IGludGVybmFsID0gbm9kZVBheWxvYWRb
M107CisKKyAgICAgICAgICAgIGxldCBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3ROb2RlKGlkLCBub2RlQ2xhc3NOYW1lc1tjbGFzc05hbWVJbmRleF0sIHNpemUsICEhaW50ZXJu
YWwpOworICAgICAgICAgICAgbm9kZU1hcC5zZXQoaWQsIG5vZGUpOworICAgICAgICAgICAgbm9k
ZXNbaV0gPSBub2RlOworICAgICAgICB9CisKKyAgICAgICAgLy8gVHVybiBlZGdlcyBpbnRvIHJl
YWwgZWRnZXMgYW5kIHNldCB0aGVtIG9uIHRoZSBub2Rlcy4KKyAgICAgICAgZm9yIChsZXQgaSA9
IDAsIGxlbmd0aCA9IGVkZ2VzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICBsZXQgZWRnZVBheWxvYWQgPSBlZGdlc1tpXTsKKyAgICAgICAgICAgIGxldCBmcm9tSWRlbnRp
ZmllciA9IGVkZ2VQYXlsb2FkWzBdOworICAgICAgICAgICAgbGV0IHRvSWRlbnRpZmllciA9IGVk
Z2VQYXlsb2FkWzFdOworICAgICAgICAgICAgbGV0IGVkZ2VUeXBlSW5kZXggPSBlZGdlUGF5bG9h
ZFsyXTsKKyAgICAgICAgICAgIGxldCBkYXRhID0gZWRnZVBheWxvYWRbM107CisKKyAgICAgICAg
ICAgIGxldCBmcm9tID0gbm9kZU1hcC5nZXQoZnJvbUlkZW50aWZpZXIpOworICAgICAgICAgICAg
bGV0IHRvID0gbm9kZU1hcC5nZXQodG9JZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGxldCBlZGdl
ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlKGZyb20sIHRvLCBlZGdlVHlwZXNb
ZWRnZVR5cGVJbmRleF0sIGRhdGEpOworICAgICAgICAgICAgZnJvbS5vdXRnb2luZ0VkZ2VzLnB1
c2goZWRnZSk7CisgICAgICAgICAgICB0by5pbmNvbWluZ0VkZ2VzLnB1c2goZWRnZSk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSb290IG5vZGUuCisgICAgICAgIGxldCByb290Tm9kZSA9IG5v
ZGVNYXAuZ2V0KDApOworICAgICAgICBjb25zb2xlLmFzc2VydChyb290Tm9kZSwgIk5vZGUgd2l0
aCBpZGVudGlmaWVyIDAgaXMgdGhlIGFydGlmaWNpYWwgPHJvb3Q+IG5vZGUuIik7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHJvb3ROb2RlLm91dGdvaW5nRWRnZXMubGVuZ3RoID4gMCwgIlRoaXMg
aGFkIGJldHRlciBoYXZlIGNoaWxkcmVuISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChyb290
Tm9kZS5pbmNvbWluZ0VkZ2VzLmxlbmd0aCA9PT0gMCwgIlRoaXMgaGFkIGJldHRlciBub3QgaGF2
ZSBiYWNrIHJlZmVyZW5jZXMhIik7CisKKyAgICAgICAgLy8gTWFyayBHQyByb290cy4KKyAgICAg
ICAgbGV0IHJvb3ROb2RlRWRnZXMgPSByb290Tm9kZS5vdXRnb2luZ0VkZ2VzOworICAgICAgICBm
b3IgKGxldCBpID0gMCwgbGVuZ3RoID0gcm9vdE5vZGVFZGdlcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIHJvb3ROb2RlRWRnZXNbaV0udG8uZ2NSb290ID0gdHJ1ZTsKKwor
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qocm9vdE5vZGUsIG5v
ZGVzLCBub2RlTWFwKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCByb290Tm9k
ZSgpIHsgcmV0dXJuIHRoaXMuX3Jvb3ROb2RlOyB9CisgICAgZ2V0IG5vZGVzKCkgeyByZXR1cm4g
dGhpcy5fbm9kZXM7IH0KKyAgICBnZXQgaWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMuX2lkZW50
aWZpZXI7IH0KKyAgICBnZXQgaW5zdGFuY2VzKCkgeyByZXR1cm4gdGhpcy5faW5zdGFuY2VzOyB9
CisgICAgZ2V0IGNhdGVnb3JpZXMoKSB7IHJldHVybiB0aGlzLl9jYXRlZ29yaWVzOyB9CisgICAg
Z2V0IHRvdGFsU2l6ZSgpIHsgcmV0dXJuIHRoaXMuX3RvdGFsU2l6ZTsgfQorICAgIGdldCB0b3Rh
bE9iamVjdENvdW50KCkgeyByZXR1cm4gdGhpcy5fdG90YWxPYmplY3RDb3VudDsgfQorCisgICAg
aW5zdGFuY2VzV2l0aENsYXNzTmFtZShjbGFzc05hbWUpCisgICAgeworICAgICAgICBsZXQgcmVz
dWx0cyA9IFtdOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2luc3RhbmNlcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGNlbGwgPSB0aGlzLl9pbnN0YW5jZXNbaV07
CisgICAgICAgICAgICBpZiAoY2VsbC5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSkKKyAgICAgICAg
ICAgICAgICByZXN1bHRzLnB1c2goY2VsbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
c3VsdHM7CisgICAgfQorCisgICAgbm9kZVdpdGhPYmplY3RJZGVudGlmaWVyKGlkKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVNYXAuZ2V0KGlkKTsKKyAgICB9Cit9OworCitXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Ll9uZXh0QXZhaWxhYmxlU25hcHNob3RJZGVudGlmaWVyID0g
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9IZWFwU25hcHNob3RFZGdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0hlYXBTbmFwc2hvdEVkZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmYyYzc5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3RFZGdlLmpzCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZSA9IGNsYXNzIEhl
YXBTbmFwc2hvdEVkZ2UKK3sKKyAgICBjb25zdHJ1Y3Rvcihmcm9tLCB0bywgdHlwZSwgZGF0YSkK
KyAgICB7CisgICAgICAgIHRoaXMuZnJvbSA9IGZyb207CisgICAgICAgIHRoaXMudG8gPSB0bzsK
KyAgICAgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5kYXRhID0gZGF0YTsKKyAg
ICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5FZGdlVHlwZSA9IHsKKyAg
ICBJbnRlcm5hbDogIkludGVybmFsIiwgICAgICAgLy8gTm8gZGF0YS4KKyAgICBQcm9wZXJ0eTog
IlByb3BlcnR5IiwgICAgICAgLy8gZGF0YSBpcyBzdHJpbmcgcHJvcGVydHkgbmFtZS4KKyAgICBJ
bmRleDogIkluZGV4IiwgICAgICAgICAgICAgLy8gZGF0YSBpcyBudW1lcmljIGluZGV4LgorICAg
IFZhcmlhYmxlOiAiVmFyaWFibGUiLCAgICAgICAvLyBkYXRhIGlzIHN0cmluZyB2YXJpYWJsZSBu
YW1lLgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdE5vZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODYyYWZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzCkBAIC0wLDAg
KzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSA9IGNs
YXNzIEhlYXBTbmFwc2hvdE5vZGUKK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBjbGFz
c05hbWUsIHNpemUsIGludGVybmFsKQorICAgIHsKKyAgICAgICAgdGhpcy5pZCA9IGlkZW50aWZp
ZXI7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAgICAgICB0aGlzLnNp
emUgPSBzaXplOyAKKyAgICAgICAgdGhpcy5pbnRlcm5hbCA9IGludGVybmFsOworICAgICAgICB0
aGlzLmdjUm9vdCA9IGZhbHNlOworICAgICAgICB0aGlzLm91dGdvaW5nRWRnZXMgPSBbXTsKKyAg
ICAgICAgdGhpcy5pbmNvbWluZ0VkZ2VzID0gW107CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCBlYTNhMTYzLi4wOWFiY2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBA
IC0xMTIsNiArMTEyLDkgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0ZyYW1lLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0dhcmJhZ2VDb2xsZWN0aW9uLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0dlb21ldHJ5LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0hlYXBTbmFwc2hvdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3RFZGdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0hlYXBTbmFwc2hvdE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguanMi
Pjwvc2NyaXB0PgpAQCAtMTE5LDYgKzEyMiw5IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9M
YXlvdXRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xh
eW91dFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0xhenlTb3VyY2VDb2RlTG9jYXRpb24uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvTWVtb3J5Q2F0ZWdvcnkuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvTWVtb3J5SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9NZW1vcnlUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9OZXR3b3JrSW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9OZXR3b3JrVGltZWxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvT2JqZWN0UHJldmlldy5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273341</attachid>
            <date>2016-03-08 14:26:12 -0800</date>
            <delta_ts>2016-03-08 16:43:52 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>snapshot-5.patch</filename>
            <type>text/plain</type>
            <size>24599</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODlkNmRhLi4xNDY3MWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMt
MDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBTbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC9z
bmFwc2hvdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9oZWFwL3Nu
YXBzaG90Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTA4ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1tYXJr
ZXItb3JpZW50LWZyb20tYW5nbGUtdG8tYXV0b3N0YXJ0cmV2ZXJzZS5odG1sIG9uIGlvcy1zaW11
bGF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg1MTRhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgZm9yIHRoZSBIZWFwLnNuYXBzaG90IGNvbW1hbmQu
CisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBIZWFwLnNuYXBzaG90CistLSBSdW5uaW5nIHRl
c3QgY2FzZTogVHJpZ2dlclNuYXBzaG90CitQQVNTOiBTaG91bGQgbm90IGhhdmUgYW4gZXJyb3Ig
Y3JlYXRpbmcgYSBzbmFwc2hvdC4KK1BBU1M6IFNuYXBzaG90IHNpemUgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxa2IuCitQQVNTOiBTbmFwc2hvdCBvYmplY3QgY291bnQgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAxMDAuCitQQVNTOiBTbmFwc2hvdCBzaG91bGQgaW5jbHVkZSBhIGNsYXNzIGNhdGVn
b3J5IGZvciAnV2luZG93Jy4KK1BBU1M6IFNuYXBzaG93IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0
IG9uZSAnV2luZG93JyBpbnN0YW5jZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2hlYXAvc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBz
aG90Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ3YWQzOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9oZWFwL3NuYXBzaG90Lmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJIZWFwLnNuYXBzaG90Iik7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUcmlnZ2VyU25hcHNob3Qi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkNhbGxpbmcgSGVhcC5zbmFwc2hvdCBzaG91bGQgY3Jl
YXRlIGEgaGVhcCBzbmFwc2hvdC4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgICAgICBIZWFwQWdlbnQuc25hcHNob3QoKGVycm9yLCB0aW1lc3RhbXAsIHNu
YXBzaG90U3RyaW5nRGF0YSkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYW4gZXJyb3IgY3JlYXRpbmcgYSBzbmFw
c2hvdC4iKTsKKyAgICAgICAgICAgICAgICBsZXQgcGF5bG9hZCA9IEpTT04ucGFyc2Uoc25hcHNo
b3RTdHJpbmdEYXRhKTsKKyAgICAgICAgICAgICAgICBsZXQgc25hcHNob3QgPSBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LmZyb21QYXlsb2FkKHBheWxvYWQpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChzbmFwc2hvdC50b3RhbFNpemUgPiAxMDI0LCAiU25hcHNo
b3Qgc2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDFrYi4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QudG90YWxPYmplY3RDb3VudCA+IDEwMCwg
IlNuYXBzaG90IG9iamVjdCBjb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEwMC4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc25hcHNob3QuY2F0ZWdvcmll
cy5nZXQoIldpbmRvdyIpLCAiU25hcHNob3Qgc2hvdWxkIGluY2x1ZGUgYSBjbGFzcyBjYXRlZ29y
eSBmb3IgJ1dpbmRvdycuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHNuYXBzaG90Lmluc3RhbmNlc1dpdGhDbGFzc05hbWUoIldpbmRvdyIpLmxlbmd0aCA+IDAs
ICJTbmFwc2hvdyBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCBvbmUgJ1dpbmRvdycgaW5zdGFuY2Uu
Iik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IGZvciB0
aGUgSGVhcC5zbmFwc2hvdCBjb21tYW5kLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDJlZTA4MDAuLjRmMzNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGEgd2F5IHRvIGNy
ZWF0ZSBhIEhlYXAgU25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9ySGVhcEFnZW50OjpzbmFwc2hvdCk6CisgICAgICAgIFRha2UgYSBoZWFwIHNuYXBzaG90
IGFuZCByZXR1cm4gdGhlIEpTT04gc3RyaW5nIHJlc3VsdC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uOgorICAgICAgICBSZW1vdmUgdW51c2VkIG9wdGlvbmFs
IGluZmVycmVkTmFtZS4gT3VyIGRpc3BsYXlOYW1lIHdvdWxkIGJlIGluZmVycmVkLgorCiAyMDE2
LTAzLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtF
UzZdIFJlZ3VsYXIgRXhwcmVzc2lvbiBjYW5vbmljYWxpemF0aW9uIHRhYmxlcyBmb3IgVW5pY29k
ZSBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdXNlIFVuaWNvZGUgQ2FzZUZvbGRpbmcudHh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCAyY2JjM2YzLi41YmMzYzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JIZWFwQWdlbnQuaCIKIAorI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvU3RvcHdhdGNoLmg+CkBAIC03NSw2ICs3Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50
OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIAogICAgIG1f
ZW52aXJvbm1lbnQudm0oKS5oZWFwLnJlbW92ZU9ic2VydmVyKHRoaXMpOworCisgICAgY2xlYXJI
ZWFwU25hcHNob3RzKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnYyhFcnJvclN0
cmluZyYpCkBAIC04NSw2ICs4OSwyNiBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2MoRXJy
b3JTdHJpbmcmKQogICAgIHZtLmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JIZWFwQWdlbnQ6OnNuYXBzaG90KEVycm9yU3RyaW5nJiwgZG91YmxlKiB0aW1lc3Rh
bXAsIFN0cmluZyogc25hcHNob3REYXRhKQoreworICAgIFZNJiB2bSA9IG1fZW52aXJvbm1lbnQu
dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBIZWFwU25hcHNob3RCdWls
ZGVyIHNuYXBzaG90QnVpbGRlcih2bS5lbnN1cmVIZWFwUHJvZmlsZXIoKSk7CisgICAgc25hcHNo
b3RCdWlsZGVyLmJ1aWxkU25hcHNob3QoKTsKKworICAgICp0aW1lc3RhbXAgPSBtX2Vudmlyb25t
ZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOworICAgICpzbmFwc2hvdERh
dGEgPSBzbmFwc2hvdEJ1aWxkZXIuanNvbihbJl0gKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmIG5v
ZGUpIHsKKyAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1
Y3R1cmUodm0pKSB7CisgICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1f
ZW52aXJvbm1lbnQuY2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3RhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7Cit9CisKIHN0
YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSBw
cm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQogewog
ICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CkBAIC0xMzYsNCArMTYwLDEwIEBAIHZvaWQgSW5zcGVj
dG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikK
ICAgICBtX2djU3RhcnRUaW1lID0gTkFOOwogfQogCit2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6
Y2xlYXJIZWFwU25hcHNob3RzKCkKK3sKKyAgICBpZiAoSGVhcFByb2ZpbGVyKiBoZWFwUHJvZmls
ZXIgPSBtX2Vudmlyb25tZW50LnZtKCkuaGVhcFByb2ZpbGVyKCkpCisgICAgICAgIGhlYXBQcm9m
aWxlci0+Y2xlYXJTbmFwc2hvdHMoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5oCmluZGV4IGIxOTc0ZTMuLmUzZDhhN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckhl
YXBBZ2VudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEluc3BlY3RvckhlYXBBZ2VudF9o
CiAjZGVmaW5lIEluc3BlY3RvckhlYXBBZ2VudF9oCiAKKyNpbmNsdWRlICJIZWFwU25hcHNob3Qu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiaGVhcC9IZWFwT2JzZXJ2
ZXIuaCIKQEAgLTUwLDE1ICs1MSwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdjKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzbmFwc2hv
dChFcnJvclN0cmluZyYsIGRvdWJsZSogdGltZXN0YW1wLCBTdHJpbmcqIHNuYXBzaG90RGF0YSkg
b3ZlcnJpZGU7CiAKICAgICAvLyBIZWFwT2JzZXJ2ZXIKICAgICB2b2lkIHdpbGxHYXJiYWdlQ29s
bGVjdCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoSlNDOjpIZWFwT3Bl
cmF0aW9uKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGNsZWFySGVhcFNuYXBzaG90
cygpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxIZWFwQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52aXJvbm1lbnQ7
CisKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fZ2NTdGFydFRp
bWUgeyBOQU4gfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24KaW5kZXggZDBmOWRjMC4uNGYxYmQ5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRGVidWdn
ZXIuanNvbgpAQCAtNjAsNyArNjAsNiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG9j
YXRpb24iLCAiJHJlZiI6ICJMb2NhdGlvbiIsICJkZXNjcmlwdGlvbiI6ICJMb2NhdGlvbiBvZiB0
aGUgZnVuY3Rpb24uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBl
IjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJOYW1lIG9mIHRo
ZSBmdW5jdGlvbi4gTm90IHByZXNlbnQgZm9yIGFub255bW91cyBmdW5jdGlvbnMuIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGlzcGxheU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBuYW1lIG9mIHRoZSBmdW5j
dGlvbihzcGVjaWZpZWQgaW4gJ2Rpc3BsYXlOYW1lJyBwcm9wZXJ0eSBvbiB0aGUgZnVuY3Rpb24g
b2JqZWN0KS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbmZlcnJlZE5hbWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiTmFtZSBv
ZiB0aGUgZnVuY3Rpb24gaW5mZXJyZWQgZnJvbSBpdHMgaW5pdGlhbCBhc3NpZ25tZW50LiIgfSwK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjb3BlQ2hhaW4iLCAidHlwZSI6ICJhcnJheSIs
ICJvcHRpb25hbCI6IHRydWUsICJpdGVtcyI6IHsgIiRyZWYiOiAiU2NvcGUiIH0sICJkZXNjcmlw
dGlvbiI6ICJTY29wZSBjaGFpbiBmb3IgdGhpcyBjbG9zdXJlLiIgfQogICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCB0aGUgZnVuY3Rp
b24uIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9IZWFwLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0hl
YXAuanNvbgppbmRleCBlYWMzMzQ2Li4wZTJiYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0hlYXAuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0hlYXAuanNvbgpAQCAtMTEsNiArMTEsMTEgQEAK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0VGltZSIsICJ0eXBlIjogIm51bWJlciIg
fSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZFRpbWUiLCAidHlwZSI6ICJudW1iZXIi
IH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlk
IjogIkhlYXBTbmFwc2hvdERhdGEiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkphdmFT
Y3JpcHRDb3JlIEhlYXBTbmFwc2hvdCBKU09OIGRhdGEuIiwKKyAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIKICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjUsNiAr
MzAsMTQgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZ2MiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRyaWdnZXIgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbi4iCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNuYXBzaG90IiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUYWtlIGEgaGVhcCBzbmFwc2hvdC4iLAorICAgICAg
ICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0aW1lc3RhbXAi
LCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzbmFwc2hv
dERhdGEiLCAiJHJlZiI6ICJIZWFwU25hcHNob3REYXRhIiB9CisgICAgICAgICAgICBdCiAgICAg
ICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRl
eCA5MGVlZGVjLi4zYjQzNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwz
NiBAQAogMjAxNi0wMy0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBhIHdheSB0byBjcmVhdGUgYSBIZWFwIFNuYXBz
aG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUx
ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1s
OgorICAgICAgICBBZGQgbmV3IE1vZGVsIHJlc291cmNlcy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Q2xhc3NDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QuZnJvbVBheWxv
YWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0IHJv
b3ROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdl
dCBub2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5n
ZXQgaWRlbnRpZmllcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5nZXQgaW5zdGFuY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLmdldCBjYXRlZ29yaWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLmdldCB0b3RhbFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0IHRvdGFsT2JqZWN0Q291bnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuaW5zdGFuY2VzV2l0aENsYXNzTmFtZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5ub2RlV2l0aE9i
amVjdElkZW50aWZpZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFw
c2hvdEVkZ2UuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVk
Z2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLnN0
cmluZ2lmeSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9k
ZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSk6Cisg
ICAgICAgIERhdGEgc3RydWN0dXJlcyBmb3IgYSBIZWFwU25hcHNob3QuCisKKzIwMTYtMDMtMDgg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBNaXNjZWxsYW5lb3VzIGluc3BlY3RvciBmaXhlcyBmb3IgdHlwb3MgLyBzdGFsZSBj
b2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUx
OTMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcwppbmRleCA4ZTQxODE1Li4yMGJkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtOTQs
NiArOTQsMTcgQEAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJ2YWx1
ZUZvckNhc2VJbnNlbnNpdGl2ZUtleSIsCiAgICAgfQogfSk7CiAKK09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShNYXAsICJmcm9tT2JqZWN0IiwKK3sKKyAgICB2YWx1ZTogZnVuY3Rpb24ob2JqZWN0KQor
ICAgIHsKKyAgICAgICAgbGV0IG1hcCA9IG5ldyBNYXA7CisgICAgICAgIGZvciAobGV0IGtleSBp
biBvYmplY3QpCisgICAgICAgICAgICBtYXAuc2V0KGtleSwgb2JqZWN0W2tleV0pOworICAgICAg
ICByZXR1cm4gbWFwOworICAgIH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnBy
b3RvdHlwZSwgInRha2UiLAogewogICAgIHZhbHVlOiBmdW5jdGlvbihrZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYTM0NmU4NC4uNWQy
NDdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bApAQCAtMzA4LDYgKzMwOCw5IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HYXJiYWdlQ29s
bGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HZW9tZXRyeS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HcmFkaWVudC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUlu
ZGV4LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmM4ZTQxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzCkBAIC0wLDAgKzEs
MTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENsYXNzQ2F0ZWdv
cnkgPSBjbGFzcyBIZWFwU25hcHNob3RDbGFzc0NhdGVnb3J5Cit7CisgICAgY29uc3RydWN0b3Io
Y2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7Cisg
ICAgICAgIHRoaXMuc2l6ZSA9IDA7CisgICAgICAgIHRoaXMuY291bnQgPSAwOworICAgICAgICB0
aGlzLmludGVybmFsQ291bnQgPSAwOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QgPSBjbGFzcyBIZWFwU25hcHNob3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7
CisgICAgY29uc3RydWN0b3Iocm9vdE5vZGUsIG5vZGVzLCBub2RlTWFwKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKKworICAgICAgICBjb25zb2xlLmFzc2VydCghcm9vdE5vZGUgfHwgcm9vdE5v
ZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KG5vZGVzIGluc3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgIHRoaXMuX3Jv
b3ROb2RlID0gcm9vdE5vZGU7CisgICAgICAgIHRoaXMuX25vZGVzID0gbm9kZXM7CisgICAgICAg
IHRoaXMuX25vZGVNYXAgPSBub2RlTWFwOworCisgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Ll9uZXh0QXZhaWxhYmxlU25hcHNob3RJZGVudGlmaWVy
Kys7CisgICAgICAgIHRoaXMuX2luc3RhbmNlcyA9IG5vZGVzOworCisgICAgICAgIGxldCBjYXRl
Z29yaWVzID0ge307CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIGxldCB7Y2xhc3NOYW1lLCBzaXplLCBpbnRlcm5hbH0gPSBub2Rl
c1tpXTsKKworICAgICAgICAgICAgbGV0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjbGFzc05hbWVd
OworICAgICAgICAgICAgaWYgKCFjYXRlZ29yeSkKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9
IGNhdGVnb3JpZXNbY2xhc3NOYW1lXSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q2xh
c3NDYXRlZ29yeShjbGFzc05hbWUpOworCisgICAgICAgICAgICBjYXRlZ29yeS5zaXplICs9IHNp
emU7CisgICAgICAgICAgICBjYXRlZ29yeS5jb3VudCsrOworICAgICAgICAgICAgaWYgKGludGVy
bmFsKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5LmludGVybmFsQ291bnQrKzsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLl9jYXRlZ29yaWVzID0gTWFwLmZyb21PYmplY3QoY2F0ZWdvcmllcyk7
CisKKyAgICAgICAgdGhpcy5fdG90YWxTaXplID0gMDsKKyAgICAgICAgdGhpcy5fdG90YWxPYmpl
Y3RDb3VudCA9IDA7CisgICAgICAgIGZvciAobGV0IHtjb3VudCwgc2l6ZX0gb2YgdGhpcy5fY2F0
ZWdvcmllcy52YWx1ZXMoKSkgeworICAgICAgICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7
CisgICAgICAgICAgICB0aGlzLl90b3RhbE9iamVjdENvdW50ICs9IGNvdW50OworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9h
ZCkKKyAgICB7CisgICAgICAgIGxldCB7dmVyc2lvbiwgbm9kZXMsIG5vZGVDbGFzc05hbWVzLCBl
ZGdlcywgZWRnZVR5cGVzfSA9IHBheWxvYWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZlcnNp
b24gPT09IDEsICJPbmx5IGtub3cgaG93IHRvIGhhbmRsZSBKYXZhU2NyaXB0Q29yZSBIZWFwIFNu
YXBzaG90IEZvcm1hdCBWZXJzaW9uIDEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZWRnZVR5
cGVzLmV2ZXJ5KCh0eXBlKSA9PiB0eXBlIGluIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdl
LkVkZ2VUeXBlKSwgIlVuZXhwZWN0ZWQgZWRnZSB0eXBlIiwgZWRnZVR5cGVzKTsKKworICAgICAg
ICBsZXQgbm9kZU1hcCA9IG5ldyBNYXA7CisKKyAgICAgICAgLy8gVHVybiBub2RlcyBpbnRvIHJl
YWwgbm9kZXMuCisgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBub2Rlcy5sZW5ndGg7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IG5vZGVQYXlsb2FkID0gbm9kZXNb
aV07CisgICAgICAgICAgICBsZXQgaWQgPSBub2RlUGF5bG9hZFswXTsKKyAgICAgICAgICAgIGxl
dCBzaXplID0gbm9kZVBheWxvYWRbMV07CisgICAgICAgICAgICBsZXQgY2xhc3NOYW1lSW5kZXgg
PSBub2RlUGF5bG9hZFsyXTsKKyAgICAgICAgICAgIGxldCBpbnRlcm5hbCA9IG5vZGVQYXlsb2Fk
WzNdOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZShpZCwgbm9kZUNsYXNzTmFtZXNbY2xhc3NOYW1lSW5kZXhdLCBzaXplLCAhIWludGVy
bmFsKTsKKyAgICAgICAgICAgIG5vZGVNYXAuc2V0KGlkLCBub2RlKTsKKyAgICAgICAgICAgIG5v
ZGVzW2ldID0gbm9kZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFR1cm4gZWRnZXMgaW50byBy
ZWFsIGVkZ2VzIGFuZCBzZXQgdGhlbSBvbiB0aGUgbm9kZXMuCisgICAgICAgIGZvciAobGV0IGkg
PSAwLCBsZW5ndGggPSBlZGdlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgbGV0IGVkZ2VQYXlsb2FkID0gZWRnZXNbaV07CisgICAgICAgICAgICBsZXQgZnJvbUlkZW50
aWZpZXIgPSBlZGdlUGF5bG9hZFswXTsKKyAgICAgICAgICAgIGxldCB0b0lkZW50aWZpZXIgPSBl
ZGdlUGF5bG9hZFsxXTsKKyAgICAgICAgICAgIGxldCBlZGdlVHlwZUluZGV4ID0gZWRnZVBheWxv
YWRbMl07CisgICAgICAgICAgICBsZXQgZGF0YSA9IGVkZ2VQYXlsb2FkWzNdOworCisgICAgICAg
ICAgICBsZXQgZnJvbSA9IG5vZGVNYXAuZ2V0KGZyb21JZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IGxldCB0byA9IG5vZGVNYXAuZ2V0KHRvSWRlbnRpZmllcik7CisgICAgICAgICAgICBsZXQgZWRn
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZShmcm9tLCB0bywgZWRnZVR5cGVz
W2VkZ2VUeXBlSW5kZXhdLCBkYXRhKTsKKyAgICAgICAgICAgIGZyb20ub3V0Z29pbmdFZGdlcy5w
dXNoKGVkZ2UpOworICAgICAgICAgICAgdG8uaW5jb21pbmdFZGdlcy5wdXNoKGVkZ2UpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gUm9vdCBub2RlLgorICAgICAgICBsZXQgcm9vdE5vZGUgPSBu
b2RlTWFwLmdldCgwKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdE5vZGUsICJOb2RlIHdp
dGggaWRlbnRpZmllciAwIGlzIHRoZSBhcnRpZmljaWFsIDxyb290PiBub2RlLiIpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChyb290Tm9kZS5vdXRnb2luZ0VkZ2VzLmxlbmd0aCA+IDAsICJUaGlz
IGhhZCBiZXR0ZXIgaGF2ZSBjaGlsZHJlbiEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocm9v
dE5vZGUuaW5jb21pbmdFZGdlcy5sZW5ndGggPT09IDAsICJUaGlzIGhhZCBiZXR0ZXIgbm90IGhh
dmUgYmFjayByZWZlcmVuY2VzISIpOworCisgICAgICAgIC8vIE1hcmsgR0Mgcm9vdHMuCisgICAg
ICAgIGxldCByb290Tm9kZUVkZ2VzID0gcm9vdE5vZGUub3V0Z29pbmdFZGdlczsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IHJvb3ROb2RlRWRnZXMubGVuZ3RoOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICByb290Tm9kZUVkZ2VzW2ldLnRvLmdjUm9vdCA9IHRydWU7CisK
KyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KHJvb3ROb2RlLCBu
b2Rlcywgbm9kZU1hcCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgcm9vdE5v
ZGUoKSB7IHJldHVybiB0aGlzLl9yb290Tm9kZTsgfQorICAgIGdldCBub2RlcygpIHsgcmV0dXJu
IHRoaXMuX25vZGVzOyB9CisgICAgZ2V0IGlkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9pZGVu
dGlmaWVyOyB9CisgICAgZ2V0IGluc3RhbmNlcygpIHsgcmV0dXJuIHRoaXMuX2luc3RhbmNlczsg
fQorICAgIGdldCBjYXRlZ29yaWVzKCkgeyByZXR1cm4gdGhpcy5fY2F0ZWdvcmllczsgfQorICAg
IGdldCB0b3RhbFNpemUoKSB7IHJldHVybiB0aGlzLl90b3RhbFNpemU7IH0KKyAgICBnZXQgdG90
YWxPYmplY3RDb3VudCgpIHsgcmV0dXJuIHRoaXMuX3RvdGFsT2JqZWN0Q291bnQ7IH0KKworICAg
IGluc3RhbmNlc1dpdGhDbGFzc05hbWUoY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgbGV0IHJl
c3VsdHMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9pbnN0YW5jZXMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBjZWxsID0gdGhpcy5faW5zdGFuY2VzW2ld
OworICAgICAgICAgICAgaWYgKGNlbGwuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpCisgICAgICAg
ICAgICAgICAgcmVzdWx0cy5wdXNoKGNlbGwpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHRzOworICAgIH0KKworICAgIG5vZGVXaXRoT2JqZWN0SWRlbnRpZmllcihpZCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9ub2RlTWFwLmdldChpZCk7CisgICAgfQorfTsKKworV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5fbmV4dEF2YWlsYWJsZVNuYXBzaG90SWRlbnRpZmllciA9
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvSGVhcFNuYXBzaG90RWRnZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9IZWFwU25hcHNob3RFZGdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmJmMmM3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5qcwpAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UgPSBjbGFzcyBI
ZWFwU25hcHNob3RFZGdlCit7CisgICAgY29uc3RydWN0b3IoZnJvbSwgdG8sIHR5cGUsIGRhdGEp
CisgICAgeworICAgICAgICB0aGlzLmZyb20gPSBmcm9tOworICAgICAgICB0aGlzLnRvID0gdG87
CisgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7Cisg
ICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UuRWRnZVR5cGUgPSB7Cisg
ICAgSW50ZXJuYWw6ICJJbnRlcm5hbCIsICAgICAgIC8vIE5vIGRhdGEuCisgICAgUHJvcGVydHk6
ICJQcm9wZXJ0eSIsICAgICAgIC8vIGRhdGEgaXMgc3RyaW5nIHByb3BlcnR5IG5hbWUuCisgICAg
SW5kZXg6ICJJbmRleCIsICAgICAgICAgICAgIC8vIGRhdGEgaXMgbnVtZXJpYyBpbmRleC4KKyAg
ICBWYXJpYWJsZTogIlZhcmlhYmxlIiwgICAgICAgLy8gZGF0YSBpcyBzdHJpbmcgdmFyaWFibGUg
bmFtZS4KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg2MmFmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcwpAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUgPSBj
bGFzcyBIZWFwU25hcHNob3ROb2RlCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgY2xh
c3NOYW1lLCBzaXplLCBpbnRlcm5hbCkKKyAgICB7CisgICAgICAgIHRoaXMuaWQgPSBpZGVudGlm
aWVyOworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5z
aXplID0gc2l6ZTsgCisgICAgICAgIHRoaXMuaW50ZXJuYWwgPSBpbnRlcm5hbDsKKyAgICAgICAg
dGhpcy5nY1Jvb3QgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5vdXRnb2luZ0VkZ2VzID0gW107Cisg
ICAgICAgIHRoaXMuaW5jb21pbmdFZGdlcyA9IFtdOworICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggZWEzYTE2My4uMDlhYmNi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApA
QCAtMTEyLDYgKzExMiw5IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9GcmFtZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HYXJiYWdlQ29sbGVjdGlvbi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4Lmpz
Ij48L3NjcmlwdD4KQEAgLTExOSw2ICsxMjIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
TGF5b3V0SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9M
YXlvdXRUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9MYXp5U291cmNlQ29kZUxvY2F0aW9uLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL01lbW9yeUNhdGVnb3J5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL01lbW9yeUluc3RydW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvTWVtb3J5VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvTmV0d29ya0luc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvTmV0d29ya1RpbWVsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL09iamVjdFByZXZpZXcuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="297939"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273367</attachid>
            <date>2016-03-08 16:47:48 -0800</date>
            <delta_ts>2016-03-08 17:38:30 -0800</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>for-landing.patch</filename>
            <type>text/plain</type>
            <size>24653</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODlkNmRhLi41NzM2OGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMt
MDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBTbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIGluc3BlY3Rvci9oZWFwL3NuYXBz
aG90LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2hlYXAvc25hcHNo
b3QuaHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMDggIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLW1hcmtlci1v
cmllbnQtZnJvbS1hbmdsZS10by1hdXRvc3RhcnRyZXZlcnNlLmh0bWwgb24gaW9zLXNpbXVsYXRv
cgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ODUxNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaGVhcC9zbmFwc2hvdC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorVGVzdCBmb3IgdGhlIEhlYXAuc25hcHNob3QgY29tbWFuZC4KKwor
Cis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEhlYXAuc25hcHNob3QKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBUcmlnZ2VyU25hcHNob3QKK1BBU1M6IFNob3VsZCBub3QgaGF2ZSBhbiBlcnJvciBjcmVh
dGluZyBhIHNuYXBzaG90LgorUEFTUzogU25hcHNob3Qgc2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0
aGFuIDFrYi4KK1BBU1M6IFNuYXBzaG90IG9iamVjdCBjb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0
aGFuIDEwMC4KK1BBU1M6IFNuYXBzaG90IHNob3VsZCBpbmNsdWRlIGEgY2xhc3MgY2F0ZWdvcnkg
Zm9yICdXaW5kb3cnLgorUEFTUzogU25hcHNob3cgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3Qgb25l
ICdXaW5kb3cnIGluc3RhbmNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
aGVhcC9zbmFwc2hvdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3Qu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDdhZDM5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2hlYXAvc25hcHNob3QuaHRtbApAQCAt
MCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkhlYXAuc25hcHNob3QiKTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRyaWdnZXJTbmFwc2hvdCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2FsbGluZyBIZWFwLnNuYXBzaG90IHNob3VsZCBjcmVhdGUg
YSBoZWFwIHNuYXBzaG90LiIsCisgICAgICAgIHRlc3Q6IChyZXNvbHZlLCByZWplY3QpID0+IHsK
KyAgICAgICAgICAgIEhlYXBBZ2VudC5zbmFwc2hvdCgoZXJyb3IsIHRpbWVzdGFtcCwgc25hcHNo
b3RTdHJpbmdEYXRhKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KCFlcnJvciwgIlNob3VsZCBub3QgaGF2ZSBhbiBlcnJvciBjcmVhdGluZyBhIHNuYXBzaG90
LiIpOworICAgICAgICAgICAgICAgIGxldCBwYXlsb2FkID0gSlNPTi5wYXJzZShzbmFwc2hvdFN0
cmluZ0RhdGEpOworICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdCA9IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QuZnJvbVBheWxvYWQocGF5bG9hZCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KHNuYXBzaG90LnRvdGFsU2l6ZSA+IDEwMjQsICJTbmFwc2hvdCBz
aXplIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMWtiLiIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChzbmFwc2hvdC50b3RhbE9iamVjdENvdW50ID4gMTAwLCAiU25h
cHNob3Qgb2JqZWN0IGNvdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMTAwLiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzbmFwc2hvdC5jYXRlZ29yaWVzLmdl
dCgiV2luZG93IiksICJTbmFwc2hvdCBzaG91bGQgaW5jbHVkZSBhIGNsYXNzIGNhdGVnb3J5IGZv
ciAnV2luZG93Jy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
c25hcHNob3QuaW5zdGFuY2VzV2l0aENsYXNzTmFtZSgiV2luZG93IikubGVuZ3RoID4gMCwgIlNu
YXBzaG93IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IG9uZSAnV2luZG93JyBpbnN0YW5jZS4iKTsK
KyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgZm9yIHRoZSBI
ZWFwLnNuYXBzaG90IGNvbW1hbmQuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggMmVlMDgwMC4uOTBjNTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDMtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRl
IGEgSGVhcCBTbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL0hlYXAuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvckhl
YXBBZ2VudDo6c25hcHNob3QpOgorICAgICAgICBUYWtlIGEgaGVhcCBzbmFwc2hvdCBhbmQgcmV0
dXJuIHRoZSBKU09OIHN0cmluZyByZXN1bHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvRGVidWdnZXIuanNvbjoKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBvcHRpb25hbCBpbmZlcnJl
ZE5hbWUuIE91ciBkaXNwbGF5TmFtZSB3b3VsZCBiZSBpbmZlcnJlZC4KKwogMjAxNi0wMy0wOCAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVM2XSBSZWd1
bGFyIEV4cHJlc3Npb24gY2Fub25pY2FsaXphdGlvbiB0YWJsZXMgZm9yIFVuaWNvZGUgbmVlZCB0
byBiZSB1cGRhdGVkIHRvIHVzZSBVbmljb2RlIENhc2VGb2xkaW5nLnR4dApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckhl
YXBBZ2VudC5jcHAKaW5kZXggMmNiYzNmMy4uNWJjM2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySGVhcEFnZW50LmgiCiAKKyNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3
YXRjaC5oPgpAQCAtNzUsNiArNzcsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyYpCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiAKICAgICBtX2Vudmlyb25t
ZW50LnZtKCkuaGVhcC5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKworICAgIGNsZWFySGVhcFNuYXBz
aG90cygpOwogfQogCiB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2MoRXJyb3JTdHJpbmcmKQpA
QCAtODUsNiArODksMjYgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdjKEVycm9yU3RyaW5n
JikKICAgICB2bS5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
SGVhcEFnZW50OjpzbmFwc2hvdChFcnJvclN0cmluZyYsIGRvdWJsZSogdGltZXN0YW1wLCBTdHJp
bmcqIHNuYXBzaG90RGF0YSkKK3sKKyAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgSGVhcFNuYXBzaG90QnVpbGRlciBzbmFw
c2hvdEJ1aWxkZXIodm0uZW5zdXJlSGVhcFByb2ZpbGVyKCkpOworICAgIHNuYXBzaG90QnVpbGRl
ci5idWlsZFNuYXBzaG90KCk7CisKKyAgICAqdGltZXN0YW1wID0gbV9lbnZpcm9ubWVudC5leGVj
dXRpb25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWUoKTsKKyAgICAqc25hcHNob3REYXRhID0gc25h
cHNob3RCdWlsZGVyLmpzb24oWyZdIChjb25zdCBIZWFwU25hcHNob3ROb2RlJiBub2RlKSB7Cisg
ICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2VsbC0+c3RydWN0dXJlKHZt
KSkgeworICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdHJ1
Y3R1cmUtPmdsb2JhbE9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vudmlyb25t
ZW50LmNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworfQorCiBzdGF0aWMgSW5z
cGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgcHJvdG9jb2xU
eXBlRm9ySGVhcE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKICAgICBzd2l0
Y2ggKG9wZXJhdGlvbikgewpAQCAtMTM2LDQgKzE2MCwxMCBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCiAgICAgbV9n
Y1N0YXJ0VGltZSA9IE5BTjsKIH0KIAordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmNsZWFySGVh
cFNuYXBzaG90cygpCit7CisgICAgaWYgKEhlYXBQcm9maWxlciogaGVhcFByb2ZpbGVyID0gbV9l
bnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxlcigpKQorICAgICAgICBoZWFwUHJvZmlsZXItPmNs
ZWFyU25hcHNob3RzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuaAppbmRleCBiMTk3NGUzLi5lM2Q4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
aApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JIZWFwQWdlbnRfaAogI2RlZmlu
ZSBJbnNwZWN0b3JIZWFwQWdlbnRfaAogCisjaW5jbHVkZSAiSGVhcFNuYXBzaG90LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgImhlYXAvSGVhcE9ic2VydmVyLmgiCkBA
IC01MCwxNSArNTEsMTkgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnYyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc25hcHNob3QoRXJyb3JT
dHJpbmcmLCBkb3VibGUqIHRpbWVzdGFtcCwgU3RyaW5nKiBzbmFwc2hvdERhdGEpIG92ZXJyaWRl
OwogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9pZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEpTQzo6SGVhcE9wZXJhdGlvbikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdm9pZCBjbGVhckhlYXBTbmFwc2hvdHMoKTsKKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKICAgICBSZWZQdHI8SGVhcEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OworCiAgICAg
Ym9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGRvdWJsZSBtX2djU3RhcnRUaW1lIHsgTkFO
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9EZWJ1Z2dlci5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9EZWJ1Z2dlci5qc29uCmluZGV4IGQwZjlkYzAuLjRmMWJkOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24K
QEAgLTYwLDcgKzYwLDYgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxvY2F0aW9uIiwg
IiRyZWYiOiAiTG9jYXRpb24iLCAiZGVzY3JpcHRpb24iOiAiTG9jYXRpb24gb2YgdGhlIGZ1bmN0
aW9uLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJp
bmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgZnVuY3Rp
b24uIE5vdCBwcmVzZW50IGZvciBhbm9ueW1vdXMgZnVuY3Rpb25zLiIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImRpc3BsYXlOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgbmFtZSBvZiB0aGUgZnVuY3Rpb24oc3Bl
Y2lmaWVkIGluICdkaXNwbGF5TmFtZScgcHJvcGVydHkgb24gdGhlIGZ1bmN0aW9uIG9iamVjdCku
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5mZXJyZWROYW1lIiwgInR5cGUiOiAi
c3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGZ1
bmN0aW9uIGluZmVycmVkIGZyb20gaXRzIGluaXRpYWwgYXNzaWdubWVudC4iIH0sCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzY29wZUNoYWluIiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9u
YWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIlNjb3BlIiB9LCAiZGVzY3JpcHRpb24iOiAi
U2NvcGUgY2hhaW4gZm9yIHRoaXMgY2xvc3VyZS4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIGZ1bmN0aW9uLiIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24K
aW5kZXggZWFjMzM0Ni4uMGUyYmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24KQEAgLTExLDYgKzExLDExIEBACiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGFydFRpbWUiLCAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRUaW1lIiwgInR5cGUiOiAibnVtYmVyIiB9CiAgICAg
ICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJIZWFw
U25hcHNob3REYXRhIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJKYXZhU2NyaXB0Q29y
ZSBIZWFwU25hcHNob3QgSlNPTiBkYXRhLiIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmci
CiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKQEAgLTI1LDYgKzMwLDE0IEBA
CiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdjIiwKICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJUcmlnZ2VyIGEgZnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24uIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzbmFwc2hvdCIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiVGFrZSBhIGhlYXAgc25hcHNob3QuIiwKKyAgICAgICAgICAgICJy
ZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgInR5cGUi
OiAibnVtYmVyIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic25hcHNob3REYXRhIiwg
IiRyZWYiOiAiSGVhcFNuYXBzaG90RGF0YSIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAg
ICAgXSwKICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOTBlZWRl
Yy4uYmYyOTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIw
MTYtMDMtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBBZGQgYSB3YXkgdG8gY3JlYXRlIGEgSGVhcCBTbmFwc2hvdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICBB
ZGQgbmV3IE1vZGVsIHJlc291cmNlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L0hlYXBTbmFwc2hvdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Q2xhc3NDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QuZnJvbVBheWxvYWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0IHJvb3ROb2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdldCBub2Rlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgaWRlbnRpZmll
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgaW5z
dGFuY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdl
dCBjYXRlZ29yaWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlLmdldCB0b3RhbFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuZ2V0IHRvdGFsT2JqZWN0Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuaW5zdGFuY2VzV2l0aENsYXNzTmFtZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5ub2RlV2l0aE9iamVjdElkZW50aWZp
ZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0hlYXBTbmFwc2hvdEVkZ2UuanM6
IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLnN0cmluZ2lmeSk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSk6CisgICAgICAgIERhdGEg
c3RydWN0dXJlcyBmb3IgYSBIZWFwU25hcHNob3QuCisKKzIwMTYtMDMtMDggIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNaXNj
ZWxsYW5lb3VzIGluc3BlY3RvciBmaXhlcyBmb3IgdHlwb3MgLyBzdGFsZSBjb2RlCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUxOTMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5q
cwppbmRleCA4ZTQxODE1Li4yMGJkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtOTQsNiArOTQsMTcgQEAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJ2YWx1ZUZvckNhc2VJbnNl
bnNpdGl2ZUtleSIsCiAgICAgfQogfSk7CiAKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXAsICJm
cm9tT2JqZWN0IiwKK3sKKyAgICB2YWx1ZTogZnVuY3Rpb24ob2JqZWN0KQorICAgIHsKKyAgICAg
ICAgbGV0IG1hcCA9IG5ldyBNYXA7CisgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpCisg
ICAgICAgICAgICBtYXAuc2V0KGtleSwgb2JqZWN0W2tleV0pOworICAgICAgICByZXR1cm4gbWFw
OworICAgIH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgInRh
a2UiLAogewogICAgIHZhbHVlOiBmdW5jdGlvbihrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYTM0NmU4NC4uNWQyNDdkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzA4LDYg
KzMwOCw5IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HYXJiYWdlQ29sbGVjdGlvbi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HcmFkaWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ4MGU4YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90LmpzCkBAIC0wLDAgKzEsMTU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENsYXNzQ2F0ZWdvcnkgPSBjbGFzcyBI
ZWFwU25hcHNob3RDbGFzc0NhdGVnb3J5Cit7CisgICAgY29uc3RydWN0b3IoY2xhc3NOYW1lKQor
ICAgIHsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgICAgIHRoaXMu
c2l6ZSA9IDA7CisgICAgICAgIHRoaXMuY291bnQgPSAwOworICAgICAgICB0aGlzLmludGVybmFs
Q291bnQgPSAwOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3QgPSBjbGFz
cyBIZWFwU25hcHNob3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3Ry
dWN0b3Iocm9vdE5vZGUsIG5vZGVzLCBub2RlTWFwKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KworICAgICAgICBjb25zb2xlLmFzc2VydCghcm9vdE5vZGUgfHwgcm9vdE5vZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KG5vZGVzIGluc3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgIHRoaXMuX3Jvb3ROb2RlID0gcm9v
dE5vZGU7CisgICAgICAgIHRoaXMuX25vZGVzID0gbm9kZXM7CisgICAgICAgIHRoaXMuX25vZGVN
YXAgPSBub2RlTWFwOworCisgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Ll9uZXh0QXZhaWxhYmxlU25hcHNob3RJZGVudGlmaWVyKys7CisgICAgICAg
IHRoaXMuX2luc3RhbmNlcyA9IG5vZGVzOworCisgICAgICAgIGxldCBjYXRlZ29yaWVzID0ge307
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGxldCB7Y2xhc3NOYW1lLCBzaXplLCBpbnRlcm5hbH0gPSBub2Rlc1tpXTsKKworICAg
ICAgICAgICAgbGV0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjbGFzc05hbWVdOworICAgICAgICAg
ICAgaWYgKCFjYXRlZ29yeSkKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9IGNhdGVnb3JpZXNb
Y2xhc3NOYW1lXSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q2xhc3NDYXRlZ29yeShj
bGFzc05hbWUpOworCisgICAgICAgICAgICBjYXRlZ29yeS5zaXplICs9IHNpemU7CisgICAgICAg
ICAgICBjYXRlZ29yeS5jb3VudCsrOworICAgICAgICAgICAgaWYgKGludGVybmFsKQorICAgICAg
ICAgICAgICAgIGNhdGVnb3J5LmludGVybmFsQ291bnQrKzsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9jYXRlZ29yaWVzID0gTWFwLmZyb21PYmplY3QoY2F0ZWdvcmllcyk7CisKKyAgICAgICAg
dGhpcy5fdG90YWxTaXplID0gMDsKKyAgICAgICAgdGhpcy5fdG90YWxPYmplY3RDb3VudCA9IDA7
CisgICAgICAgIGZvciAobGV0IHtjb3VudCwgc2l6ZX0gb2YgdGhpcy5fY2F0ZWdvcmllcy52YWx1
ZXMoKSkgeworICAgICAgICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7CisgICAgICAgICAg
ICB0aGlzLl90b3RhbE9iamVjdENvdW50ICs9IGNvdW50OworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKKyAgICB7Cisg
ICAgICAgIGxldCB7dmVyc2lvbiwgbm9kZXMsIG5vZGVDbGFzc05hbWVzLCBlZGdlcywgZWRnZVR5
cGVzfSA9IHBheWxvYWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZlcnNpb24gPT09IDEsICJP
bmx5IGtub3cgaG93IHRvIGhhbmRsZSBKYXZhU2NyaXB0Q29yZSBIZWFwIFNuYXBzaG90IEZvcm1h
dCBWZXJzaW9uIDEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZWRnZVR5cGVzLmV2ZXJ5KCh0
eXBlKSA9PiB0eXBlIGluIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLkVkZ2VUeXBlKSwg
IlVuZXhwZWN0ZWQgZWRnZSB0eXBlIiwgZWRnZVR5cGVzKTsKKworICAgICAgICBsZXQgbm9kZU1h
cCA9IG5ldyBNYXA7CisKKyAgICAgICAgLy8gVHVybiBub2RlcyBpbnRvIHJlYWwgbm9kZXMuCisg
ICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBub2Rlcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgbGV0IG5vZGVQYXlsb2FkID0gbm9kZXNbaV07CisgICAgICAg
ICAgICBsZXQgaWQgPSBub2RlUGF5bG9hZFswXTsKKyAgICAgICAgICAgIGxldCBzaXplID0gbm9k
ZVBheWxvYWRbMV07CisgICAgICAgICAgICBsZXQgY2xhc3NOYW1lSW5kZXggPSBub2RlUGF5bG9h
ZFsyXTsKKyAgICAgICAgICAgIGxldCBpbnRlcm5hbCA9IG5vZGVQYXlsb2FkWzNdOworCisgICAg
ICAgICAgICBsZXQgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShpZCwg
bm9kZUNsYXNzTmFtZXNbY2xhc3NOYW1lSW5kZXhdLCBzaXplLCAhIWludGVybmFsKTsKKyAgICAg
ICAgICAgIG5vZGVNYXAuc2V0KGlkLCBub2RlKTsKKyAgICAgICAgICAgIG5vZGVzW2ldID0gbm9k
ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFR1cm4gZWRnZXMgaW50byByZWFsIGVkZ2VzIGFu
ZCBzZXQgdGhlbSBvbiB0aGUgbm9kZXMuCisgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGgg
PSBlZGdlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVkZ2VQ
YXlsb2FkID0gZWRnZXNbaV07CisgICAgICAgICAgICBsZXQgZnJvbUlkZW50aWZpZXIgPSBlZGdl
UGF5bG9hZFswXTsKKyAgICAgICAgICAgIGxldCB0b0lkZW50aWZpZXIgPSBlZGdlUGF5bG9hZFsx
XTsKKyAgICAgICAgICAgIGxldCBlZGdlVHlwZUluZGV4ID0gZWRnZVBheWxvYWRbMl07CisgICAg
ICAgICAgICBsZXQgZGF0YSA9IGVkZ2VQYXlsb2FkWzNdOworCisgICAgICAgICAgICBsZXQgZnJv
bSA9IG5vZGVNYXAuZ2V0KGZyb21JZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGxldCB0byA9IG5v
ZGVNYXAuZ2V0KHRvSWRlbnRpZmllcik7CisgICAgICAgICAgICBsZXQgZWRnZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZShmcm9tLCB0bywgZWRnZVR5cGVzW2VkZ2VUeXBlSW5k
ZXhdLCBkYXRhKTsKKyAgICAgICAgICAgIGZyb20ub3V0Z29pbmdFZGdlcy5wdXNoKGVkZ2UpOwor
ICAgICAgICAgICAgdG8uaW5jb21pbmdFZGdlcy5wdXNoKGVkZ2UpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUm9vdCBub2RlLgorICAgICAgICBsZXQgcm9vdE5vZGUgPSBub2RlTWFwLmdldCgw
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdE5vZGUsICJOb2RlIHdpdGggaWRlbnRpZmll
ciAwIGlzIHRoZSBzeW50aGV0aWMgPHJvb3Q+IG5vZGUuIik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHJvb3ROb2RlLm91dGdvaW5nRWRnZXMubGVuZ3RoID4gMCwgIlRoaXMgaGFkIGJldHRlciBo
YXZlIGNoaWxkcmVuISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChyb290Tm9kZS5pbmNvbWlu
Z0VkZ2VzLmxlbmd0aCA9PT0gMCwgIlRoaXMgaGFkIGJldHRlciBub3QgaGF2ZSBiYWNrIHJlZmVy
ZW5jZXMhIik7CisKKyAgICAgICAgLy8gTWFyayBHQyByb290cy4KKyAgICAgICAgbGV0IHJvb3RO
b2RlRWRnZXMgPSByb290Tm9kZS5vdXRnb2luZ0VkZ2VzOworICAgICAgICBmb3IgKGxldCBpID0g
MCwgbGVuZ3RoID0gcm9vdE5vZGVFZGdlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIHJvb3ROb2RlRWRnZXNbaV0udG8uZ2NSb290ID0gdHJ1ZTsKKworICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qocm9vdE5vZGUsIG5vZGVzLCBub2RlTWFw
KTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCByb290Tm9kZSgpIHsgcmV0dXJu
IHRoaXMuX3Jvb3ROb2RlOyB9CisgICAgZ2V0IG5vZGVzKCkgeyByZXR1cm4gdGhpcy5fbm9kZXM7
IH0KKyAgICBnZXQgaWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMuX2lkZW50aWZpZXI7IH0KKyAg
ICBnZXQgaW5zdGFuY2VzKCkgeyByZXR1cm4gdGhpcy5faW5zdGFuY2VzOyB9CisgICAgZ2V0IGNh
dGVnb3JpZXMoKSB7IHJldHVybiB0aGlzLl9jYXRlZ29yaWVzOyB9CisgICAgZ2V0IHRvdGFsU2l6
ZSgpIHsgcmV0dXJuIHRoaXMuX3RvdGFsU2l6ZTsgfQorICAgIGdldCB0b3RhbE9iamVjdENvdW50
KCkgeyByZXR1cm4gdGhpcy5fdG90YWxPYmplY3RDb3VudDsgfQorCisgICAgaW5zdGFuY2VzV2l0
aENsYXNzTmFtZShjbGFzc05hbWUpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0cyA9IFtdOwor
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2luc3RhbmNlcy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgbGV0IGNlbGwgPSB0aGlzLl9pbnN0YW5jZXNbaV07CisgICAgICAgICAg
ICBpZiAoY2VsbC5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSkKKyAgICAgICAgICAgICAgICByZXN1
bHRzLnB1c2goY2VsbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAg
fQorCisgICAgbm9kZVdpdGhPYmplY3RJZGVudGlmaWVyKGlkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX25vZGVNYXAuZ2V0KGlkKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Ll9uZXh0QXZhaWxhYmxlU25hcHNob3RJZGVudGlmaWVyID0gMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9IZWFwU25hcHNo
b3RFZGdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0hl
YXBTbmFwc2hvdEVkZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI4
MmViYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9IZWFwU25hcHNob3RFZGdlLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBEaXJlY3RlZCBlZGdlIGJldHdlZW4gdHdvIEhlYXBTbmFwc2hvdE5vZGVzICdmcm9t
JyBhbmQgJ3RvJy4KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UgPSBjbGFzcyBIZWFw
U25hcHNob3RFZGdlCit7CisgICAgY29uc3RydWN0b3IoZnJvbSwgdG8sIHR5cGUsIGRhdGEpCisg
ICAgeworICAgICAgICB0aGlzLmZyb20gPSBmcm9tOworICAgICAgICB0aGlzLnRvID0gdG87Cisg
ICAgICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CisgICAg
fQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UuRWRnZVR5cGUgPSB7CisgICAg
SW50ZXJuYWw6ICJJbnRlcm5hbCIsICAgICAgIC8vIE5vIGRhdGEuCisgICAgUHJvcGVydHk6ICJQ
cm9wZXJ0eSIsICAgICAgIC8vIGRhdGEgaXMgc3RyaW5nIHByb3BlcnR5IG5hbWUuCisgICAgSW5k
ZXg6ICJJbmRleCIsICAgICAgICAgICAgIC8vIGRhdGEgaXMgbnVtZXJpYyBpbmRleC4KKyAgICBW
YXJpYWJsZTogIlZhcmlhYmxlIiwgICAgICAgLy8gZGF0YSBpcyBzdHJpbmcgdmFyaWFibGUgbmFt
ZS4KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg2MmFmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSGVhcFNuYXBzaG90Tm9kZS5qcwpAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUgPSBjbGFz
cyBIZWFwU25hcHNob3ROb2RlCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgY2xhc3NO
YW1lLCBzaXplLCBpbnRlcm5hbCkKKyAgICB7CisgICAgICAgIHRoaXMuaWQgPSBpZGVudGlmaWVy
OworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5zaXpl
ID0gc2l6ZTsgCisgICAgICAgIHRoaXMuaW50ZXJuYWwgPSBpbnRlcm5hbDsKKyAgICAgICAgdGhp
cy5nY1Jvb3QgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5vdXRnb2luZ0VkZ2VzID0gW107CisgICAg
ICAgIHRoaXMuaW5jb21pbmdFZGdlcyA9IFtdOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggZWEzYTE2My4uMDlhYmNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAt
MTEyLDYgKzExMiw5IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9GcmFtZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HYXJiYWdlQ29sbGVjdGlvbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvSGVhcFNuYXBzaG90RWRnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9IZWFwU25hcHNob3ROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48
L3NjcmlwdD4KQEAgLTExOSw2ICsxMjIsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5
b3V0SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlv
dXRUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9M
YXp5U291cmNlQ29kZUxvY2F0aW9uLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL01lbW9yeUNhdGVnb3J5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L01lbW9yeUluc3RydW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
TWVtb3J5VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvTmV0d29ya0luc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvTmV0d29ya1RpbWVsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L09iamVjdFByZXZpZXcuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>