<?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>160007</bug_id>
          
          <creation_ts>2016-07-20 20:25:39 -0700</creation_ts>
          <short_desc>callOperation(.) variants in the DFG that explicitly take a tag/payload register should take a JSValueRegs instead</short_desc>
          <delta_ts>2016-07-21 18:02:50 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159941</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213013</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-20 20:25:39 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213237</commentid>
    <comment_count>1</comment_count>
      <attachid>284242</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-21 12:12:18 -0700</bug_when>
    <thetext>Created attachment 284242
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213292</commentid>
    <comment_count>2</comment_count>
      <attachid>284242</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-21 14:03:14 -0700</bug_when>
    <thetext>Comment on attachment 284242
patch

Awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213420</commentid>
    <comment_count>3</comment_count>
      <attachid>284286</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-21 17:15:00 -0700</bug_when>
    <thetext>Created attachment 284286
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213445</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-21 18:02:50 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/203544</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284242</attachid>
            <date>2016-07-21 12:12:18 -0700</date>
            <delta_ts>2016-07-21 17:15:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>88462</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE2LTA3LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGNhbGxPcGVyYXRpb24oLikgdmFyaWFudHMgaW4gdGhlIERGRyB0aGF0IGV4cGxpY2l0bHkgdGFr
ZSBhIHRhZy9wYXlsb2FkIHJlZ2lzdGVyIHNob3VsZCB0YWtlIGEgSlNWYWx1ZVJlZ3MgaW5zdGVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBteSBwbGFuIHRvIHJlbW92ZSBhbGwgY2FsbE9wZXJh
dGlvbiguKSB2YXJpYW50cworICAgICAgICBpbiB0aGUgdmFyaW91cyBKSVRzIGFuZCB0byB1bmlm
eSB0aGVtIHVzaW5nIGEgY291cGxlIHRlbXBsYXRlIHZhcmlhdGlvbnMuCisgICAgICAgIFRoZSBz
dGVwcyBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgMS4gUmVwbGFjZSBhbGwgZXhwbGljaXQgdGFn
L3BheWxvYWQgcGFpcnMgd2l0aCBKU1ZhbHVlUmVncyBpbiB0aGUgREZHCisgICAgICAgIDIuIFJl
cGxhY2UgYWxsIGV4cGxpY2l0IHRhZy9wYXlsb2FkIHBhaXJzIHdpdGggSlNWYWx1ZVJlZ3MgaW4g
dGhlIGJhc2VsaW5lCisgICAgICAgIDMuIHJlbW92ZSBjYWxsT3BlcmF0aW9uKC4pIHZhcmlhbnRz
IGFuZCB0ZWFjaCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUKKyAgICAgICAgICAgYWJvdXQg
SlNWYWx1ZVJlZ3MuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXREeW5hbWljVmFy
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNW
YXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QWNjZXNz
b3JCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5k
Qm94Qm9vbGVhblNsb3dQYXRoR2VuZXJhdG9yOjpnZW5lcmF0ZUludGVybmFsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBh
cmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorCiAyMDE2LTA3LTIxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ2xhcmlmeSB0ZXN0aW5nIG1vZGUgbmFtZXMgaW4gcnVuLWpzYy1zdHJlc3MtdGVz
dHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjAzNDc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIz
LDggKzIyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgfSBl
bHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdldEJ5SWRGdW5jdGlvbiwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGdlbi5zdHViSW5mbygpLCBiYXNlVGFnR1BS
T3JOb25lLAotICAgICAgICAgICAgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRp
Zmllck51bWJlcikpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5v
bmUsIGJhc2VQYXlsb2FkR1BSKSwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAg
ICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1
Myw4ICsyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAgICAgYXV0byBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlVGFnR1BSLAotICAg
ICAgICB2YWx1ZVBheWxvYWRHUFIsIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50
aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5j
dGlvbigpLCBOb1Jlc3VsdCwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BS
LCB2YWx1ZVBheWxvYWRHUFIpLAorICAgICAgICBiYXNlUGF5bG9hZEdQUiwgaWRlbnRpZmllclVJ
RChpZGVudGlmaWVyTnVtYmVyKSk7CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsK
QEAgLTM5Nyw2ICszOTYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBoCiAKICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVl
UmVncyBhcmcxUmVncyA9IGFyZzEuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBhcmcy
UmVncyA9IGFyZzIuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgYXJnMVRhZ0dQUiA9IGFyZzEu
dGFnR1BSKCk7CiAgICAgR1BSUmVnIGFyZzFQYXlsb2FkR1BSID0gYXJnMS5wYXlsb2FkR1BSKCk7
CiAgICAgR1BSUmVnIGFyZzJUYWdHUFIgPSBhcmcyLnRhZ0dQUigpOwpAQCAtNDEyLDcgKzQxMyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgYXJn
Mi51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BS
LCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVs
cGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENv
bmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CkBAIC00MzYsNyArNDM3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICAgICAgc2xvd1BhdGgubGlu
aygmbV9qaXQpOwogICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3Vs
dEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2Fk
R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAg
ICAgIApAQCAtNDczLDggKzQ3NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+c2V0VXAo
aml0KTsKICAgICAgICAgdGhpcy0+cmVjb3JkQ2FsbCgKICAgICAgICAgICAgIGppdC0+Y2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICB0aGlzLT5tX2Z1bmN0aW9uLCB0aGlzLT5tX3Jlc3Vs
dCwgbV9hcmcxVGFnLCBtX2FyZzFQYXlsb2FkLCBtX2FyZzJUYWcsCi0gICAgICAgICAgICAgICAg
bV9hcmcyUGF5bG9hZCkpOworICAgICAgICAgICAgICAgIHRoaXMtPm1fZnVuY3Rpb24sIHRoaXMt
Pm1fcmVzdWx0LCBKU1ZhbHVlUmVncyhtX2FyZzFUYWcsIG1fYXJnMVBheWxvYWQpLCBKU1ZhbHVl
UmVncyhtX2FyZzJUYWcsIG1fYXJnMlBheWxvYWQpKSk7CiAgICAgICAgIGppdC0+bV9qaXQuYW5k
MzIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgdGhpcy0+bV9yZXN1bHQpOwogICAgICAg
ICB0aGlzLT50ZWFyRG93bihqaXQpOwogICAgIH0KQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIGFyZzIudXNlKCk7CiAK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFy
ZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMS5qc1ZhbHVlUmVncygpLCBhcmcyLmpzVmFs
dWVSZWdzKCkpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAg
ICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwpAQCAtNTQ5LDEwICs1NDksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIAogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwotICAgIEdQUlJlZyBhcmcxVGFnR1BSID0gYXJnMS50YWdHUFIoKTsKICAgICBH
UFJSZWcgYXJnMVBheWxvYWRHUFIgPSBhcmcxLnBheWxvYWRHUFIoKTsKLSAgICBHUFJSZWcgYXJn
MlRhZ0dQUiA9IGFyZzIudGFnR1BSKCk7CiAgICAgR1BSUmVnIGFyZzJQYXlsb2FkR1BSID0gYXJn
Mi5wYXlsb2FkR1BSKCk7CisgICAgSlNWYWx1ZVJlZ3MgYXJnMVJlZ3MgPSBhcmcxLmpzVmFsdWVS
ZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgYXJnMlJlZ3MgPSBhcmcyLmpzVmFsdWVSZWdzKCk7CiAg
ICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcywgUmV1c2UsIGFyZzEsIFBh
eWxvYWRXb3JkKTsKICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQu
Z3ByKCk7CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVQZWVwaAogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxUGF5
bG9hZEdQUiwgYXJnMlBheWxvYWRHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwogICAg
ICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVz
dWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFy
ZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIC8vIEZJWE1FOiBBZGQg
ZmFzdCBwYXRocyBmb3IgdHdvQ2VsbHMsIG51bWJlciBldGMuCiAKICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBh
cmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJn
MVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCkBA
IC01ODksMTAgKzU4OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5v
blBlCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVn
IGFyZzFUYWdHUFIgPSBhcmcxLnRhZ0dQUigpOwogICAgIEdQUlJlZyBhcmcxUGF5bG9hZEdQUiA9
IGFyZzEucGF5bG9hZEdQUigpOwotICAgIEdQUlJlZyBhcmcyVGFnR1BSID0gYXJnMi50YWdHUFIo
KTsKICAgICBHUFJSZWcgYXJnMlBheWxvYWRHUFIgPSBhcmcyLnBheWxvYWRHUFIoKTsKKyAgICBK
U1ZhbHVlUmVncyBhcmcxUmVncyA9IGFyZzEuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVn
cyBhcmcyUmVncyA9IGFyZzIuanNWYWx1ZVJlZ3MoKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgYXJnMSwgUGF5bG9hZFdvcmQpOwogICAgIEdQUlJl
ZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKQEAgLTYxMiw3ICs2MTIs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIG5v
dEVxdWFsQ2FzZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBh
cmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIs
IGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IApAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGUKICAgICAgICAgLy8gRklYTUU6IEFkZCBmYXN0IHBhdGhzLgogCiAgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQ
UiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIs
IGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IApAQCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKIAogICAgICAgICAgICAgLy8gUmlnaHQgbm93LCBhcmd1bWVudHMgaXMgaW4gYXJndW1l
bnRzVGFnR1BSL2FyZ3VtZW50c1BheWxvYWRHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxlIGlzCiAg
ICAgICAgICAgICAvLyBmbHVzaGVkLgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TaXplRnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRz
VGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmly
c3RWYXJBcmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXpl
RnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSlNWYWx1ZVJlZ3MoYXJn
dW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSKSwgbnVtVXNlZFN0YWNrU2xvdHMsIGRh
dGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVu
dCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRz
IG9wZXJhbmQuCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZQogICAgICAgICAgICAgZW1pdFNldFZhcmFyZ3NGcmFtZShtX2ppdCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIGZhbHNlLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwog
ICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMigtKHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCks
IDYgKiBzaXplb2Yodm9pZCopKSkpLCBzY3JhdGNoR1BSMSwgSklUQ29tcGlsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHNjcmF0
Y2hHUFIxLCBhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIsIGRhdGEtPmZpcnN0
VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgc2NyYXRjaEdQUjEsIEpTVmFsdWVSZWdzKGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRz
UGF5bG9hZEdQUiksIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAg
cmVzdWx0R1BSID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFI7CiAgICAgICAgIH0KQEAgLTE2NjEs
NiArMTY2MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcywgUmV1c2UsIGFyZzEsIFBheWxv
YWRXb3JkKTsKICAgICAgICAgR1BSUmVnIGFyZzFUYWdHUFIgPSBhcmcxLnRhZ0dQUigpOwogICAg
ICAgICBHUFJSZWcgYXJnMVBheWxvYWRHUFIgPSBhcmcxLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgYXJnMVJlZ3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJl
ZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgCiAgICAg
ICAgIGFyZzEudXNlKCk7CkBAIC0xNjcxLDggKzE2NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTG9naWNhbE5vdChOCiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMs
IG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcx
VGFnR1BSLAotICAgICAgICAgICAgICAgIGFyZzFQYXlsb2FkR1BSLCBOZWVkVG9TcGlsbCwgRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQpKTsKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3Vs
dFBheWxvYWRHUFIsIGFyZzFSZWdzLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOb3ROZWVkZWQpKTsKICAgICAKICAgICAgICAgbV9qaXQueG9yMzIoVHJ1c3Rl
ZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1
bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMTgy
NSw3ICsxODI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwog
CiAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxS
ZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252
ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2Fk
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9v
bGVhbiwgcmVzdWx0R1BSLCB2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgIAogICAgICAgICBicmFuY2hUZXN0MzIoSklU
Q29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwpAQCAtMjE2NiwyNyArMjE2Niwy
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AzKHRoaXMsIG5vZGUtPmNoaWxkMygp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAKLSAgICAgICAgR1BSUmVnIG9w
MVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKLSAgICAgICAgR1BSUmVnIG9wMVBheWxvYWRHUFIgPSBv
cDEucGF5bG9hZEdQUigpOwotICAgICAgICBHUFJSZWcgb3AyVGFnR1BSID0gb3AyLnRhZ0dQUigp
OwotICAgICAgICBHUFJSZWcgb3AyUGF5bG9hZEdQUiA9IG9wMi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIEdQUlJlZyBvcDNUYWdHUFI7Ci0gICAgICAgIEdQUlJlZyBvcDNQYXlsb2FkR1BSOwotICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpIHsKLSAgICAgICAgICAgIG9wM1RhZ0dQUiA9IG9wMy50
YWdHUFIoKTsKLSAgICAgICAgICAgIG9wM1BheWxvYWRHUFIgPSBvcDMucGF5bG9hZEdQUigpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3AzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsK
LSAgICAgICAgICAgIG9wM1BheWxvYWRHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB9Cisg
ICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3Mgb3AyUmVncyA9IG9wMi5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVl
UmVncyBvcDNSZWdzOworCisgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAg
IG9wM1JlZ3MgPSBvcDMuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCBv
cDJUYWdHUFIsIG9wMlBheWxvYWRHUFIsIG9wM1RhZ0dQUiwgb3AzUGF5bG9hZEdQUik7CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgb3Ax
UmVncywgb3AyUmVncywgb3AzUmVncyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MiwgcmVzdWx0LmdwcigpLCBvcDFUYWdHUFIsIG9wMVBh
eWxvYWRHUFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN0ckNhdDIsIHJlc3VsdC5ncHIoKSwgb3AxUmVncywgb3AyUmVncyk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC0yNDg4LDEzICsyNDgxLDEyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0
ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSByaWdodC4KICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOwotICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5UGF5bG9hZEdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIEpTVmFs
dWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCks
IGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIpOworICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbENlbGwsIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncyk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIo
KSwgbm9kZSk7CkBAIC0yNzI4LDE0ICsyNzIwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BS
UmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQg
PSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNl
LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIEdQUlJlZyB0aGlzVmFsdWVUYWcgPSB0aGlzVmFsdWUu
dGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyB0aGlzVmFsdWVQYXlsb2FkID0gdGhpc1ZhbHVlLnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdGhpc1ZhbHVlUmVncyA9IHRoaXNWYWx1
ZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBzdWJzY3JpcHQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICBHUFJSZWcgc3Vic2NyaXB0VGFnID0gc3Vic2NyaXB0
LnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgc3Vic2NyaXB0UGF5bG9hZCA9IHN1YnNjcmlwdC5w
YXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHN1YnNjcmlwdFJlZ3MgPSBzdWJzY3Jp
cHQuanNWYWx1ZVJlZ3MoKTsKIAogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQ
YXlsb2FkKHRoaXMpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRo
aXMpOwpAQCAtMjc0Myw3ICsyNzMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBi
YXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1ZhbHVlVGFnLCB0aGlzVmFsdWVQYXlsb2FkLCBzdWJz
Y3JpcHRUYWcsIHN1YnNjcmlwdFBheWxvYWQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5VmFsV2l0aFRoaXMsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5
bG9hZEdQUiksIGJhc2VSZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CkBAIC0yNzc3LDE2ICsyNzY2LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIGNoaWxkMik7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBjaGlsZDMpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0gcHJvcGVy
dHkudGFnR1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BSID0gcHJv
cGVydHkucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFs
dWUudGFnR1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUu
cGF5bG9hZEdQUigpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJv
cGVydHkuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9
IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkK
LSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwgYmFzZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3Bl
cnR5UGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUik7CisgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVj
dENlbGxOb25TdHJpY3QsIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwgYmFzZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3Bl
cnR5UGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUik7CisgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBv
cGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJp
Y3QsIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwpAQCAtMjkwNSwxMiArMjg5MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVRhZ1JlZywg
dmFsdWVQYXlsb2FkUmVnKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFz
ZVJlZywgcHJvcGVydHlSZWcsIEpTVmFsdWVSZWdzKHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRS
ZWcpKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVl
VGFnUmVnLCB2YWx1ZVBheWxvYWRSZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vUmVz
dWx0LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgSlNWYWx1ZVJlZ3ModmFsdWVUYWdSZWcsIHZhbHVl
UGF5bG9hZFJlZykpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTMw
MTUsMjQgKzMwMDIsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDgs
ICJXZSBhcmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBj
YWxsIHdpdGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CiAK
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0No
aWxkKG5vZGUsIDApKTsKLSAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigpOwot
ICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMSkpOwotICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVlLnRhZ0dQUigp
OwotICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BS
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHRoaXNSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdz
KCk7CiAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAyKSk7Ci0gICAgICAgIEdQUlJlZyBwcm9wZXJ0eVRhZyA9IHBy
b3BlcnR5LnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkID0gcHJvcGVy
dHkucGF5bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9w
ZXJ0eS5qc1ZhbHVlUmVncygpOwogCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOwotICAgICAgICBHUFJSZWcgdmFs
dWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKLSAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZh
bHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8g
b3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXMsCi0gICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVRhZywgYmFzZVBheWxvYWQsIHRoaXNWYWx1
ZVRhZywgdGhpc1ZhbHVlUGF5bG9hZCwgcHJvcGVydHlUYWcsIHByb3BlcnR5UGF5bG9hZCwgdmFs
dWVUYWcsIHZhbHVlUGF5bG9hZCk7CisgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZ3MsIHRo
aXNSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAjZW5kaWYgLy8gQ1BVKFg4NikKIApAQCAtMzA1Nyw3ICszMDQwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjU3Ry
aW5nLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5n
cHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgCkBAIC0zMDY4LDE2ICszMDUxLDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIGFy
Z3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgYXJn
dW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5bG9hZEdQUigpOworICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
ICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDIoKSwgYmFzZUdQUik7CiAgICAg
ICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHRUYWcuZ3ByKCksIHJl
c3VsdFBheWxvYWQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwKLSAgICAgICAgICAg
ICAgICBhcmd1bWVudFRhZ0dQUiwgYXJndW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAg
ICBvcGVyYXRpb25SZWdFeHBFeGVjLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWcuZ3ByKCksIHJlc3Vs
dFBheWxvYWQuZ3ByKCkpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50UmVncyk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBu
b2RlKTsKQEAgLTMwODYsMTcgKzMwNjcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMygpKTsKLSAgICAgICAgR1BSUmVnIGJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQ
UigpOwotICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7Ci0gICAg
ICAgIEdQUlJlZyBhcmd1bWVudFBheWxvYWRHUFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAg
ICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwogICAg
ICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9w
ZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQu
Z3ByKCksIGdsb2JhbE9iamVjdEdQUiwKLSAgICAgICAgICAgIGJhc2VUYWdHUFIsIGJhc2VQYXls
b2FkR1BSLCBhcmd1bWVudFRhZ0dQUiwgYXJndW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWcuZ3ByKCks
IHJlc3VsdFBheWxvYWQuZ3ByKCkpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VSZWdzLCBhcmd1bWVu
dFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5v
ZGUpOwpAQCAtMzEyOSwxNSArMzEwNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRo
aXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudFRhZ0dQUiA9IGFyZ3VtZW50LnRhZ0dQ
UigpOwotICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50UGF5bG9hZEdQUiA9IGFyZ3VtZW50LnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3Vt
ZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9k
ZS0+Y2hpbGQyKCksIGJhc2VHUFIpOwogICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4
cFRlc3QsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudFRh
Z0dQUiwKLSAgICAgICAgICAgICAgICBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICAgICAg
ICAgIG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlR1BSLCBhcmd1bWVudFJlZ3MpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgCiAgICAgICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CkBAIC0zMTQ2LDE2ICszMTIyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7Ci0gICAgICAgIEdQUlJlZyBiYXNlVGFnR1BSID0gYmFzZS50YWdHUFIo
KTsKLSAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7Ci0g
ICAgICAgIEdQUlJlZyBhcmd1bWVudFRhZ0dQUiA9IGFyZ3VtZW50LnRhZ0dQUigpOwotICAgICAg
ICBHUFJSZWcgYXJndW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5bG9hZEdQUigpOwotICAg
ICAgICAKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7
CisgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdz
KCk7CisKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
b3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BS
LCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwKLSAgICAgICAgICAgIGFyZ3VtZW50VGFnR1BS
LCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwVGVzdEdl
bmVyaWMsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlUmVncywgYXJndW1lbnRS
ZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAg
IGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKQEAgLTMxODAsOCArMzE1Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgICAg
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0ciwgcmVzdWx0VGFnLmdw
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSwgc3RyaW5n
R1BSLCByZWdFeHBHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uU3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCkpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUik7CiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzIwMiw3ICszMTc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3Vs
dFRhZyh0aGlzKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxv
YWQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIG9w
ZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBTdHJpbmcsIHJlc3VsdFRhZy5ncHIo
KSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25TdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWcuZ3ByKCks
IHJlc3VsdFBheWxvYWQuZ3ByKCkpLAogICAgICAgICAgICAgICAgIHN0cmluZ0dQUiwgcmVnRXhw
R1BSLCByZXBsYWNlR1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwpAQCAtMzIx
NywyMCArMzE4OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHNlYXJjaCh0aGlzLCBub2RlLT5jaGlsZDIoKSwgY2hpbGQy
U3BlY3VsYXRpb25Nb2RlKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmVwbGFjZSh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7Ci0gICAgICAgIEdQUlJlZyBzdHJpbmdUYWdHUFIgPSBzdHJpbmcudGFn
R1BSKCk7Ci0gICAgICAgIEdQUlJlZyBzdHJpbmdQYXlsb2FkR1BSID0gc3RyaW5nLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgR1BSUmVnIHNlYXJjaFRhZ0dQUiA9IHNlYXJjaC50YWdHUFIoKTsKLSAg
ICAgICAgR1BSUmVnIHNlYXJjaFBheWxvYWRHUFIgPSBzZWFyY2gucGF5bG9hZEdQUigpOwotICAg
ICAgICBHUFJSZWcgcmVwbGFjZVRhZ0dQUiA9IHJlcGxhY2UudGFnR1BSKCk7Ci0gICAgICAgIEdQ
UlJlZyByZXBsYWNlUGF5bG9hZEdQUiA9IHJlcGxhY2UucGF5bG9hZEdQUigpOworICAgICAgICBK
U1ZhbHVlUmVncyBzdHJpbmdSZWdzID0gc3RyaW5nLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpT
VmFsdWVSZWdzIHNlYXJjaFJlZ3MgPSBzZWFyY2guanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVwbGFjZVJlZ3MgPSByZXBsYWNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIg
cmVzdWx0VGFnKHRoaXMpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXls
b2FkKHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgb3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5
bG9hZC5ncHIoKSwKLSAgICAgICAgICAgIHN0cmluZ1RhZ0dQUiwgc3RyaW5nUGF5bG9hZEdQUiwg
c2VhcmNoVGFnR1BSLCBzZWFyY2hQYXlsb2FkR1BSLCByZXBsYWNlVGFnR1BSLAotICAgICAgICAg
ICAgcmVwbGFjZVBheWxvYWRHUFIpOworICAgICAgICAgICAgb3BlcmF0aW9uU3RyaW5nUHJvdG9G
dW5jUmVwbGFjZUdlbmVyaWMsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5
bG9hZC5ncHIoKSksCisgICAgICAgICAgICBzdHJpbmdSZWdzLCBzZWFyY2hSZWdzLCByZXBsYWNl
UmVncyk7IAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTMzMDMs
NyArMzI3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIpLAotICAgICAgICAgICAgICAgICAgICB2
YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBiYXNlR1BSKSk7
CiAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBzdG9yYWdl
TGVuZ3RoR1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM1NCw3ICszMzIyLDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
bV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZhbHVlc0luVmVjdG9y
KSkpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgSlNW
YWx1ZVJlZ3Moc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiksIHZhbHVlVGFnR1BSLCB2YWx1
ZVBheWxvYWRHUFIsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCBKU1ZhbHVl
UmVncyhzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSKSwKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgYmFzZUdQUikpOwogICAgICAg
ICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQ
Uiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM2MjgsNyArMzU5Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgbm90
UHJpbWl0aXZlLCB0aGlzLCBvcGVyYXRpb25Ub1ByaW1pdGl2ZSwKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBhcmd1bWVudFRhZ0dQ
UiwgYXJndW1lbnRQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MoYXJndW1lbnRUYWdHUFIs
IGFyZ3VtZW50UGF5bG9hZEdQUikpKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTM2NDEsNiArMzYxMCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBHUFJSZWcgYXJndW1l
bnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5bG9hZEdQUigpOwogICAgICAgICBHUFJSZWcgYXJn
dW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYXJn
dW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyhyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwogCiAgICAg
ICAgIGFyZ3VtZW50LnVzZSgpOwpAQCAtMzY1MCw3ICszNjIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoZSBzbG93
IHBhdGggZ2VuZXJhdG9yLCB3ZSBlbWl0IGNhbGxPcGVyYXRpb24gaGVyZS4KICAgICAgICAgaWYg
KCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiBTcGVjQnl0ZWNvZGVO
dW1iZXIpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0UmVncywgYXJndW1lbnRUYWdHUFIs
IGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvTnVtYmVyLCByZXN1bHRSZWdzLCBhcmd1bWVudFJlZ3MpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIG5vdE51bWJlcjsKQEAgLTM2NjQsNyArMzYzNCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgbm90TnVtYmVyLmxp
bmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJl
Z3MpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0
UmVncywgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRSZWdzLCBhcmd1bWVudFJlZ3Mp
OwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTM2ODAsNyArMzY1MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIG9w
MVBheWxvYWRHUFIgPSBvcDEucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIG9wMVRh
Z0dQUiA9IG9wMS50YWdHUFIoKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBv
cDEuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKQEAgLTM2OTcsMTAgKzM2NjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dQYXRoMi5saW5rKCZtX2pp
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob3AgPT0gVG9TdHJpbmcpCi0gICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQUiwgb3AxUmVncyk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsK
LSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpOworICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRH
UFIsIG9wMVJlZ3MpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgICAgIGlmIChkb25lLmlzU2V0KCkpCkBAIC00MDE1LDggKzM5ODUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJS
ZWcgYXJndW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKLSAgICAgICAgICAgIEdQUlJl
ZyBhcmd1bWVudFBheWxvYWRHUFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7CisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCkBA
IC00MDI2LDggKzM5OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdp
dGhPbmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJy
ZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICAgICAgYXJndW1lbnRU
YWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBn
bG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkobm9kZS0+dHlwZWRB
cnJheVR5cGUoKSksIGFyZ3VtZW50UmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CkBAIC00MDQ1LDcgKzQwMTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQo
dGhpcyk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAg
ICAgICAgIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwgcmVzdWx0
VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhw
KG5vZGUtPnJlZ2V4cEluZGV4KCkpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdSZWdleHAsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIo
KSksIG1faml0LmNvZGVCbG9jaygpLT5yZWdleHAobm9kZS0+cmVnZXhwSW5kZXgoKSkpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6
IG1ha2UgdGhlIGNhbGxPcGVyYXRpb24gYWJvdmUgZXhwbGljaXRseSByZXR1cm4gYSBjZWxsIHJl
c3VsdCwgb3Igaml0QXNzZXJ0IHRoZSB0YWcgaXMgYSBjZWxsIHRhZy4KQEAgLTQwODUsNyArNDA1
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh0ZW1wVGFnR1BSLCB0ZW1wR1BSKSwgdGhpc1ZhbHVlVGFnR1BSLCB0aGlzVmFsdWVQ
YXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGVtcFRhZ0dQUiwgdGVt
cEdQUiksIEpTVmFsdWVSZWdzKHRoaXNWYWx1ZVRhZ0dQUiwgdGhpc1ZhbHVlUGF5bG9hZEdQUikp
KTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBUYWdHUFIsIHRlbXBHUFIsIG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQyNjIsMTEgKzQyMzAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
R1BSUmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgYmFzZVBheWxv
YWQgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBi
YXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIEdQUlJlZyB0aGlzVGFnID0gdGhpc1ZhbHVlLnRh
Z0dQUigpOwotICAgICAgICBHUFJSZWcgdGhpc1BheWxvYWQgPSB0aGlzVmFsdWUucGF5bG9hZEdQ
UigpOworICAgICAgICBKU1ZhbHVlUmVncyB0aGlzUmVncyA9IHRoaXNWYWx1ZS5qc1ZhbHVlUmVn
cygpOwogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CkBAIC00Mjc0
LDcgKzQyNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXMsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgYmFzZVRhZywgYmFzZVBh
eWxvYWQsIHRoaXNUYWcsIHRoaXNQYXlsb2FkLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpcywgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZVJl
Z3MsIHRoaXNSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKQEAgLTQ1NjAsMTggKzQ1MjYs
MTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2Fz
ZSBQdXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlJlZyBiYXNlVGFnID0gYmFzZS50YWdHUFIoKTsK
LSAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBHUFJS
ZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVlLnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgdGhp
c1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVS
ZWdzIHRoaXNSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKLSAgICAgICAgR1BSUmVnIHZhbHVl
VGFnID0gdmFsdWUudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWQgPSB2YWx1
ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywK
LSAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1ZhbHVlVGFn
LCB0aGlzVmFsdWVQYXlsb2FkLCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VS
ZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSkpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwpAQCAtNDg0MywxNCArNDgwNiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBHUFJSZWcgYXJndW1lbnRz
VGFnR1BSOwogICAgICAgICBHUFJSZWcgYXJndW1lbnRzUGF5bG9hZEdQUjsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYXJndW1lbnRzUmVnczsKICAgICAgICAgewogICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYXJndW1lbnRzKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGFyZ3Vt
ZW50c1RhZ0dQUiA9IGFyZ3VtZW50cy50YWdHUFIoKTsKLSAgICAgICAgICAgIGFyZ3VtZW50c1Bh
eWxvYWRHUFIgPSBhcmd1bWVudHMucGF5bG9hZEdQUigpOworICAgICAgICAgICAgYXJndW1lbnRz
UmVncyA9IGFyZ3VtZW50cy5qc1ZhbHVlUmVncygpOwogICAgICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRzVGFnR1BS
LCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5vZmZzZXQpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1
bWVudHNSZWdzLCBkYXRhLT5vZmZzZXQpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAKICAgICAgICAgbG9jayhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC00
ODU4LDYgKzQ4MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHModGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgYXJndW1lbnRzVGFnR1BSID0gYXJndW1lbnRzLnRhZ0dQUigpOwog
ICAgICAgICAgICAgYXJndW1lbnRzUGF5bG9hZEdQUiA9IGFyZ3VtZW50cy5wYXlsb2FkR1BSKCk7
CisgICAgICAgICAgICBhcmd1bWVudHNSZWdzID0gYXJndW1lbnRzLmpzVmFsdWVSZWdzKCk7CiAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICB9CiAgICAgICAgIHVubG9jayhH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC00ODgwLDcgKzQ4NDQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBtX2ppdC5z
dG9yZTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpc0dQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Io
ZGF0YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkxvYWRWYXJhcmdzLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50
c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zmc2V0LCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgZGF0YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1hY2hpbmVTdGFydC5vZmZzZXQoKSwgYXJn
dW1lbnRzUmVncywgZGF0YS0+b2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0YS0+
bWFuZGF0b3J5TWluaW11bSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQ5NjQsMTMgKzQ5MjgsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiA9IGJhc2UucGF5bG9hZEdQUigpOwotICAgICAgICBHUFJSZWcgYmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVn
cygpOwogICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25I
YXNHZW5lcmljUHJvcGVydHksIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgYmFzZVRh
Z0dQUiwgYmFzZVBheWxvYWRHUFIsIHByb3BlcnR5LmdwcigpKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQ
UiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VSZWdzLCBwcm9wZXJ0eS5ncHIoKSk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5
bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDk5OCw3ICs0OTYxLDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCh3
cm9uZ1N0cnVjdHVyZSwgdGhpcywgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCByZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCBwcm9w
ZXJ0eUdQUikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwod3Jv
bmdTdHJ1Y3R1cmUsIHRoaXMsIG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSwgCisgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVl
UmVncyhiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiksIHByb3BlcnR5R1BSKSk7CiAgICAgICAg
IGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTUwNjQsNyArNTAyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgbW92ZVRydWVUbyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKIAotICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHksIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgYmFz
ZUdQUiwgaW5kZXhHUFIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5LCBKU1ZhbHVl
UmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBiYXNlR1BSLCBpbmRleEdQUikp
OwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGJvb2xlYW5S
ZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CkBAIC01MDkxLDcgKzUwNTUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIE5vdCBlbm91
Z2ggcmVnaXN0ZXJzIG9uIFg4NiBmb3IgdGhpcyBjb2RlLCBzbyBhbHdheXMgdXNlIHRoZSBzbG93
IHBhdGguCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgc2NyYXRjaEdQUik7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHByb3BlcnR5R1BSKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbENlbGwsIEpTVmFsdWVSZWdz
KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VHUFIsIEpTVmFsdWVSZWdzKHNj
cmF0Y2hHUFIsIHByb3BlcnR5R1BSKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAjZWxzZQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKQEAgLTUx
NDksNyArNTExMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOwor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMs
IG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpKTsKICNlbmRpZgogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAyMDM0NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxNyw3ICsyMDE3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
ICAgICBvdXRPZkJvdW5kcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZywgYmFzZVJlZywgcHJvcGVy
dHlSZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnUmVnLCBz
Y3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbmRpZgogICAgICAgICB9CiAg
ICAgICAgIApAQCAtODA0OSw3ICs4MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldER5bmFtaWNWYQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQ
YXlsb2FkKHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHluYW1pY1Zhciwg
cmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBzY29wZUdQUiwgaWRlbnRpZmll
clVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHluYW1pY1ZhciwgSlNWYWx1ZVJlZ3MocmVzdWx0
VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpKSwgc2NvcGVHUFIsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCBy
ZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICNlbmRpZgpAQCAtODA2OSw3ICs4MDY5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYQogICAgIEdQUlJlZyB0YWcg
PSB2YWx1ZS50YWdHUFIoKTsKICAgICBHUFJSZWcgcGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIo
KTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0
RHluYW1pY1ZhciwgTm9SZXN1bHQsIHNjb3BlR1BSLCB0YWcsIHBheWxvYWQsIGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dER5bmFtaWNWYXIsIE5vUmVzdWx0LCBzY29wZUdQUiwg
SlNWYWx1ZVJlZ3ModGFnLCBwYXlsb2FkKSwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogI2VuZGlmCiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTgwOTUsNyArODA5NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckIKICAgICBHUFJSZWcgYWNjZXNz
b3JHUFIgPSBhY2Nlc3Nvci5ncHIoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIE5vUmVzdWx0LCBiYXNlR1BSLCBzdWJzY3JpcHRSZWdzLnRh
Z0dQUigpLCBzdWJzY3JpcHRSZWdzLnBheWxvYWRHUFIoKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1
dGVzKCksIGFjY2Vzc29yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgTm9SZXN1
bHQsIGJhc2VHUFIsIHN1YnNjcmlwdFJlZ3MsIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBh
Y2Nlc3NvckdQUik7CiAjZW5kaWYKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAyMDM0NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MDIsMzEgKzE3MDIsMzEgQEAgcHVibGljOgogICAg
IH0KICNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5
bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSkkgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEs
IEpTVmFsdWVSZWdzIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRy
KHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50
YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKSSBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcg
YXJnMlBheWxvYWQsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FSkpKSSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdz
IGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBhcmczUGF5
bG9hZCwgYXJnM1RhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQ
UigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJn
My5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkLCBHUFJSZWcgYXJn
NFRhZywgR1BSUmVnIGFyZzRQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBhcmcxLCBK
U1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBKU1ZhbHVlUmVncyBhcmc0KQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJn
M1BheWxvYWQsIGFyZzNUYWcsIGFyZzRQYXlsb2FkLCBhcmc0VGFnKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5
bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIo
KSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQucGF5bG9hZEdQUigpLCBh
cmc0LnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRy
KGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBU
cnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FT0lVaSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRU
YWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwsIHVuc2lnbmVkIHZhbHVlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRU9JVWkgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBhcmcxLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9h
ZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKQEAgLTE3NDEsMTc1ICsxNzQxLDE4
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3Rh
dGUoKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCog
cG9pbnRlcikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCB2b2lkKiBwb2ludGVyKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIocG9pbnRlcikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigp
KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1
bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxv
YWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9w
ZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VJIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
dWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAg
IH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VB
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJl
ZyBhcmcxKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUEgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQVogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUFaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEpTVmFsdWVSZWdz
IHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBh
cmcxLnRhZ0dQUigpLCBhcmcxLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJn
MSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpDIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpDIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQu
dGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKc3NaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJl
c3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc3NaIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc3NSZW8gb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpzc1JlbyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNzUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJl
c3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzUmVvSnNz
IG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVz
dWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBKU1Zh
bHVlUmVncyByZXN1bHQsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRl
ciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVz
dWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgaW50IHN0YXJ0Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0
aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3Rh
bnRzKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxv
YWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlAgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFU
YWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgdm9pZCogcG9pbnRlcikKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
LnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRh
Z0dQUigpKTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3Vs
dFBheWxvYWQsIEpTQ2VsbCogY2VsbCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU0Nl
bGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1
bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCog
Y2VsbCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKc2NDIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxs
KiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwg
cmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2Fk
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwg
SlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdz
IGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxv
YWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJn
My50YWdHUFIoKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9Kc3Mgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVNzaUNJIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEpTVmFsdWVSZWdzIGFyZzEsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEu
dGFnR1BSKCksIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigp
KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEpTVmFs
dWVSZWdzIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQzMl90IGFyZzFU
YWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
dWJJbmZvKSwgYXJnMVBheWxvYWQsIFRydXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1c3RlZEltbVB0
cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RURBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEZQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5
bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFn
R1BSKCkpOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgRlBSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBh
eWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQu
dGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJn
MikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VK
QSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgVHJ1c3RlZEltbTMyIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQs
IGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgVHJ1c3RlZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFy
ZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SkEgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcg
YXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcx
VGFnLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7
CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
R1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcx
VGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFn
R1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24s
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQ
UigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBpbnQzMl90IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpJY2ZaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMSwgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpJY2ZaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBpbnQzMl90IGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBH
UFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAg
IH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Va
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBpbnQz
Ml90IGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVpaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBpbnQz
Ml90IGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQu
cGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSlNWYWx1ZVJlZ3MgdmFsdWUsIHNpemVfdCBpbmRleCkKQEAgLTE5MTgsODIgKzE5
MjQsNjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCi0gICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcxVGFn
LCBHUFJSZWcgYXJnMVBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTVmFsdWVSZWdzIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcx
UGF5bG9hZCwgYXJnMVRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRh
Z0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBnbG9iYWxPYmplY3QsIGFyZzEudGFnR1BS
KCksIGFyZzEucGF5bG9hZEdQUigpKTsKLSAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5
bG9hZCwgYXJnMVRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRh
Z0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBh
cmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5w
YXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcs
IEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFy
ZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcy
VGFnLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJn
MS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSkpK
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRh
Zyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2Fk
R1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQsIGFyZzEudGFn
R1BSKCksIGFyZzEucGF5bG9hZEdQUigpKTsKLSAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAK
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzFSZWdzLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBhcmcxUmVncy50YWdHUFIoKSwgYXJnMVJlZ3MucGF5bG9h
ZEdQUigpLCB1aWQpOwotICAgIH0KLQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShF
QUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1Z
X0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJn
MS50YWdHUFIoKSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBhcmcxLnRhZ0dQUigp
LCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9B
UkcgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBh
eWxvYWQsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQs
IGFyZzNUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9BUkcg
YXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BS
UmVnIGFyZzNQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQ
UigpLCBhcmczLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKQEAgLTIwMDEsNTUgKzE5ODcs
NDYgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9h
ZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQ
YXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyKQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQ
YXlsb2FkLCBhcmcyVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFn
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BS
KCksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRpb24sIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9E
VU1NWV9BUkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJn
My5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIo
KSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMlRhZywgR1BS
UmVnIGFyZzJQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVn
cyBhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSkKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBp
bW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcg
YXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxv
YWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgU0g0XzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBKU1Zh
bHVlUmVncyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyIGltbSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5
bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIo
KSwgYXJnMi5wYXlsb2FkR1BSKCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
SW50MzJUYWcpLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRh
Z0dQUigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BS
UmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcy
VGFnLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEu
cGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdH
UFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBh
eWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FQ0ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU1ZhbHVl
UmVncyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BS
KCksIGFyZzIudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMlBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Ci0gICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNK
IG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0
LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQu
cGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCkBAIC0yMDU4LDIwICsyMDM1LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAK
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgSlNW
YWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgYXJnMSwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9B
UkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIGFyZzIsIFRydXN0ZWRJbW1Q
dHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAg
IH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VT
c2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcx
VGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpT
VmFsdWVSZWdzIGFyZzEsIEdQUlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJ
bmZvKSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIGFyZzJQYXlsb2FkLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEpTVmFsdWVSZWdzIGFyZzIpCkBAIC0yMDc5LDIxICsyMDU2LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9h
ZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJS
ZWcgYXJnMlBheWxvYWQsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0pKIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAg
ICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MlBheWxvYWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcy
LnRhZ0dQUigpLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBaSiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBF
QUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmcz
VGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2Fk
R1BSKCksIGFyZzMudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0
XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1pKIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnM1RhZywgR1BSUmVnIGFy
ZzNQYXlsb2FkKQpAQCAtMjEwMSw0MCArMjA3OCw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1Z
X0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKT0ogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1Z
X0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbiha
X0pJVE9wZXJhdGlvbl9FSk9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3Mg
YXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICByZXR1
cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdCwgYXJnMS50YWdHUFIoKSwgYXJnMS5w
YXlsb2FkR1BSKCksIGFyZzIsIGFyZzMudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyLCBFQUJJXzMyQklUX0RV
TU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1
bnNpZ25lZCBhcmcyLCB1bnNpZ25lZCBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
VmFsdWVSZWdzIGFyZzEsIHVuc2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAgICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9B
UkcgIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0z
MihhcmczKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyAgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFRydXN0
ZWRJbW0zMihhcmcyKSwgVHJ1c3RlZEltbTMyKGFyZzMpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxv
YWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgdW5zaWduZWQgYXJnMywgR1BSUmVnIGFy
ZzQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRH
UFIoKSwgYXJnMi50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKGFyZzMpLCBhcmc0KTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IHVuc2lnbmVkIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJ
VE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcx
LCB1bnNpZ25lZCBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVz
dGVkSW1tMzIoYXJnMikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCks
IFRydXN0ZWRJbW0zMihhcmcyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBH
UFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcg
YXJnNCwgdW5zaWduZWQgYXJnNSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VaSlpaWiBvcGVyYXRpb24sIHVuc2lnbmVkIGFyZzEsIEpTVmFsdWVS
ZWdzIGFyZzIsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0LCB1bnNpZ25lZCBhcmc1KQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MihhcmcxKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCwg
VHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BS
KCksIFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0paQyBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBpbnQzMl90IGFyZzMs
IEdQUlJlZyBhcmc0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUNKWkMgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwg
aW50MzJfdCBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3RlZElt
bTMyKGFyZzMpLCBhcmc0KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIo
YXJnMyksIGFyZzQpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VD
SVpDQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRPcDIs
IGludDMyX3Qgb3AzLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCkBAIC0yMTQyLDUzICsyMTIw
LDYgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudE9wMiksIFRydXN0ZWRJbW0zMihvcDMpLCBhcmc0LCBh
cmc1KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0gICAg
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oCi0gICAgICAgIEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFs
dWVSZWdzIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbiwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpKTsKLSAgICB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCi0gICAgICAgIEZ1bmN0aW9uVHlw
ZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmcxKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQudGFnR1BS
KCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGFyZzEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3Vt
ZW50VHlwZTI+Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
RnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBBcmd1bWVudFR5cGUx
IGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBh
cmcxLCBhcmcyKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMiwK
LSAgICAgICAgdHlwZW5hbWUgQXJndW1lbnRUeXBlMz4KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKAotICAgICAgICBGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyLAotICAgICAg
ICBBcmd1bWVudFR5cGUzIGFyZzMpCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb24sIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgYXJnMSwg
YXJnMiwgYXJnMyk7Ci0gICAgfQotICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5j
dGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIs
Ci0gICAgICAgIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQ+
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgRnVuY3Rpb25U
eXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFy
Z3VtZW50VHlwZTIgYXJnMiwKLSAgICAgICAgQXJndW1lbnRUeXBlMyBhcmczLCBBcmd1bWVudFR5
cGU0IGFyZzQpCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24s
IHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgYXJnMSwgYXJnMiwgYXJnMywg
YXJnNCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsCi0gICAg
ICAgIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQsIHR5cGVu
YW1lIEFyZ3VtZW50VHlwZTU+Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBBcmd1
bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwKLSAgICAgICAgQXJndW1lbnRUeXBl
MyBhcmczLCBBcmd1bWVudFR5cGU0IGFyZzQsIEFyZ3VtZW50VHlwZTUgYXJnNSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgb3BlcmF0aW9uLCByZXN1
bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQs
IGFyZzUpOwotICAgIH0KICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogICAgIAogI2lmICFk
ZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykgJiYgIUNQVShTSDQpCg==
</data>
<flag name="review"
          id="307886"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284286</attachid>
            <date>2016-07-21 17:15:00 -0700</date>
            <delta_ts>2016-07-21 17:15:00 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>90376</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDE2LTA3LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGNhbGxPcGVyYXRpb24oLikgdmFyaWFudHMgaW4gdGhlIERGRyB0aGF0IGV4cGxpY2l0bHkgdGFr
ZSBhIHRhZy9wYXlsb2FkIHJlZ2lzdGVyIHNob3VsZCB0YWtlIGEgSlNWYWx1ZVJlZ3MgaW5zdGVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBteSBwbGFuIHRvIHJlbW92ZSBhbGwgY2FsbE9wZXJhdGlv
biguKSB2YXJpYW50cworICAgICAgICBpbiB0aGUgdmFyaW91cyBKSVRzIGFuZCB0byB1bmlmeSB0
aGVtIHVzaW5nIGEgY291cGxlIHRlbXBsYXRlIHZhcmlhdGlvbnMuCisgICAgICAgIFRoZSBzdGVw
cyBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgMS4gUmVwbGFjZSBhbGwgZXhwbGljaXQgdGFnL3Bh
eWxvYWQgcGFpcnMgd2l0aCBKU1ZhbHVlUmVncyBpbiB0aGUgREZHCisgICAgICAgIDIuIFJlcGxh
Y2UgYWxsIGV4cGxpY2l0IHRhZy9wYXlsb2FkIHBhaXJzIHdpdGggSlNWYWx1ZVJlZ3MgaW4gdGhl
IGJhc2VsaW5lCisgICAgICAgIDMuIHJlbW92ZSBjYWxsT3BlcmF0aW9uKC4pIHZhcmlhbnRzIGFu
ZCB0ZWFjaCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUKKyAgICAgICAgICAgYWJvdXQgSlNW
YWx1ZVJlZ3MuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXREeW5hbWljVmFyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYXIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QWNjZXNzb3JCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5kQm94Qm9v
bGVhblNsb3dQYXRoR2VuZXJhdG9yOjpnZW5lcmF0ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAy
MDE2LTA3LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIG9w
X2FkZC9WYWx1ZUFkZCBzaG91bGQgYmUgYW4gSUMgaW4gYWxsIEpJVCB0aWVycwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAyMDM1MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOCArMjIzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICB9IGVsc2UgewogICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2V0QnlJZEZ1bmN0aW9uLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VUYWdHUFJPck5vbmUsCi0gICAg
ICAgICAgICBiYXNlUGF5bG9hZEdQUiwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7
CisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxv
YWRHUFIpLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9CiAKICAgICBt
X2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjUzLDggKzI1Miw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IE5vUmVzdWx0LCBnZW4uc3R1YkluZm8oKSwgdmFsdWVUYWdHUFIsCi0gICAgICAgIHZhbHVlUGF5
bG9hZEdQUiwgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikp
OworICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVz
dWx0LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9h
ZEdQUiksCisgICAgICAgIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJO
dW1iZXIpKTsKIAogICAgIG1faml0LmFkZFB1dEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzk3LDYgKzM5
Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKIAogICAgIEpT
VmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzIGFyZzFSZWdz
ID0gYXJnMS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGFyZzJSZWdzID0gYXJnMi5q
c1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBhcmcxVGFnR1BSID0gYXJnMS50YWdHUFIoKTsKICAg
ICBHUFJSZWcgYXJnMVBheWxvYWRHUFIgPSBhcmcxLnBheWxvYWRHUFIoKTsKICAgICBHUFJSZWcg
YXJnMlRhZ0dQUiA9IGFyZzIudGFnR1BSKCk7CkBAIC00MTIsNyArNDEzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICBhcmcyLnVzZSgpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVu
Y3Rpb24sIHJlc3VsdEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIs
IGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwg
cmVzdWx0R1BSLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1
bHRHUFIsIHRha2VuKTsKQEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAg
ICAgCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxVGFn
R1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxUmVncywg
YXJnMlJlZ3MpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAgICAgCkBAIC00NzMs
OCArNDc0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwogICAgICAg
ICB0aGlzLT5yZWNvcmRDYWxsKAogICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgIHRoaXMtPm1fZnVuY3Rpb24sIHRoaXMtPm1fcmVzdWx0LCBtX2FyZzFUYWcs
IG1fYXJnMVBheWxvYWQsIG1fYXJnMlRhZywKLSAgICAgICAgICAgICAgICBtX2FyZzJQYXlsb2Fk
KSk7CisgICAgICAgICAgICAgICAgdGhpcy0+bV9mdW5jdGlvbiwgdGhpcy0+bV9yZXN1bHQsIEpT
VmFsdWVSZWdzKG1fYXJnMVRhZywgbV9hcmcxUGF5bG9hZCksIEpTVmFsdWVSZWdzKG1fYXJnMlRh
ZywgbV9hcmcyUGF5bG9hZCkpKTsKICAgICAgICAgaml0LT5tX2ppdC5hbmQzMihKSVRDb21waWxl
cjo6VHJ1c3RlZEltbTMyKDEpLCB0aGlzLT5tX3Jlc3VsdCk7CiAgICAgICAgIHRoaXMtPnRlYXJE
b3duKGppdCk7CiAgICAgfQpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgYXJnMi51c2UoKTsKIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1
bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJn
MlBheWxvYWRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1
bHRQYXlsb2FkR1BSLCBhcmcxLmpzVmFsdWVSZWdzKCksIGFyZzIuanNWYWx1ZVJlZ3MoKSk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBib29sZWFu
UmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CkBAIC01NDksMTAgKzU0OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBoCiAgICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgR1BSUmVnIGFyZzFUYWdHUFIgPSBhcmcxLnRhZ0dQUigpOwogICAgIEdQUlJlZyBhcmcxUGF5
bG9hZEdQUiA9IGFyZzEucGF5bG9hZEdQUigpOwotICAgIEdQUlJlZyBhcmcyVGFnR1BSID0gYXJn
Mi50YWdHUFIoKTsKICAgICBHUFJSZWcgYXJnMlBheWxvYWRHUFIgPSBhcmcyLnBheWxvYWRHUFIo
KTsKKyAgICBKU1ZhbHVlUmVncyBhcmcxUmVncyA9IGFyZzEuanNWYWx1ZVJlZ3MoKTsKKyAgICBK
U1ZhbHVlUmVncyBhcmcyUmVncyA9IGFyZzIuanNWYWx1ZVJlZ3MoKTsKICAgICAKICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgYXJnMSwgUGF5bG9hZFdvcmQpOwog
ICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKQEAgLTU2
Niw3ICs1NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAg
ICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFQYXlsb2FkR1BSLCBhcmcy
UGF5bG9hZEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAogICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BS
LCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJl
c3VsdFBheWxvYWRHUFIsIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9h
ZEdQUik7CiAgICAgICAgIApAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgLy8gRklYTUU6IEFkZCBmYXN0IHBhdGhzIGZv
ciB0d29DZWxscywgbnVtYmVyIGV0Yy4KIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVy
cyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BS
LCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxUmVncywgYXJnMlJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKQEAgLTU4OSwxMCArNTg5
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKIHsKICAgICBK
U1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3Bl
cmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgYXJnMVRhZ0dQUiA9
IGFyZzEudGFnR1BSKCk7CiAgICAgR1BSUmVnIGFyZzFQYXlsb2FkR1BSID0gYXJnMS5wYXlsb2Fk
R1BSKCk7Ci0gICAgR1BSUmVnIGFyZzJUYWdHUFIgPSBhcmcyLnRhZ0dQUigpOwogICAgIEdQUlJl
ZyBhcmcyUGF5bG9hZEdQUiA9IGFyZzIucGF5bG9hZEdQUigpOworICAgIEpTVmFsdWVSZWdzIGFy
ZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGFyZzJSZWdzID0g
YXJnMi5qc1ZhbHVlUmVncygpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2Fk
KHRoaXMsIFJldXNlLCBhcmcxLCBQYXlsb2FkV29yZCk7CiAgICAgR1BSUmVnIHJlc3VsdFBheWxv
YWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgbm90RXF1YWxDYXNlLmxp
bmsoJm1faml0KTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BS
LCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVJlZ3MsIGFy
ZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCkBAIC02MjMsNyAr
NjIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAg
ICAvLyBGSVhNRTogQWRkIGZhc3QgcGF0aHMuCiAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9h
ZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVJlZ3MsIGFy
ZzJSZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC03ODMsNyAr
NzgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAgICAg
ICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNUYWdHUFIvYXJn
dW1lbnRzUGF5bG9hZEdQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMKICAgICAgICAgICAgIC8v
IGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZv
clZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNUYWdHUFIsIGFyZ3Vt
ZW50c1BheWxvYWRHUFIsIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNl
dCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFy
Z3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKU1ZhbHVlUmVncyhhcmd1bWVudHNUYWdHUFIs
IGFyZ3VtZW50c1BheWxvYWRHUFIpLCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJB
cmdPZmZzZXQpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gTm93IHdlIGhhdmUgdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRo
ZSBjYWxsZWUgZnJhbWUsIGJ1dCB3ZSd2ZSBsb3N0IHRoZSBhcmd1bWVudHMgb3BlcmFuZC4KQEAg
LTc5Myw3ICs3OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKG1faml0LCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgZmFsc2UsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAgICBt
X2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNiAqIHNpemVvZih2
b2lkKikpKSksIHNjcmF0Y2hHUFIxLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVw
VmFyYXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEsIGFyZ3Vt
ZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBzY3JhdGNo
R1BSMSwgSlNWYWx1ZVJlZ3MoYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSKSwg
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKICAgICAgICAgfQpAQCAtMTY2MSw2ICsxNjYxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgYXJnMSwgUGF5bG9hZFdvcmQpOwogICAg
ICAgICBHUFJSZWcgYXJnMVRhZ0dQUiA9IGFyZzEudGFnR1BSKCk7CiAgICAgICAgIEdQUlJlZyBh
cmcxUGF5bG9hZEdQUiA9IGFyZzEucGF5bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlUmVncyBh
cmcxUmVncyA9IGFyZzEuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxv
YWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogICAgICAgICAKICAgICAgICAgYXJnMS51c2Uo
KTsKQEAgLTE2NzEsOCArMTY3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dp
Y2FsTm90KE4KIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29u
dmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsCi0gICAg
ICAgICAgICAgICAgYXJnMVBheWxvYWRHUFIsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50OjpDaGVja05vdE5lZWRlZCkpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0
aGlzLCBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0UGF5bG9hZEdQUiwg
YXJnMVJlZ3MsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05v
dE5lZWRlZCkpOwogICAgIAogICAgICAgICBtX2ppdC54b3IzMihUcnVzdGVkSW1tMzIoMSksIHJl
c3VsdFBheWxvYWRHUFIpOwogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIs
IG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0xODI1LDcgKzE4MjUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUqIG5vCiAKICAgICAgICAgc2xv
d1BhdGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9C
b29sZWFuLCByZXN1bHRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRH
UFIsIHZhbHVlLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7CiAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9u
WmVybywgcmVzdWx0R1BSLCB0YWtlbik7CkBAIC0yMTY2LDI3ICsyMTY2LDIwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
b3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBvcDModGhpcywgbm9kZS0+Y2hpbGQzKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAgICAgICAgIAotICAgICAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3Ax
LnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BS
KCk7Ci0gICAgICAgIEdQUlJlZyBvcDJUYWdHUFIgPSBvcDIudGFnR1BSKCk7Ci0gICAgICAgIEdQ
UlJlZyBvcDJQYXlsb2FkR1BSID0gb3AyLnBheWxvYWRHUFIoKTsKLSAgICAgICAgR1BSUmVnIG9w
M1RhZ0dQUjsKLSAgICAgICAgR1BSUmVnIG9wM1BheWxvYWRHUFI7Ci0gICAgICAgIGlmIChub2Rl
LT5jaGlsZDMoKSkgewotICAgICAgICAgICAgb3AzVGFnR1BSID0gb3AzLnRhZ0dQUigpOwotICAg
ICAgICAgICAgb3AzUGF5bG9hZEdQUiA9IG9wMy5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBvcDNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICAgICAg
b3AzUGF5bG9hZEdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIH0KKyAgICAgICAgSlNWYWx1
ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyBv
cDJSZWdzID0gb3AyLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIG9wM1JlZ3M7
CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgb3AzUmVncyA9IG9w
My5qc1ZhbHVlUmVncygpOwogICAgICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDMoKSkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0
MywgcmVzdWx0LmdwcigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIG9wMlRhZ0dQUiwgb3Ay
UGF5bG9hZEdQUiwgb3AzVGFnR1BSLCBvcDNQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MywgcmVzdWx0LmdwcigpLCBvcDFSZWdzLCBvcDJSZWdz
LCBvcDNSZWdzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgb3Ay
VGFnR1BSLCBvcDJQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU3RyQ2F0MiwgcmVzdWx0LmdwcigpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKQEAgLTI0ODgsMTMgKzI0ODEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7IC8vIFNhdmUgYSByZWdpc3Rlciwgc3BlY3VsYXRl
IGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0LgogICAgICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgcHJvcGVydHkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0g
cHJvcGVydHkudGFnR1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BS
ID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiBy
ZXN1bHRUYWcodGhpcyk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQ
YXlsb2FkKHRoaXMpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bENlbGwsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwgcHJv
cGVydHlUYWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnLmdwcigpLCBy
ZXN1bHRQYXlsb2FkLmdwcigpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdzKTsKICAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKQEAg
LTI3MjgsMTQgKzI3MjAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogCiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBHUFJSZWcgYmFzZVRhZyA9
IGJhc2UudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJhc2UucGF5bG9h
ZEdQUigpOworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3Mo
KTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZVRhZyA9IHRoaXNWYWx1ZS50YWdHUFIoKTsKLSAg
ICAgICAgR1BSUmVnIHRoaXNWYWx1ZVBheWxvYWQgPSB0aGlzVmFsdWUucGF5bG9hZEdQUigpOwor
ICAgICAgICBKU1ZhbHVlUmVncyB0aGlzVmFsdWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2RlLT5jaGlsZDMo
KSk7Ci0gICAgICAgIEdQUlJlZyBzdWJzY3JpcHRUYWcgPSBzdWJzY3JpcHQudGFnR1BSKCk7Ci0g
ICAgICAgIEdQUlJlZyBzdWJzY3JpcHRQYXlsb2FkID0gc3Vic2NyaXB0LnBheWxvYWRHUFIoKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3Mgc3Vic2NyaXB0UmVncyA9IHN1YnNjcmlwdC5qc1ZhbHVlUmVn
cygpOwogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CkBAIC0yNzQz
LDcgKzI3MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bFdpdGhUaGlzLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWcsIGJhc2VQ
YXlsb2FkLCB0aGlzVmFsdWVUYWcsIHRoaXNWYWx1ZVBheWxvYWQsIHN1YnNjcmlwdFRhZywgc3Vi
c2NyaXB0UGF5bG9hZCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxX
aXRoVGhpcywgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFz
ZVJlZ3MsIHRoaXNWYWx1ZVJlZ3MsIHN1YnNjcmlwdFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSLCBub2RlKTsKQEAgLTI3NzcsMTYgKzI3NjYsMTQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
cHJvcGVydHkodGhpcywgY2hpbGQyKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIGNoaWxkMyk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
Ci0gICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIoKTsK
LSAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVBheWxvYWRHUFIgPSBwcm9wZXJ0eS5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsK
LSAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7
CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVl
UmVncygpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RD
ZWxsTm9uU3RyaWN0LCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQYXlsb2FkR1BS
LCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmlj
dCwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsTm9uU3RyaWN0LCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQYXlsb2FkR1BS
LCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwgYmFzZUdQUiwg
cHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yOTA1
LDEyICsyODkyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBO
b1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRS
ZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZywgSlNWYWx1ZVJlZ3ModmFsdWVUYWdSZWcsIHZhbHVlUGF5bG9hZFJlZykpKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkgPyBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVUYWdSZWcsIHZhbHVl
UGF5bG9hZFJlZykpOworICAgICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ1JlZywgdmFsdWVQYXlsb2FkUmVnKSkp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMzAxNSwyNCArMzAwMiwy
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gOCwgIldlIGFyZSBhc3N1
bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0aG91dCBp
bmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKIAogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkp
OwotICAgICAgICBHUFJSZWcgYmFzZVRhZyA9IGJhc2UudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJl
ZyBiYXNlUGF5bG9hZCA9IGJhc2UucGF5bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0
aGlzVmFsdWUodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0gICAg
ICAgIEdQUlJlZyB0aGlzVmFsdWVUYWcgPSB0aGlzVmFsdWUudGFnR1BSKCk7Ci0gICAgICAgIEdQ
UlJlZyB0aGlzVmFsdWVQYXlsb2FkID0gdGhpc1ZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdGhpc1JlZ3MgPSB0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDIpKTsKLSAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnID0gcHJvcGVydHkudGFnR1BS
KCk7Ci0gICAgICAgIEdQUlJlZyBwcm9wZXJ0eVBheWxvYWQgPSBwcm9wZXJ0eS5wYXlsb2FkR1BS
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVS
ZWdzKCk7CiAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgIEdQUlJlZyB2YWx1ZVRhZyA9IHZhbHVl
LnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkID0gdmFsdWUucGF5bG9hZEdQ
UigpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24obV9q
aXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRC
eVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKLSAgICAgICAg
ICAgIE5vUmVzdWx0LCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1ZhbHVlVGFnLCB0aGlzVmFs
dWVQYXlsb2FkLCBwcm9wZXJ0eVRhZywgcHJvcGVydHlQYXlsb2FkLCB2YWx1ZVRhZywgdmFsdWVQ
YXlsb2FkKTsKKyAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVncywgdGhpc1JlZ3MsIHByb3Bl
cnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICNl
bmRpZiAvLyBDUFUoWDg2KQogCkBAIC0zMDU3LDcgKzMwNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdFRh
Zy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uUmVnRXhwRXhlY1N0cmluZywgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQ
YXlsb2FkLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNl
R1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgICAgICAgICAKQEAgLTMwNjgsMTYgKzMwNTEsMTQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRUYWdHUFIg
PSBhcmd1bWVudC50YWdHUFIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudFBheWxvYWRH
UFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBhcmd1
bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwogICAgICAgICAgICAgc3BlY3VsYXRl
UmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBiYXNlR1BSKTsKICAgICAgICAgCiAgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQy
IHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dFBheWxvYWQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5n
cHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLAotICAgICAgICAgICAgICAgIGFyZ3VtZW50
VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICAgICAgICAgIG9wZXJhdGlvblJl
Z0V4cEV4ZWMsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIo
KSksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRSZWdzKTsKICAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwpAQCAtMzA4
NiwxNyArMzA2NywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwotICAgICAgICBHUFJSZWcgYmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7Ci0gICAgICAg
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwotICAgICAgICBHUFJS
ZWcgYXJndW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKLSAgICAgICAgR1BSUmVnIGFy
Z3VtZW50UGF5bG9hZEdQUiA9IGFyZ3VtZW50LnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdz
IGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0
VGFnKHRoaXMpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRo
aXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhw
RXhlY0dlbmVyaWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgZ2xvYmFs
T2JqZWN0R1BSLAotICAgICAgICAgICAgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIGFyZ3Vt
ZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICAgICAgb3BlcmF0aW9uUmVn
RXhwRXhlY0dlbmVyaWMsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSksIGdsb2JhbE9iamVjdEdQUiwgYmFzZVJlZ3MsIGFyZ3VtZW50UmVncyk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC0zMTI5
LDE1ICszMTA3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hp
bGQzKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgICAg
ICAgICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7Ci0gICAgICAg
ICAgICBHUFJSZWcgYXJndW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5bG9hZEdQUigpOwor
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDIoKSwg
YmFzZUdQUik7CiAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwVGVzdCwgcmVzdWx0
LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50VGFnR1BSLAotICAgICAg
ICAgICAgICAgIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9u
UmVnRXhwVGVzdCwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3Vt
ZW50UmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAK
ICAgICAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKQEAgLTMxNDYs
MTYgKzMxMjIsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygp
KTsKLSAgICAgICAgR1BSUmVnIGJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwotICAgICAgICBH
UFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKLSAgICAgICAgR1BSUmVn
IGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBhcmd1
bWVudFBheWxvYWRHUFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIAorICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKKwogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICBvcGVyYXRpb25SZWdF
eHBUZXN0R2VuZXJpYywgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VUYWdHUFIs
IGJhc2VQYXlsb2FkR1BSLAotICAgICAgICAgICAgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5
bG9hZEdQUik7CisgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYywgcmVzdWx0
LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VSZWdzLCBhcmd1bWVudFJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgYm9vbGVhblJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMzE4MCw4ICszMTUzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uU3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyLCByZXN1bHRUYWcuZ3ByKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkLmdwcigpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQ
Uik7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBs
YWNlUmVnRXhwRW1wdHlTdHIsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5
bG9hZC5ncHIoKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSKTsKICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0zMjAyLDcgKzMxNzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uU3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXls
b2FkLmdwcigpLAorICAgICAgICAgICAgICAgIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VSZWdFeHBTdHJpbmcsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSksCiAgICAgICAgICAgICAgICAgc3RyaW5nR1BSLCByZWdFeHBHUFIsIHJlcGxhY2VH
UFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC0zMjE3LDIwICszMTg5LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgc3RyaW5nKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgc2VhcmNoKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBjaGlsZDJTcGVjdWxhdGlvbk1v
ZGUpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCByZXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMygp
KTsKLSAgICAgICAgR1BSUmVnIHN0cmluZ1RhZ0dQUiA9IHN0cmluZy50YWdHUFIoKTsKLSAgICAg
ICAgR1BSUmVnIHN0cmluZ1BheWxvYWRHUFIgPSBzdHJpbmcucGF5bG9hZEdQUigpOwotICAgICAg
ICBHUFJSZWcgc2VhcmNoVGFnR1BSID0gc2VhcmNoLnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcg
c2VhcmNoUGF5bG9hZEdQUiA9IHNlYXJjaC5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBy
ZXBsYWNlVGFnR1BSID0gcmVwbGFjZS50YWdHUFIoKTsKLSAgICAgICAgR1BSUmVnIHJlcGxhY2VQ
YXlsb2FkR1BSID0gcmVwbGFjZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHN0
cmluZ1JlZ3MgPSBzdHJpbmcuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mgc2Vh
cmNoUmVncyA9IHNlYXJjaC5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByZXBs
YWNlUmVncyA9IHJlcGxhY2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhp
cyk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAg
ICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICBvcGVyYXRpb25TdHJpbmdQcm90b0Z1
bmNSZXBsYWNlR2VuZXJpYywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLAot
ICAgICAgICAgICAgc3RyaW5nVGFnR1BSLCBzdHJpbmdQYXlsb2FkR1BSLCBzZWFyY2hUYWdHUFIs
IHNlYXJjaFBheWxvYWRHUFIsIHJlcGxhY2VUYWdHUFIsCi0gICAgICAgICAgICByZXBsYWNlUGF5
bG9hZEdQUik7CisgICAgICAgICAgICBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2Vu
ZXJpYywgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpKSwK
KyAgICAgICAgICAgIHN0cmluZ1JlZ3MsIHNlYXJjaFJlZ3MsIHJlcGxhY2VSZWdzKTsgCiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5
bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzMwMyw3ICszMjcxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJh
dGlvbkFycmF5UHVzaCwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Moc3RvcmFnZUdQ
Uiwgc3RvcmFnZUxlbmd0aEdQUiksCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlVGFnR1BSLCB2
YWx1ZVBheWxvYWRHUFIsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIGJhc2VHUFIpKTsKICAgICAgICAgCiAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzU0LDcgKzMzMjIsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5hZGQzMihU
cnVzdGVkSW1tMzIoMSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVD
VF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVzSW5WZWN0b3IpKSk7CiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHN0b3JhZ2VH
UFIpOwogICAgICAgICAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCBKU1ZhbHVlUmVncyhzdG9y
YWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSKSwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwg
YmFzZUdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIEpTVmFsdWVSZWdzKHN0b3JhZ2VH
UFIsIHN0b3JhZ2VMZW5ndGhHUFIpLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVl
VGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBiYXNlR1BSKSk7CiAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzYyOCw3ICszNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBub3RQcmltaXRpdmUsIHRo
aXMsIG9wZXJhdGlvblRvUHJpbWl0aXZlLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBh
eWxvYWRHUFIpKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhhcmd1bWVudFRhZ0dQUiwgYXJndW1lbnRQYXls
b2FkR1BSKSkpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMzY0MSw2ICszNjEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEdQUlJlZyBhcmd1bWVudFBheWxvYWRHUFIg
PSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7CiAgICAgICAgIEdQUlJlZyBhcmd1bWVudFRhZ0dQUiA9
IGFyZ3VtZW50LnRhZ0dQUigpOworICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzKHJl
c3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CiAKICAgICAgICAgYXJndW1lbnQu
dXNlKCk7CkBAIC0zNjUwLDcgKzM2MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIEluc3RlYWQgb2YgdGhlIHNsb3cgcGF0aCBnZW5lcmF0
b3IsIHdlIGVtaXQgY2FsbE9wZXJhdGlvbiBoZXJlLgogICAgICAgICBpZiAoIShtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNCeXRlY29kZU51bWJlcikpIHsKICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblRvTnVtYmVyLCByZXN1bHRSZWdzLCBhcmd1bWVudFRhZ0dQUiwgYXJndW1lbnRQYXls
b2FkR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJl
c3VsdFJlZ3MsIGFyZ3VtZW50UmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90TnVtYmVyOwpAQCAtMzY2NCw3ICszNjM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOwog
ICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7Ci0gICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRSZWdzLCBhcmd1bWVu
dFRhZ0dQUiwgYXJndW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdFJlZ3MsIGFyZ3VtZW50UmVncyk7CiAgICAgICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMzY4MCw3ICszNjUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9
IG9wMS5wYXlsb2FkR1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRh
Z0dQUigpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVn
cygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwpA
QCAtMzY5NywxMCArMzY2NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd1BhdGgyLmxpbmsoJm1faml0KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChvcCA9PSBUb1N0cmluZykKLSAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIG9wMVRhZ0dQUiwgb3Ax
UGF5bG9hZEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0
cmluZywgcmVzdWx0R1BSLCBvcDFSZWdzKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRH
UFIsIG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgb3AxUmVncyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
ICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAgLTQwMTUsOCArMzk4NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3Vt
ZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudFRh
Z0dQUiA9IGFyZ3VtZW50LnRhZ0dQUigpOwotICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50UGF5
bG9hZEdQUiA9IGFyZ3VtZW50LnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
IGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAKQEAgLTQwMjYsOCArMzk5
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bigKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50
Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKLSAgICAgICAgICAgICAgICByZXN1bHRH
UFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50
eXBlZEFycmF5VHlwZSgpKSwKLSAgICAgICAgICAgICAgICBhcmd1bWVudFRhZ0dQUiwgYXJndW1l
bnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+
dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwg
YXJndW1lbnRSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQw
NDUsNyArNDAxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgCi0gICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCByZXN1bHRUYWcuZ3ByKCksIHJl
c3VsdFBheWxvYWQuZ3ByKCksIG1faml0LmNvZGVCbG9jaygpLT5yZWdleHAobm9kZS0+cmVnZXhw
SW5kZXgoKSkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwgSlNW
YWx1ZVJlZ3MocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpKSwgbV9qaXQuY29k
ZUJsb2NrKCktPnJlZ2V4cChub2RlLT5yZWdleHBJbmRleCgpKSk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGUgY2Fs
bE9wZXJhdGlvbiBhYm92ZSBleHBsaWNpdGx5IHJldHVybiBhIGNlbGwgcmVzdWx0LCBvciBqaXRB
c3NlcnQgdGhlIHRhZyBpcyBhIGNlbGwgdGFnLgpAQCAtNDA4NSw3ICs0MDUzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGZ1bmN0aW9uLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRlbXBU
YWdHUFIsIHRlbXBHUFIpLCB0aGlzVmFsdWVUYWdHUFIsIHRoaXNWYWx1ZVBheWxvYWRHUFIpKTsK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0ZW1wVGFnR1BSLCB0ZW1wR1BSKSwgSlNWYWx1
ZVJlZ3ModGhpc1ZhbHVlVGFnR1BSLCB0aGlzVmFsdWVQYXlsb2FkR1BSKSkpOwogCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQodGVtcFRhZ0dQUiwgdGVtcEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNDI2MiwxMSArNDIzMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBHUFJSZWcgYmFzZVRh
ZyA9IGJhc2UudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJhc2UucGF5
bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKLSAgICAgICAgR1BSUmVnIHRoaXNUYWcgPSB0aGlzVmFsdWUudGFnR1BSKCk7Ci0gICAg
ICAgIEdQUlJlZyB0aGlzUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAg
IEpTVmFsdWVSZWdzIHRoaXNSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKQEAgLTQyNzQsNyArNDI0MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywgcmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1Rh
ZywgdGhpc1BheWxvYWQsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzLCBKU1ZhbHVl
UmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBiYXNlUmVncywgdGhpc1JlZ3Ms
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwpAQCAtNDU2MCwxOCArNDUyNiwxNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIFB1dEJ5SWRXaXRo
VGhpczogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigpOwotICAgICAgICBHUFJS
ZWcgYmFzZVBheWxvYWQgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRo
aXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIEdQUlJlZyB0aGlzVmFsdWVU
YWcgPSB0aGlzVmFsdWUudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyB0aGlzVmFsdWVQYXlsb2Fk
ID0gdGhpc1ZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3Mg
PSB0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICBHUFJSZWcgdmFsdWVUYWcgPSB2YWx1ZS50
YWdHUFIoKTsKLSAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJ
ZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAotICAgICAgICAgICAg
Tm9SZXN1bHQsIGJhc2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlzVmFsdWVUYWcsIHRoaXNWYWx1ZVBh
eWxvYWQsIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRp
Zmllck51bWJlcigpKSk7CisgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZ3MsIHRoaXNSZWdz
LCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7
CkBAIC00ODQzLDE0ICs0ODA2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBhcmd1bWVudHNUYWdHUFI7CiAgICAg
ICAgIEdQUlJlZyBhcmd1bWVudHNQYXlsb2FkR1BSOworICAgICAgICBKU1ZhbHVlUmVncyBhcmd1
bWVudHNSZWdzOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVu
dHModGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgYXJndW1lbnRzVGFnR1BSID0g
YXJndW1lbnRzLnRhZ0dQUigpOwotICAgICAgICAgICAgYXJndW1lbnRzUGF5bG9hZEdQUiA9IGFy
Z3VtZW50cy5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBhcmd1bWVudHNSZWdzID0gYXJndW1l
bnRzLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFy
Z3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1Bh
eWxvYWRHUFIsIGRhdGEtPm9mZnNldCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1JlZ3MsIGRh
dGEtPm9mZnNldCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAog
ICAgICAgICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTQ4NTgsNiArNDgyMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50cyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBhcmd1bWVudHNUYWdHUFIgPSBhcmd1bWVudHMudGFnR1BSKCk7CiAgICAgICAgICAgICBh
cmd1bWVudHNQYXlsb2FkR1BSID0gYXJndW1lbnRzLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAg
IGFyZ3VtZW50c1JlZ3MgPSBhcmd1bWVudHMuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIH0KICAgICAgICAgdW5sb2NrKEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKQEAgLTQ4ODAsNyArNDg0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291
bnRJbmNsdWRpbmdUaGlzR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5l
Q291bnQpKTsKICAgICAgICAgCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZh
cmFyZ3MsIGRhdGEtPm1hY2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1
bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBk
YXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25M
b2FkVmFyYXJncywgZGF0YS0+bWFjaGluZVN0YXJ0Lm9mZnNldCgpLCBhcmd1bWVudHNSZWdzLCBk
YXRhLT5vZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlNaW5p
bXVtKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwpAQCAtNDk2NCwxMyArNDkyOCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJl
c3VsdFRhZyh0aGlzKTsKLSAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkR1BSID0gYmFzZS5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBiYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9w
ZXJ0eSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5
bG9hZEdQUiwgcHJvcGVydHkuZ3ByKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkhhc0dlbmVyaWNQcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSKSwgYmFzZVJlZ3MsIHByb3BlcnR5LmdwcigpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CkBAIC00OTk4LDcgKzQ5NjEsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAK
LSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHdyb25nU3RydWN0dXJl
LCB0aGlzLCBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHksIHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiwgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHByb3BlcnR5R1BSKSk7Cisg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwg
dGhpcywgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCAKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VUYWdH
UFIsIGJhc2VQYXlsb2FkR1BSKSwgcHJvcGVydHlHUFIpKTsKICAgICAgICAgYm9vbGVhblJlc3Vs
dChyZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTA2
NCw3ICs1MDI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBtb3ZlVHJ1ZVRvKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlR1BSLCBpbmRleEdQ
UikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHksIEpTVmFsdWVSZWdzKHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VHUFIsIGluZGV4R1BSKSk7CiAgICAgICAgIAog
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQ
YXlsb2FkR1BSLCBub2RlKTsKQEAgLTUwOTEsNyArNTA1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gTm90IGVub3VnaCByZWdpc3RlcnMg
b24gWDg2IGZvciB0aGlzIGNvZGUsIHNvIGFsd2F5cyB1c2UgdGhlIHNsb3cgcGF0aC4KICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbENlbGwsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5
bG9hZEdQUiwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZUdQUiwgSlNWYWx1ZVJlZ3Moc2NyYXRjaEdQUiwgcHJv
cGVydHlHUFIpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICNlbHNlCiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwpAQCAtNTE0OSw3ICs1MTEzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGRv
bmUubGluaygmbV9qaXQpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKSk7CisgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uR2V0
QnlWYWxDZWxsLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUikpOwogI2VuZGlmCiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIwMzUz
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDIxLDcgKzIwMjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxPblN0CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIG91dE9mQm91
bmRzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCwKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0VGFnUmVnLCBzY3JhdGNoUmVnLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0Y2hSZWcpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCkBAIC0z
NDE1LDcgKzM0MTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9k
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+
c2hvdWxkU2xvd1BhdGhSZXBhdGNoKQotICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0
YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkT3B0aW1p
emUsIHJlc3VsdFJlZ3MsIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBhZGRJQyk7Cisg
ICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZSwgcmVzdWx0UmVncywgaW5uZXJMZWZ0
UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIoYWRkSUMpKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZCwgcmVzdWx0UmVncywgaW5uZXJMZWZ0
UmVncywgaW5uZXJSaWdodFJlZ3MpOwogCkBAIC04MDk2LDcgKzgwOTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0RHluYW1pY1ZhCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25HZXREeW5hbWljVmFyLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIHNj
b3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdl
dFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWljVmFyLCBK
U1ZhbHVlUmVncyhyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCkpLCBzY29wZUdQ
UiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJ
bmZvKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogI2VuZGlmCkBAIC04
MTE2LDcgKzgxMTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1Zh
CiAgICAgR1BSUmVnIHRhZyA9IHZhbHVlLnRhZ0dQUigpOwogICAgIEdQUlJlZyBwYXlsb2FkID0g
dmFsdWUucGF5bG9hZEdQUigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXREeW5hbWljVmFyLCBOb1Jlc3VsdCwgc2NvcGVHUFIsIHRhZywgcGF5
bG9hZCwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQ
dXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0RHluYW1pY1ZhciwgTm9S
ZXN1bHQsIHNjb3BlR1BSLCBKU1ZhbHVlUmVncyh0YWcsIHBheWxvYWQpLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAjZW5kaWYK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtODE0
Miw3ICs4MTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEFjY2Vzc29yQgog
ICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9IGFjY2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgTm9SZXN1bHQsIGJhc2VHUFIs
IHN1YnNjcmlwdFJlZ3MudGFnR1BSKCksIHN1YnNjcmlwdFJlZ3MucGF5bG9hZEdQUigpLCBub2Rl
LT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uLCBOb1Jlc3VsdCwgYmFzZUdQUiwgc3Vic2NyaXB0UmVncywgbm9kZS0+YWNjZXNz
b3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKICNlbmRpZgogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDIwMzUzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4OCw5ICsxMjg4LDkg
QEAgcHVibGljOgogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKSmFpYyBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSklUQWRkSUMq
IGFkZElDKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpKSmFpYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMS5ncHIoKSwgYXJnMi5ncHIoKSwg
VHJ1c3RlZEltbVB0cihhZGRJQykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMS5ncHIoKSwgYXJnMi5ncHIoKSwgcHRyKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQuZ3ByKCkpOwogICAgIH0KIApAQCAt
MTcxMSwzNyArMTcxMSwzNyBAQCBwdWJsaWM6CiAgICAgfQogI2Vsc2UgLy8gVVNFKEpTVkFMVUUz
Ml82NCkKIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpKSmFpYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSklUQWRkSUMqIGFkZElDKQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKSmFpYyBvcGVyYXRpb24sIEpTVmFs
dWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVHJ1c3Rl
ZEltbVB0ciBwdHIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BS
KCksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBUcnVzdGVkSW1tUHRyKGFkZElD
KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2Fk
R1BSKCksIGFyZzIudGFnR1BSKCksIHB0cik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsK
ICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQ
UlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFy
ZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RV
TU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BS
KCksIGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0
LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FSkpKSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIEdQUlJlZyBhcmcz
VGFnLCBHUFJSZWcgYXJnM1BheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKSSBvcGVyYXRp
b24sIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMs
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFU
YWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBhcmczUGF5bG9hZCwgYXJnM1RhZywgVHJ1c3RlZElt
bVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcy
LnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFn
R1BSKCksIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1Rh
ZywgR1BSUmVnIGFyZzNQYXlsb2FkLCBHUFJSZWcgYXJnNFRhZywgR1BSUmVnIGFyZzRQYXlsb2Fk
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpK
Skogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVl
UmVncyBhcmczLCBKU1ZhbHVlUmVncyBhcmc0KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcsIGFyZzRQ
YXlsb2FkLCBhcmc0VGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigp
LCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFy
ZzMudGFnR1BSKCksIGFyZzQucGF5bG9hZEdQUigpLCBhcmc0LnRhZ0dQUigpKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBVbmlxdWVkU3RyaW5n
SW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNW
YWx1ZVJlZ3MgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFs
dWUpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVz
dGVkSW1tMzIodmFsdWUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsK
ICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FT0lVaSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBHUFJSZWcgYXJnMSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRU9JVWkg
b3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBVbmlxdWVkU3RyaW5n
SW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZElt
bTMyKHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0
aW9uX0cgb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIHsKQEAgLTE3NTYsMTc1ICsxNzU2LDE4MSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
aml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BS
UmVnIHJlc3VsdFBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCogcG9pbnRlcikKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBv
aW50ZXIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FUFAgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBw
b2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIo
KSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdH
UFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VJIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5
bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVz
dWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FQVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUFaIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0
LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcxLnBheWxv
YWRHUFIoKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgYXJnMSkKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlv
biwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpDIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVn
cyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRh
Z0dQUigpLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc3NaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VKc3NaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQu
dGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKc3NSZW8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzc1JlbyBvcGVyYXRpb24sIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzUmVvSnNzIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzUmVvSnNzIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCogcG9p
bnRlciwgc2l6ZV90IHNpemUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIHZvaWQqIHBv
aW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50IHN0YXJ0
Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQs
IGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50
KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIo
KSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
dm9pZCogcG9pbnRlcikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3Mg
YXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywg
VHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5
bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQ
UigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2Fk
LCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3Mg
YXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdH
UFIoKSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAKLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEpTQ2VsbCogY2VsbCkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9w
ZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDWiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50
YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2Vs
bCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNj
Q0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBH
UFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJn
Mi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywg
R1BSUmVnIGFyZzNQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwg
cmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUdSZW9Kc3Mgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQ
UigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRU
YWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQ
UlJlZyBhcmcxLCBjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcx
LCBjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBU
cnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRh
Z0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywg
R1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTVmFsdWVS
ZWdzIGFyZzEsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQ
YXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
dWJJbmZvKSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIFRy
dXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxVGFn
LCBHUFJSZWcgYXJnMVBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHVi
SW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BS
KCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRURBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24s
IEpTVmFsdWVSZWdzIHJlc3VsdCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFy
ZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRh
Z0dQUigpLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEpTVmFsdWVSZWdz
IHJlc3VsdCwgVHJ1c3RlZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3RlZEltbTMyIGFyZzFU
YWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcx
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwog
ICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGlu
dDMyX3QgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBpbnQzMl90IGFyZzEpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7
CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVpJY2ZaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIGludDMyX3QgYXJnMSwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJl
ZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVpJY2ZaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBpbnQzMl90IGFyZzEsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSks
IFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5
bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBpbnQzMl90IGFyZzEsIEdQUlJlZyBhcmcyKQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaIG9w
ZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBpbnQzMl90IGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMihhcmcxKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFn
R1BSKCkpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgdmFs
dWUsIHNpemVfdCBpbmRleCkKQEAgLTE5MzMsODIgKzE5MzksNjIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RK
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBh
cmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCi0gICAgewotICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyUGF5bG9h
ZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKLSAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWVSZWdz
IGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJl
Z3MgYXJnMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwg
cmVzdWx0LCBnbG9iYWxPYmplY3QsIGFyZzEudGFnR1BSKCksIGFyZzEucGF5bG9hZEdQUigpKTsK
LSAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdCksIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAotICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
SlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJn
MlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BS
KCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9w
ZXJhdGlvbl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BS
UmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIpCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBh
eWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBhcmczUGF5bG9hZCwgYXJnM1Rh
Zyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2Fk
R1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykK
ICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRH
UFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFy
ZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uLCByZXN1bHQsIGFyZzEudGFnR1BSKCksIGFyZzEucGF5bG9hZEdQUigp
KTsKLSAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3Bl
cmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCi0gICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxv
YWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEpTVmFsdWVSZWdzIGFyZzFSZWdzLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQsIGFyZzFSZWdzLnRh
Z0dQUigpLCBhcmcxUmVncy5wYXlsb2FkR1BSKCksIHVpZCk7Ci0gICAgfQotCi0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcg
YXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNW
YWx1ZVJlZ3MgYXJnMSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRh
Zyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgVHJ1c3RlZEltbVB0
cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbiwgcmVzdWx0LCBhcmcxLnRhZ0dQUigpLCBhcmcxLnBheWxvYWRHUFIoKSwgYXJn
Mi50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMi5wYXlsb2FkR1BSKCksIGFy
ZzIudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIEdQUlJlZyBhcmczVGFnLCBH
UFJSZWcgYXJnM1BheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcs
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFy
ZzIudGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMu
dGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVn
cyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VH
UmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMykKQEAgLTIwMTYsNTUgKzIwMDIsNDYgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVn
IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcy
UGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RV
TU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKLSAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR0pKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywg
R1BSUmVnIGFyZzNQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVl
UmVncyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBTSDRfMzJC
SVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9B
UkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9BUkcg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdH
UFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIgaW1tKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgaW1tLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIu
dGFnR1BSKCksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFn
R1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlv
biwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyIGltbSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxv
YWQsIHJlc3VsdFRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwg
U0g0XzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyKQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgSlNW
YWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbiwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigp
LCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBTSDRfMzJCSVRfRFVN
TVlfQVJHIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1
bHQudGFnR1BSKCkpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVn
IGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmcz
UGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSkogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEs
IEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBh
eWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBhcmczUGF5bG9hZCwgYXJnM1Rh
Zyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQ
UigpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCks
IGFyZzMudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQogCi0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBh
cmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlBheWxvYWQp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0og
b3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlBh
eWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMlBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKLSAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwg
YXJnMi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0Mgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFn
R1BSKCkpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBS
UmVnIGFyZzMpCkBAIC0yMDczLDIwICsyMDUwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0g
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJn
MS50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAg
fQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
SlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVn
IGFyZzIsIHZvaWQqIHBvaW50ZXIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgYXJnMSwgR1BSUmVn
IGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcs
IGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCksIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9u
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTVmFsdWVSZWdzIGFyZzEsIEdQUlJlZyBh
cmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCksIGFyZzJQYXlsb2FkLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIpCkBA
IC0yMDk0LDIxICsyMDcxLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIEdQUlJlZyBh
cmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFs
dWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIGFyZzNQ
YXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBheWxvYWRH
UFIoKSwgYXJnMy50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRf
MzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5
bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5
bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFy
ZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FT1pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQpAQCAtMjExNiw0MCAr
MjA5Myw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJH
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKICAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklU
T3BlcmF0aW9uX0VKT0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywg
R1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBh
cmczUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFy
ZzFUYWcsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFC
SV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1Rh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQorCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSk9KIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFs
dWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIHJlc3VsdCwgYXJnMS50YWdHUFIoKSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzIsIGFyZzMu
dGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBh
cmcxLnRhZ0dQUigpLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIo
KSwgYXJnMy50YWdHUFIoKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNpZ25lZCBhcmcyLCB1bnNpZ25lZCBh
cmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25f
RUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIHVuc2lnbmVk
IGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBhcmcxVGFn
LCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyAgYXJnMS5w
YXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFRydXN0ZWRJbW0zMihhcmcyKSwgVHJ1c3RlZElt
bTMyKGFyZzMpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZf
SklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJl
ZyBhcmc0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRp
b25fRUZKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJl
Z3MgYXJnMiwgdW5zaWduZWQgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcs
IFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgVHJ1
c3RlZEltbTMyKGFyZzMpLCBhcmc0KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVuc2lnbmVkIGFyZzIpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCB1bnNpZ25lZCBhcmcyKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVN
TVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMikpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFRydXN0ZWRJbW0zMihhcmcyKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
WkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaSlpaWiBv
cGVyYXRpb24sIHVuc2lnbmVkIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIHVuc2lnbmVkIGFyZzMs
IEdQUlJlZyBhcmc0LCB1bnNpZ25lZCBhcmc1KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJnMlBheWxvYWQsIGFy
ZzJUYWcsIFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcx
KSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW0zMihhcmczKSwg
YXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FQ0paQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywg
R1BSUmVnIGFyZzJQYXlsb2FkLCBpbnQzMl90IGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNKWkMgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgaW50MzJfdCBhcmczLCBHUFJSZWcgYXJn
NCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3RlZEltbTMyKGFyZzMpLCBhcmc0KTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQ
UigpLCBhcmcyLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSVpDQyBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRPcDIsIGludDMyX3Qgb3AzLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCkBAIC0yMTU3LDUzICsyMTM1LDYgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVu
dE9wMiksIFRydXN0ZWRJbW0zMihvcDMpLCBhcmc0LCBhcmc1KTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlPgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCi0gICAg
ICAgIEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LnRhZ0dQUigpLCBy
ZXN1bHQucGF5bG9hZEdQUigpKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oCi0gICAgICAgIEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdz
IHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmcxKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCks
IGFyZzEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVu
YW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTI+Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJn
MikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0
LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBhcmcxLCBhcmcyKTsKLSAgICB9Ci0gICAg
dGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1l
bnRUeXBlMSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMiwKLSAgICAgICAgdHlwZW5hbWUgQXJndW1l
bnRUeXBlMz4KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAotICAgICAgICBG
dW5jdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEFyZ3VtZW50VHlwZTEg
YXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyLAotICAgICAgICBBcmd1bWVudFR5cGUzIGFyZzMpCi0g
ICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdC50YWdH
UFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotICAg
IHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3Vt
ZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIHR5cGVuYW1lIEFyZ3Vt
ZW50VHlwZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQ+Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwKLSAgICAg
ICAgQXJndW1lbnRUeXBlMyBhcmczLCBBcmd1bWVudFR5cGU0IGFyZzQpCi0gICAgewotICAgICAg
ICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0
LnBheWxvYWRHUFIoKSwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7Ci0gICAgfQotICAgIHRlbXBs
YXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlw
ZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIHR5cGVuYW1lIEFyZ3VtZW50VHlw
ZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTU+Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgRnVuY3Rpb25UeXBlIG9w
ZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50
VHlwZTIgYXJnMiwKLSAgICAgICAgQXJndW1lbnRUeXBlMyBhcmczLCBBcmd1bWVudFR5cGU0IGFy
ZzQsIEFyZ3VtZW50VHlwZTUgYXJnNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgb3BlcmF0aW9uLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXls
b2FkR1BSKCksIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwotICAgIH0KICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTMyXzY0KQogICAgIAogI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShB
Uk0pICYmICFDUFUoTUlQUykgJiYgIUNQVShTSDQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>