<?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>230976</bug_id>
          
          <creation_ts>2021-09-29 12:00:12 -0700</creation_ts>
          <short_desc>Borders are not drawn when using BifurcatedGraphicsContext</short_desc>
          <delta_ts>2021-10-12 12:32:47 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798488</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-29 12:00:12 -0700</bug_when>
    <thetext>Borders are not drawn when using BifurcatedGraphicsContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798489</commentid>
    <comment_count>1</comment_count>
      <attachid>439638</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-29 12:00:44 -0700</bug_when>
    <thetext>Created attachment 439638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798490</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-29 12:00:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/83657330&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798501</commentid>
    <comment_count>3</comment_count>
      <attachid>439642</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-29 12:21:39 -0700</bug_when>
    <thetext>Created attachment 439642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800792</commentid>
    <comment_count>4</comment_count>
      <attachid>440275</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-05 15:13:30 -0700</bug_when>
    <thetext>Created attachment 440275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803260</commentid>
    <comment_count>5</comment_count>
      <attachid>440963</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-12 11:27:53 -0700</bug_when>
    <thetext>Created attachment 440963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803311</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-12 12:32:45 -0700</bug_when>
    <thetext>Committed r284003 (242846@main): &lt;https://commits.webkit.org/242846@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440963.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439638</attachid>
            <date>2021-09-29 12:00:44 -0700</date>
            <delta_ts>2021-09-29 12:21:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230976-20210929120043.patch</filename>
            <type>text/plain</type>
            <size>41794</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBkMzg4MGEwOTM0MDkx
NmRjOTMxMGFmYjkwNDc3YWZlYjM4MzYwNC4uNjQ2Zjg4MTM0NzQ0OThjOTRlNzQzYmEzNTJmNzJm
Njc0N2ZiN2U1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTA5LTI5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEJvcmRlcnMgYXJl
IG5vdCBkcmF3biB3aGVuIHVzaW5nIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDk3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM2NTczMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTmV3IEFQSSBUZXN0OiBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
VGVzdHMuQm9yZGVycworCisgICAgICAgIFRoZXJlIGlzIGEgbWlub3IgcHJvYmxlbSB3aXRoIHRo
ZSBjaGlsZHJlbiBvZiBiaWZ1cmNhdGVkIGdyYXBoaWNzIGNvbnRleHRzLAorICAgICAgICB3aGlj
aCBpcyB0aGF0IHRoZXkgZWFjaCBjdXJyZW50bHkgbWFpbnRhaW4gdGhlaXIgb3duIEdyYXBoaWNz
Q29udGV4dFN0YXRlLAorICAgICAgICBhbmQgc29tZSBHcmFwaGljc0NvbnRleHQgaW1wbGVtZW50
YXRpb25zIHJlYWQgZnJvbSB0aGF0IHN0YXRlIGludGVybmFsbHkKKyAgICAgICAgdG8gZG8gd29y
ayAoZS5nLiB0aGUgQ0cgY29udGV4dCByZWFkcyB0aGUgU3Ryb2tlU3R5bGUgaW4gZHJhd0xpbmUo
KSkuCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBib3RoIGNoaWxkcmVuIG5lZWQgdG8gbWlycm9y
IHRoZSBzdGF0ZSBvZiB0aGUgdG9wbGV2ZWwuCisKKyAgICAgICAgWW91IGNvdWxkIGltYWdpbmUg
bWVyZ2luZyBjaGFuZ2VzIHRvIG1fc3RhdGUgaW4gZWFjaCBjb250ZXh0J3MgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgdXBkYXRlU3RhdGUoKSwgYnV0IEEpIHVwZGF0ZVN0YXRlIGlzIGNhbGxl
ZCBpbiAqcmVzcG9uc2UqIHRvIHRoZSBsb2NhbAorICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZSBjaGFuZ2luZyAoc28gdGhpcyB3b3VsZCBiZSBhIGJpdCBjaXJjdWxhciksIGFuZAorICAgICAg
ICBCKSB0aGlzIHdvdWxkIHJlcXVpcmUgZWFjaCBHcmFwaGljc0NvbnRleHQgdG8gZG8gdGhpcyB3
b3JrLgorCisgICAgICAgIEluc3RlYWQsIHJlbmFtZSBgdXBkYXRlU3RhdGVgIHRvIGBkaWRVcGRh
dGVTdGF0ZWAgdG8gbWFrZSBpdCBtb3JlIGNsZWFyCisgICAgICAgIHRoYXQgaXQgaXMgaW4gcmVz
cG9uc2UgdG8gYSBjaGFuZ2UsIG5vdCBwZXJmb3JtaW5nIHRoZSBjaGFuZ2UgaXRzZWxmLAorICAg
ICAgICBhbmQgYWRkIGEgbmV3IGB1cGRhdGVTdGF0ZWAsIHdoaWNoIGFsc28gbWVyZ2VzIHRoZSBj
aGFuZ2VzIGludG8gbV9zdGF0ZS4KKyAgICAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBp
cyB0aGUgb25seSBjbGllbnQgb2YgYHVwZGF0ZVN0YXRlYCBhdCB0aGUgbW9tZW50LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkaWRVcGRhdGVTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICBSZW5hbWUgdXBkYXRlU3RhdGUtPmRpZFVwZGF0ZVN0
YXRlLCBidXQgbGVhdmUgaXQgY2FsbGluZyB1cGRhdGVTdGF0ZSgpCisgICAgICAgIG9uIHRoZSBj
aGlsZHJlbiBhcyBleHBsYWluZWQgYWJvdmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIE1vdmUgIm1lcmdlIHRoaXMgc2V0IG9mIHN0
YXRlIGNoYW5nZXMiIHBhcnQgb2YgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxh
dGUKKyAgICAgICAgdG8gYSBtZXRob2Qgb24gR3JhcGhpY3NDb250ZXh0U3RhdGUgaXRzZWxmIChy
ZXNvbHZpbmcgdGhlIEZJWE1FIGFuZCBhbHNvCisgICAgICAgIHNlcGFyYXRpbmcgdGhlIHBhcnRz
IHRoYXQgYXJlIHNwZWNpZmljIHRvIGFjY3VtdWxhdGluZyBkZWx0YXMgZnJvbSB0aGUKKyAgICAg
ICAgZ2VuZXJpYyBwYXJ0cyBmb3IgbWVyZ2luZyBjaGFuZ2VzKS4KKworICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0ZSk6CisgICAgICAgIEFkZCB1cGRhdGVT
dGF0ZSgpLCB3aGljaCBtZXJnZXMgdGhlIGNoYW5nZXMgdG8gdGhlIEdyYXBoaWNzQ29udGV4dFN0
YXRlCisgICAgICAgIGFuZCB0aGVuIHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMgZGlkVXBkYXRlU3Rh
dGUoKSB0byBwcm9wYWdhdGUgdGhlbSB0bworICAgICAgICB0aGUgcGxhdGZvcm0gY29udGV4dCAo
b3Igd2hhdGV2ZXIgZWFjaCBpbXBsZW1lbnRhdGlvbiB3YW50cyB0byBkbykuCisKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
ZXRGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0
cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkQW50aWFsaWFz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9u
dHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRE
cmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFVzZURhcmtBcHBlYXJhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENh
aXJvOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6dXBkYXRlU3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6dXBkYXRlU3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHREaXJlY3QyRDo6ZGlkVXBk
YXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OnVw
ZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lIHVwZGF0ZVN0YXRlLT5kaWRVcGRh
dGVTdGF0ZS4KKwogMjAyMS0wOS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFRoZSBDU1MgRm9udHMgc3BlYyBoYXMgZGVsZXRlZCBDU1NSdWxl
LkZPTlRfUEFMRVRURV9WQUxVRVNfUlVMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCBjMGNlNzJjNWZmYzEzM2EyODNjYjg4Y2ZlNjhkNzc1YzcyYzJkNWMwLi5jMmQ5ODQ4NjFiMTI5
NDJmMGQ5OTU3Y2Q3ZGE1ZGJmMmRjZGQ5OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNw
cApAQCAtNDAxLDggKzQwMSwxMSBAQCBib29sIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnN1
cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpbWFyeUNvbnRleHQu
c3VwcG9ydHNJbnRlcm5hbExpbmtzKCk7CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dDo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dDo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykK
IHsKKyAgICAvLyBUaGlzIGNhbGxzIHVwZGF0ZVN0YXRlKCkgaW5zdGVhZCBvZiBkaWRVcGRhdGVT
dGF0ZSgpIHNvIHRoYXQgY2hhbmdlcworICAgIC8vIGFyZSBhbHNvIGFwcGxpZWQgdG8gZWFjaCBj
b250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3RhdGUsIHNvIHRoYXQgY29kZQorICAgIC8vIGludGVy
bmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0aGF0IHJlYWRzIGZyb20gdGhlIHN0YXRlIGdldHMg
dGhlIHJpZ2h0IHZhbHVlcy4KICAgICBtX3ByaW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRl
LCBmbGFncyk7CiAgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFn
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMmRlZDUzNmRkMTM2MzllMTEzNzcy
YmI4N2M4ZGY4MWU3NGNlZmQxMC4uMWRlMzRiNzlkNDAwMjY0ZjM1NjM2NmVhZmYzZTJhMjkzY2Q4
YjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAg
ICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CiAKICNpZiBPUyhXSU5ET1dTKSAmJiAhVVNFKENBSVJP
KQogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogZGVwcmVjYXRlZFByaXZhdGVD
b250ZXh0KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5NGUxYTBmNzliNGZlM2ZhMTUyMWU5
ZWQ1MjI3OWQ0YmUwMDc4MmFmLi42MTMzZjBkM2I2ODczN2E2ZDBhN2FhZTU5MjI0NmNmM2IxNzVk
NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKQEAgLTkyLDYgKzkyLDczIEBAIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7CiBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gZGVmYXVsdDsKIEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYp
ID0gZGVmYXVsdDsKIAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlIH07CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkgeworICAg
ICAgICBzdHJva2VDb2xvciA9IHN0YXRlLnN0cm9rZUNvbG9yOworICAgICAgICBzdHJva2VHcmFk
aWVudCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50OworICAgICAgICBzdHJva2VQYXR0ZXJuID0gc3Rh
dGUuc3Ryb2tlUGF0dGVybjsKKyAgICB9CisKKyAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
IH07CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZpbGxGbGFncykpIHsKKyAgICAgICAgZmls
bENvbG9yID0gc3RhdGUuZmlsbENvbG9yOworICAgICAgICBmaWxsR3JhZGllbnQgPSBzdGF0ZS5m
aWxsR3JhZGllbnQ7CisgICAgICAgIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm47Cisg
ICAgfQorCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFk
b3dDaGFuZ2UpKSB7CisgICAgICAgIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsK
KyAgICAgICAgc2hhZG93Qmx1ciA9IHN0YXRlLnNoYWRvd0JsdXI7CisgICAgICAgIHNoYWRvd0Nv
bG9yID0gc3RhdGUuc2hhZG93Q29sb3I7CisgICAgICAgIHNoYWRvd1JhZGl1c01vZGUgPSBzdGF0
ZS5zaGFkb3dSYWRpdXNNb2RlOworICAgIH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKKyAgICAgICAgc3Ryb2tl
VGhpY2tuZXNzID0gc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOworCisgICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAg
ICB0ZXh0RHJhd2luZ01vZGUgPSBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7CisKKyAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKKyAg
ICAgICAgc3Ryb2tlU3R5bGUgPSBzdGF0ZS5zdHJva2VTdHlsZTsKKworICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICBm
aWxsUnVsZSA9IHN0YXRlLmZpbGxSdWxlOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCisgICAgICAgIGFscGhhID0gc3RhdGUuYWxw
aGE7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2Rl
Q2hhbmdlIH0pKSB7CisgICAgICAgIGNvbXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7CisgICAgICAgIGJsZW5kTW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKKyAgICB9CisK
KyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlh
bGlhc0NoYW5nZSkpCisgICAgICAgIHNob3VsZEFudGlhbGlhcyA9IHN0YXRlLnNob3VsZEFudGlh
bGlhczsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU21vb3RoRm9udHNDaGFuZ2UpKQorICAgICAgICBzaG91bGRTbW9vdGhGb250cyA9IHN0YXRl
LnNob3VsZFNtb290aEZvbnRzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQorICAgICAgICBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKKyAgICAgICAgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKworICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQor
ICAgICAgICBkcmF3THVtaW5hbmNlTWFzayA9IHN0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOworCisg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9
IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UpKQorICAgICAgICB1c2VEYXJrQXBwZWFyYW5jZSA9IHN0
YXRlLnVzZURhcmtBcHBlYXJhbmNlOworI2VuZGlmCit9CisKIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJv
bVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKQEAgLTEz
Nyw3MiArMjA0LDE5IEBAIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsK
LSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBtb3ZlIHRvIEdyYXBoaWNzQ29udGV4dFN0
YXRlLgorICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBmbGFncyk7CisKICAgICBhdXRv
IHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNB
bnkoc3Ryb2tlRmxhZ3MpKSB7Ci0gICAgICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBzdGF0ZS5z
dHJva2VDb2xvcjsKLSAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9r
ZUdyYWRpZW50OwotICAgICAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VQ
YXR0ZXJuOworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCiAgICAgICAg
IG1fY2hhbmdlRmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKLSAgICB9CiAKICAgICBhdXRvIGZp
bGxGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZpbGxGbGFn
cykpIHsKLSAgICAgICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7Ci0gICAg
ICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdyYWRpZW50OwotICAgICAgICBt
X3N0YXRlLmZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm47CisgICAgaWYgKGZsYWdzLmNv
bnRhaW5zQW55KGZpbGxGbGFncykpCiAgICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGZpbGxG
bGFncyk7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gc3Rh
dGUuc2hhZG93T2Zmc2V0OwotICAgICAgICBtX3N0YXRlLnNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFk
b3dCbHVyOwotICAgICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gc3RhdGUuc2hhZG93Q29sb3I7
Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9IHN0YXRlLnNoYWRvd1JhZGl1c01v
ZGU7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVz
cyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0
ZS50ZXh0RHJhd2luZ01vZGUgPSBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAg
ICAgICAgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0YXRlLnN0cm9rZVN0eWxlOwotCi0gICAgaWYg
KGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0g
ICAgICAgIG1fc3RhdGUuZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBt
X3N0YXRlLmFscGhhID0gc3RhdGUuYWxwaGE7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnko
eyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIG1fc3RhdGUuY29t
cG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgbV9zdGF0
ZS5ibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAg
ICAgICBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3Ro
Rm9udHNDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gc3RhdGUu
c2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIG1f
c3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIAot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5j
ZU1hc2tDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUu
ZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBtX3N0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OwotCi0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkK
LSAgICAgICAgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSA9IHN0YXRlLnVzZURhcmtBcHBlYXJh
bmNlOwotI2VuZGlmCisgICAgYXV0byBjb21wb3NpdGVPcGVyYXRvckZsYWdzID0geyBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH07CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGNvbXBv
c2l0ZU9wZXJhdG9yRmxhZ3MpKQorICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShjb21wb3Np
dGVPcGVyYXRvckZsYWdzKTsKIAogICAgIG1fY2hhbmdlRmxhZ3MuYWRkKGZsYWdzKTsKIH0KQEAg
LTM3NSw2ICszODksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgICAg
ICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0
YXRlLCBmbGFncyk7CisgICAgZGlkVXBkYXRlU3RhdGUoc3RhdGUsIGZsYWdzKTsKK30KKwogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQog
ewogICAgIHNhdmUoKTsKQEAgLTM5Nyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29s
b3IgPSBjb2xvcjsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBt
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBudWxscHRyOwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSk7CisgICAgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNNb2RlIHJh
ZGl1c01vZGUpCkBAIC00MDYsNyArNDI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3IKICAg
ICBtX3N0YXRlLnNoYWRvd0JsdXIgPSBibHVyOwogICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBj
b2xvcjsKICAgICBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSByYWRpdXNNb2RlOwotICAgIHVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwor
ICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dD
aGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtNDE1
LDcgKzQzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCiAgICAgbV9z
dGF0ZS5zaGFkb3dCbHVyID0gMDsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gQ29sb3IoKTsK
ICAgICBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0
OwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dD
aGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdApAQCAtNDMy
LDcgKzQ1Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgIG1fc3RhdGUuZmlsbENvbG9yID0gY29sb3I7CiAgICAgbV9zdGF0ZS5m
aWxsR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRy
OwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQpAQCAtNDQwLDcgKzQ2MCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRl
cm4pCiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsKICAgICBtX3N0YXRlLnN0cm9rZUdy
YWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKHBh
dHRlcm4pOwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VQYXR0ZXJuQ2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQpAQCAtNDQ4LDcg
KzQ2OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVy
bj4mJiBwYXR0ZXJuKQogICAgIG1fc3RhdGUuZmlsbENvbG9yID0geyB9OwogICAgIG1fc3RhdGUu
ZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92
ZShwYXR0ZXJuKTsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKQEAgLTQ1Nyw3
ICs0NzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdy
YWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcgogICAgIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwogICAgIG1fc3RhdGUu
c3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4m
JiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSkKQEAgLTQ2Niw3ICs0ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdy
YWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbgogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGTW92ZShncmFkaWVudCk7CiAgICAgbV9zdGF0ZS5maWxs
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwogICAg
IG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRyOwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpOworICAgIGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2Up
OwogICAgIC8vIEZJWE1FOiBhbHNvIGZpbGwgcGF0dGVybj8KIH0KIApAQCAtNjkzLDcgKzcxMyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uCiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsKICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5k
TW9kZTsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBw
MSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBwZW5TdHls
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggODk0NmViMjA4NDUxYzhiYmI5NDBhYjQxNTA3OWVhODE2ZTliNTlhZS4uN2Fi
YTFmYTc2ZWZlZGMzMDYwOTAxMzEwNTE4YTkyN2QzMGI0OWQ2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE2MCw2ICsx
NjAsOCBAQCBzdGQ6Om9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1h
cmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImCiAgICAgcmV0dXJuIHt7ICptb2RlLCAqc2hv
dWxkVXNlRGFya0FwcGVhcmFuY2UgfX07CiB9CiAKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZTsKKwogc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGlj
c0NvbnRleHRTdGF0ZSgpOwpAQCAtMTk3LDYgKzE5OSw4IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSB7CiAgICAgfTsKICAgICB1c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0
PENoYW5nZT47CiAKKyAgICB2b2lkIG1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKwogICAgIFJl
ZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQ7CiAgICAgUmVmUHRyPFBhdHRlcm4+IHN0cm9r
ZVBhdHRlcm47CiAgICAgCkBAIC0yODMsMTAgKzI4NywxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBD
b250ZXh0IFN0YXRlCiAKLSAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25l
c3MpIHsgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSB0aGlja25lc3M7IHVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpOyB9Cisg
ICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKSB7IG1fc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKTsgfQogICAgIGZsb2F0IHN0cm9r
ZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CiAK
LSAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc3Ry
b2tlU3R5bGUgPSBzdHlsZTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVN0eWxlQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tl
U3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0eWxlOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpOyB9CiAg
ICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9r
ZVN0eWxlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0
IENvbG9yJik7CkBAIC0yOTgsNyArMzAyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mID0geyB9KTsKICAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldEZpbGxS
dWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVsZTsgdXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKTsg
fQorICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxs
UnVsZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEZpbGxDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtMzEwLDM0ICszMTQsMzQgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7CiAgICAgR3JhZGllbnQqIGZpbGxHcmFkaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CiAKLSAgICB2
b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpIHsgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hh
bmdlKTsgfQogICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CiAKLSAgICB2b2lkIHNldFNob3Vs
ZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNob3VsZEFudGlhbGlh
cyA9IHNob3VsZEFudGlhbGlhczsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSk7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlh
bGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9IHNo
b3VsZEFudGlhbGlhczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZEFudGlhbGlhcygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzOyB9CiAKLSAgICB2b2lkIHNl
dFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgbV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250cyA9IHNob3VsZFNtb290aEZvbnRzOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpOyB9CisgICAgdm9p
ZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUu
c2hvdWxkU21vb3RoRm9udHMgPSBzaG91bGRTbW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQog
ICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3Vs
ZFNtb290aEZvbnRzOyB9CiAKICAgICAvLyBOb3JtYWxseSBDRyBlbmFibGVzIHN1YnBpeGVsLXF1
YW50aXphdGlvbiBiZWNhdXNlIGl0IGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBvZiBhbGlnbmlu
ZyBnbHlwaHMuCiAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBoYXZlIHRvIGRpc2FibGUgdG8gdG8g
ZW5zdXJlIGEgaGlnaC1xdWFsaXR5IG91dHB1dCBvZiB0aGUgZ2x5cGhzLgotICAgIHZvaWQgc2V0
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKSB7IG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KSB7IG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHM7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsgfQorICAgIHZvaWQg
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5
KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5Q2hhbmdlKTsgfQogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHk7IH0KIAotICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBo
YSA9IGFscGhhOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxw
aGFDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRlLmFs
cGhhID0gYWxwaGE7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpBbHBoYUNoYW5nZSk7IH0KICAgICBmbG9hdCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuYWxwaGE7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsgfQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGVPcGVy
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmJsZW5kTW9kZTsgfQogCi0gICAgdm9pZCBz
ZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IG1fc3RhdGUuZHJh
d0x1bWluYW5jZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFzazsgdXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKTsgfQorICAgIHZv
aWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRl
LmRyYXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0K
ICAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3
THVtaW5hbmNlTWFzazsgfQogCi0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdp
bmdNb2RlRmxhZ3MgbW9kZSkgeyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IHVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFu
Z2UpOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3Mg
bW9kZSkgeyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOyB9CiAg
ICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgU2hhZG93
UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwpAQCAtMzQ5LDEzICszNTMs
MTcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0IHsgcmV0dXJu
IGhhc1Zpc2libGVTaGFkb3coKSAmJiBtX3N0YXRlLnNoYWRvd0JsdXI7IH0KIAogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29s
IHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJr
QXBwZWFyYW5jZTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVz
ZURhcmtBcHBlYXJhbmNlQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2Uo
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0gdXNl
RGFya0FwcGVhcmFuY2U7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSk7IH0KICAgICBib29sIHVzZURhcmtBcHBlYXJh
bmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsgfQogI2VuZGlm
CiAKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
PSAwOworICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisKKyAgICAvLyBDYWxsZWQg
KmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNl
ZCB0byBwcm9wYWdhdGUgY2hhbmdlcworICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mg
c3RhdGUuCisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzYXZlKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCA3OTA2ZDM1NmU3
MDdmNjJlMjY5N2U5OThjMWNhMjc1YjY3MTNkZDRlLi40ZjZhNTY3NjkxYTNiMDc1MjUzNDNmZjUw
ODIyYjViNmRhNzQ2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRp
b25SZWFzb25zOjpJbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9v
bCBkZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50
SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGlu
Z0NvbnRlbnRmdWxQYWludDsgfQogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBm
aW5hbCB7IH0KKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsIHsgfQog
CiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVk
Q29udGV4dChib29sKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRl
eCBjNWI5NzQ5MmZhY2I2NTEzZjY0MjU2NmI4YzRmZWQxNDIzOTM4NmQwLi4xNjVjNmRiZmUyMDIy
MzE3MzkzZmU1NDY3YjkyMjAyNmI1MmFhODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dHJhbnNs
YXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgQ2Fpcm86OnRyYW5zbGF0ZSgqdGhpcywgeCwgeSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0
U3Ryb2tlVGhpY2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmgKaW5kZXggMWVjZjAwYTQ1MTA3NDAzNTg4ZmM3OTM0ZDIyZGYwOTRlOWQw
ZjJmMy4uNWQ0YWEwYjVhNzMyOTIxMTFmMjI0MjdkYzZjMGFiYjY1YzQzMGVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIEdyYXBoaWNzQ29udGV4dENhaXJv
KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyk7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKIAogICAg
IHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHNldExpbmVEYXNoKGNv
bnN0IERhc2hBcnJheSYsIGZsb2F0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBiNjU2
ZjEzNjgxNjI0N2E0NmFjZGNkYTU5OWJiNmQ0MWRkODA5M2E5Li5iNWY0ZTJhMWZjNDVjMGUxZTcw
ODFjYjViMzlhMGI4NDIzOWQ2ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xOTEsNyArMTkx
LDcgQEAgR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBj
Z0NvbnRleHQpCiAKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKGNnQ29udGV4dCk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBz
eW5jIHdpdGggb3VyIHN0YXRlLgotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIHsgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
IH0pOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIH0pOwogICAgIG1f
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0
eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwog
fQogCkBAIC0xMDc1LDcgKzEwNzUsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplTWFrZSh4T2Zmc2V0
LCB5T2Zmc2V0KSwgYmx1clJhZGl1cywgY2FjaGVkQ0dDb2xvcihjb2xvcikpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dENHOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBm
bGFncykKIHsKICAgICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmgKaW5kZXggZjk2NmUyNzlhYjg2ZjU4Y2ZkZGFhMTMxODMzOGQxNDBhNGZhY2I5NC4uZmM0
MGE5ZjYxZGRjOWMyMmI4NjVjZWFiMzg2MzY3NmVmODViNjFhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCkBA
IC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0ludGVybmFsTGlu
a3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmlu
YWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKIAogI2lmIE9T
KFdJTkRPV1MpCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNhdGVk
UHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBh
MWJlM2NkYjkzYWI0MGJkY2ViMGU5OWViOGJhZGEzNWJhNzc0NWNmLi4yYWRiNGVhNmM5YmQyYmZk
OGRhMGNkODE0ZjMwZDIxNDNjNTllZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0xODUs
NyArMTg1LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcihjb25z
dCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmEKICAgICAgICAgbmV3U3RhdGUuZmls
bEdyYWRpZW50ID0gbmV3R3JhZGllbnQ7CiAgICAgaWYgKG5ld1BhdHRlcm4pCiAgICAgICAgIG5l
d1N0YXRlLmZpbGxQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVyLnVwZGF0ZVN0YXRl
KG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UgfSk7Cisg
ICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbENvbG9yQ2hhbmdlIH0pOwogICAgIG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xv
ciA9IG5ld0NvbG9yOwogfQogCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQq
IG5ld0cKICAgICAgICAgbmV3U3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBuZXdHcmFkaWVudDsKICAg
ICBpZiAobmV3UGF0dGVybikKICAgICAgICAgbmV3U3RhdGUuc3Ryb2tlUGF0dGVybiA9IG5ld1Bh
dHRlcm47Ci0gICAgbV9vd25lci51cGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UgfSk7CisgICAgbV9vd25lci5kaWRVcGRhdGVTdGF0
ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UgfSk7
CiAgICAgbV9jdXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKIH0KIApA
QCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvCiAgICAgfQogICAgIGlm
IChzdGF0ZUNoYW5nZUZsYWdzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fb3du
ZXIudXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIG1fb3duZXIu
ZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOwogCiAgICAgbV9jdXJy
ZW50U3RhdGUuc2hhZG93Lm9mZnNldCA9IHNoYWRvd09mZnNldDsKICAgICBtX2N1cnJlbnRTdGF0
ZS5zaGFkb3cuYmx1ciA9IHNoYWRvd0JsdXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKaW5kZXggMWU0NzIxN2UwNzRjZTU4N2JjYWZmY2ZlYWI0YzMxMDBiZGExNWNh
NC4uNjUxM2I1N2RhYzgwY2Q1NzBjZjgzYzkzZGJkNDk1YjBmOTU3OWI4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQg
UmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKICAgICBjdXJyZW50
U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1fc3RhdGU7CiB9CiAKLXZv
aWQgUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIFJl
Y29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGN1
cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLmFjY3VtdWxhdGUoc3RhdGUsIGZsYWdzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMxYTUyMjg5MGI3ZWU0ZTY1
MGY1YmE1YmIxYjdlNTI0NjJhZjE2MTAuLjk4ZDE3ZWY0Mzc2YTEzOWZjMzI1NTZkZDUwODJlYWNm
YTFjNTdhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCwg
Ym9vbCwgU3Ryb2tlU3R5bGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAotICAg
IHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBm
aW5hbDsKICAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hP
ZmZzZXQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA3MjViNmY1MjgyMDhhMTQwM2I2NjExOTMwM2U1NTAy
ZTM3MzZkMzZkLi45OTBjNzFmYTQ3NDMwZjU5M2UyYzI0YzBiNzlkNzk1OGM0OGY3ZmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcApAQCAtODIsNyArODIsNyBAQCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJh
dGlvblJlY29yZGVyKFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCiAgICAgbV9zdGF0
ZVN0YWNrLmFwcGVuZCh7IHsgfSwgeyB9LCBGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpIH0pOwog
fQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MgZmxhZ3MpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiB7CiAgICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkgewogICAgICAgICBzdHJ1Y3QgU3Ryb2tl
VGhpY2tuZXNzQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
ZmxvYXQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAppbmRleCA3N2FlNTBkZjA0OTJkM2FiZjg4ZmRmN2M1YzMzOTk3Mjc3YmJjNWJh
Li5hYTk0ZGU4ODYyNzI1NWJkNjUwNDcwNzJmNWNhMmI5ZGZkM2NjODM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC00MSw3
ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBw
bGF0Zm9ybUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAKLSAg
ICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9h
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCBjOTcxYTFk
NjkwZDk0NWIzMTA5YjRlMGQxYjE1ZmE4MDExNTAzMjNiLi5kNDgwZGI3M2Q0MzIyNTVlOTJlM2Qw
Yzc5OWUxZDk0ZGQ3MjM1NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAg
LTY0Nyw3ICs2NDcsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dERpcmVjdDJEOjpzdXBwb3J0c1Ry
YW5zcGFyZW5jeUxheWVycygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dERpcmVjdDJEOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9p
ZCBHcmFwaGljc0NvbnRleHREaXJlY3QyRDo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyBmbGFncykKIHsKICAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
VGhpY2tuZXNzQ2hhbmdlKQogICAgICAgICBEaXJlY3QyRDo6U3RhdGU6OnNldFN0cm9rZVRoaWNr
bmVzcyhtX3BsYXRmb3JtQ29udGV4dCwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYzgzODdkZDFkMzE3
ZTc0MTE0NjI1ZDM2OTI5ODRlM2RkMDRmYzNhLi5hYTZmNTQwYTkxNTI4MDJkZGE0ZDUwZGU3YmJh
ZjIwNDk2OGMzNzliIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDktMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQm9yZGVycyBhcmUgbm90IGRyYXduIHdoZW4g
dXNpbmcgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwOTc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MzY1NzMzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
QWRkIGEgdGVzdCBmb3IgbGluZSBkcmF3aW5nLgorCiAyMDIxLTA5LTI3ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI4MzEwMiwgcjI4MzEwMyBhbmQgcjI4MzEwNC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHND
Ry5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmluZGV4IGUxYjUwYmRlNzU4OTNmNDFlNjYwMDM1NWZj
YmVlODQ0YmYxNWIxZGIuLmUxNzgyMDA1ZWNiMmJlYzE1ZmFiYzNiNzdmMGEwZTE2YjcwNGY5YjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAt
NDUsMTEgKzQ1LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBEaXNwbGF5TGlzdDsKIGNvbnN0ZXhwciBD
R0Zsb2F0IGNvbnRleHRXaWR0aCA9IDE7CiBjb25zdGV4cHIgQ0dGbG9hdCBjb250ZXh0SGVpZ2h0
ID0gMTsKIAotVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJhc2ljQmlmdXJj
YXRlZENvbnRleHQpCitURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWMp
CiB7CiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiAgICAgYXV0byBwcmltYXJ5Q0dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdp
ZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZExhc3QpKTsKLSAgICBhdXRvIHNlY29uZGFyeUNHQ29udGV4dCA9IGFkb3B0Q0YoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwg
OCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRDRyBw
cmltYXJ5Q29udGV4dChwcmltYXJ5Q0dDb250ZXh0LmdldCgpKTsKIApAQCAtODcsNyArODYsNyBA
QCBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWNCaWZ1cmNhdGVkQ29u
dGV4dCkKICAgICBFWFBFQ1RfVFJVRShzYXdGaWxsUmVjdCk7CiB9CiAKLVRFU1QoQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0SW5CaWZ1cmNhdGVkQ29udGV4dCkKK1RFU1QoQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0KQogewogICAgIEluTWVtb3J5RGlzcGxh
eUxpc3QgcHJpbWFyeURpc3BsYXlMaXN0OwogICAgIFJlY29yZGVyIHByaW1hcnlDb250ZXh0KHBy
aW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0KSwgeyB9KTsKQEAgLTEyOSw2ICsxMjgsMzIgQEAgVEVTVChCaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0VGVzdHMsIFRleHRJbkJpZnVyY2F0ZWRDb250ZXh0KQogICAgIHJ1blRlc3Qo
c2Vjb25kYXJ5RGlzcGxheUxpc3QpOwogfQogCitURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHRUZXN0cywgQm9yZGVycykKK3sKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKTsKKyAgICBhdXRvIHByaW1hcnlDR0NvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQs
IDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworCisgICAgR3JhcGhpY3NDb250ZXh0Q0cg
cHJpbWFyeUNvbnRleHQocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7CisKKyAgICBJbk1lbW9yeURp
c3BsYXlMaXN0IGRpc3BsYXlMaXN0OworICAgIFJlY29yZGVyIHNlY29uZGFyeUNvbnRleHQoZGlz
cGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdo
dCksIHsgfSk7CisKKyAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmltYXJ5Q29u
dGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CisKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IoQ29sb3I6
OnJlZCk7CisgICAgY3R4LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBjdHguc2V0
U3Ryb2tlVGhpY2tuZXNzKDEwKTsKKyAgICBjdHguZHJhd0xpbmUoeyAwLCAwIH0sIHsgY29udGV4
dFdpZHRoLCAwIH0pOworCisgICAgLy8gVGhlIHByaW1hcnkgY29udGV4dCBzaG91bGQgaGF2ZSBy
ZWQgcGl4ZWxzLgorICAgIENHQ29udGV4dEZsdXNoKHByaW1hcnlDR0NvbnRleHQuZ2V0KCkpOwor
ICAgIHVpbnQ4X3QqIHByaW1hcnlEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KENHQml0bWFw
Q29udGV4dEdldERhdGEocHJpbWFyeUNHQ29udGV4dC5nZXQoKSkpOworICAgIEVYUEVDVF9FUShw
cmltYXJ5RGF0YVswXSwgMjU1KTsKKyAgICBFWFBFQ1RfRVEocHJpbWFyeURhdGFbMV0sIDApOwor
ICAgIEVYUEVDVF9FUShwcmltYXJ5RGF0YVsyXSwgMCk7CisgICAgRVhQRUNUX0VRKHByaW1hcnlE
YXRhWzNdLCAyNTUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRp
ZiAvLyBVU0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439642</attachid>
            <date>2021-09-29 12:21:39 -0700</date>
            <delta_ts>2021-10-05 15:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230976-20210929122138.patch</filename>
            <type>text/plain</type>
            <size>41756</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI5YzI3NmMzNmY2OTJi
MWI1ZTc0OWU0ZmRmMzhjYmYwMzMwMWZmNy4uMjg0MDk1MmVkMWZjNTQ2NTRhN2Y5ZDc4ODRiYmRj
YmExNDE0NzBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTA5LTI5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEJvcmRlcnMgYXJl
IG5vdCBkcmF3biB3aGVuIHVzaW5nIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDk3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM2NTczMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTmV3IEFQSSBUZXN0OiBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
VGVzdHMuQm9yZGVycworCisgICAgICAgIFRoZXJlIGlzIGEgbWlub3IgcHJvYmxlbSB3aXRoIHRo
ZSBjaGlsZHJlbiBvZiBiaWZ1cmNhdGVkIGdyYXBoaWNzIGNvbnRleHRzLAorICAgICAgICB3aGlj
aCBpcyB0aGF0IHRoZXkgZWFjaCBjdXJyZW50bHkgbWFpbnRhaW4gdGhlaXIgb3duIEdyYXBoaWNz
Q29udGV4dFN0YXRlLAorICAgICAgICBhbmQgc29tZSBHcmFwaGljc0NvbnRleHQgaW1wbGVtZW50
YXRpb25zIHJlYWQgZnJvbSB0aGF0IHN0YXRlIGludGVybmFsbHkKKyAgICAgICAgdG8gZG8gd29y
ayAoZS5nLiB0aGUgQ0cgY29udGV4dCByZWFkcyB0aGUgU3Ryb2tlU3R5bGUgaW4gZHJhd0xpbmUo
KSkuCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBib3RoIGNoaWxkcmVuIG5lZWQgdG8gbWlycm9y
IHRoZSBzdGF0ZSBvZiB0aGUgdG9wbGV2ZWwuCisKKyAgICAgICAgWW91IGNvdWxkIGltYWdpbmUg
bWVyZ2luZyBjaGFuZ2VzIHRvIG1fc3RhdGUgaW4gZWFjaCBjb250ZXh0J3MgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgdXBkYXRlU3RhdGUoKSwgYnV0IEEpIHVwZGF0ZVN0YXRlIGlzIGNhbGxl
ZCBpbiAqcmVzcG9uc2UqIHRvIHRoZSBsb2NhbAorICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZSBjaGFuZ2luZyAoc28gdGhpcyB3b3VsZCBiZSBhIGJpdCBjaXJjdWxhciksIGFuZAorICAgICAg
ICBCKSB0aGlzIHdvdWxkIHJlcXVpcmUgZWFjaCBHcmFwaGljc0NvbnRleHQgdG8gZG8gdGhpcyB3
b3JrLgorCisgICAgICAgIEluc3RlYWQsIHJlbmFtZSBgdXBkYXRlU3RhdGVgIHRvIGBkaWRVcGRh
dGVTdGF0ZWAgdG8gbWFrZSBpdCBtb3JlIGNsZWFyCisgICAgICAgIHRoYXQgaXQgaXMgaW4gcmVz
cG9uc2UgdG8gYSBjaGFuZ2UsIG5vdCBwZXJmb3JtaW5nIHRoZSBjaGFuZ2UgaXRzZWxmLAorICAg
ICAgICBhbmQgYWRkIGEgbmV3IGB1cGRhdGVTdGF0ZWAsIHdoaWNoIGFsc28gbWVyZ2VzIHRoZSBj
aGFuZ2VzIGludG8gbV9zdGF0ZS4KKyAgICAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBp
cyB0aGUgb25seSBjbGllbnQgb2YgYHVwZGF0ZVN0YXRlYCBhdCB0aGUgbW9tZW50LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkaWRVcGRhdGVTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICBSZW5hbWUgdXBkYXRlU3RhdGUtPmRpZFVwZGF0ZVN0
YXRlLCBidXQgbGVhdmUgaXQgY2FsbGluZyB1cGRhdGVTdGF0ZSgpCisgICAgICAgIG9uIHRoZSBj
aGlsZHJlbiBhcyBleHBsYWluZWQgYWJvdmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIE1vdmUgIm1lcmdlIHRoaXMgc2V0IG9mIHN0
YXRlIGNoYW5nZXMiIHBhcnQgb2YgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxh
dGUKKyAgICAgICAgdG8gYSBtZXRob2Qgb24gR3JhcGhpY3NDb250ZXh0U3RhdGUgaXRzZWxmIChy
ZXNvbHZpbmcgdGhlIEZJWE1FIGFuZCBhbHNvCisgICAgICAgIHNlcGFyYXRpbmcgdGhlIHBhcnRz
IHRoYXQgYXJlIHNwZWNpZmljIHRvIGFjY3VtdWxhdGluZyBkZWx0YXMgZnJvbSB0aGUKKyAgICAg
ICAgZ2VuZXJpYyBwYXJ0cyBmb3IgbWVyZ2luZyBjaGFuZ2VzKS4KKworICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0ZSk6CisgICAgICAgIEFkZCB1cGRhdGVT
dGF0ZSgpLCB3aGljaCBtZXJnZXMgdGhlIGNoYW5nZXMgdG8gdGhlIEdyYXBoaWNzQ29udGV4dFN0
YXRlCisgICAgICAgIGFuZCB0aGVuIHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMgZGlkVXBkYXRlU3Rh
dGUoKSB0byBwcm9wYWdhdGUgdGhlbSB0bworICAgICAgICB0aGUgcGxhdGZvcm0gY29udGV4dCAo
b3Igd2hhdGV2ZXIgZWFjaCBpbXBsZW1lbnRhdGlvbiB3YW50cyB0byBkbykuCisKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
ZXRGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0
cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkQW50aWFsaWFz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9u
dHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRE
cmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFVzZURhcmtBcHBlYXJhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENh
aXJvOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6dXBkYXRlU3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6dXBkYXRlU3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHREaXJlY3QyRDo6ZGlkVXBk
YXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OnVw
ZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lIHVwZGF0ZVN0YXRlLT5kaWRVcGRh
dGVTdGF0ZS4KKwogMjAyMS0wOS0yOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkgZmFpbHMg
Zm9yIFdlYkdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGMwY2U3MmM1ZmZjMTMz
YTI4M2NiODhjZmU2OGQ3NzVjNzJjMmQ1YzAuLmMyZDk4NDg2MWIxMjk0MmYwZDk5NTdjZDdkYTVk
YmYyZGNkZDk5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC00MDEsOCArNDAx
LDExIEBAIGJvb2wgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6c3VwcG9ydHNJbnRlcm5hbExp
bmtzKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmltYXJ5Q29udGV4dC5zdXBwb3J0c0ludGVybmFs
TGlua3MoKTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
OjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogeworICAgIC8vIFRoaXMg
Y2FsbHMgdXBkYXRlU3RhdGUoKSBpbnN0ZWFkIG9mIGRpZFVwZGF0ZVN0YXRlKCkgc28gdGhhdCBj
aGFuZ2VzCisgICAgLy8gYXJlIGFsc28gYXBwbGllZCB0byBlYWNoIGNvbnRleHQncyBHcmFwaGlj
c0NvbnRleHRTdGF0ZSwgc28gdGhhdCBjb2RlCisgICAgLy8gaW50ZXJuYWwgdG8gdGhlIGNoaWxk
IGNvbnRleHRzIHRoYXQgcmVhZHMgZnJvbSB0aGUgc3RhdGUgZ2V0cyB0aGUgcmlnaHQgdmFsdWVz
LgogICAgIG1fcHJpbWFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUsIGZsYWdzKTsKICAgICBt
X3NlY29uZGFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUsIGZsYWdzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAppbmRleCAyZGVkNTM2ZGQxMzYzOWUxMTM3NzJiYjg3YzhkZjgxZTc0Y2Vm
ZDEwLi4xZGUzNGI3OWQ0MDAyNjRmMzU2MzY2ZWFmZjNlMmEyOTNjZDhiN2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
dXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
KSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNhdGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IDk0ZTFhMGY3OWI0ZmUzZmExNTIxZTllZDUyMjc5ZDRiZTAwNzgy
YWYuLjYxMzNmMGQzYjY4NzM3YTZkMGE3YWFlNTkyMjQ2Y2YzYjE3NWQ2NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtOTIsNiArOTIsNzMgQEAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0gZGVmYXVsdDsKIEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJikgPSBkZWZhdWx0OwogR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwogCit2
b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBm
bGFncykKK3sKKyAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENo
YW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsKKyAgICBp
ZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKSB7CisgICAgICAgIHN0cm9rZUNvbG9y
ID0gc3RhdGUuc3Ryb2tlQ29sb3I7CisgICAgICAgIHN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ry
b2tlR3JhZGllbnQ7CisgICAgICAgIHN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VQYXR0ZXJu
OworICAgIH0KKworICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxh
Z3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkgeworICAgICAgICBmaWxsQ29sb3IgPSBzdGF0ZS5m
aWxsQ29sb3I7CisgICAgICAgIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxHcmFkaWVudDsKKyAg
ICAgICAgZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVybjsKKyAgICB9CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKKyAg
ICAgICAgc2hhZG93T2Zmc2V0ID0gc3RhdGUuc2hhZG93T2Zmc2V0OworICAgICAgICBzaGFkb3dC
bHVyID0gc3RhdGUuc2hhZG93Qmx1cjsKKyAgICAgICAgc2hhZG93Q29sb3IgPSBzdGF0ZS5zaGFk
b3dDb2xvcjsKKyAgICAgICAgc2hhZG93UmFkaXVzTW9kZSA9IHN0YXRlLnNoYWRvd1JhZGl1c01v
ZGU7CisgICAgfQorCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQorICAgICAgICBzdHJva2VUaGlja25lc3MgPSBzdGF0
ZS5zdHJva2VUaGlja25lc3M7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCisgICAgICAgIHRleHREcmF3aW5nTW9k
ZSA9IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQorICAgICAgICBzdHJva2VTdHls
ZSA9IHN0YXRlLnN0cm9rZVN0eWxlOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCisgICAgICAgIGZpbGxSdWxlID0gc3RhdGUu
ZmlsbFJ1bGU7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgYWxwaGEgPSBzdGF0ZS5hbHBoYTsKKworICAgIGlmIChm
bGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpIHsKKyAg
ICAgICAgY29tcG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKKyAgICAg
ICAgYmxlbmRNb2RlID0gc3RhdGUuYmxlbmRNb2RlOworICAgIH0KKworICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKKyAg
ICAgICAgc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFsaWFzOworCisgICAgaWYg
KGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0No
YW5nZSkpCisgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCisgICAgICAgIHNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKKworICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXNDaGFuZ2UpKQorICAgICAgICBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCisgICAgICAgIGRyYXdMdW1p
bmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7CisKKyAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFu
Z2UpKQorICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKKworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5j
ZUNoYW5nZSkpCisgICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFya0FwcGVh
cmFuY2U7CisjZW5kaWYKK30KKwogR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKSBjb25zdAogewogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwpAQCAtMTM3LDcyICsyMDQsMTkgQEAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewotICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgc2hvdWxkIG1vdmUgdG8gR3JhcGhpY3NDb250ZXh0U3RhdGUuCisgICAgbV9zdGF0
ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKKwogICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykp
IHsKLSAgICAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHN0YXRlLnN0cm9rZUNvbG9yOwotICAg
ICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQ7Ci0gICAg
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgaWYg
KGZsYWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkKICAgICAgICAgbV9jaGFuZ2VGbGFncy5y
ZW1vdmUoc3Ryb2tlRmxhZ3MpOwotICAgIH0KIAogICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFu
Z2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkgewotICAgICAgICBt
X3N0YXRlLmZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgbV9zdGF0ZS5maWxs
R3JhZGllbnQgPSBzdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAgICAgIG1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBzdGF0ZS5maWxsUGF0dGVybjsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZs
YWdzKSkKICAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKLSAgICB9Ci0K
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5n
ZSkpIHsKLSAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7
Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IHN0YXRlLnNoYWRvd0JsdXI7Ci0gICAgICAg
IG1fc3RhdGUuc2hhZG93Q29sb3IgPSBzdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICAgICAgbV9zdGF0
ZS5zaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnRleHREcmF3aW5nTW9k
ZSA9IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnN0
cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5m
aWxsUnVsZSA9IHN0YXRlLmZpbGxSdWxlOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuYWxwaGEgPSBz
dGF0ZS5hbHBoYTsKLQotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UgfSkpIHsKLSAgICAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwotICAgICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IHN0
YXRlLmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuc2hv
dWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFsaWFzOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0g
ICAgICAgIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0ZS5zaG91bGRTbW9vdGhGb250
czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5zaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMgPSBzdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0K
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0g
ICAgICAgIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFz
azsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0KLSNpZiBI
QVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UpKQotICAgICAgICBtX3N0YXRl
LnVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7Ci0jZW5kaWYKKyAg
ICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
b21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVD
aGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFn
cykpCisgICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3Mp
OwogCiAgICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOwogfQpAQCAtMzc1LDYgKzM4OSwxMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgICAgIG1fc3RhY2suY2xlYXIo
KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit7CisgICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKKyAg
ICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwgZmxhZ3MpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
ZWxsaXBzZUNvbG9yLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IpCiB7CiAgICAgc2F2ZSgpOwpA
QCAtMzk3LDcgKzQxNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwogICAg
IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuc3Ryb2tlUGF0
dGVybiA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVy
LCBjb25zdCBDb2xvciYgY29sb3IsIFNoYWRvd1JhZGl1c01vZGUgcmFkaXVzTW9kZSkKQEAgLTQw
Niw3ICs0MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvcgogICAgIG1fc3RhdGUuc2hhZG93
Qmx1ciA9IGJsdXI7CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IGNvbG9yOwogICAgIG1fc3Rh
dGUuc2hhZG93UmFkaXVzTW9kZSA9IHJhZGl1c01vZGU7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCkBAIC00MTUsNyArNDM1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRlLnNoYWRvd0JsdXIg
PSAwOwogICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBDb2xvcigpOwogICAgIG1fc3RhdGUuc2hh
ZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQ7Ci0gICAgdXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7
CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZzZXQs
IGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IpIGNvbnN0CkBAIC00MzIsNyArNDUyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAg
bV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51
bGxwdHI7CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNo
YW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQ
YXR0ZXJuPiYmIHBhdHRlcm4pCkBAIC00NDAsNyArNDYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKICAgICBtX3N0YXRl
LnN0cm9rZUNvbG9yID0geyB9OwogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRy
OwogICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUocGF0dGVybik7Ci0gICAgdXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VQYXR0ZXJuQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQ
YXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCkBAIC00NDgsNyArNDY4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiAg
ICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07CiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBu
dWxscHRyOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAg
IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNo
YW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxQYXR0ZXJuQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9r
ZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKQpAQCAtNDU3LDcgKzQ3Nyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGll
bnQsIGNvbnN0IEFmZmluZVRyCiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IFdURk1vdmUo
Z3JhZGllbnQpOwogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IHN0
cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKQpAQCAtNDY2LDcg
KzQ4Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRp
ZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuCiAgICAgbV9zdGF0ZS5maWxsR3JhZGll
bnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJh
bnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CiAgICAgbV9zdGF0ZS5maWxsUGF0
dGVybiA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7CiAgICAgLy8gRklYTUU6
IGFsc28gZmlsbCBwYXR0ZXJuPwogfQogCkBAIC02OTMsNyArNzEzLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24KIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRl
T3BlcmF0aW9uOwogICAgIG1fc3RhdGUuYmxlbmRNb2RlID0gYmxlbmRNb2RlOwotICAgIHVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQmIHAxLCBGbG9hdFBvaW50JiBw
MiwgZmxvYXQgc3Ryb2tlV2lkdGgsIFN0cm9rZVN0eWxlIHBlblN0eWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4OTQ2
ZWIyMDg0NTFjOGJiYjk0MGFiNDE1MDc5ZWE4MTZlOWI1OWFlLi43YWJhMWZhNzZlZmVkYzMwNjA5
MDEzMTA1MThhOTI3ZDMwYjQ5ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTYwLDYgKzE2MCw4IEBAIHN0ZDo6b3B0
aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpk
ZWNvZGUoRGVjb2RlciYKICAgICByZXR1cm4ge3sgKm1vZGUsICpzaG91bGRVc2VEYXJrQXBwZWFy
YW5jZSB9fTsKIH0KIAorc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOworCiBzdHJ1
Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7
CkBAIC0xOTcsNiArMTk5LDggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICB9
OwogICAgIHVzaW5nIFN0YXRlQ2hhbmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKIAorICAg
IHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworCiAgICAgUmVmUHRyPEdyYWRpZW50PiBz
dHJva2VHcmFkaWVudDsKICAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVybjsKICAgICAK
QEAgLTI4MywxMCArMjg3LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRleHQgU3RhdGUKIAot
ICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnN0
cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0KKyAgICB2b2lkIHNldFN0cm9r
ZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSB0
aGlja25lc3M7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VUaGlja25lc3NDaGFuZ2UpOyB9CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KIAotICAgIHZvaWQgc2V0U3Ry
b2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0eWxl
OyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVD
aGFuZ2UpOyB9CisgICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBt
X3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KICAgICBTdHJva2VTdHlsZSBz
dHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTI5
OCw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VH
cmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgPSB7IH0pOwog
ICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmls
bFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyB1cGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRG
aWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7
IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNo
YW5nZSk7IH0KICAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
ZmlsbFJ1bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0
IENvbG9yJik7CkBAIC0zMTAsMzQgKzMxNCwzNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mID0geyB9KTsKICAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IHVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSk7IH0KKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOyB9CiAgICAgYm9v
bCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wg
c2hvdWxkQW50aWFsaWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFs
aWFzOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50
aWFsaWFzQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxk
QW50aWFsaWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFs
aWFzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkU21vb3RoRm9u
dHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0g
c2hvdWxkU21vb3RoRm9udHM7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290
aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250
cyA9IHNob3VsZFNtb290aEZvbnRzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRT
bW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7IH0K
IAogICAgIC8vIE5vcm1hbGx5IENHIGVuYWJsZXMgc3VicGl4ZWwtcXVhbnRpemF0aW9uIGJlY2F1
c2UgaXQgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIGFsaWduaW5nIGdseXBocy4KICAgICAv
LyBJbiBzb21lIGNhc2VzIHdlIGhhdmUgdG8gZGlzYWJsZSB0byB0byBlbnN1cmUgYSBoaWdoLXF1
YWxpdHkgb3V0cHV0IG9mIHRoZSBnbHlwaHMuCi0gICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5z
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7
IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHNDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
czsgfQogCi0gICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IHF1YWxpdHkpIHsgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0g
cXVhbGl0eTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpIHsgbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5ID0gcXVhbGl0eTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpOyB9
CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQogCi0gICAg
dm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRlLmFscGhhID0gYWxwaGE7IHVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSk7IH0KKyAg
ICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuYWxwaGEgPSBhbHBoYTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKTsg
fQogICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hbHBoYTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKICAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yOyB9CiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZU9wZXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuYmxlbmRNb2RlOyB9CiAKLSAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VN
YXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9
IGRyYXdMdW1pbmFuY2VNYXNrOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXREcmF3THVtaW5h
bmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IG1fc3RhdGUuZHJhd0x1bWluYW5jZU1h
c2sgPSBkcmF3THVtaW5hbmNlTWFzazsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKTsgfQogICAgIGJvb2wgZHJhd0x1
bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9
CiAKLSAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2Rl
KSB7IG1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0gbW9kZTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSk7IH0KKyAgICB2b2lk
IHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKSB7IG1fc3RhdGUu
dGV4dERyYXdpbmdNb2RlID0gbW9kZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSk7IH0KICAgICBUZXh0RHJhd2luZ01v
ZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3
aW5nTW9kZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxv
YXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBTaGFkb3dSYWRpdXNNb2RlID0gU2hh
ZG93UmFkaXVzTW9kZTo6RGVmYXVsdCk7CkBAIC0zNDksMTMgKzM1MywxNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRv
dygpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQogCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQ
UE9SVCkKLSAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFu
Y2UpIHsgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSA9IHVzZURhcmtBcHBlYXJhbmNlOyB1cGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VD
aGFuZ2UpOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBl
YXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CiAjZW5kaWYKIAogICAgIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdm9pZCB1
cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKworICAgIC8vIENhbGxlZCAqYWZ0ZXIqIGFueSBjaGFu
Z2UgdG8gR3JhcGhpY3NDb250ZXh0U3RhdGU7IGdlbmVyYWxseSB1c2VkIHRvIHByb3BhZ2F0ZSBj
aGFuZ2VzCisgICAgLy8gdG8gdGhlIHBsYXRmb3JtIGNvbnRleHQncyBzdGF0ZS4KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNhdmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDc5MDZkMzU2ZTcwN2Y2MmUyNjk3ZTk5OGMx
Y2EyNzViNjcxM2RkNGUuLjRmNmE1Njc2OTFhM2IwNzUyNTM0M2ZmNTA4MjJiNWI2ZGE3NDZkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGludmFs
aWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bh
aW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFs
aWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXM7IH0KICAgICBib29sIGRldGVjdGluZ0NvbnRl
bnRmdWxQYWludCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFz
b25zID09IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6RGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50
OyB9CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsIHsgfQorICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWwgeyB9CiAKICNpZiBVU0UoQ0cpIHx8
IFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpIGZp
bmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGM1Yjk3NDkyZmFjYjY1
MTNmNjQyNTY2YjhjNGZlZDE0MjM5Mzg2ZDAuLjE2NWM2ZGJmZTIwMjIzMTczOTNmZTU0NjdiOTIy
MDI2YjUyYWE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI4NCw3ICsy
ODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUoZmxvYXQgeCwgZmxv
YXQgeSkKICAgICBDYWlybzo6dHJhbnNsYXRlKCp0aGlzLCB4LCB5KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRDYWlybzo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
ZmxhZ3MpCiB7CiAgICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRo
aWNrbmVzc0NoYW5nZSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3Mo
KnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApp
bmRleCAxZWNmMDBhNDUxMDc0MDM1ODhmYzc5MzRkMjJkZjA5NGU5ZDBmMmYzLi41ZDRhYTBiNWE3
MzI5MjExMWYyMjQyN2RjNmMwYWJiNjVjNDMwZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0
KCkgY29uc3QgZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4
dCgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAg
ICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCiAgICAgdm9pZCBzZXRMaW5lQ2Fw
KExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5Jiwg
ZmxvYXQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGI2NTZmMTM2ODE2MjQ3YTQ2YWNk
Y2RhNTk5YmI2ZDQxZGQ4MDkzYTkuLmI1ZjRlMmExZmM0NWMwZTFlNzA4MWNiNWIzOWEwYjg0MjM5
ZDY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBHcmFwaGljc0Nv
bnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0coQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKIAogICAg
IG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsK
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3Rh
dGUuCi0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UgfSk7CisgICAgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UgfSk7CiAgICAgbV9zdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5ID0gY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4dEdldElu
dGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKQEAgLTEwNzUsNyAr
MTA3NSw3IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgICAgIENHQ29udGV4dFNldFNo
YWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVy
UmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNvbG9yKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGF1
dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAppbmRleCBmOTY2
ZTI3OWFiODZmNThjZmRkYWExMzE4MzM4ZDE0MGE0ZmFjYjk0Li5mYzQwYTlmNjFkZGM5YzIyYjg2
NWNlYWIzODYzNjc2ZWY4NWI2MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0IGZpbmFs
OwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCiAjaWYgT1MoV0lORE9XUykKICAgICBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGRlcHJlY2F0ZWRQcml2YXRlQ29udGV4dCgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQu
Y3BwCmluZGV4IDYxMGE1NmFmYTlmNThjZDRlM2Y0MTljOTVjMDgyOTNhNmVhZmJlOGEuLjI1YWZj
YjQ3YTA1NGQyNTk4MzliOGQ1YWVjYmQ1NDg0YjZkMjg2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwg
R3JhZGllbnQqIG5ld0dyYQogICAgICAgICBuZXdTdGF0ZS5maWxsR3JhZGllbnQgPSBuZXdHcmFk
aWVudDsKICAgICBpZiAobmV3UGF0dGVybikKICAgICAgICAgbmV3U3RhdGUuZmlsbFBhdHRlcm4g
PSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIudXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSB9KTsKKyAgICBtX293bmVyLmRpZFVwZGF0
ZVN0YXRlKG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2Ug
fSk7CiAgICAgbV9jdXJyZW50U3RhdGUuZmlsbFN0eWxlLmNvbG9yID0gbmV3Q29sb3I7CiB9CiAK
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3RwogICAgICAgICBuZXdT
dGF0ZS5zdHJva2VHcmFkaWVudCA9IG5ld0dyYWRpZW50OwogICAgIGlmIChuZXdQYXR0ZXJuKQog
ICAgICAgICBuZXdTdGF0ZS5zdHJva2VQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVy
LnVwZGF0ZVN0YXRlKG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xv
ckNoYW5nZSB9KTsKKyAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0YXRlLCB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSB9KTsKICAgICBtX2N1cnJlbnRTdGF0
ZS5zdHJva2VTdHlsZS5jb2xvciA9IG5ld0NvbG9yOwogfQogCkBAIC0yNDAsNyArMjQwLDcgQEAg
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNo
YWRvd09mZnNldCwgZmxvYXQgc2hhZG8KICAgICB9CiAgICAgaWYgKHN0YXRlQ2hhbmdlRmxhZ3Mu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9vd25lci51cGRhdGVTdGF0ZShuZXdT
dGF0ZSwgc3RhdGVDaGFuZ2VGbGFncyk7CisgICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdT
dGF0ZSwgc3RhdGVDaGFuZ2VGbGFncyk7CiAKICAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zm
c2V0ID0gc2hhZG93T2Zmc2V0OwogICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyID0gc2hh
ZG93Qmx1cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAx
ZTQ3MjE3ZTA3NGNlNTg3YmNhZmZjZmVhYjRjMzEwMGJkYTE1Y2E0Li42NTEzYjU3ZGFjODBjZDU3
MGNmODNjOTNkYmQ0OTViMGY5NTc5Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQogICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5n
U3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6dXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgUmVjb3JkZXI6OmRpZFVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuc3RhdGVD
aGFuZ2UuYWNjdW11bGF0ZShzdGF0ZSwgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggZDI2OGVkNDJkM2FjZWIxNDdmNWQ2ZjUzM2QzZDA1ZjM5ZjY5
NGVjZC4uZDAwZWRhZmMzNDA0NTBmZTU1Mzk5ZTVlYTM2MzM3YTlkYjI4OGZmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBj
b25zdCBDb2xvciYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIGRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sLCBib29sLCBTdHJva2VTdHlsZSkg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZp
bmFsOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgc2V0
TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CmluZGV4IDcyNWI2ZjUyODIwOGExNDAzYjY2MTE5MzAzZTU1MDJlMzczNmQzNmQuLjk5MGM3MWZh
NDc0MzBmNTkzZTJjMjRjMGI3OWQ3OTU4YzQ4ZjdmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoUGFpbnRp
bmdPcGVyYXRpb25zJiBjb21tYW5kTGlzdCkKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgeyB9
LCB7IH0sIEZsb2F0UmVjdDo6aW5maW5pdGVSZWN0KCkgfSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBm
bGFncykKIHsKICAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhp
Y2tuZXNzQ2hhbmdlKSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VUaGlja25lc3NDaGFuZ2UgZmlu
YWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxmbG9hdD4gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDc3
YWU1MGRmMDQ5MmQzYWJmODhmZGY3YzVjMzM5OTcyNzdiYmM1YmEuLmFhOTRkZTg4NjI3MjU1YmQ2
NTA0NzA3MmY1Y2EyYjlkZmQzY2M4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQgdXBkYXRlU3RhdGUo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRh
dGVTdGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc2V0TGluZUNhcChXZWJDb3JlOjpMaW5lQ2FwKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExp
bmVEYXNoKGNvbnN0IFdlYkNvcmU6OkRhc2hBcnJheSYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IGM5NzFhMWQ2OTBkOTQ1YjMxMDliNGUwZDFi
MTVmYTgwMTE1MDMyM2IuLmQ0ODBkYjczZDQzMjI1NWU5MmUzZDBjNzk5ZTFkOTRkZDcyMzU0MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNjQ3LDcgKzY0Nyw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OnN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OnVw
ZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dERp
cmVjdDJEOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGlm
IChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCiAg
ICAgICAgIERpcmVjdDJEOjpTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKG1fcGxhdGZvcm1Db250
ZXh0LCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzMTQ2ZGY5N2YxNTQyMWE0ZTczZDMwYWU5MDZjMGMz
MTA5Y2U5OTUuLmRiZTZjYTM1ODdkYTYxNWU5NTRjYTFhNmYxMjBlZmEwYjkxYjBjZDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wOS0yOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBCb3JkZXJzIGFyZSBub3QgZHJhd24gd2hlbiB1c2luZyBCaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzA5NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNjU3MzMwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGQgYSB0ZXN0IGZvciBsaW5l
IGRyYXdpbmcuCisKIDIwMjEtMDktMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdQVCBpbXBvcnRlciBzaG91bGQgY3JlYXRlIHNlcnZpY2V3b3JrZXIgdGVt
cGxhdGUgZm9yIHRlbXBsYXRlZCB0ZXN0IHRoYXQgaGF2ZSB3b3JrZXIgYXMgZ2xvYmFsCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAppbmRleCBlMWI1MGJk
ZTc1ODkzZjQxZTY2MDAzNTVmY2JlZTg0NGJmMTViMWRiLi5lMTc4MjAwNWVjYjJiZWMxNWZhYmMz
Yjc3ZjBhMGUxNmI3MDRmOWI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHAKQEAgLTQ1LDExICs0NSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgRGlzcGxh
eUxpc3Q7CiBjb25zdGV4cHIgQ0dGbG9hdCBjb250ZXh0V2lkdGggPSAxOwogY29uc3RleHByIENH
RmxvYXQgY29udGV4dEhlaWdodCA9IDE7CiAKLVRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dFRlc3RzLCBCYXNpY0JpZnVyY2F0ZWRDb250ZXh0KQorVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0VGVzdHMsIEJhc2ljKQogewogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpOwogICAgIGF1dG8gcHJpbWFyeUNHQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdo
dCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7Ci0gICAgYXV0byBzZWNvbmRhcnlDR0Nv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lk
dGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZv
cm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0Q0cgcHJpbWFyeUNvbnRleHQocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7
CiAKQEAgLTg3LDcgKzg2LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMs
IEJhc2ljQmlmdXJjYXRlZENvbnRleHQpCiAgICAgRVhQRUNUX1RSVUUoc2F3RmlsbFJlY3QpOwog
fQogCi1URVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dEluQmlmdXJjYXRl
ZENvbnRleHQpCitURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dCkKIHsK
ICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IHByaW1hcnlEaXNwbGF5TGlzdDsKICAgICBSZWNvcmRl
ciBwcmltYXJ5Q29udGV4dChwcmltYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAs
IGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CkBAIC0xMjksNiArMTI4LDMyIEBA
IFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0SW5CaWZ1cmNhdGVkQ29u
dGV4dCkKICAgICBydW5UZXN0KHNlY29uZGFyeURpc3BsYXlMaXN0KTsKIH0KIAorVEVTVChCaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJvcmRlcnMpCit7CisgICAgYXV0byBjb2xvclNw
YWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CisgICAgYXV0byBwcmltYXJ5Q0dD
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdp
ZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKworICAg
IEdyYXBoaWNzQ29udGV4dENHIHByaW1hcnlDb250ZXh0KHByaW1hcnlDR0NvbnRleHQuZ2V0KCkp
OworCisgICAgSW5NZW1vcnlEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdDsKKyAgICBSZWNvcmRlciBz
ZWNvbmRhcnlDb250ZXh0KGRpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0
V2lkdGgsIGNvbnRleHRIZWlnaHQpLCB7IH0pOworCisgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dCBjdHgocHJpbWFyeUNvbnRleHQsIHNlY29uZGFyeUNvbnRleHQpOworCisgICAgY3R4LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpyZWQpOworICAgIGN0eC5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7CisgICAgY3R4LnNldFN0cm9rZVRoaWNrbmVzcygxMCk7CisgICAgY3R4LmRyYXdMaW5l
KHsgMCwgMCB9LCB7IGNvbnRleHRXaWR0aCwgMCB9KTsKKworICAgIC8vIFRoZSBwcmltYXJ5IGNv
bnRleHQgc2hvdWxkIGhhdmUgcmVkIHBpeGVscy4KKyAgICBDR0NvbnRleHRGbHVzaChwcmltYXJ5
Q0dDb250ZXh0LmdldCgpKTsKKyAgICB1aW50OF90KiBwcmltYXJ5RGF0YSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihDR0JpdG1hcENvbnRleHRHZXREYXRhKHByaW1hcnlDR0NvbnRleHQuZ2V0KCkp
KTsKKyAgICBFWFBFQ1RfRVEocHJpbWFyeURhdGFbMF0sIDI1NSk7CisgICAgRVhQRUNUX0VRKHBy
aW1hcnlEYXRhWzFdLCAwKTsKKyAgICBFWFBFQ1RfRVEocHJpbWFyeURhdGFbMl0sIDApOworICAg
IEVYUEVDVF9FUShwcmltYXJ5RGF0YVszXSwgMjU1KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQogCiAjZW5kaWYgLy8gVVNFKENHKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440275</attachid>
            <date>2021-10-05 15:13:30 -0700</date>
            <delta_ts>2021-10-12 11:27:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230976-20211005151329.patch</filename>
            <type>text/plain</type>
            <size>41575</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVlODA2ODIxODIzY2Yw
YzRhZDlkZjI1MGJlZjkxYzc1MDU5NGI1NS4uNzAyZTY1YjIwNmQ5MmM1MDE3MjIyNDQ2MmZjZTM1
ODEyZDFjOWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTEwLTA1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEJvcmRlcnMgYXJl
IG5vdCBkcmF3biB3aGVuIHVzaW5nIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDk3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM2NTczMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KKworICAgICAgICBOZXcgQVBJIFRlc3Q6IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0
cy5Cb3JkZXJzCisKKyAgICAgICAgVGhlcmUgaXMgYSBtaW5vciBwcm9ibGVtIHdpdGggdGhlIGNo
aWxkcmVuIG9mIGJpZnVyY2F0ZWQgZ3JhcGhpY3MgY29udGV4dHMsCisgICAgICAgIHdoaWNoIGlz
IHRoYXQgdGhleSBlYWNoIGN1cnJlbnRseSBtYWludGFpbiB0aGVpciBvd24gR3JhcGhpY3NDb250
ZXh0U3RhdGUsCisgICAgICAgIGFuZCBzb21lIEdyYXBoaWNzQ29udGV4dCBpbXBsZW1lbnRhdGlv
bnMgcmVhZCBmcm9tIHRoYXQgc3RhdGUgaW50ZXJuYWxseQorICAgICAgICB0byBkbyB3b3JrIChl
LmcuIHRoZSBDRyBjb250ZXh0IHJlYWRzIHRoZSBTdHJva2VTdHlsZSBpbiBkcmF3TGluZSgpKS4K
KyAgICAgICAgVGhpcyBtZWFucyB0aGF0IGJvdGggY2hpbGRyZW4gbmVlZCB0byBtaXJyb3IgdGhl
IHN0YXRlIG9mIHRoZSB0b3BsZXZlbC4KKworICAgICAgICBZb3UgY291bGQgaW1hZ2luZSBtZXJn
aW5nIGNoYW5nZXMgdG8gbV9zdGF0ZSBpbiBlYWNoIGNvbnRleHQncyBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBvZiB1cGRhdGVTdGF0ZSgpLCBidXQgQSkgdXBkYXRlU3RhdGUgaXMgY2FsbGVkIGlu
ICpyZXNwb25zZSogdG8gdGhlIGxvY2FsCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIGNo
YW5naW5nIChzbyB0aGlzIHdvdWxkIGJlIGEgYml0IGNpcmN1bGFyKSwgYW5kCisgICAgICAgIEIp
IHRoaXMgd291bGQgcmVxdWlyZSBlYWNoIEdyYXBoaWNzQ29udGV4dCB0byBkbyB0aGlzIHdvcmsu
CisKKyAgICAgICAgSW5zdGVhZCwgcmVuYW1lIGB1cGRhdGVTdGF0ZWAgdG8gYGRpZFVwZGF0ZVN0
YXRlYCB0byBtYWtlIGl0IG1vcmUgY2xlYXIKKyAgICAgICAgdGhhdCBpdCBpcyBpbiByZXNwb25z
ZSB0byBhIGNoYW5nZSwgbm90IHBlcmZvcm1pbmcgdGhlIGNoYW5nZSBpdHNlbGYsCisgICAgICAg
IGFuZCBhZGQgYSBuZXcgYHVwZGF0ZVN0YXRlYCwgd2hpY2ggYWxzbyBtZXJnZXMgdGhlIGNoYW5n
ZXMgaW50byBtX3N0YXRlLgorICAgICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGlzIHRo
ZSBvbmx5IGNsaWVudCBvZiBgdXBkYXRlU3RhdGVgIGF0IHRoZSBtb21lbnQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0Lmg6CisgICAgICAgIFJlbmFtZSB1cGRhdGVTdGF0ZS0+ZGlkVXBkYXRlU3RhdGUs
IGJ1dCBsZWF2ZSBpdCBjYWxsaW5nIHVwZGF0ZVN0YXRlKCkKKyAgICAgICAgb24gdGhlIGNoaWxk
cmVuIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bWVyZ2VDaGFuZ2VzKToKKyAgICAgICAgTW92ZSAibWVyZ2UgdGhpcyBzZXQgb2Ygc3RhdGUg
Y2hhbmdlcyIgcGFydCBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZQor
ICAgICAgICB0byBhIG1ldGhvZCBvbiBHcmFwaGljc0NvbnRleHRTdGF0ZSBpdHNlbGYgKHJlc29s
dmluZyB0aGUgRklYTUUgYW5kIGFsc28KKyAgICAgICAgc2VwYXJhdGluZyB0aGUgcGFydHMgdGhh
dCBhcmUgc3BlY2lmaWMgdG8gYWNjdW11bGF0aW5nIGRlbHRhcyBmcm9tIHRoZQorICAgICAgICBn
ZW5lcmljIHBhcnRzIGZvciBtZXJnaW5nIGNoYW5nZXMpLgorCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgQWRkIHVwZGF0ZVN0YXRl
KCksIHdoaWNoIG1lcmdlcyB0aGUgY2hhbmdlcyB0byB0aGUgR3JhcGhpY3NDb250ZXh0U3RhdGUK
KyAgICAgICAgYW5kIHRoZW4gdHVybnMgYXJvdW5kIGFuZCBjYWxscyBkaWRVcGRhdGVTdGF0ZSgp
IHRvIHByb3BhZ2F0ZSB0aGVtIHRvCisgICAgICAgIHRoZSBwbGF0Zm9ybSBjb250ZXh0IChvciB3
aGF0ZXZlciBlYWNoIGltcGxlbWVudGF0aW9uIHdhbnRzIHRvIGRvKS4KKworICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVP
cGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERyYXdM
dW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4
dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VXNl
RGFya0FwcGVhcmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6
ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86
OnVwZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjpHcmFwaGljc0NvbnRleHRDRyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OnVwZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVy
Ojp1cGRhdGVTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dERpcmVjdDJEOjpkaWRVcGRhdGVT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHREaXJlY3QyRDo6dXBkYXRl
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdXBkYXRlU3RhdGUtPmRpZFVwZGF0ZVN0
YXRlLgorCiAyMDIxLTEwLTA1ICBHYWJyaWVsIE5hdmEgTWFyaW5vICA8Z25hdmFtYXJpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEluY29ycmVjdCBMZW5ndGggY29uc3RydWN0b3IgdXNlZCBhZnRl
ciBibGVuZGluZyBuZWdhdGl2ZSBMZW5ndGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5k
ZXggYzBjZTcyYzVmZmMxMzNhMjgzY2I4OGNmZTY4ZDc3NWM3MmMyZDVjMC4uYzJkOTg0ODYxYjEy
OTQyZjBkOTk1N2NkN2RhNWRiZjJkY2RkOTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5j
cHAKQEAgLTQwMSw4ICs0MDEsMTEgQEAgYm9vbCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Ojpz
dXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJldHVybiBtX3ByaW1hcnlDb250ZXh0
LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3Mp
CiB7CisgICAgLy8gVGhpcyBjYWxscyB1cGRhdGVTdGF0ZSgpIGluc3RlYWQgb2YgZGlkVXBkYXRl
U3RhdGUoKSBzbyB0aGF0IGNoYW5nZXMKKyAgICAvLyBhcmUgYWxzbyBhcHBsaWVkIHRvIGVhY2gg
Y29udGV4dCdzIEdyYXBoaWNzQ29udGV4dFN0YXRlLCBzbyB0aGF0IGNvZGUKKyAgICAvLyBpbnRl
cm5hbCB0byB0aGUgY2hpbGQgY29udGV4dHMgdGhhdCByZWFkcyBmcm9tIHRoZSBzdGF0ZSBnZXRz
IHRoZSByaWdodCB2YWx1ZXMuCiAgICAgbV9wcmltYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShzdGF0
ZSwgZmxhZ3MpOwogICAgIG1fc2Vjb25kYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShzdGF0ZSwgZmxh
Z3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDJkZWQ1MzZkZDEzNjM5ZTExMzc3
MmJiODdjOGRmODFlNzRjZWZkMTAuLjFkZTM0Yjc5ZDQwMDI2NGYzNTYzNjZlYWZmM2UyYTI5M2Nk
OGI3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIHN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0IGZpbmFsOwogCi0g
ICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIGRpZFVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCiAjaWYgT1MoV0lORE9XUykgJiYgIVVTRShDQUlS
TykKICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGRlcHJlY2F0ZWRQcml2YXRl
Q29udGV4dCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggODVlM2QyNGJlYjBjMjA0YzMyNWEy
NjU2ZDljYTU0MDQwODY2ZmI3Mi4uNGMxYzVmOTA4N2E5M2E3ZDEyNWI4OTM2NDQ4ZjA0ZWZlZDBm
NzBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC05Miw2ICs5Miw3MyBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0Owog
R3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CiBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYm
KSA9IGRlZmF1bHQ7CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKKyAg
ICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgc3Ryb2tlR3Jh
ZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0
YXRlLnN0cm9rZVBhdHRlcm47CisgICAgfQorCisgICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5n
ZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7CisgICAgICAgIGZp
bGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKKyAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUu
ZmlsbEdyYWRpZW50OworICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwor
ICAgIH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSkgeworICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7
CisgICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOworICAgICAgICBzaGFkb3dD
b2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOworICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3Rh
dGUuc2hhZG93UmFkaXVzTW9kZTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAgIHN0cm9r
ZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKKworICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKKyAgICAg
ICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOworCisgICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCisg
ICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7CisKKyAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKKyAgICAgICAg
ZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQorICAgICAgICBhbHBoYSA9IHN0YXRlLmFs
cGhhOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSB9KSkgeworICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yOworICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7CisgICAgfQor
CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRp
YWxpYXNDaGFuZ2UpKQorICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91bGRBbnRp
YWxpYXM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKKyAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKKyAgICAgICAg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisKKyAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkK
KyAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKKwor
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eUNoYW5nZSkpCisgICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
PSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworCisjaWYgSEFWRShPU19EQVJLX01P
REVfU1VQUE9SVCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBz
dGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKKyNlbmRpZgorfQorCiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zy
b21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7CkBAIC0x
MzcsNzIgKzIwNCwxOSBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdAogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiB7
Ci0gICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgbW92ZSB0byBHcmFwaGljc0NvbnRleHRT
dGF0ZS4KKyAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3MpOworCiAgICAgYXV0
byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5z
QW55KHN0cm9rZUZsYWdzKSkgewotICAgICAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0gc3RhdGUu
c3Ryb2tlQ29sb3I7Ci0gICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJv
a2VHcmFkaWVudDsKLSAgICAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tl
UGF0dGVybjsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKQogICAgICAg
ICBtX2NoYW5nZUZsYWdzLnJlbW92ZShzdHJva2VGbGFncyk7Ci0gICAgfQogCiAgICAgYXV0byBm
aWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxh
Z3MpKSB7Ci0gICAgICAgIG1fc3RhdGUuZmlsbENvbG9yID0gc3RhdGUuZmlsbENvbG9yOwotICAg
ICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxHcmFkaWVudDsKLSAgICAgICAg
bV9zdGF0ZS5maWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOworICAgIGlmIChmbGFncy5j
b250YWluc0FueShmaWxsRmxhZ3MpKQogICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShmaWxs
RmxhZ3MpOwotICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IHN0
YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gc3RhdGUuc2hh
ZG93Qmx1cjsKLSAgICAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IHN0YXRlLnNoYWRvd0NvbG9y
OwotICAgICAgICBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSBzdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlOwotICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5zdHJva2VUaGlja25l
c3MgPSBzdGF0ZS5zdHJva2VUaGlja25lc3M7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIG1fc3Rh
dGUudGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0g
ICAgICAgIG1fc3RhdGUuc3Ryb2tlU3R5bGUgPSBzdGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQot
ICAgICAgICBtX3N0YXRlLmZpbGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7Ci0KLSAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAg
bV9zdGF0ZS5hbHBoYSA9IHN0YXRlLmFscGhhOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55
KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkgewotICAgICAgICBtX3N0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIG1fc3Rh
dGUuYmxlbmRNb2RlID0gc3RhdGUuYmxlbmRNb2RlOwotICAgIH0KLQotICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAg
ICAgICAgbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91bGRBbnRpYWxpYXM7Ci0K
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290
aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IHN0YXRl
LnNob3VsZFNtb290aEZvbnRzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBt
X3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAK
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFu
Y2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IHN0YXRl
LmRyYXdMdW1pbmFuY2VNYXNrOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgbV9z
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkp
Ci0gICAgICAgIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSBzdGF0ZS51c2VEYXJrQXBwZWFy
YW5jZTsKLSNlbmRpZgorICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0b3JGbGFncyA9IHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShjb21w
b3NpdGVPcGVyYXRvckZsYWdzKSkKKyAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoY29tcG9z
aXRlT3BlcmF0b3JGbGFncyk7CiAKICAgICBtX2NoYW5nZUZsYWdzLmFkZChmbGFncyk7CiB9CkBA
IC0zNzUsNiArMzg5LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkKICAgICAg
ICAgbV9zdGFjay5jbGVhcigpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhz
dGF0ZSwgZmxhZ3MpOworICAgIGRpZFVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Cit9CisKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFpc2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcikK
IHsKICAgICBzYXZlKCk7CkBAIC0zOTcsNyArNDE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX3N0YXRlLnN0cm9rZUNv
bG9yID0gY29sb3I7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAg
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpOworICAgIGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBv
ZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBy
YWRpdXNNb2RlKQpAQCAtNDA2LDcgKzQyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRT
aGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yCiAg
ICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0g
Y29sb3I7CiAgICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVzTW9kZTsKLSAgICB1
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsK
KyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93
Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKQEAgLTQx
NSw3ICs0MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAgIG1f
c3RhdGUuc2hhZG93Qmx1ciA9IDA7CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7
CiAgICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVs
dDsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93
Q2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhG
bG9hdFNpemUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKQEAgLTQz
Miw3ICs0NTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUu
ZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0
cjsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENv
bG9yQ2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbENvbG9yQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0
cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKQEAgLTQ0MCw3ICs0NjAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSB7IH07CiAgICAgbV9zdGF0ZS5zdHJva2VH
cmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShw
YXR0ZXJuKTsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlUGF0dGVybkNoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKQEAgLTQ0OCw3
ICs0NjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRl
cm4+JiYgcGF0dGVybikKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9IHsgfTsKICAgICBtX3N0YXRl
LmZpbGxHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1v
dmUocGF0dGVybik7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCkBAIC00NTcs
NyArNDc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxH
cmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHIKICAgICBtX3N0YXRlLnN0cm9rZUdy
YWRpZW50ID0gV1RGTW92ZShncmFkaWVudCk7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNw
YWNlVHJhbnNmb3JtID0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKICAgICBtX3N0YXRl
LnN0cm9rZVBhdHRlcm4gPSBudWxscHRyOwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7CisgICAgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+
JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0pCkBAIC00NjYsNyArNDg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxH
cmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW4KICAgICBt
X3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKICAg
ICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICB1cGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKTsKKyAgICBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdl
KTsKICAgICAvLyBGSVhNRTogYWxzbyBmaWxsIHBhdHRlcm4/CiB9CiAKQEAgLTY5OSw3ICs3MTks
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbgogewogICAgIG1fc3RhdGUuY29tcG9zaXRlT3Bl
cmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247CiAgICAgbV9zdGF0ZS5ibGVuZE1vZGUgPSBibGVu
ZE1vZGU7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjphZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYg
cDEsIEZsb2F0UG9pbnQmIHAyLCBmbG9hdCBzdHJva2VXaWR0aCwgU3Ryb2tlU3R5bGUgcGVuU3R5
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IDZhNGFlNWRhZDVhN2IyYTlkYzQyMzlmY2E5YTQ2YjcxNzgxMDlmM2EuLmQ5
YmE0MTk1Y2U1YzQ5NTI4ZTNiMGU2ZmI0Y2ZhZTI0NTZkNTZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xNjAsNiAr
MTYwLDggQEAgc3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1lbnRN
YXJrZXJMaW5lU3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7eyAqbW9kZSwgKnNo
b3VsZFVzZURhcmtBcHBlYXJhbmNlIH19OwogfQogCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2U7CisKIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhp
Y3NDb250ZXh0U3RhdGUoKTsKQEAgLTE5Nyw2ICsxOTksOCBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewogICAgIH07CiAgICAgdXNpbmcgU3RhdGVDaGFuZ2VGbGFncyA9IE9wdGlvblNl
dDxDaGFuZ2U+OwogCisgICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisKICAgICBS
ZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OwogICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJv
a2VQYXR0ZXJuOwogICAgIApAQCAtMjgzLDEwICsyODcsMTAgQEAgcHVibGljOgogCiAgICAgLy8g
Q29udGV4dCBTdGF0ZQogCi0gICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tu
ZXNzKSB7IG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOyB1cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKTsgfQor
ICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnN0
cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0KICAgICBmbG9hdCBzdHJv
a2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsgfQog
Ci0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRlLnN0
cm9rZVN0eWxlID0gc3R5bGU7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9r
ZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc3Ryb2tlU3R5bGUgPSBzdHlsZTsgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKTsgfQog
ICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJv
a2VTdHlsZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VDb2xvcihjb25z
dCBDb2xvciYpOwpAQCAtMjk4LDcgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiA9IHsgfSk7CiAgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VHcmFkaWVudC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRGaWxs
UnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IHVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSk7
IH0KKyAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmls
bFJ1bGUgPSBmaWxsUnVsZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTMxMCwzNCArMzE0LDM0IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgPSB7IH0pOwogICAgIEdyYWRpZW50KiBmaWxsR3JhZGll
bnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKTsgfQogCi0gICAg
dm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKSB7IG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtczsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSk7IH0KICAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogCi0gICAgdm9pZCBzZXRTaG91
bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgbV9zdGF0ZS5zaG91bGRBbnRpYWxp
YXMgPSBzaG91bGRBbnRpYWxpYXM7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRTaG91bGRBbnRp
YWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMgPSBz
aG91bGRBbnRpYWxpYXM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRBbnRpYWxpYXMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZEFudGlhbGlhczsgfQogCi0gICAgdm9pZCBz
ZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hv
dWxkU21vb3RoRm9udHMgPSBzaG91bGRTbW9vdGhGb250czsgdXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQorICAgIHZv
aWQgc2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBtX3N0YXRl
LnNob3VsZFNtb290aEZvbnRzID0gc2hvdWxkU21vb3RoRm9udHM7IGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7IH0K
ICAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250czsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1x
dWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25p
bmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRv
IGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNl
dFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KKyAgICB2b2lkIHNldFNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzOyB9CiAKLSAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSkgeyBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkgPSBxdWFsaXR5OyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSk7IH0KKyAgICB2b2lk
IHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0
eSkgeyBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBxdWFsaXR5OyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eUNoYW5nZSk7IH0KICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OyB9CiAKLSAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuYWxw
aGEgPSBhbHBoYTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFs
cGhhQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5h
bHBoYSA9IGFscGhhOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6QWxwaGFDaGFuZ2UpOyB9CiAgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmFscGhhOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwog
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3Bl
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KIAotICAgIHZvaWQg
c2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRy
YXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IHVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KKyAgICB2
b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsgbV9zdGF0
ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFuY2VNYXNrOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOyB9
CiAgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJh
d0x1bWluYW5jZU1hc2s7IH0KIAotICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3
aW5nTW9kZUZsYWdzIG1vZGUpIHsgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBtb2RlOyB1cGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hh
bmdlKTsgfQorICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdz
IG1vZGUpIHsgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBtb2RlOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKTsgfQog
ICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUudGV4dERyYXdpbmdNb2RlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIFNoYWRv
d1JhZGl1c01vZGUgPSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0KTsKQEAgLTM0OSwxMyArMzUz
LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0JsdXJyZWRTaGFkb3coKSBjb25zdCB7IHJldHVy
biBoYXNWaXNpYmxlU2hhZG93KCkgJiYgbV9zdGF0ZS5zaGFkb3dCbHVyOyB9CiAKICNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9v
bCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0gdXNlRGFy
a0FwcGVhcmFuY2U7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpV
c2VEYXJrQXBwZWFyYW5jZUNoYW5nZSk7IH0KKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNl
KGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSA9IHVz
ZURhcmtBcHBlYXJhbmNlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UpOyB9CiAgICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7IH0KICNlbmRp
ZgogCiAgICAgdmlydHVhbCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncykgPSAwOworICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisKKyAgICAv
LyBDYWxsZWQgKmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5l
cmFsbHkgdXNlZCB0byBwcm9wYWdhdGUgY2hhbmdlcworICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBj
b250ZXh0J3Mgc3RhdGUuCisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzYXZlKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCA3
OTA2ZDM1NmU3MDdmNjJlMjY5N2U5OThjMWNhMjc1YjY3MTNkZDRlLi40ZjZhNTY3NjkxYTNiMDc1
MjUzNDNmZjUwODIyYjViNmRhNzQ2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC01NSw3ICs1NSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJ
bnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9
CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6
OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsgfQogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZp
bmFsIHsgfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRJc0Fj
Y2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCBjNWI5NzQ5MmZhY2I2NTEzZjY0MjU2NmI4YzRmZWQxNDIzOTM4NmQwLi4xNjVj
NmRiZmUyMDIyMzE3MzkzZmU1NDY3YjkyMjAyNmI1MmFhODliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgQ2Fpcm86OnRyYW5zbGF0ZSgqdGhp
cywgeCwgeSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnVwZGF0ZVN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGlmIChmbGFncyAmIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCiAgICAgICAgIENhaXJvOjpT
dGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggMWVjZjAwYTQ1MTA3NDAzNTg4ZmM3OTM0ZDIy
ZGYwOTRlOWQwZjJmMy4uNWQ0YWEwYjVhNzMyOTIxMTFmMjI0MjdkYzZjMGFiYjY1YzQzMGVmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIEdyYXBoaWNzQ29u
dGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgdXBk
YXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
KTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHNldExp
bmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApp
bmRleCBiNjU2ZjEzNjgxNjI0N2E0NmFjZGNkYTU5OWJiNmQ0MWRkODA5M2E5Li5iNWY0ZTJhMWZj
NDVjMGUxZTcwODFjYjViMzlhMGI4NDIzOWQ2ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0x
OTEsNyArMTkxLDcgQEAgR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQpCiAKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKGNnQ29udGV4dCk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0
YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tu
ZXNzQ2hhbmdlIH0pOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIHsgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNv
bG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIH0p
OwogICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvcmVJbnRlcnBvbGF0
aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRl
eHQoKSkpOwogfQogCkBAIC0xMDc1LDcgKzEwNzUsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRv
dyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXpl
JgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplTWFr
ZSh4T2Zmc2V0LCB5T2Zmc2V0KSwgYmx1clJhZGl1cywgY2FjaGVkQ0dDb2xvcihjb2xvcikpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dENHOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncyBmbGFncykKIHsKICAgICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmgKaW5kZXggZjk2NmUyNzlhYjg2ZjU4Y2ZkZGFhMTMxODMzOGQxNDBhNGZh
Y2I5NC4uZmM0MGE5ZjYxZGRjOWMyMmI4NjVjZWFiMzg2MzY3NmVmODViNjFhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0lu
dGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsK
IAogI2lmIE9TKFdJTkRPV1MpCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBk
ZXByZWNhdGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCA2ZmI5ZjNjM2ViNmQxZTcxOTAzYWZj
NDUxNGY0MTkyZWVlMjJkYjEwLi40ZGZiNmZkYWUxNzkxMDAzMTk3OWVhNGQ4OGZkODIyMDE4ODAx
MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBA
IC0xODMsNyArMTgzLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xv
cihjb25zdCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmEKICAgICAgICAgbmV3U3Rh
dGUuZmlsbEdyYWRpZW50ID0gbmV3R3JhZGllbnQ7CiAgICAgaWYgKG5ld1BhdHRlcm4pCiAgICAg
ICAgIG5ld1N0YXRlLmZpbGxQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVyLnVwZGF0
ZVN0YXRlKG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2Ug
fSk7CisgICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlIH0pOwogICAgIG1fY3VycmVudFN0YXRlLmZpbGxTdHls
ZS5jb2xvciA9IG5ld0NvbG9yOwogfQogCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwgR3Jh
ZGllbnQqIG5ld0cKICAgICAgICAgbmV3U3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBuZXdHcmFkaWVu
dDsKICAgICBpZiAobmV3UGF0dGVybikKICAgICAgICAgbmV3U3RhdGUuc3Ryb2tlUGF0dGVybiA9
IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci51cGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UgfSk7CisgICAgbV9vd25lci5kaWRVcGRh
dGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UgfSk7CiAgICAgbV9jdXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsK
IH0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVT
aGFkb3coY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvCiAgICAgfQog
ICAgIGlmIChzdGF0ZUNoYW5nZUZsYWdzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fb3duZXIudXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIG1f
b3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOwogCiAgICAg
bV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCA9IHNoYWRvd09mZnNldDsKICAgICBtX2N1cnJl
bnRTdGF0ZS5zaGFkb3cuYmx1ciA9IHNoYWRvd0JsdXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZjliZjE5MWVlNjM4OWYwMWQ5YjVhMjEwMjUzY2QwMGIw
MzAxODU0MC4uMmIxYzc3ZDcwNDE4ZTFkZDIwNmE2ZWJkYTQ5OTUzMTdlYzI2MmNmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBA
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBSZWNvcmRlcjo6c3RhdGUoKSBjb25zdAogICAg
IHJldHVybiBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlOwogfQogCi12b2lkIFJl
Y29yZGVyOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZWNvcmRl
cjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBjdXJyZW50
U3RhdGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhNWFkMzY2ZDRkY2Q5OWQ4NDNlMGJi
YTA2OTVlZDdkMjQ1MzcyYmJlLi42OGMxZmM3NjlhMjI0NGY3NDZjZTVkNWM4YmEyZTU5OWMwNTQy
ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTk2LDcgKzk2
LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCiAgICAgdm9pZCBz
ZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFz
aEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDcyNWI2ZjUyODIw
OGExNDAzYjY2MTE5MzAzZTU1MDJlMzczNmQzNmQuLjk5MGM3MWZhNDc0MzBmNTkzZTJjMjRjMGI3
OWQ3OTU4YzQ4ZjdmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoUGFpbnRpbmdPcGVyYXRpb25zJiBjb21t
YW5kTGlzdCkKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgeyB9LCB7IH0sIEZsb2F0UmVjdDo6
aW5maW5pdGVSZWN0KCkgfSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6dXBk
YXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBpZiAo
ZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSB7CiAg
ICAgICAgIHN0cnVjdCBTdHJva2VUaGlja25lc3NDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJh
dGlvbiwgT3BlcmF0aW9uRGF0YTxmbG9hdD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDc3YWU1MGRmMDQ5MmQzYWJmODhm
ZGY3YzVjMzM5OTcyNzdiYmM1YmEuLmFhOTRkZTg4NjI3MjU1YmQ2NTA0NzA3MmY1Y2EyYjlkZmQz
Y2M4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc1BsYXRm
b3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChXZWJD
b3JlOjpMaW5lQ2FwKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IFdlYkNv
cmU6OkRhc2hBcnJheSYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0
MkQuY3BwCmluZGV4IGM5NzFhMWQ2OTBkOTQ1YjMxMDliNGUwZDFiMTVmYTgwMTE1MDMyM2IuLmQ0
ODBkYjczZDQzMjI1NWU5MmUzZDBjNzk5ZTFkOTRkZDcyMzU0MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcApAQCAtNjQ3LDcgKzY0Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQ6OnN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OnVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dERpcmVjdDJEOjpkaWRVcGRhdGVT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIGlmIChmbGFncyAmIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCiAgICAgICAgIERpcmVjdDJEOjpT
dGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKG1fcGxhdGZvcm1Db250ZXh0LCBzdGF0ZS5zdHJva2VU
aGlja25lc3MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDFiOTdkZDA5ZDMxYTM2NDNiY2IxYzYyNTMxOWIxMTg3NGVmYTg3N2QuLjAzZTE1M2Vm
NWIxYjVkODQ1ZTY4YTJhNjE5ZmJkNTdmODM4MzAzYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0wNSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBCb3JkZXJz
IGFyZSBub3QgZHJhd24gd2hlbiB1c2luZyBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA5NzYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzgzNjU3MzMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgIEFkZCBhIHRlc3QgZm9yIGxpbmUgZHJhd2luZy4KKwogMjAyMS0xMC0w
NSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICA8bW9k
ZWw+IHNob3VsZCBiZSBkcmFnZ2FibGUsIHNpbWlsYXIgdG8gPGltZz4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmluZGV4IGUxYjUwYmRlNzU4OTNmNDFl
NjYwMDM1NWZjYmVlODQ0YmYxNWIxZGIuLmUxNzgyMDA1ZWNiMmJlYzE1ZmFiYzNiNzdmMGEwZTE2
YjcwNGY5YjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NH
LmNwcApAQCAtNDUsMTEgKzQ1LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBEaXNwbGF5TGlzdDsKIGNv
bnN0ZXhwciBDR0Zsb2F0IGNvbnRleHRXaWR0aCA9IDE7CiBjb25zdGV4cHIgQ0dGbG9hdCBjb250
ZXh0SGVpZ2h0ID0gMTsKIAotVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJh
c2ljQmlmdXJjYXRlZENvbnRleHQpCitURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0
cywgQmFzaWMpCiB7CiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7CiAgICAgYXV0byBwcmltYXJ5Q0dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICog
Y29udGV4dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKLSAgICBhdXRvIHNlY29uZGFyeUNHQ29udGV4dCA9IGFk
b3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4
dEhlaWdodCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRDRyBwcmltYXJ5Q29udGV4dChwcmltYXJ5Q0dDb250ZXh0LmdldCgpKTsKIApAQCAtODcs
NyArODYsNyBAQCBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWNCaWZ1
cmNhdGVkQ29udGV4dCkKICAgICBFWFBFQ1RfVFJVRShzYXdGaWxsUmVjdCk7CiB9CiAKLVRFU1Qo
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0SW5CaWZ1cmNhdGVkQ29udGV4dCkK
K1RFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0KQogewogICAgIEluTWVt
b3J5RGlzcGxheUxpc3QgcHJpbWFyeURpc3BsYXlMaXN0OwogICAgIFJlY29yZGVyIHByaW1hcnlD
b250ZXh0KHByaW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdp
ZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKQEAgLTEyOSw2ICsxMjgsMzIgQEAgVEVTVChCaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIFRleHRJbkJpZnVyY2F0ZWRDb250ZXh0KQogICAg
IHJ1blRlc3Qoc2Vjb25kYXJ5RGlzcGxheUxpc3QpOwogfQogCitURVNUKEJpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHRUZXN0cywgQm9yZGVycykKK3sKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICBhdXRvIHByaW1hcnlDR0NvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRl
eHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNw
YWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworCisgICAgR3JhcGhpY3ND
b250ZXh0Q0cgcHJpbWFyeUNvbnRleHQocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7CisKKyAgICBJ
bk1lbW9yeURpc3BsYXlMaXN0IGRpc3BsYXlMaXN0OworICAgIFJlY29yZGVyIHNlY29uZGFyeUNv
bnRleHQoZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29u
dGV4dEhlaWdodCksIHsgfSk7CisKKyAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChw
cmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CisKKyAgICBjdHguc2V0U3Ryb2tlQ29s
b3IoQ29sb3I6OnJlZCk7CisgICAgY3R4LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAg
ICBjdHguc2V0U3Ryb2tlVGhpY2tuZXNzKDEwKTsKKyAgICBjdHguZHJhd0xpbmUoeyAwLCAwIH0s
IHsgY29udGV4dFdpZHRoLCAwIH0pOworCisgICAgLy8gVGhlIHByaW1hcnkgY29udGV4dCBzaG91
bGQgaGF2ZSByZWQgcGl4ZWxzLgorICAgIENHQ29udGV4dEZsdXNoKHByaW1hcnlDR0NvbnRleHQu
Z2V0KCkpOworICAgIHVpbnQ4X3QqIHByaW1hcnlEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KENHQml0bWFwQ29udGV4dEdldERhdGEocHJpbWFyeUNHQ29udGV4dC5nZXQoKSkpOworICAgIEVY
UEVDVF9FUShwcmltYXJ5RGF0YVswXSwgMjU1KTsKKyAgICBFWFBFQ1RfRVEocHJpbWFyeURhdGFb
MV0sIDApOworICAgIEVYUEVDVF9FUShwcmltYXJ5RGF0YVsyXSwgMCk7CisgICAgRVhQRUNUX0VR
KHByaW1hcnlEYXRhWzNdLCAyNTUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CiAKICNlbmRpZiAvLyBVU0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440963</attachid>
            <date>2021-10-12 11:27:53 -0700</date>
            <delta_ts>2021-10-12 12:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230976-20211012112753.patch</filename>
            <type>text/plain</type>
            <size>41679</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE2ZGU0MTQ3ZWY2MTg2
MTFmNDVhNzZlYzA2OWQ0ODc3ZWIzMTdhYi4uOGUwOGYzM2Q2YmQ0MDNhMGM1YWE2NTU1N2ZhOWY4
ODQ5NjBjYTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTEwLTEyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEJvcmRlcnMgYXJl
IG5vdCBkcmF3biB3aGVuIHVzaW5nIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDk3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODM2NTczMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KKworICAgICAgICBOZXcgQVBJIFRlc3Q6IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0
cy5Cb3JkZXJzCisKKyAgICAgICAgVGhlcmUgaXMgYSBtaW5vciBwcm9ibGVtIHdpdGggdGhlIGNo
aWxkcmVuIG9mIGJpZnVyY2F0ZWQgZ3JhcGhpY3MgY29udGV4dHMsCisgICAgICAgIHdoaWNoIGlz
IHRoYXQgdGhleSBlYWNoIGN1cnJlbnRseSBtYWludGFpbiB0aGVpciBvd24gR3JhcGhpY3NDb250
ZXh0U3RhdGUsCisgICAgICAgIGFuZCBzb21lIEdyYXBoaWNzQ29udGV4dCBpbXBsZW1lbnRhdGlv
bnMgcmVhZCBmcm9tIHRoYXQgc3RhdGUgaW50ZXJuYWxseQorICAgICAgICB0byBkbyB3b3JrIChl
LmcuIHRoZSBDRyBjb250ZXh0IHJlYWRzIHRoZSBTdHJva2VTdHlsZSBpbiBkcmF3TGluZSgpKS4K
KyAgICAgICAgVGhpcyBtZWFucyB0aGF0IGJvdGggY2hpbGRyZW4gbmVlZCB0byBtaXJyb3IgdGhl
IHN0YXRlIG9mIHRoZSB0b3BsZXZlbC4KKworICAgICAgICBZb3UgY291bGQgaW1hZ2luZSBtZXJn
aW5nIGNoYW5nZXMgdG8gbV9zdGF0ZSBpbiBlYWNoIGNvbnRleHQncyBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBvZiB1cGRhdGVTdGF0ZSgpLCBidXQgQSkgdXBkYXRlU3RhdGUgaXMgY2FsbGVkIGlu
ICpyZXNwb25zZSogdG8gdGhlIGxvY2FsCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIGNo
YW5naW5nIChzbyB0aGlzIHdvdWxkIGJlIGEgYml0IGNpcmN1bGFyKSwgYW5kCisgICAgICAgIEIp
IHRoaXMgd291bGQgcmVxdWlyZSBlYWNoIEdyYXBoaWNzQ29udGV4dCB0byBkbyB0aGlzIHdvcmsu
CisKKyAgICAgICAgSW5zdGVhZCwgcmVuYW1lIGB1cGRhdGVTdGF0ZWAgdG8gYGRpZFVwZGF0ZVN0
YXRlYCB0byBtYWtlIGl0IG1vcmUgY2xlYXIKKyAgICAgICAgdGhhdCBpdCBpcyBpbiByZXNwb25z
ZSB0byBhIGNoYW5nZSwgbm90IHBlcmZvcm1pbmcgdGhlIGNoYW5nZSBpdHNlbGYsCisgICAgICAg
IGFuZCBhZGQgYSBuZXcgYHVwZGF0ZVN0YXRlYCwgd2hpY2ggYWxzbyBtZXJnZXMgdGhlIGNoYW5n
ZXMgaW50byBtX3N0YXRlLgorICAgICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGlzIHRo
ZSBvbmx5IGNsaWVudCBvZiBgdXBkYXRlU3RhdGVgIGF0IHRoZSBtb21lbnQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0Lmg6CisgICAgICAgIFJlbmFtZSB1cGRhdGVTdGF0ZS0+ZGlkVXBkYXRlU3RhdGUs
IGJ1dCBsZWF2ZSBpdCBjYWxsaW5nIHVwZGF0ZVN0YXRlKCkKKyAgICAgICAgb24gdGhlIGNoaWxk
cmVuIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bWVyZ2VDaGFuZ2VzKToKKyAgICAgICAgTW92ZSAibWVyZ2UgdGhpcyBzZXQgb2Ygc3RhdGUg
Y2hhbmdlcyIgcGFydCBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZQor
ICAgICAgICB0byBhIG1ldGhvZCBvbiBHcmFwaGljc0NvbnRleHRTdGF0ZSBpdHNlbGYgKHJlc29s
dmluZyB0aGUgRklYTUUgYW5kIGFsc28KKyAgICAgICAgc2VwYXJhdGluZyB0aGUgcGFydHMgdGhh
dCBhcmUgc3BlY2lmaWMgdG8gYWNjdW11bGF0aW5nIGRlbHRhcyBmcm9tIHRoZQorICAgICAgICBn
ZW5lcmljIHBhcnRzIGZvciBtZXJnaW5nIGNoYW5nZXMpLgorCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgQWRkIHVwZGF0ZVN0YXRl
KCksIHdoaWNoIG1lcmdlcyB0aGUgY2hhbmdlcyB0byB0aGUgR3JhcGhpY3NDb250ZXh0U3RhdGUK
KyAgICAgICAgYW5kIHRoZW4gdHVybnMgYXJvdW5kIGFuZCBjYWxscyBkaWRVcGRhdGVTdGF0ZSgp
IHRvIHByb3BhZ2F0ZSB0aGVtIHRvCisgICAgICAgIHRoZSBwbGF0Zm9ybSBjb250ZXh0IChvciB3
aGF0ZXZlciBlYWNoIGltcGxlbWVudGF0aW9uIHdhbnRzIHRvIGRvKS4KKworICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVP
cGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERyYXdM
dW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4
dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VXNl
RGFya0FwcGVhcmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6
ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86
OnVwZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjpHcmFwaGljc0NvbnRleHRDRyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OnVwZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVy
Ojp1cGRhdGVTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dERpcmVjdDJEOjpkaWRVcGRhdGVT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHREaXJlY3QyRDo6dXBkYXRl
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdXBkYXRlU3RhdGUtPmRpZFVwZGF0ZVN0
YXRlLgorCiAyMDIxLTEwLTEyICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIGlzU2FtZU9yaWdpbkFzVG9wRG9jdW1lbnQoKSBpbiBEb2N1bWVudExvYWRlcjo6c2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IDg0MjhhNjY4NmE2NTE3MWQzZjlmODgyYjk3NjUyMThjNWE3ZTllNGEuLmZm
MjhiYjM5YmM3NGQ2NTExZTAwNDEyNDE2YzY4OGE5YWZhYmU5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuY3BwCkBAIC00MjksOCArNDI5LDExIEBAIGJvb2wgQmlmdXJjYXRlZEdyYXBoaWNz
Q29udGV4dDo6c3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmlt
YXJ5Q29udGV4dC5zdXBwb3J0c0ludGVybmFsTGlua3MoKTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9p
ZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzIGZsYWdzKQogeworICAgIC8vIFRoaXMgY2FsbHMgdXBkYXRlU3RhdGUoKSBpbnN0ZWFkIG9m
IGRpZFVwZGF0ZVN0YXRlKCkgc28gdGhhdCBjaGFuZ2VzCisgICAgLy8gYXJlIGFsc28gYXBwbGll
ZCB0byBlYWNoIGNvbnRleHQncyBHcmFwaGljc0NvbnRleHRTdGF0ZSwgc28gdGhhdCBjb2RlCisg
ICAgLy8gaW50ZXJuYWwgdG8gdGhlIGNoaWxkIGNvbnRleHRzIHRoYXQgcmVhZHMgZnJvbSB0aGUg
c3RhdGUgZ2V0cyB0aGUgcmlnaHQgdmFsdWVzLgogICAgIG1fcHJpbWFyeUNvbnRleHQudXBkYXRl
U3RhdGUoc3RhdGUsIGZsYWdzKTsKICAgICBtX3NlY29uZGFyeUNvbnRleHQudXBkYXRlU3RhdGUo
c3RhdGUsIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAppbmRleCBlMzc2MjViYzMz
NjVhY2VlNDRhODc5ZmNhYzY0ZmRjNzAzOGE0YTM5Li40YzdmNDhhNmNmMDQ3YzMzOTJlZWVkMmYy
YzdhOGY1OGFiODUyMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCkBAIC0xNDMsNyArMTQz
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNh
dGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDg1ZTNkMjRiZWIw
YzIwNGMzMjVhMjY1NmQ5Y2E1NDA0MDg2NmZiNzIuLjRjMWM1ZjkwODdhOTNhN2QxMjViODkzNjQ0
OGYwNGVmZWQwZjcwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtOTIsNiArOTIsNzMgQEAgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0g
ZGVmYXVsdDsKIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3Bl
cmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSBkZWZhdWx0OwogR3JhcGhpY3ND
b250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oR3JhcGhpY3NDb250
ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwogCit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJn
ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBhdXRvIHN0cm9rZUZsYWdz
ID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxh
Z3MpKSB7CisgICAgICAgIHN0cm9rZUNvbG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7CisgICAgICAg
IHN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIHN0cm9rZVBh
dHRlcm4gPSBzdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgIH0KKworICAgIGF1dG8gZmlsbEZsYWdz
ID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBh
dHRlcm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkgewor
ICAgICAgICBmaWxsQ29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7CisgICAgICAgIGZpbGxHcmFkaWVu
dCA9IHN0YXRlLmZpbGxHcmFkaWVudDsKKyAgICAgICAgZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxs
UGF0dGVybjsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKKyAgICAgICAgc2hhZG93T2Zmc2V0ID0gc3RhdGUuc2hh
ZG93T2Zmc2V0OworICAgICAgICBzaGFkb3dCbHVyID0gc3RhdGUuc2hhZG93Qmx1cjsKKyAgICAg
ICAgc2hhZG93Q29sb3IgPSBzdGF0ZS5zaGFkb3dDb2xvcjsKKyAgICAgICAgc2hhZG93UmFkaXVz
TW9kZSA9IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7CisgICAgfQorCisgICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQorICAg
ICAgICBzdHJva2VUaGlja25lc3MgPSBzdGF0ZS5zdHJva2VUaGlja25lc3M7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5n
ZSkpCisgICAgICAgIHRleHREcmF3aW5nTW9kZSA9IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKKwor
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVD
aGFuZ2UpKQorICAgICAgICBzdHJva2VTdHlsZSA9IHN0YXRlLnN0cm9rZVN0eWxlOworCisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkp
CisgICAgICAgIGZpbGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7CisKKyAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgYWxwaGEg
PSBzdGF0ZS5hbHBoYTsKKworICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpCbGVuZE1vZGVDaGFuZ2UgfSkpIHsKKyAgICAgICAgY29tcG9zaXRlT3BlcmF0b3IgPSBzdGF0
ZS5jb21wb3NpdGVPcGVyYXRvcjsKKyAgICAgICAgYmxlbmRNb2RlID0gc3RhdGUuYmxlbmRNb2Rl
OworICAgIH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKKyAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gc3RhdGUu
c2hvdWxkQW50aWFsaWFzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCisgICAgICAgIHNob3VsZFNtb290aEZv
bnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
CisgICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQorICAgICAgICBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworCisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFz
a0NoYW5nZSkpCisgICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2s7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQorICAgICAgICBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKworI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCisgICAgICAgIHVzZURhcmtBcHBl
YXJhbmNlID0gc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CisjZW5kaWYKK30KKwogR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKSBjb25z
dAogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZs
YWdzOwpAQCAtMTM3LDcyICsyMDQsMTkgQEAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3QKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGZsYWdzKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIG1vdmUgdG8gR3JhcGhp
Y3NDb250ZXh0U3RhdGUuCisgICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsK
KwogICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VD
b2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFn
cy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAgbV9zdGF0ZS5zdHJva2VDb2xv
ciA9IHN0YXRlLnN0cm9rZUNvbG9yOwotICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0g
c3RhdGUuc3Ryb2tlR3JhZGllbnQ7Ci0gICAgICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IHN0
YXRlLnN0cm9rZVBhdHRlcm47CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdz
KSkKICAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoc3Ryb2tlRmxhZ3MpOwotICAgIH0KIAog
ICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hh
bmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNB
bnkoZmlsbEZsYWdzKSkgewotICAgICAgICBtX3N0YXRlLmZpbGxDb2xvciA9IHN0YXRlLmZpbGxD
b2xvcjsKLSAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBzdGF0ZS5maWxsR3JhZGllbnQ7
Ci0gICAgICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVybjsKKyAgICBp
ZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKICAgICAgICAgbV9jaGFuZ2VGbGFncy5y
ZW1vdmUoZmlsbEZsYWdzKTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgbV9zdGF0ZS5zaGFkb3dP
ZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9
IHN0YXRlLnNoYWRvd0JsdXI7Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBzdGF0ZS5z
aGFkb3dDb2xvcjsKLSAgICAgICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hh
ZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzID0gc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAg
ICAgICBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVD
aGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7
Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxl
Q2hhbmdlKSkKLSAgICAgICAgbV9zdGF0ZS5maWxsUnVsZSA9IHN0YXRlLmZpbGxSdWxlOwotCi0g
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkp
Ci0gICAgICAgIG1fc3RhdGUuYWxwaGEgPSBzdGF0ZS5hbHBoYTsKLQotICAgIGlmIChmbGFncy5j
b250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFu
Z2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpIHsKLSAgICAgICAg
bV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwotICAg
ICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0No
YW5nZSkpCi0gICAgICAgIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50
aWFsaWFzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHMgPSBzdGF0ZS5zaG91bGRTbW9vdGhGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkK
LSAgICAgICAgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAg
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0gICAgICAgIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1h
c2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0g
ICAgICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHN0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAg
IGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFu
Y2VDaGFuZ2UpKQotICAgICAgICBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNl
RGFya0FwcGVhcmFuY2U7Ci0jZW5kaWYKKyAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3Mg
PSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFp
bnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCisgICAgICAgIG1fY2hhbmdlRmxhZ3MucmVt
b3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOwogCiAgICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxh
Z3MpOwogfQpAQCAtMzc1LDYgKzM4OSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9y
ZSgpCiAgICAgICAgIG1fc3RhY2suY2xlYXIoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgbV9zdGF0ZS5tZXJn
ZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwgZmxhZ3Mp
OworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgZWxsaXBzZUNvbG9yLCBjb25zdCBDb2xvciYgc2hh
ZG93Q29sb3IpCiB7CiAgICAgc2F2ZSgpOwpAQCAtMzk3LDcgKzQxNyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9zdGF0
ZS5zdHJva2VDb2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxs
cHRyOwogICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29s
b3JDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIFNoYWRvd1Jh
ZGl1c01vZGUgcmFkaXVzTW9kZSkKQEAgLTQwNiw3ICs0MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvcgogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgbV9zdGF0ZS5zaGFk
b3dDb2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9IHJhZGl1c01v
ZGU7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d0NoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRv
dygpCkBAIC00MTUsNyArNDM1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93
KCkKICAgICBtX3N0YXRlLnNoYWRvd0JsdXIgPSAwOwogICAgIG1fc3RhdGUuc2hhZG93Q29sb3Ig
PSBDb2xvcigpOwogICAgIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01v
ZGU6OkRlZmF1bHQ7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojpn
ZXRTaGFkb3coRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IpIGNv
bnN0CkBAIC00MzIsNyArNDUyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKICAg
ICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVy
biA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCkBAIC00NDAsNyAr
NDYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRl
cm4+JiYgcGF0dGVybikKICAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwogICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9
IFdURk1vdmUocGF0dGVybik7Ci0gICAgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4p
CkBAIC00NDgsNyArNDY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiAgICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07CiAg
ICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuZmlsbFBhdHRl
cm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFk
aWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KQpAQCAtNDU3LDcgKzQ3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFk
aWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyCiAgICAgbV9zdGF0
ZS5zdHJva2VHcmFkaWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CiAg
ICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICB1cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOworICAgIGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVu
dENoYW5nZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVm
PEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZpbGxHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKQpAQCAtNDY2LDcgKzQ4Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVU
cmFuCiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBt
X3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm07CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgdXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Cisg
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFk
aWVudENoYW5nZSk7CiAgICAgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPwogfQogCkBAIC02
OTksNyArNzE5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24KIHsKICAgICBtX3N0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwogICAgIG1fc3RhdGUuYmxlbmRN
b2RlID0gYmxlbmRNb2RlOwotICAgIHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgIGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZs
b2F0UG9pbnQmIHAxLCBGbG9hdFBvaW50JiBwMiwgZmxvYXQgc3Ryb2tlV2lkdGgsIFN0cm9rZVN0
eWxlIHBlblN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAppbmRleCA4MzA4N2NlNjkwNGM1YmQxMjE5N2E0OWE2OGQxMTVlYThh
NWZmY2Q3Li4wNmI3MTMzOGVmOGQ5MWFkZTQ2YzkyMDlhNTljNzcwOTUyZGNhOTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtMTYwLDYgKzE2MCw4IEBAIHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+
IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpkZWNvZGUoRGVjb2RlciYKICAgICByZXR1cm4ge3sg
Km1vZGUsICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9fTsKIH0KIAorc3RydWN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlOworCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CkBAIC0xOTcsNiArMTk5LDggQEAgc3RydWN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICB9OwogICAgIHVzaW5nIFN0YXRlQ2hhbmdlRmxhZ3Mg
PSBPcHRpb25TZXQ8Q2hhbmdlPjsKIAorICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
OworCiAgICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudDsKICAgICBSZWZQdHI8UGF0
dGVybj4gc3Ryb2tlUGF0dGVybjsKICAgICAKQEAgLTI4MywxMCArMjg3LDEwIEBAIHB1YmxpYzoK
IAogICAgIC8vIENvbnRleHQgU3RhdGUKIAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZs
b2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgdXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsg
bV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSB0aGlja25lc3M7IGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpOyB9CiAgICAg
ZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlj
a25lc3M7IH0KIAotICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpIHsg
bV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0eWxlOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRTdHJva2VT
dHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7IGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSk7IH0KICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc3Ryb2tlU3R5bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTI5OCw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgPSB7IH0pOwogICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KIAotICAgIHZv
aWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZp
bGxSdWxlOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1
bGVDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBt
X3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSk7IH0KICAgICBXaW5kUnVsZSBmaWxsUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7CkBAIC0zMTAsMzQgKzMxNCwzNCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdy
YWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mID0geyB9KTsKICAgICBHcmFkaWVudCog
ZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCk7
IH0KIAotICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXM7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7IH0KKyAgICB2b2lkIHNldFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgbV9zdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIHZv
aWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3RhdGUuc2hv
dWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQorICAgIHZvaWQgc2V0
U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50
aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
QW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KIAot
ICAgIHZvaWQgc2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBt
X3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gc2hvdWxkU21vb3RoRm9udHM7IHVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7
IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMp
IHsgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IHNob3VsZFNtb290aEZvbnRzOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHND
aGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc2hvdWxkU21vb3RoRm9udHM7IH0KIAogICAgIC8vIE5vcm1hbGx5IENHIGVuYWJsZXMg
c3VicGl4ZWwtcXVhbnRpemF0aW9uIGJlY2F1c2UgaXQgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNl
IG9mIGFsaWduaW5nIGdseXBocy4KICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIGhhdmUgdG8gZGlz
YWJsZSB0byB0byBlbnN1cmUgYSBoaWdoLXF1YWxpdHkgb3V0cHV0IG9mIHRoZSBnbHlwaHMuCi0g
ICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpOyB9CisgICAg
dm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpOyB9CiAgICAg
Ym9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsgfQogCi0gICAgdm9pZCBzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpIHsgbV9zdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gcXVhbGl0eTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpOyB9
CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5IHF1YWxpdHkpIHsgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gcXVhbGl0
eTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpOyB9CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eTsgfQogCi0gICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBt
X3N0YXRlLmFscGhhID0gYWxwaGE7IHVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpBbHBoYUNoYW5nZSk7IH0KKyAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7
IG1fc3RhdGUuYWxwaGEgPSBhbHBoYTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKTsgfQogICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5hbHBoYTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6
Tm9ybWFsKTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOyB9CiAgICAgQmxlbmRNb2RlIGJs
ZW5kTW9kZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYmxlbmRNb2RlOyB9CiAK
LSAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsg
bV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFuY2VNYXNrOyB1cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2Up
OyB9CisgICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNr
KSB7IG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFzazsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNr
Q2hhbmdlKTsgfQogICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9CiAKLSAgICB2b2lkIHNldFRleHREcmF3aW5nTW9k
ZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKSB7IG1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0g
bW9kZTsgdXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSk7IH0KKyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncyBtb2RlKSB7IG1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0gbW9kZTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNo
YW5nZSk7IH0KICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZTsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29s
b3ImLCBTaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCk7CkBAIC0z
NDksMTMgKzM1MywxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQog
CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICB2b2lkIHNldFVzZURhcmtBcHBl
YXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5j
ZSA9IHVzZURhcmtBcHBlYXJhbmNlOyB1cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UpOyB9CisgICAgdm9pZCBzZXRVc2VEYXJr
QXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVh
cmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNl
RGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNl
OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
OworCisgICAgLy8gQ2FsbGVkICphZnRlciogYW55IGNoYW5nZSB0byBHcmFwaGljc0NvbnRleHRT
dGF0ZTsgZ2VuZXJhbGx5IHVzZWQgdG8gcHJvcGFnYXRlIGNoYW5nZXMKKyAgICAvLyB0byB0aGUg
cGxhdGZvcm0gY29udGV4dCdzIHN0YXRlLgorICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2F2
ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggYjAzODQ5YjYwM2YzYjgwZTM0YWU5OGJjMzgyMmU0NWM3ZmM2OTk2NC4uOWM4NzM2
ZTE1NDQxZmI2MjhlNzcwNjU4ZjU3NjI4NDhiNmFmZDM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtNTUs
NyArNTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5j
RGVjb2RlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25z
ID09IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6SW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5j
RGVjb2RlczsgfQogICAgIGJvb2wgZGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRp
b25SZWFzb25zOjpEZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQ7IH0KIAotICAgIHZvaWQgdXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncykgZmluYWwgeyB9CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzKSBmaW5hbCB7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQogICAgIHZv
aWQgc2V0SXNBY2NlbGVyYXRlZENvbnRleHQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKaW5kZXggYzViOTc0OTJmYWNiNjUxM2Y2NDI1NjZiOGM0ZmVkMTQyMzkz
ODZkMC4uMTY1YzZkYmZlMjAyMjMxNzM5M2ZlNTQ2N2I5MjIwMjZiNTJhYTg5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIENhaXJvOjp0cmFu
c2xhdGUoKnRoaXMsIHgsIHkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp1cGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBpZiAoZmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKQogICAgICAg
ICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCmluZGV4IDFlY2YwMGE0NTEwNzQwMzU4
OGZjNzkzNGQyMmRmMDk0ZTlkMGYyZjMuLjVkNGFhMGI1YTczMjkyMTExZjIyNDI3ZGM2YzBhYmI2
NWM0MzBlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBH
cmFwaGljc0NvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKLSAg
ICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyk7CiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAg
dm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKaW5kZXggYjY1NmYxMzY4MTYyNDdhNDZhY2RjZGE1OTliYjZkNDFkZDgwOTNhOS4u
YjVmNGUyYTFmYzQ1YzBlMWU3MDgxY2I1YjM5YTBiODQyMzlkNjg2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIEdyYXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRl
eHRDRyhDR0NvbnRleHRSZWYgY2dDb250ZXh0KQogCiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZShjZ0NvbnRleHQpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUg
Y29udGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KLSAgICB1cGRhdGVTdGF0ZSht
X3N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVRoaWNrbmVzc0NoYW5nZSB9KTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCB7IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSB9KTsKICAgICBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb3Jl
SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dDb250ZXh0R2V0SW50ZXJwb2xhdGlvblF1YWxpdHkocGxh
dGZvcm1Db250ZXh0KCkpKTsKIH0KIApAQCAtMTA3NSw3ICsxMDc1LDcgQEAgc3RhdGljIHZvaWQg
c2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSYKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQs
IENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3Io
Y29sb3IpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6dXBkYXRlU3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCmluZGV4IGY5NjZlMjc5YWI4NmY1OGNmZGRhYTEzMTgz
MzhkMTQwYTRmYWNiOTQuLmZjNDBhOWY2MWRkYzljMjJiODY1Y2VhYjM4NjM2NzZlZjg1YjYxYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
c3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cykgZmluYWw7CiAKICNpZiBPUyhXSU5ET1dTKQogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZSogZGVwcmVjYXRlZFByaXZhdGVDb250ZXh0KCkgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggODU3NjFhMjdkMDlm
YzA0MWJhYjA4NmU1ZWI3MDFiYWJlN2Q0MTE4Yy4uZTM2NmZjNmE0YTY2NmMwZTgzZTc2MTMwNDlh
MTE4NDNjMzY1NWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRh
dGVGaWxsQ29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhCiAgICAg
ICAgIG5ld1N0YXRlLmZpbGxHcmFkaWVudCA9IG5ld0dyYWRpZW50OwogICAgIGlmIChuZXdQYXR0
ZXJuKQogICAgICAgICBuZXdTdGF0ZS5maWxsUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9v
d25lci51cGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENv
bG9yQ2hhbmdlIH0pOworICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSB9KTsKICAgICBtX2N1cnJlbnRTdGF0
ZS5maWxsU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKIH0KIApAQCAtMjAxLDcgKzIwMSw3IEBAIHZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcihjb25zdCBDb2xvciYgbmV3
Q29sb3IsIEdyYWRpZW50KiBuZXdHCiAgICAgICAgIG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50ID0g
bmV3R3JhZGllbnQ7CiAgICAgaWYgKG5ld1BhdHRlcm4pCiAgICAgICAgIG5ld1N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIudXBkYXRlU3RhdGUobmV3U3RhdGUs
IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlIH0pOworICAgIG1fb3du
ZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlIH0pOwogICAgIG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0g
bmV3Q29sb3I7CiB9CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRl
cjo6dXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFk
bwogICAgIH0KICAgICBpZiAoc3RhdGVDaGFuZ2VGbGFncy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX293bmVyLnVwZGF0ZVN0YXRlKG5ld1N0YXRlLCBzdGF0ZUNoYW5nZUZsYWdz
KTsKKyAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0YXRlLCBzdGF0ZUNoYW5nZUZsYWdz
KTsKIAogICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQgPSBzaGFkb3dPZmZzZXQ7CiAg
ICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIgPSBzaGFkb3dCbHVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDVmMzZhOWMzYjcyZGE2MTljMjE4YmE4
MmY2ZjE4MGJkYmExNTIwOWIuLjgwMzUwODMxMTY0Mzg1NDA2NmZmMDgyNjZkNTc5YWI1OWU0MjFk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OnN0YXRlKCkg
Y29uc3QKICAgICByZXR1cm4gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsKIH0K
IAotdm9pZCBSZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3Zv
aWQgUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiB7CiAg
ICAgY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UuYWNjdW11bGF0ZShzdGF0ZSwgZmxhZ3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMWQ3Zjk4ZDUzODkz
YWQ5NjgwOWJkMzNkN2IwMDk0NGU3ZWMwNTIyOC4uMDYwNWQ2ZjI0YmY0NTMyNDdhNGE4ZTg4ZmUz
YmRjMjYwNzc2MDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBA
IC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCmluZGV4IDcyNWI2ZjUyODIwOGExNDAzYjY2MTE5MzAzZTU1MDJlMzczNmQz
NmQuLjk5MGM3MWZhNDc0MzBmNTkzZTJjMjRjMGI3OWQ3OTU4YzQ4ZjdmZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIoUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5kTGlzdCkKICAgICBtX3N0YXRlU3RhY2su
YXBwZW5kKHsgeyB9LCB7IH0sIEZsb2F0UmVjdDo6aW5maW5pdGVSZWN0KCkgfSk7CiB9CiAKLXZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBm
bGFncykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VUaGlja25l
c3NDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxmbG9hdD4g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oCmluZGV4IDc3YWU1MGRmMDQ5MmQzYWJmODhmZGY3YzVjMzM5OTcyNzdiYmM1YmEuLmFhOTRk
ZTg4NjI3MjU1YmQ2NTA0NzA3MmY1Y2EyYjlkZmQzY2M4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTQxLDcgKzQxLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3Jt
Q29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQg
dXBkYXRlU3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChXZWJDb3JlOjpMaW5lQ2FwKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IFdlYkNvcmU6OkRhc2hBcnJheSYsIGZsb2F0KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IGM5NzFhMWQ2OTBkOTQ1
YjMxMDliNGUwZDFiMTVmYTgwMTE1MDMyM2IuLmQ0ODBkYjczZDQzMjI1NWU5MmUzZDBjNzk5ZTFk
OTRkZDcyMzU0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNjQ3LDcg
KzY0Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OnN1cHBvcnRzVHJhbnNwYXJl
bmN5TGF5ZXJzKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQ6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBo
aWNzQ29udGV4dERpcmVjdDJEOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdz
KQogewogICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25l
c3NDaGFuZ2UpCiAgICAgICAgIERpcmVjdDJEOjpTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKG1f
cGxhdGZvcm1Db250ZXh0LCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA0MTljZTc2NDVjNjBkYjlkN2Ey
NjY1MDc3NDEyNGU3ZmQ4MjdhN2EuLmU5NTg0NGJlOGQ5OTAxOWQ4NzUyZTQ4MjVhMTI4ODU3OTNh
YmY0ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KKworICAgICAgICBCb3JkZXJzIGFyZSBub3QgZHJhd24gd2hlbiB1c2luZyBC
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzA5NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNjU3MzMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIEFkZCBhIHRlc3Qg
Zm9yIGxpbmUgZHJhd2luZy4KKwogMjAyMS0xMC0xMSAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlu
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBGaXgg
YnVpbGQgZm9yIERlYmlhbiAxMCAoQnVzdGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0VGVzdHNDRy5jcHAKaW5kZXggMzQ5YjY1NjU4NzhmYTYwYTE4Y2M3YTUzZjE2MmYz
MTgyMGU1NzYwOS4uNjAzYmQ3NWY1MTY1NWNmY2VjOWEzYjljM2Q1MTAxZGYxYzMxNWU2MCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCkBAIC00Niwx
MSArNDYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIERpc3BsYXlMaXN0OwogY29uc3RleHByIENHRmxv
YXQgY29udGV4dFdpZHRoID0gMTsKIGNvbnN0ZXhwciBDR0Zsb2F0IGNvbnRleHRIZWlnaHQgPSAx
OwogCi1URVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWNCaWZ1cmNhdGVk
Q29udGV4dCkKK1RFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBCYXNpYykKIHsK
ICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICAg
ICBhdXRvIHByaW1hcnlDR0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShu
dWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgs
IGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkpOwotICAgIGF1dG8gc2Vjb25kYXJ5Q0dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0
ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dENHIHByaW1h
cnlDb250ZXh0KHByaW1hcnlDR0NvbnRleHQuZ2V0KCkpOwogCkBAIC04OCw3ICs4Nyw3IEBAIFRF
U1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBCYXNpY0JpZnVyY2F0ZWRDb250ZXh0
KQogICAgIEVYUEVDVF9UUlVFKHNhd0ZpbGxSZWN0KTsKIH0KIAotVEVTVChCaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0VGVzdHMsIFRleHRJbkJpZnVyY2F0ZWRDb250ZXh0KQorVEVTVChCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIFRleHQpCiB7CiAgICAgSW5NZW1vcnlEaXNwbGF5TGlz
dCBwcmltYXJ5RGlzcGxheUxpc3Q7CiAgICAgUmVjb3JkZXJJbXBsIHByaW1hcnlDb250ZXh0KHBy
aW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0KSwgeyB9KTsKQEAgLTE5NCw2ICsxOTMsMzIgQEAgVEVTVChCaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0VGVzdHMsIERyYXdHcmFkaWVudEltYWdlKQogICAgIEVYUEVDVF9FUShzZWNv
bmRhcnlEYXRhWzJdLCAwKTsKIH0KIAorVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVz
dHMsIEJvcmRlcnMpCit7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7CisgICAgYXV0byBwcmltYXJ5Q0dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0
ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKworICAgIEdyYXBoaWNzQ29udGV4dENHIHByaW1h
cnlDb250ZXh0KHByaW1hcnlDR0NvbnRleHQuZ2V0KCkpOworCisgICAgSW5NZW1vcnlEaXNwbGF5
TGlzdCBkaXNwbGF5TGlzdDsKKyAgICBSZWNvcmRlckltcGwgc2Vjb25kYXJ5Q29udGV4dChkaXNw
bGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0
KSwgeyB9KTsKKworICAgIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4KHByaW1hcnlDb250
ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKKworICAgIGN0eC5zZXRTdHJva2VDb2xvcihDb2xvcjo6
cmVkKTsKKyAgICBjdHguc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGN0eC5zZXRT
dHJva2VUaGlja25lc3MoMTApOworICAgIGN0eC5kcmF3TGluZSh7IDAsIDAgfSwgeyBjb250ZXh0
V2lkdGgsIDAgfSk7CisKKyAgICAvLyBUaGUgcHJpbWFyeSBjb250ZXh0IHNob3VsZCBoYXZlIHJl
ZCBwaXhlbHMuCisgICAgQ0dDb250ZXh0Rmx1c2gocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7Cisg
ICAgdWludDhfdCogcHJpbWFyeURhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oQ0dCaXRtYXBD
b250ZXh0R2V0RGF0YShwcmltYXJ5Q0dDb250ZXh0LmdldCgpKSk7CisgICAgRVhQRUNUX0VRKHBy
aW1hcnlEYXRhWzBdLCAyNTUpOworICAgIEVYUEVDVF9FUShwcmltYXJ5RGF0YVsxXSwgMCk7Cisg
ICAgRVhQRUNUX0VRKHByaW1hcnlEYXRhWzJdLCAwKTsKKyAgICBFWFBFQ1RfRVEocHJpbWFyeURh
dGFbM10sIDI1NSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
IC8vIFVTRShDRykK
</data>

          </attachment>
      

    </bug>

</bugzilla>