<?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>175208</bug_id>
          
          <creation_ts>2017-08-04 14:17:01 -0700</creation_ts>
          <short_desc>Move DFG::OSRExitCompiler methods into DFG::OSRExit [step 1].</short_desc>
          <delta_ts>2017-08-04 15:04:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1335455</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 14:17:01 -0700</bug_when>
    <thetext>This will minimize the code diff and make it easier to review the patch for https://bugs.webkit.org/show_bug.cgi?id=175144 later.  We&apos;ll do this patch in 3 steps:
1. Do the code changes to move methods into OSRExit.
2. Unify the 32-bit and 64-bit implementations of compileExit().
3. A follow up patch to actually copy the methods into DFGOSRExit.cpp, and delete the DFGOSRExitCompiler files.

Splitting this refactoring into these 3 steps also makes it easier to review this patch and understand what is being changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335465</commentid>
    <comment_count>1</comment_count>
      <attachid>317289</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 14:30:05 -0700</bug_when>
    <thetext>Created attachment 317289
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335468</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 14:35:23 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #0)
&gt; 1. Do the code changes to move methods into OSRExit.
&gt; 2. Unify the 32-bit and 64-bit implementations of compileExit().
&gt; 3. A follow up patch to actually copy the methods into DFGOSRExit.cpp, and
&gt; delete the DFGOSRExitCompiler files.

Let&apos;s change that.  I&apos;ll do this in the following steps instead:
1. Do the code changes to move methods into OSRExit.
2. Copy the 64-bit and common methods into DFGOSRExit.cpp, and delete the unused DFGOSRExitCompiler files.
3. Merge the 32-bit OSRExitCompiler methods into the 64-bit version, and delete DFGOSRExitCompiler32_64.cpp.

I think it&apos;s easier (and less error prone) to execute the refactoring this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335469</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-04 14:35:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/33732402&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335477</commentid>
    <comment_count>4</comment_count>
      <attachid>317292</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 14:40:51 -0700</bug_when>
    <thetext>Created attachment 317292
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335506</commentid>
    <comment_count>5</comment_count>
      <attachid>317292</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-04 15:00:10 -0700</bug_when>
    <thetext>Comment on attachment 317292
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335508</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 15:04:31 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r220298: &lt;http://trac.webkit.org/r220298&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317289</attachid>
            <date>2017-08-04 14:30:05 -0700</date>
            <delta_ts>2017-08-04 14:40:51 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175208.patch</filename>
            <type>text/plain</type>
            <size>41213</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMjkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE3LTA4LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIERGRzo6T1NSRXhpdENvbXBpbGVyIG1ldGhvZHMgaW50byBERkc6Ok9TUkV4aXQgW3N0ZXAg
MV0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHdpbGwgbWluaW1pemUgdGhlIGNvZGUgZGlmZiBhbmQgbWFrZSBpdCBlYXNpZXIgdG8gcmV2aWV3
IHRoZSBwYXRjaCBmb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTE0NCBsYXRlci4gIFdlJ2xsIGRvIHRoaXMgcGF0Y2ggaW4gMworICAgICAgICBz
dGVwczoKKworICAgICAgICAxLiBEbyB0aGUgY29kZSBjaGFuZ2VzIHRvIG1vdmUgbWV0aG9kcyBp
bnRvIE9TUkV4aXQuCisgICAgICAgIDIuIFVuaWZ5IHRoZSAzMi1iaXQgYW5kIDY0LWJpdCBpbXBs
ZW1lbnRhdGlvbnMgb2YgY29tcGlsZUV4aXQoKS4KKyAgICAgICAgMy4gQSBmb2xsb3cgdXAgcGF0
Y2ggdG8gYWN0dWFsbHkgY29weSB0aGUgbWV0aG9kcyBpbnRvIERGR09TUkV4aXQuY3BwLCBhbmQg
ZGVsZXRlCisgICAgICAgICAgIHRoZSBERkdPU1JFeGl0Q29tcGlsZXIgZmlsZXMuCisKKyAgICAg
ICAgU3BsaXR0aW5nIHRoaXMgcmVmYWN0b3JpbmcgaW50byB0aGVzZSAzIHN0ZXBzIGFsc28gbWFr
ZXMgaXQgZWFzaWVyIHRvIHJldmlldyB0aGlzCisgICAgICAgIHBhdGNoIGFuZCB1bmRlcnN0YW5k
IHdoYXQgaXMgYmVpbmcgY2hhbmdlZC4KKworICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXQ6OmNvbXBpbGVPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6
OmVtaXRSZXN0b3JlQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6Ok9T
UkV4aXRDb21waWxlcjo6T1NSRXhpdENvbXBpbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21w
aWxlRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisKIDIwMTctMDgtMDMgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgYWxsb2NhdG9yIHVz
ZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBNYXJrZWRCbG9ja3MgYW5kIExhcmdlQWxsb2NhdGlv
bnMgc2hvdWxkIG5vdCBiZSB0aGUgU3Vic3BhY2UgaXRzZWxmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMjIwMjc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOCArMzEs
MTQgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSAiT3Bl
cmFuZHMuaCIKKyNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDQ2FsbEhlbHBlcnM7CisK
K25hbWVzcGFjZSBERkcgewogCiBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIHN0cnVjdCBCYXNpY0Js
b2NrOwpAQCAtOTIsNiArOTgsOCBAQCBwcml2YXRlOgogc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMg
T1NSRXhpdEJhc2UgewogICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFt
SW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCk7CiAKKyAgICBzdGF0aWMg
dm9pZCBKSVRfT1BFUkFUSU9OIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5B
TDsKKwogICAgIHVuc2lnbmVkIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCB7IDAgfTsKICAgICAKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlOwpAQCAtMTExLDYgKzExOSwxMCBAQCBzdHJ1
Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgewogICAgICAgICBPU1JFeGl0
QmFzZTo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUocHJvZmlsZWRDb2RlQmxvY2ss
IEV4aXRGcm9tREZHKTsKICAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgY29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiwgVk0mLCBjb25zdCBPU1JFeGl0JiwgY29uc3QgT3BlcmFuZHM8
VmFsdWVSZWNvdmVyeT4mLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7CisgICAgc3RhdGljIHZvaWQg
ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT3BlcmFuZHM8VmFsdWVS
ZWNvdmVyeT4mKTsKIH07CiAKIHN0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDIyMDI3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMy0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsMTYgKzM2LDE2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAot
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bSwgY29uc3QgT1NSRXhpdCYg
ZXhpdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlv
blJlY292ZXJ5KiByZWNvdmVyeSkKK3ZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QgT3BlcmFuZHM8VmFs
dWVSZWNvdmVyeT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSkKIHsK
ICAgICAvLyBQcm8tZm9ybWEgc3R1ZmYuCiAgICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4
aXQoKSkgewogICAgICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9
IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87Ci0gICAgICAgIGRlYnVnSW5mby0+Y29k
ZUJsb2NrID0gbV9qaXQuY29kZUJsb2NrKCk7CisgICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2Nr
ID0gaml0LmNvZGVCbG9jaygpOwogICAgICAgICBkZWJ1Z0luZm8tPmtpbmQgPSBleGl0Lm1fa2lu
ZDsKICAgICAgICAgZGVidWdJbmZvLT5ieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5kZWJ1Z0NhbGwodm0sIGRl
YnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7CisgICAgICAg
IGppdC5kZWJ1Z0NhbGwodm0sIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUs
IGRlYnVnSW5mbyk7CiAgICAgfQogCiAgICAgLy8gUGVyZm9ybSBzcGVjdWxhdGlvbiByZWNvdmVy
eS4gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSB3aGVuIGFuIG9wZXJhdGlvbgpAQCAtNTQsMTEg
KzU0LDExIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICBp
ZiAocmVjb3ZlcnkpIHsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS0+dHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6Ci0gICAgICAgICAgICBtX2ppdC5zdWIzMihyZWNvdmVy
eS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgaml0LnN1YjMyKHJlY292
ZXJ5LT5zcmMoKSwgcmVjb3ZlcnktPmRlc3QoKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBjYXNlIFNwZWN1bGF0aXZlQWRkSW1tZWRpYXRlOgotICAgICAgICAgICAgbV9qaXQuc3Vi
MzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVy
eS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5zdWIzMihBc3NlbWJseUhlbHBlcnM6OkltbTMy
KHJlY292ZXJ5LT5pbW1lZGlhdGUoKSksIHJlY292ZXJ5LT5kZXN0KCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRpb25DaGVj
azoKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZN
JiB2bQogICAgICAgICAgICAgLy8gdGhlIGNlbGwgY2hlY2sgd291bGQgaGF2ZSBhbHJlYWR5IGhh
cHBlbmVkLgogICAgICAgICAgICAgCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwotICAgICAgICAgICAgaWYgKEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbV9qaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9y
aWdpbiktPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7CisgICAg
ICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2Rl
QmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3RlcjE7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3RlcjI7CiAgICAgICAgICAgICAgICAgaWYgKGV4aXQu
bV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CkBAIC0xMDYsMjUgKzEwNiwyNSBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgICAgICAgICAgICAgc2Ny
YXRjaDEgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwg
dXNlZFJlZ2lzdGVyMik7CiAgICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRj
aDEpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LnB1c2goc2NyYXRj
aDEpOwotICAgICAgICAgICAgICAgIG1faml0LnB1c2goc2NyYXRjaDIpOworICAgICAgICAgICAg
ICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBqaXQucHVzaChzY3JhdGNo
Mik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVnIHZhbHVlOwogICAg
ICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjcmF0Y2gxOwotICAgICAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5hc0FkZHJlc3MoKSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIo
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygp
KSwgdmFsdWUpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAg
ICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZUlu
Y2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICAgICAg
ICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOworICAgICAgICAgICAg
ICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIGppdC5zdG9y
ZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlE
KCkpOworICAgICAgICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
c2NyYXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgp
KSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CisgICAgICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIs
IEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09m
QXJyYXlNb2RlcygpKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9qaXQu
cG9wKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5wb3Aoc2NyYXRjaDEpOworICAg
ICAgICAgICAgICAgIGppdC5wb3Aoc2NyYXRjaDIpOworICAgICAgICAgICAgICAgIGppdC5wb3Ao
c2NyYXRjaDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMTMzLDI1
ICsxMzMsMjUgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAg
ICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgogICAgICAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUGF5bG9hZCA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0
U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNlKCkpOwogICAgICAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoVGFnID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4
aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSwgc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAg
ICAgIG1faml0LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIG1f
aml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7CisgICAgICAgICAgICAgICAgaml0LnB1c2hUb1Nh
dmUoc2NyYXRjaFBheWxvYWQpOworICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0
Y2hUYWcpOwogCiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFn
LCBzY3JhdGNoUGF5bG9hZCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9q
aXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpLCBzY3JhdGNoKTsK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShtX2ppdCwgc2NyYXRjaCk7
CisgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0Fk
ZHJlc3MoKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFs
dWUoaml0LCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2pp
dC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgbV9qaXQucG9wVG9S
ZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3Jl
KHNjcmF0Y2hUYWcpOworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBh
eWxvYWQpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNL
bm93blRhZygpKSB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJs
eUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQ
UigpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwotICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhp
dC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgICAgICBq
aXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNj
cmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcs
IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJv
ZmlsZS5lbWl0UmVwb3J0VmFsdWUobV9qaXQsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0
UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9y
ZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKG1faml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOwor
ICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFs
dWVTb3VyY2UucmVncygpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTE3MCwxNiArMTcw
LDE2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAg
Y2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BS
OgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgICAgICBtX2ppdC5zdG9y
ZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgcmVjb3Zlcnku
Z3ByKCksCiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgcmVj
b3ZlcnkudGFnR1BSKCksCiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAg
ICAgcmVjb3ZlcnkucGF5bG9hZEdQUigpLAogICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk5LDggKzE5OSw4IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgewogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKICAgICAgICAgY2Fz
ZSBJbkZQUjoKLSAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1f
aml0LnN0b3JlRG91YmxlKHJlY292ZXJ5LmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZURvdWJsZShyZWNvdmVyeS5mcHIoKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6CkBAIC0yMjMsMTYgKzIyMywxNiBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2Ug
Qm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAg
ICAgICAgICAgIGppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0
YWdGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgICAgIGppdC5s
b2FkMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292
ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCiAgICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRh
Zyk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIo
CiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICAgICAgJmJpdHdp
c2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRz
LnBheWxvYWQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDUsMTcgKzI0NSwxNyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgLy8gTmVlZCB0byBlbnN1
cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3Rh
Y2sgdXNhZ2UgYXQgZXhpdC4gVGhpcwogICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhh
dCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sg
b2Zmc2V0cwogICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgbV9qaXQuYWRkUHRyKAorICAg
IGppdC5hZGRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKAotICAgICAg
ICAgICAgLW1faml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJl
ZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgICAgICAt
aml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVy
Q291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSksCiAgICAgICAgIENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogICAgIAogICAgIC8vIFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2
ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVzZXMuCi0gICAgbV9qaXQuZW1pdFJlc3RvcmVD
YWxsZWVTYXZlcygpOwotICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IobV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2soKSk7CisgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAg
ICBqaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7CiAK
ICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKLSAgICAgICAgbV9qaXQuY29weUNh
bGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7CisgICAgICAgIGpp
dC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKTsKIAog
ICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJlc3Vs
dHMgaW50byB0aGUgc3RhY2suCiAgICAgCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5
JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
ZyA9IG9wZXJhbmRzLnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGluZGV4KTsKIAotICAgICAgICBp
ZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihtX2pp
dC5iYXNlbGluZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMo
KSkpCisgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNf
Y2FzdDxpbnQ+KGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpbnQgb3Bl
cmFuZCA9IHJlZy5vZmZzZXQoKTsKQEAgLTI3Miw3MiArMjcyLDcyIEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgY2FzZSBJblBhaXI6CiAgICAgICAg
IGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKAorICAgICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgICAgIGppdC5sb2FkMzIoCiAgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnBheWxvYWQsCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKICAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5G
UFI6CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAg
bV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOwotICAg
ICAgICAgICAgbV9qaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAg
bV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZv
OjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAgICAgICAg
ICAgIGppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCiAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKICAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAs
CiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVW5ib3hlZENl
bGxJbkdQUjoKICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKAorICAgICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMucGF5bG9hZCwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyks
CiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgIGNhc2UgQm9vbGVh
bkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAgICAgICAg
ICAgIGppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCiAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAogICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MCwKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDb25zdGFu
dDoKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3RvcmUzMigK
ICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5j
b25zdGFudCgpLnRhZygpKSwKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0
LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
cmVjb3ZlcnkuY29uc3RhbnQoKS5wYXlsb2FkKCkpLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1
OCw3ICszNTgsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAg
ICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJndW1lbnRz
IG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAgIC8vIGlubGlu
ZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4ndCBkbyB0aGF0
LgogICAgIAotICAgIGVtaXRSZXN0b3JlQXJndW1lbnRzKG9wZXJhbmRzKTsKKyAgICBlbWl0UmVz
dG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsKIAogICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJ
VCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcgT1NSLCB3ZSBrbm93CiAg
ICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8gdGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5l
dyBKSVQsIHNvIHRoZSBleGVjdXRlCkBAIC0zOTYsMTQgKzM5NiwxNCBAQCB2b2lkIE9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgLy8gY291bnRlciB0byAwOyBvdGhlcndp
c2Ugd2Ugc2V0IHRoZSBjb3VudGVyIHRvCiAgICAgLy8gY291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlcldhcm1VcCgpLgogICAgIAotICAgIGhhbmRsZUV4aXRDb3VudHMobV9qaXQsIGV4aXQpOwor
ICAgIGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0KTsKICAgICAKICAgICAvLyBSZWlmeSBpbmxp
bmVkIGNhbGwgZnJhbWVzLgogICAgIAotICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMobV9qaXQs
IGV4aXQpOworICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoaml0LCBleGl0KTsKICAgICAKICAg
ICAvLyBBbmQgZmluaXNoLgotICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldCh2bSwgbV9qaXQsIGV4
aXQpOworICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDIyMDI3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsMTggKzM4LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAotdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJh
bmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSkKK3ZvaWQgT1NSRXhpdDo6Y29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29u
c3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5
KiByZWNvdmVyeSkKIHsKLSAgICBtX2ppdC5qaXRBc3NlcnRUYWdzSW5QbGFjZSgpOworICAgIGpp
dC5qaXRBc3NlcnRUYWdzSW5QbGFjZSgpOwogCiAgICAgLy8gUHJvLWZvcm1hIHN0dWZmLgogICAg
IGlmIChPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpIHsKICAgICAgICAgU3BlY3VsYXRpb25G
YWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJ
bmZvOwotICAgICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IG1faml0LmNvZGVCbG9jaygpOwor
ICAgICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKICAgICAgICAg
ZGVidWdJbmZvLT5raW5kID0gZXhpdC5tX2tpbmQ7CiAgICAgICAgIGRlYnVnSW5mby0+Ynl0ZWNv
ZGVPZmZzZXQgPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwogICAgICAgICAKLSAg
ICAgICAgbV9qaXQuZGVidWdDYWxsKHZtLCBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25G
YWlsdXJlLCBkZWJ1Z0luZm8pOworICAgICAgICBqaXQuZGVidWdDYWxsKHZtLCBkZWJ1Z09wZXJh
dGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0luZm8pOwogICAgIH0KIAogICAgIC8v
IFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkg
d2hlbiBhbiBvcGVyYXRpb24KQEAgLTU4LDE3ICs1OCwxNyBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgaWYgKHJlY292ZXJ5KSB7CiAgICAgICAgIHN3aXRj
aCAocmVjb3ZlcnktPnR5cGUoKSkgewogICAgICAgICBjYXNlIFNwZWN1bGF0aXZlQWRkOgotICAg
ICAgICAgICAgbV9qaXQuc3ViMzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsK
LSAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBy
ZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5zdWIzMihyZWNvdmVyeS0+c3JjKCks
IHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBtX2pp
dC5zdWIzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKHJlY292ZXJ5LT5pbW1lZGlhdGUoKSksIHJl
Y292ZXJ5LT5kZXN0KCkpOwotICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgaml0LnN1YjMy
KEFzc2VtYmx5SGVscGVyczo6SW1tMzIocmVjb3ZlcnktPmltbWVkaWF0ZSgpKSwgcmVjb3Zlcnkt
PmRlc3QoKSk7CisgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRpb25DaGVjazoKLSAgICAgICAgICAgIG1f
aml0LnhvcjY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KFZhbHVlRmFsc2UpKSwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBqaXQueG9y
NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFs
dWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFjY2Vz
cywgb3IgZHVlIHRvIGFuIGFycmF5IHByb2ZpbGUpLgogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxl
OwotICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5UHJv
ZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgR1BSUmVn
IHVzZWRSZWdpc3RlcjsKICAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
aXNBZGRyZXNzKCkpCiAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlciA9IGV4aXQubV9q
c1ZhbHVlU291cmNlLmJhc2UoKTsKQEAgLTEwMywzMyArMTAzLDMzIEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgICAgICAgICBzY3JhdGNoMiA9IEFz
c2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIsIHNjcmF0Y2gxKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1faml0LnB1c2hUb1NhdmUoc2NyYXRjaDEpOwotICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKHNjcmF0Y2gyKTsKKyAgICAgICAgICAgICAgICAgICAg
aml0LnB1c2hUb1NhdmUoc2NyYXRjaDEpOworICAgICAgICAgICAgICAgICAgICBqaXQucHVzaFRv
U2F2ZShzY3JhdGNoMik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9qaXQucHVzaChzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnB1
c2goc2NyYXRjaDIpOworICAgICAgICAgICAgICAgICAgICBqaXQucHVzaChzY3JhdGNoMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVnIHZhbHVlOwogICAgICAg
ICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHNjcmF0Y2gxOwotICAgICAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5h
c0FkZHJlc3MoKSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwg
dmFsdWUpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZTMyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlSUQoKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSksIHNj
cmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIo
c2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gy
LCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NP
ZkFycmF5TW9kZXMoKSkpOworICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNo
MSk7CisgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgICAgICBqaXQubG9h
ZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFu
ZE1pc2NPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaDIpOworICAgICAgICAgICAgICAg
IGppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgICAgICAgICAgICAgIGppdC5v
cjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2Zp
bGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQucG9wVG9S
ZXN0b3JlKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQucG9wVG9SZXN0b3Jl
KHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNo
Mik7CisgICAgICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDEpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnBvcChzY3Jh
dGNoMik7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnBvcChzY3JhdGNoMSk7CisgICAgICAg
ICAgICAgICAgICAgIGppdC5wb3Aoc2NyYXRjaDIpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cG9wKHNjcmF0Y2gxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTEzOCwxMSArMTM4LDExIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChWTSYgdm0KICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3Mo
KSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEg
c3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAogICAgICAg
ICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCi0gICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1
ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUobV9qaXQsIEpTVmFsdWVSZWdz
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIG1faml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkp
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShtX2ppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsK
KyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBA
IC0xOTYsNyArMTk2LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2
bQogICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOworICAg
ICAgICAgICAgaml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBpbmRleCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjE0
LDggKzIxNCw4IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAg
ICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIFVuYm94
ZWREb3VibGVJbkZQUjoKICAgICAgICAgY2FzZSBJbkZQUjoKLSAgICAgICAgICAgIG1faml0Lm1v
dmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlY292ZXJ5LmZwcigp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAg
aml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCks
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShyZWNvdmVyeS5m
cHIoKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNDAsOCArMjQw
LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgICAgICBj
YXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBt
X2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAg
ICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVh
bFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNTIsMjAgKzI1MiwyMCBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgLy8gTmVlZCB0byBlbnN1cmUg
dGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sg
dXNhZ2UgYXQgZXhpdC4gVGhpcwogICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0
aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zm
c2V0cwogICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgbV9qaXQuYWRkUHRyKAorICAgIGpp
dC5hZGRQdHIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKAotICAgICAgICAg
ICAgLW1faml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJl
Z2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgICAgICAtaml0
LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291
bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSksCiAgICAgICAgIENDYWxsSGVscGVyczo6ZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
ICAgIAogICAgIC8vIFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0
aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVzZXMuCi0gICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpOwotICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IobV9qaXQuYmFzZWxp
bmVDb2RlQmxvY2soKSk7CisgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBq
aXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7CiAKICAg
ICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJp
ZXMgYmVsb3cuCi0gICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsK
KyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKIAogICAgIGlmIChl
eGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBtX2ppdC5jb3B5Q2FsbGVlU2F2ZXNU
b1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKTsKKyAgICAgICAgaml0LmNvcHlDYWxs
ZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0pOwogCiAgICAgLy8gRG8g
YWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRo
ZSBzdGFjay4KICAgICAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
ID0gb3BlcmFuZHNbaW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gb3BlcmFu
ZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwogCi0gICAgICAgIGlmIChyZWcuaXNM
b2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KG1faml0LmJhc2VsaW5l
Q29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAg
ICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4o
aml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGludCBvcGVyYW5kID0gcmVn
Lm9mZnNldCgpOwpAQCAtMjg1LDQ1ICsyODUsNDUgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KFZNJiB2bQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAg
ICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBJbkZQ
UjoKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBqaXQubG9hZDY0KHNj
cmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQz
MkluR1BSOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAg
ICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgIGppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CiAgICAgICAg
IGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQo
c2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5yc2hp
ZnQ2NCgKKyAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBqaXQucnNoaWZ0NjQoCiAgICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAg
ICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKICAgICAgICAgY2FzZSBTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNo
ICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmJveEludDUyKEdQ
UkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZw
UmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5sb2FkNjQo
c2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuYm94SW50
NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgogICAgICAgICBj
YXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0
LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmJveERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5z
dG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFu
ZCkpOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5sb2Fk
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6
ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTY0KAor
ICAgICAgICAgICAgaml0LnN0b3JlNjQoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwKICAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgIC8vIE5vdGUgdGhhdCB3ZSBhbHNvIHJvdWdobHkgYXNz
dW1lIHRoYXQgdGhlIGFyZ3VtZW50cyBtaWdodCBzdGlsbCBiZSBtYXRlcmlhbGl6ZWQgb3V0c2lk
ZSBvZiBpdHMKICAgICAvLyBpbmxpbmUgY2FsbCBmcmFtZSBzY29wZSAtIGJ1dCBmb3Igbm93IHRo
ZSBERkcgd291bGRuJ3QgZG8gdGhhdC4KICAgICAKLSAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhv
cGVyYW5kcyk7CisgICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7CiAgICAg
CiAgICAgLy8gQWRqdXN0IHRoZSBvbGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBh
cmUgZXhpdGluZyBPU1IsIHdlIGtub3cKICAgICAvLyB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0
aGlzIGNvZGUgd2lsbCBnbyB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKQEAgLTM4Mywx
NCArMzgzLDE0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAg
ICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8KICAgICAv
LyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAgICAgCi0gICAgaGFuZGxl
RXhpdENvdW50cyhtX2ppdCwgZXhpdCk7CisgICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQp
OwogICAgIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCiAgICAgCi0gICAgcmVp
ZnlJbmxpbmVkQ2FsbEZyYW1lcyhtX2ppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyhqaXQsIGV4aXQpOwogCiAgICAgLy8gQW5kIGZpbmlzaC4KLSAgICBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQodm0sIG1faml0LCBleGl0KTsKKyAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQodm0s
IGppdCwgZXhpdCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlz
aW9uIDIyMDI3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXZvaWQgT1NSRXhpdENvbXBpbGVyOjpl
bWl0UmVzdG9yZUFyZ3VtZW50cyhjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFu
ZHMpCit2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCiB7CiAgICAgSGFzaE1h
cDxNaW5pZmllZElELCBpbnQ+IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHM7IC8vIE1hcHMgcGhh
bnRvbSBhcmd1bWVudHMgbm9kZSBJRCB0byBvcGVyYW5kLgogICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTU1LDEzICs1NSwx
MyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6ZW1pdFJlc3RvcmVBcmd1bWVuCiAgICAgICAgIGF1
dG8gaXRlciA9IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuZmluZChpZCk7CiAgICAgICAgIGlm
IChpdGVyICE9IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuZW5kKCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzIHJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIG1faml0LmxvYWRWYWx1
ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoaXRlci0+dmFsdWUpLCByZWdzKTsKLSAgICAgICAg
ICAgIG1faml0LnN0b3JlVmFsdWUocmVncywgQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJh
bmQpKTsKKyAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9y
KGl0ZXItPnZhbHVlKSwgcmVncyk7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShyZWdzLCBD
Q2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0KLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZygp
LT5taW5pZmllZERGRy5hdChpZCktPmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRy5hdChpZCktPmlubGlu
ZUNhbGxGcmFtZSgpOwogCiAgICAgICAgIGludCBzdGFja09mZnNldDsKICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkKQEAgLTcwLDQ4ICs3MCw0NiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
ZW1pdFJlc3RvcmVBcmd1bWVuCiAgICAgICAgICAgICBzdGFja09mZnNldCA9IDA7CiAgICAgICAg
IAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzQ2xv
c3VyZUNhbGwpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgICAgICBqaXQu
bG9hZFB0cigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpLAogICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoCisg
ICAgICAgICAgICBqaXQubW92ZSgKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFz
Q2VsbCgpKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgICAgIGpp
dC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksCiAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQu
bW92ZSgKKyAgICAgICAgICAgIGppdC5tb3ZlKAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSksCiAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCisgICAgICAgIGppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxKTsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBj
YXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
b3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25B
cmdHUFIwKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1
bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgbV9qaXQuY2Fs
bChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgbV9qaXQuc3RvcmVDZWxsKEdQUkluZm86
OnJldHVyblZhbHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwor
ICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgaml0LnN0b3Jl
Q2VsbChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKICAgICAgICAgCiAgICAgICAgIGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMu
YWRkKGlkLCBvcGVyYW5kKTsKICAgICB9CiB9CiAKLWV4dGVybiAiQyIgewotCi12b2lkIGNvbXBp
bGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CkBAIC0xNDgsNyArMTQ2LDYgQEAgdm9p
ZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB7CiAgICAgICAgIENDYWxs
SGVscGVycyBqaXQoY29kZUJsb2NrKTsKLSAgICAgICAgT1NSRXhpdENvbXBpbGVyIGV4aXRDb21w
aWxlcihqaXQpOwogCiAgICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKSB7
CiAgICAgICAgICAgICAvLyBXZSBhcmUgYWN0aW5nIGFzIGEgZGVmYWN0byBvcF9jYXRjaCBiZWNh
dXNlIHdlIGFycml2ZSBoZXJlIGZyb20gZ2VuZXJpY1Vud2luZCgpLgpAQCAtMTcyLDggKzE2OSw4
IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaml0
LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhwcm9maWxlckV4aXQtPmNvdW50ZXJBZGRyZXNzKCkpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGV4aXRDb21waWxlci5jb21waWxlRXhpdCgqdm0sIGV4aXQsIG9wZXJhbmRzLCBy
ZWNvdmVyeSk7Ci0gICAgICAgIAorICAgICAgICBjb21waWxlRXhpdChqaXQsICp2bSwgZXhpdCwg
b3BlcmFuZHMsIHJlY292ZXJ5KTsKKwogICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgY29kZUJsb2NrKTsKICAgICAgICAgZXhpdC5tX2NvZGUgPSBGSU5BTElaRV9DT0RFX0lGKAog
ICAgICAgICAgICAgc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dmVyYm9zZU9T
UigpIHx8IE9wdGlvbnM6OnZlcmJvc2VERkdPU1JFeGl0KCksCkBAIC0xODksOCArMTg2LDYgQEAg
dm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdm0tPm9zckV4aXRKdW1w
RGVzdGluYXRpb24gPSBleGl0Lm1fY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIH0K
IAotfSAvLyBleHRlcm4gIkMiCi0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlci5oCShyZXZpc2lvbiAyMjAyNzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDMxICszMSw0IEBACiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRz
LmgiCiAKLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBFeGVjU3RhdGU7Ci0KLW5hbWVzcGFjZSBE
RkcgewotCi1jbGFzcyBPU1JFeGl0Q29tcGlsZXIgewotcHVibGljOgotICAgIE9TUkV4aXRDb21w
aWxlcihDQ2FsbEhlbHBlcnMmIGppdCkKLSAgICAgICAgOiBtX2ppdChqaXQpCi0gICAgewotICAg
IH0KLSAgICAKLSAgICB2b2lkIGNvbXBpbGVFeGl0KFZNJiwgY29uc3QgT1NSRXhpdCYsIGNvbnN0
IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotCi1wcml2
YXRlOgotICAgIHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVudHMoY29uc3QgT3BlcmFuZHM8VmFsdWVS
ZWNvdmVyeT4mKTsKLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMmIG1faml0OwotfTsKLQotZXh0ZXJu
ICJDIiB7Ci12b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAJKHJldmlzaW9uIDIyMDI3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgCi0gICAgcGF0Y2hCdWZmZXIubGluayhmdW5j
dGlvbkNhbGwsIGNvbXBpbGVPU1JFeGl0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9u
Q2FsbCwgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpOwogICAgIAogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIikpOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317292</attachid>
            <date>2017-08-04 14:40:51 -0700</date>
            <delta_ts>2017-08-04 15:00:10 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175208.patch</filename>
            <type>text/plain</type>
            <size>41275</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMjkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE3LTA4LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIERGRzo6T1NSRXhpdENvbXBpbGVyIG1ldGhvZHMgaW50byBERkc6Ok9TUkV4aXQgW3N0ZXAg
MV0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUy
MDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzMyNDAyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBtaW5pbWl6ZSB0aGUgY29k
ZSBkaWZmIGFuZCBtYWtlIGl0IGVhc2llciB0byByZXZpZXcgdGhlIHBhdGNoIGZvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ0IGxhdGVyLiAg
V2UnbGwgZG8gdGhpcyBwYXRjaCBpbiAzCisgICAgICAgIHN0ZXBzOgorCisgICAgICAgIDEuIERv
IHRoZSBjb2RlIGNoYW5nZXMgdG8gbW92ZSBtZXRob2RzIGludG8gT1NSRXhpdC4KKyAgICAgICAg
Mi4gQ29weSB0aGUgNjQtYml0IGFuZCBjb21tb24gbWV0aG9kcyBpbnRvIERGR09TUkV4aXQuY3Bw
LCBhbmQgZGVsZXRlIHRoZSB1bnVzZWQgREZHT1NSRXhpdENvbXBpbGVyIGZpbGVzLgorICAgICAg
ICAzLiBNZXJnZSB0aGUgMzItYml0IE9TUkV4aXRDb21waWxlciBtZXRob2RzIGludG8gdGhlIDY0
LWJpdCB2ZXJzaW9uLCBhbmQgZGVsZXRlIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcC4KKwor
ICAgICAgICBTcGxpdHRpbmcgdGhpcyByZWZhY3RvcmluZyBpbnRvIHRoZXNlIDMgc3RlcHMgYWxz
byBtYWtlcyBpdCBlYXNpZXIgdG8gcmV2aWV3IHRoaXMKKyAgICAgICAgcGF0Y2ggYW5kIHVuZGVy
c3RhbmQgd2hhdCBpcyBiZWluZyBjaGFuZ2VkLgorCisgICAgICAgICogZGZnL0RGR09TUkV4aXQu
aDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21w
aWxlcjo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdENvbXBpbGVyOjpPU1JFeGl0Q29tcGlsZXIpOiBEZWxldGVkLgorICAgICAgICAo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKwogMjAxNy0wOC0w
MyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBhbGxvY2F0
b3IgdXNlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIE1hcmtlZEJsb2NrcyBhbmQgTGFyZ2VBbGxv
Y2F0aW9ucyBzaG91bGQgbm90IGJlIHRoZSBTdWJzcGFjZSBpdHNlbGYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAyMjAyNzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw4
ICszMSwxNCBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgIk1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRl
ICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlZhbHVlUmVjb3ZlcnkuaCIKIAotbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENDYWxsSGVscGVy
czsKKworbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogc3RydWN0IEJh
c2ljQmxvY2s7CkBAIC05Miw2ICs5OCw4IEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCA6IHB1
YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBz
dHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKIAorICAgIHN0
YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKikgV1RGX0lO
VEVSTkFMOworCiAgICAgdW5zaWduZWQgbV9wYXRjaGFibGVDb2RlT2Zmc2V0IHsgMCB9OwogICAg
IAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7CkBAIC0xMTEsNiArMTE5LDEwIEBA
IHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsKICAgICB7CiAgICAgICAgIE9T
UkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZENvZGVC
bG9jaywgRXhpdEZyb21ERkcpOwogICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmLCBWTSYsIGNvbnN0IE9TUkV4aXQmLCBjb25zdCBPcGVy
YW5kczxWYWx1ZVJlY292ZXJ5PiYsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKKyAgICBzdGF0aWMg
dm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPcGVyYW5kczxW
YWx1ZVJlY292ZXJ5PiYpOwogfTsKIAogc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5m
byB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMjIwMjc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNiwxNiArMzYsMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCi12b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtLCBjb25zdCBPU1JF
eGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQordm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5k
czxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5
KQogewogICAgIC8vIFByby1mb3JtYSBzdHVmZi4KICAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNo
T1NSRXhpdCgpKSB7CiAgICAgICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJ
bmZvID0gbmV3IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKLSAgICAgICAgZGVidWdJbmZv
LT5jb2RlQmxvY2sgPSBtX2ppdC5jb2RlQmxvY2soKTsKKyAgICAgICAgZGVidWdJbmZvLT5jb2Rl
QmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CiAgICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4aXQu
bV9raW5kOwogICAgICAgICBkZWJ1Z0luZm8tPmJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleDsKICAgICAgICAgCi0gICAgICAgIG1faml0LmRlYnVnQ2FsbCh2
bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKKyAg
ICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFp
bHVyZSwgZGVidWdJbmZvKTsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHNwZWN1bGF0aW9uIHJl
Y292ZXJ5LiBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IHdoZW4gYW4gb3BlcmF0aW9uCkBAIC01
NCwxMSArNTQsMTEgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQog
ICAgIGlmIChyZWNvdmVyeSkgewogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LT50eXBlKCkpIHsK
ICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKLSAgICAgICAgICAgIG1faml0LnN1YjMyKHJl
Y292ZXJ5LT5zcmMoKSwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBqaXQuc3ViMzIo
cmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBtX2pp
dC5zdWIzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKHJlY292ZXJ5LT5pbW1lZGlhdGUoKSksIHJl
Y292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgaml0LnN1YjMyKEFzc2VtYmx5SGVscGVyczo6
SW1tMzIocmVjb3ZlcnktPmltbWVkaWF0ZSgpKSwgcmVjb3ZlcnktPmRlc3QoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlv
bkNoZWNrOgpAQCAtODcsNyArODcsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4
aXQoVk0mIHZtCiAgICAgICAgICAgICAvLyB0aGUgY2VsbCBjaGVjayB3b3VsZCBoYXZlIGFscmVh
ZHkgaGFwcGVuZWQuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7Ci0gICAgICAgICAgICBpZiAo
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBtX2ppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihj
b2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsK
KyAgICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGppdC5iYXNlbGlu
ZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCkpIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMTsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMjsKICAgICAgICAgICAgICAgICBpZiAo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKQEAgLTEwNiwyNSArMTA2LDI1IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgICAgICAg
ICBzY3JhdGNoMSA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0
ZXIxLCB1c2VkUmVnaXN0ZXIyKTsKICAgICAgICAgICAgICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5
SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIxLCB1c2VkUmVnaXN0ZXIyLCBz
Y3JhdGNoMSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9qaXQucHVzaChz
Y3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQucHVzaChzY3JhdGNoMik7CisgICAgICAg
ICAgICAgICAgaml0LnB1c2goc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIGppdC5wdXNoKHNj
cmF0Y2gyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBHUFJSZWcgdmFsdWU7
CiAgICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVl
U291cmNlLmFzQWRkcmVzcygpKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBqaXQubG9h
ZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRy
ZXNzKCkpLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
OChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdU
eXBlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsK
LSAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwotICAg
ICAgICAgICAgICAgIG1faml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7CisgICAgICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0
dXJlSUQoKSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5T2Zm
c2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKKyAgICAgICAgICAgICAgICBqaXQubHNo
aWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gyKTsKKyAgICAgICAgICAgICAgICBqaXQub3IzMihzY3Jh
dGNoMiwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZBcnJheU1vZGVzKCkpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBt
X2ppdC5wb3Aoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIG1faml0LnBvcChzY3JhdGNoMSk7
CisgICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMik7CisgICAgICAgICAgICAgICAgaml0
LnBvcChzY3JhdGNoMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0x
MzMsMjUgKzEzMywyNSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZt
CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0gQXNzZW1ibHlIZWxwZXJzOjpz
ZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSk7CiAgICAgICAgICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hH
UFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAg
ICAgICAgICAgbV9qaXQucHVzaFRvU2F2ZShzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgICAgICBqaXQucHVz
aFRvU2F2ZShzY3JhdGNoUGF5bG9hZCk7CisgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUo
c2NyYXRjaFRhZyk7CiAKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBzY3JhdGNoKHNjcmF0
Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0
Y2gpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKG1faml0LCBzY3Jh
dGNoKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNl
LmFzQWRkcmVzcygpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIHNjcmF0Y2gpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1faml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5w
b3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jl
c3RvcmUoc2NyYXRjaFRhZyk7CisgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3Jh
dGNoUGF5bG9hZCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNl
Lmhhc0tub3duVGFnKCkpIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFRhZyA9IEFz
c2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXls
b2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIG1faml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOworICAgICAgICAgICAg
ICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOworICAgICAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygp
KSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRj
aFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAg
ICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShtX2ppdCwgdmFsdWUpOwotICAgICAgICAgICAgICAg
IG1faml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgICAgICBwcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBqaXQucG9wVG9S
ZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUobV9qaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3Mo
KSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1f
anNWYWx1ZVNvdXJjZS5yZWdzKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTcwLDE2
ICsxNzAsMTYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFu
SW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgIG1faml0
LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICByZWNv
dmVyeS5ncHIoKSwKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAg
ICByZWNvdmVyeS50YWdHUFIoKSwKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKLSAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAg
ICAgICAgICByZWNvdmVyeS5wYXlsb2FkR1BSKCksCiAgICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBh
eWxvYWQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTksOCArMTk5LDggQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5
LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgogICAgICAg
ICBjYXNlIEluRlBSOgotICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAg
ICAgbV9qaXQuc3RvcmVEb3VibGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlY292ZXJ5LmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTIyMywxNiArMjIzLDE2IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAg
Y2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9qaXQubG9hZDMy
KAorICAgICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnRhZ0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCiAgICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQubG9hZDMyKAorICAgICAgICAgICAg
aml0LmxvYWQzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKICAgICAgICAgICAgICAgICAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0Jp
dHMudGFnKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKICAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMucGF5bG9hZCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0NSwxNyArMjQ1LDE3IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAvLyBOZWVkIHRv
IGVuc3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVyIGFjY291bnRzIGZvciB0aGUgd29yc3QtY2Fz
ZSBzdGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCiAgICAgLy8gY291bGQgdG9hc3Qgc29tZSBzdGFj
ayB0aGF0IHRoZSBERkcgdXNlZC4gV2UgbmVlZCB0byBkbyBpdCBiZWZvcmUgc3RvcmluZyB0byBz
dGFjayBvZmZzZXRzCiAgICAgLy8gdXNlZCBieSBiYXNlbGluZS4KLSAgICBtX2ppdC5hZGRQdHIo
CisgICAgaml0LmFkZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0g
ICAgICAgICAgICAtbV9qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJl
cXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKKyAgICAgICAg
ICAgIC1qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVn
aXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhl
biBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBtX2ppdC5lbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihtX2pp
dC5iYXNlbGluZUNvZGVCbG9jaygpKTsKKyAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygp
OworICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygp
KTsKIAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBtX2ppdC5j
b3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKTsKKyAgICAg
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0p
OwogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUg
cmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KICAgICAKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgICAgIGNvbnN0IFZhbHVlUmVj
b3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gb3BlcmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwogCi0gICAg
ICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+
KG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycygpKSkKKyAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0
YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlu
dCBvcGVyYW5kID0gcmVnLm9mZnNldCgpOwpAQCAtMjcyLDcyICsyNzIsNzIgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgICAgICBjYXNlIEluUGFpcjoKICAg
ICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgSW5GUFI6Ci0gICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAgICBqaXQubG9hZDMyKAogICAgICAgICAg
ICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBp
bmRleCktPmFzQml0cy50YWcsCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKAorICAgICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAg
ICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsg
aW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAog
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVuYm94ZWREb3Vi
bGVJbkZQUjoKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAg
ICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsg
aW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7
Ci0gICAgICAgICAgICBtX2ppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAg
ICAgICBtX2ppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQ
UkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZw
UmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNl
IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9qaXQubG9hZDMyKAorICAg
ICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLAogICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMCwKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFu
ZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVbmJv
eGVkQ2VsbEluR1BSOgogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAgICBqaXQubG9hZDMyKAogICAgICAgICAg
ICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBp
bmRleCktPmFzQml0cy5wYXlsb2FkLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKICAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9qaXQubG9hZDMyKAorICAg
ICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KAorICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCiAgICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMigKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QwLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVy
YW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENv
bnN0YW50OgotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292
ZXJ5LmNvbnN0YW50KCkudGFnKCkpLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCiAgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYg
dm0KICAgICAvLyBOb3RlIHRoYXQgd2UgYWxzbyByb3VnaGx5IGFzc3VtZSB0aGF0IHRoZSBhcmd1
bWVudHMgbWlnaHQgc3RpbGwgYmUgbWF0ZXJpYWxpemVkIG91dHNpZGUgb2YgaXRzCiAgICAgLy8g
aW5saW5lIGNhbGwgZnJhbWUgc2NvcGUgLSBidXQgZm9yIG5vdyB0aGUgREZHIHdvdWxkbid0IGRv
IHRoYXQuCiAgICAgCi0gICAgZW1pdFJlc3RvcmVBcmd1bWVudHMob3BlcmFuZHMpOworICAgIGVt
aXRSZXN0b3JlQXJndW1lbnRzKGppdCwgb3BlcmFuZHMpOwogCiAgICAgLy8gQWRqdXN0IHRoZSBv
bGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBhcmUgZXhpdGluZyBPU1IsIHdlIGtu
b3cKICAgICAvLyB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlzIGNvZGUgd2lsbCBnbyB0byB0
aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKQEAgLTM5NiwxNCArMzk2LDE0IEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAvLyBjb3VudGVyIHRvIDA7IG90
aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8KICAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwKCkuCiAgICAgCi0gICAgaGFuZGxlRXhpdENvdW50cyhtX2ppdCwgZXhp
dCk7CisgICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQpOwogICAgIAogICAgIC8vIFJlaWZ5
IGlubGluZWQgY2FsbCBmcmFtZXMuCiAgICAgCi0gICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyht
X2ppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOwogICAg
IAogICAgIC8vIEFuZCBmaW5pc2guCi0gICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KHZtLCBtX2pp
dCwgZXhpdCk7CisgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQpOwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMjIwMjc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxOCArMzgsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCi12b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0m
IHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYg
b3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQordm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0
LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVj
b3ZlcnkqIHJlY292ZXJ5KQogewotICAgIG1faml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7Cisg
ICAgaml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CiAKICAgICAvLyBQcm8tZm9ybWEgc3R1ZmYu
CiAgICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkgewogICAgICAgICBTcGVjdWxh
dGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVE
ZWJ1Z0luZm87Ci0gICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gbV9qaXQuY29kZUJsb2Nr
KCk7CisgICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOwogICAg
ICAgICBkZWJ1Z0luZm8tPmtpbmQgPSBleGl0Lm1fa2luZDsKICAgICAgICAgZGVidWdJbmZvLT5i
eXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CiAgICAgICAg
IAotICAgICAgICBtX2ppdC5kZWJ1Z0NhbGwodm0sIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxh
dGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7CisgICAgICAgIGppdC5kZWJ1Z0NhbGwodm0sIGRlYnVn
T3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7CiAgICAgfQogCiAg
ICAgLy8gUGVyZm9ybSBzcGVjdWxhdGlvbiByZWNvdmVyeS4gVGhpcyBvbmx5IGNvbWVzIGludG8g
cGxheSB3aGVuIGFuIG9wZXJhdGlvbgpAQCAtNTgsMTcgKzU4LDE3IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICBpZiAocmVjb3ZlcnkpIHsKICAgICAgICAg
c3dpdGNoIChyZWNvdmVyeS0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6
Ci0gICAgICAgICAgICBtX2ppdC5zdWIzMihyZWNvdmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0
KCkpOwotICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgaml0LnN1YjMyKHJlY292ZXJ5LT5z
cmMoKSwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZEltbWVkaWF0ZToKLSAgICAgICAgICAg
IG1faml0LnN1YjMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIocmVjb3ZlcnktPmltbWVkaWF0ZSgp
KSwgcmVjb3ZlcnktPmRlc3QoKSk7Ci0gICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBqaXQu
c3ViMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNv
dmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlvbkNoZWNrOgotICAgICAgICAg
ICAgbV9qaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGpp
dC54b3I2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
PihWYWx1ZUZhbHNlKSksIHJlY292ZXJ5LT5kZXN0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgICAgICAgICAgLy8gcHJvcGVydHkg
YWNjZXNzLCBvciBkdWUgdG8gYW4gYXJyYXkgcHJvZmlsZSkuCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFBy
b2ZpbGU7Ci0gICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBtX2pp
dC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKKyAgICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+Z2V0QXJy
YXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKICAgICAgICAgICAgICAgICBH
UFJSZWcgdXNlZFJlZ2lzdGVyOwogICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNv
dXJjZS5pc0FkZHJlc3MoKSkKICAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhp
dC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwpAQCAtMTAzLDMzICsxMDMsMzMgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2bQogICAgICAgICAgICAgICAgIHNjcmF0Y2gy
ID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3Rlciwgc2NyYXRj
aDEpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9qaXQucHVzaFRvU2F2ZShzY3JhdGNoMSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1faml0LnB1c2hUb1NhdmUoc2NyYXRjaDIpOworICAgICAgICAgICAgICAg
ICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5w
dXNoVG9TYXZlKHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5wdXNoKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQucHVzaChzY3JhdGNoMik7CisgICAgICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gx
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnB1c2goc2NyYXRjaDIpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBHUFJSZWcgdmFsdWU7CiAg
ICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291
cmNlLmFzQWRkcmVzcygpKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBqaXQubG9hZFB0
cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNz
KCkpLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCk7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1
ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNl
ZW5TdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkOChBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgp
KSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sc2hp
ZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIG1faml0Lm9yMzIoc2Ny
YXRjaDIsIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRk
cmVzc09mQXJyYXlNb2RlcygpKSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQzMihBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoMSwgYXJyYXlQcm9m
aWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgICAgIGpp
dC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhpbmdU
eXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CisgICAgICAgICAg
ICAgICAgaml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgICAgICAgICAgICAg
aml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5
UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5w
b3BUb1Jlc3RvcmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5wb3BUb1Jl
c3RvcmUoc2NyYXRjaDEpOworICAgICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNj
cmF0Y2gyKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoMSk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQucG9w
KHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQucG9wKHNjcmF0Y2gxKTsKKyAg
ICAgICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMik7CisgICAgICAgICAgICAgICAgICAg
IGppdC5wb3Aoc2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTM4LDExICsxMzgsMTEgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KFZNJiB2bQogICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRk
cmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhh
dmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCiAg
ICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9q
c1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShtX2ppdCwgSlNWYWx1
ZVJlZ3MoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAg
bV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBqaXQubG9h
ZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJl
c3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1p
dFJlcG9ydFZhbHVlKG1faml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIo
KSkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1
ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQo
Vk0mIHZtCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CiAgICAgICAgIGNhc2UgVW5i
b3hlZFN0cmljdEludDUySW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAg
ICAgICAgICAgIG1faml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBpbmRleCk7
CisgICAgICAgICAgICBqaXQuc3RvcmU2NChyZWNvdmVyeS5ncHIoKSwgc2NyYXRjaCArIGluZGV4
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkBA
IC0yMTQsOCArMjE0LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2
bQogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2Ug
VW5ib3hlZERvdWJsZUluRlBSOgogICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICAgICAgbV9q
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUocmVjb3Zlcnku
ZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGlu
ZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlY292
ZXJ5LmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTI0MCw4
ICsyNDAsOCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAg
ICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIEludDUyRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAg
ICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52
aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9y
ZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTI1MiwyMCArMjUyLDIwIEBAIHZv
aWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAvLyBOZWVkIHRvIGVu
c3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVyIGFjY291bnRzIGZvciB0aGUgd29yc3QtY2FzZSBz
dGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCiAgICAgLy8gY291bGQgdG9hc3Qgc29tZSBzdGFjayB0
aGF0IHRoZSBERkcgdXNlZC4gV2UgbmVlZCB0byBkbyBpdCBiZWZvcmUgc3RvcmluZyB0byBzdGFj
ayBvZmZzZXRzCiAgICAgLy8gdXNlZCBieSBiYXNlbGluZS4KLSAgICBtX2ppdC5hZGRQdHIoCisg
ICAgaml0LmFkZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAg
ICAgICAgICAtbV9qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVp
cmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKKyAgICAgICAgICAg
IC1qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVnaXN0
ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBz
YXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBtX2ppdC5lbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7Ci0gICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihtX2ppdC5i
YXNlbGluZUNvZGVCbG9jaygpKTsKKyAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwor
ICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsK
IAogICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVj
b3ZlcmllcyBiZWxvdy4KLSAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVy
cygpOworICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogCiAgICAg
aWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCi0gICAgICAgIG1faml0LmNvcHlDYWxsZWVT
YXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0pOworICAgICAgICBqaXQuY29w
eUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7CiAKICAgICAv
LyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGlu
dG8gdGhlIHN0YWNrLgogICAgIApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChWTSYgdm0KICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVj
b3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBv
cGVyYW5kcy52aXJ0dWFsUmVnaXN0ZXJGb3JJbmRleChpbmRleCk7CiAKLSAgICAgICAgaWYgKHJl
Zy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4obV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpKQor
ICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8
aW50PihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaW50IG9wZXJhbmQg
PSByZWcub2Zmc2V0KCk7CkBAIC0yODUsNDUgKzI4NSw0NSBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFj
azoKICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNl
IEluRlBSOgotICAgICAgICAgICAgbV9qaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5m
bzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5sb2Fk
NjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVW5ib3hl
ZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAg
ICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKICAg
ICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0
LnJzaGlmdDY0KAorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NCgKICAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYm94SW50NTIoR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0g
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFN0
cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9qaXQubG9hZDY0KHNj
cmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYm94SW50
NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgaml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5i
b3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5GUFI6CiAgICAg
ICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9qaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5m
bzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAg
bV9qaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYm94
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0
LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdU
MCk7CisgICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBDb25zdGFudDoKLSAgICAgICAgICAgIG1faml0LnN0b3Jl
NjQoCisgICAgICAgICAgICBqaXQuc3RvcmU2NCgKICAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkp
LAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoVk0mIHZtCiAgICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hs
eSBhc3N1bWUgdGhhdCB0aGUgYXJndW1lbnRzIG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBv
dXRzaWRlIG9mIGl0cwogICAgIC8vIGlubGluZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBu
b3cgdGhlIERGRyB3b3VsZG4ndCBkbyB0aGF0LgogICAgIAotICAgIGVtaXRSZXN0b3JlQXJndW1l
bnRzKG9wZXJhbmRzKTsKKyAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsK
ICAgICAKICAgICAvLyBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNl
IHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vIHRoYXQgYWxsIG5ldyBjYWxscyBp
bnRvIHRoaXMgY29kZSB3aWxsIGdvIHRvIHRoZSBuZXcgSklULCBzbyB0aGUgZXhlY3V0ZQpAQCAt
MzgzLDE0ICszODMsMTQgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KFZNJiB2
bQogICAgIC8vIGNvdW50ZXIgdG8gMDsgb3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwog
ICAgIC8vIGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKS4KICAgICAKLSAgICBo
YW5kbGVFeGl0Q291bnRzKG1faml0LCBleGl0KTsKKyAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwg
ZXhpdCk7CiAgICAgCiAgICAgLy8gUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KICAgICAKLSAg
ICByZWlmeUlubGluZWRDYWxsRnJhbWVzKG1faml0LCBleGl0KTsKKyAgICByZWlmeUlubGluZWRD
YWxsRnJhbWVzKGppdCwgZXhpdCk7CiAKICAgICAvLyBBbmQgZmluaXNoLgotICAgIGFkanVzdEFu
ZEp1bXBUb1RhcmdldCh2bSwgbV9qaXQsIGV4aXQpOworICAgIGFkanVzdEFuZEp1bXBUb1Rhcmdl
dCh2bSwgaml0LCBleGl0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAko
cmV2aXNpb24gMjIwMjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdm9pZCBPU1JFeGl0Q29tcGls
ZXI6OmVtaXRSZXN0b3JlQXJndW1lbnRzKGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBv
cGVyYW5kcykKK3ZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKIHsKICAgICBI
YXNoTWFwPE1pbmlmaWVkSUQsIGludD4gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50czsgLy8gTWFw
cyBwaGFudG9tIGFyZ3VtZW50cyBub2RlIElEIHRvIG9wZXJhbmQuCiAgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewpAQCAtNTUsMTMg
KzU1LDEzIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjplbWl0UmVzdG9yZUFyZ3VtZW4KICAgICAg
ICAgYXV0byBpdGVyID0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5maW5kKGlkKTsKICAgICAg
ICAgaWYgKGl0ZXIgIT0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5lbmQoKSkgewogICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVn
cyhHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgbV9qaXQubG9h
ZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihpdGVyLT52YWx1ZSksIHJlZ3MpOwotICAg
ICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZShyZWdzLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOworICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJl
c3NGb3IoaXRlci0+dmFsdWUpLCByZWdzKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHJl
Z3MsIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPQotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+
ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2FsbEZyYW1lKCk7CisgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+
aW5saW5lQ2FsbEZyYW1lKCk7CiAKICAgICAgICAgaW50IHN0YWNrT2Zmc2V0OwogICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKQpAQCAtNzAsNDggKzcwLDQ2IEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjplbWl0UmVzdG9yZUFyZ3VtZW4KICAgICAgICAgICAgIHN0YWNrT2Zmc2V0ID0gMDsKICAg
ICAgICAgCiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCkgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cigKKyAgICAgICAgICAg
IGppdC5sb2FkUHRyKAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksCiAgICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDApOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubW92
ZSgKKyAgICAgICAgICAgIGppdC5tb3ZlKAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50
KCkuYXNDZWxsKCkpLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgbV9qaXQubG9hZDMyKAorICAgICAgICAg
ICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X2ppdC5tb3ZlKAorICAgICAgICAgICAgaml0Lm1vdmUoCiAgICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
KSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKKyAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAg
ICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgotICAgICAgICAgICAg
bV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZv
aWQqPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1l
bnRzRHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKLSAgICAg
ICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUNsb25l
ZEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBtX2pp
dC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBtX2ppdC5zdG9yZUNlbGwoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQu
c3RvcmVDZWxsKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAKICAgICAgICAgYWxyZWFkeUFsbG9jYXRlZEFyZ3Vt
ZW50cy5hZGQoaWQsIG9wZXJhbmQpOwogICAgIH0KIH0KIAotZXh0ZXJuICJDIiB7Ci0KLXZvaWQg
Y29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQordm9pZCBPU1JFeGl0Ojpjb21waWxlT1NS
RXhpdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKQEAgLTE0OCw3ICsxNDYsNiBA
QCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHsKICAgICAgICAg
Q0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgICAgICBPU1JFeGl0Q29tcGlsZXIgZXhp
dENvbXBpbGVyKGppdCk7CiAKICAgICAgICAgaWYgKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndp
bmQpIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBhY3RpbmcgYXMgYSBkZWZhY3RvIG9wX2NhdGNo
IGJlY2F1c2Ugd2UgYXJyaXZlIGhlcmUgZnJvbSBnZW5lcmljVW53aW5kKCkuCkBAIC0xNzIsOCAr
MTY5LDggQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBqaXQuYWRkNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKHByb2ZpbGVyRXhpdC0+Y291bnRlckFkZHJlc3MoKSkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgZXhpdENvbXBpbGVyLmNvbXBpbGVFeGl0KCp2bSwgZXhpdCwgb3BlcmFu
ZHMsIHJlY292ZXJ5KTsKLSAgICAgICAgCisgICAgICAgIGNvbXBpbGVFeGl0KGppdCwgKnZtLCBl
eGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOworCiAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBjb2RlQmxvY2spOwogICAgICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVf
SUYoCiAgICAgICAgICAgICBzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJi
b3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSwKQEAgLTE4OSw4ICsxODYs
NiBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB2bS0+b3NyRXhp
dEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OwogfQogCi19IC8vIGV4dGVybiAiQyIKLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDI3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzEsMzEgKzMxLDQgQEAKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHMuaCIKIAotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEV4ZWNTdGF0ZTsKLQotbmFtZXNw
YWNlIERGRyB7Ci0KLWNsYXNzIE9TUkV4aXRDb21waWxlciB7Ci1wdWJsaWM6Ci0gICAgT1NSRXhp
dENvbXBpbGVyKENDYWxsSGVscGVycyYgaml0KQotICAgICAgICA6IG1faml0KGppdCkKLSAgICB7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgY29tcGlsZUV4aXQoVk0mLCBjb25zdCBPU1JFeGl0Jiwg
Y29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhjb25zdCBPcGVyYW5kczxW
YWx1ZVJlY292ZXJ5PiYpOwotICAgIAotICAgIENDYWxsSGVscGVycyYgbV9qaXQ7Ci19OwotCi1l
eHRlcm4gIkMiIHsKLXZvaWQgSklUX09QRVJBVElPTiBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUq
KSBXVEZfSU5URVJOQUw7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQogI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmNwcAkocmV2aXNpb24gMjIwMjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAKLSAgICBwYXRjaEJ1ZmZlci5saW5r
KGZ1bmN0aW9uQ2FsbCwgY29tcGlsZU9TUkV4aXQpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVu
Y3Rpb25DYWxsLCBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdCk7CiAgICAgCiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsi
KSk7CiB9Cg==
</data>
<flag name="review"
          id="337885"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>