<?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>169297</bug_id>
          
          <creation_ts>2017-03-07 12:13:24 -0800</creation_ts>
          <short_desc>[Content Extensions] Rename &quot;Domain&quot; to &quot;Condition&quot; where appropriate</short_desc>
          <delta_ts>2017-03-07 12:54:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1284470</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-07 12:13:24 -0800</bug_when>
    <thetext>[Content Extensions] Rename &quot;Domain&quot; to &quot;Condition&quot; where appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284481</commentid>
    <comment_count>1</comment_count>
      <attachid>303697</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-07 12:22:15 -0800</bug_when>
    <thetext>Created attachment 303697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284497</commentid>
    <comment_count>2</comment_count>
      <attachid>303697</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-07 12:40:54 -0800</bug_when>
    <thetext>Comment on attachment 303697
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284505</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-07 12:54:24 -0800</bug_when>
    <thetext>http://trac.webkit.org/r213533</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303697</attachid>
            <date>2017-03-07 12:22:15 -0800</date>
            <delta_ts>2017-03-07 12:40:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169297-20170307122213.patch</filename>
            <type>text/plain</type>
            <size>102652</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE3LTAzLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gUmVuYW1lICJEb21haW4iIHRvICJDb25kaXRpb24iIHdoZXJlIGFwcHJvcHJp
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjky
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBy
MTg0MTE2IEkgYWRkZWQgdGhlIGFiaWxpdHkgZm9yIGEgY29udGVudCBibG9ja2VyIGF1dGhvciB0
byBhZGQgY29uZGl0aW9ucyB0byB0aGUgdHJpZ2dlcnMsCisgICAgICAgIGlmLWRvbWFpbiBhbmQg
dW5sZXNzLWRvbWFpbiB3aGljaCBsb29rIGF0IHRoZSBkb21haW4gb2YgdGhlIG1haW4gZG9jdW1l
bnQgVVJMLgorICAgICAgICBJIHBsYW4gdG8gYWRkIG1vcmUgY29uZGl0aW9ucyBzb29uIHRvIHJ1
biByZWdleGVzIG9uIHRoZSBlbnRpcmUgVVJMLCBidXQgdG8gbWFrZSB0aGF0IHBhdGNoIG1vcmUK
KyAgICAgICAgbWFuYWdlYWJsZSwgSSB0b29rIHRoZSBub24tYmVoYXZpb3ItY2hhbmdpbmcgcGFy
dHMgYW5kIHB1dCB0aGVtIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJl
aGF2aW9yIGV4Y2VwdCBzb21lIGVycm9yIG1lc3NhZ2VzIHdlcmUgbWFkZSBtb3JlIGdlbmVyaWMu
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24u
aDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjpDb250
ZW50RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0
ZUNvbmRpdGlvbkNhY2hlSWZOZWVkZWQpOgorICAgICAgICBQYXNzIHRoZSBtYWluIGRvY3VtZW50
IFVSTCBpbnN0ZWFkIG9mIGp1c3QgdGhlIGRvbWFpbi4gIE5vIGNoYW5nZSBpbiBiZWhhdmlvciB5
ZXQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bjo6Y2FjaGVkQ29uZGl0aW9uZWRBY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b246OnBvcHVsYXRlRG9tYWluQ2FjaGVJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbjo6Y2FjaGVkRG9tYWluQWN0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbjo6dW5pdmVyc2FsQWN0aW9uc1dpdGhEb21haW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbjo6dW5pdmVyc2FsQWN0
aW9uc1dpdGhvdXRDb25kaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJzYWxBY3Rpb25zV2l0aG91dERvbWFpbnMpOiBE
ZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2VyaWFsaXpl
QWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1
bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29t
cGlsZXIuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJy
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnRlbnRFeHRl
bnNpb25FcnJvckNhdGVnb3J5KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uRXJyb3IuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpn
ZXRTdHJpbmdMaXN0KToKKyAgICAgICAgRG9uJ3QgcGFzcyB0aGUgZXJyb3IgdHlwZSBhcyBhIHBh
cmFtZXRlci4gIEl0J3MgYWx3YXlzIEpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXREb21haW5MaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+VHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlckhhc2g6Omhhc2gpOgorICAgICAgICBVc2UgYml0
d2lzZSB4b3IgaW5zdGVhZCBvZiBiaXR3aXNlIG9yIHRvIGhhdmUgZmV3ZXIgaGFzaCBjb2xsaXNp
b25zLgorICAgICAgICBBbHNvLCBiZWZvcmUgd2Ugd2VyZSBhY2NpZGVudGFsbHkgZG9pbmcgdGhl
IHNhbWUgaGFzaCBvcGVyYXRpb24gaGVyZSBmb3IgSWZEb21haW4gYW5kIFVubGVzc0RvbWFpbi4K
KyAgICAgICAgVGhpcyBjYXVzZWQgdW5uZWNlc3NhcnkgaGFzaCBjb2xsaXNpb25zLiAgVGhpcyBp
cyBmaXhlZCwgYnV0IHNob3VsZCBub3QgY2hhbmdlIGFueSBiZWhhdmlvci4KKyAgICAgICAgKiBj
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0
aW9uc0ZvclJlc291cmNlTG9hZCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0
ZWNvZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjppbnN0cnVjdGlv
blNpemVXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRl
Y29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZUNvbXBpbGVyOjplbWl0QXBwZW5kQWN0aW9uKToKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjptYXRjaGVzQ29uZGl0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRBcHBl
bmRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVj
b2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6
YWN0aW9uc01hdGNoaW5nRXZlcnl0aGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0V2l0aENvbmRpdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXI6OmludGVycHJldCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
bWF0Y2hlc0RvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0V2l0aERvbWFpbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oOgorCiAyMDE3LTAzLTA2ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVm
YWN0b3IgQ29udGVudEV4dGVuc2lvblBhcnNlcgpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgJ
KHJldmlzaW9uIDIxMzM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ29tcGlsZWRDb250ZW50RXh0ZQogcHVibGljOgogICAg
IHZpcnR1YWwgfkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbigpOwogCi0gICAgdmlydHVhbCBjb25z
dCBERkFCeXRlY29kZSogZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZUxlbmd0
aCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IERGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0
aERvbWFpbnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpbHRl
cnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgY29u
c3QgREZBQnl0ZWNvZGUqIGRvbWFpbkZpbHRlcnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGRvbWFpbkZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IERGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0
Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
REZBQnl0ZWNvZGUqIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBERkFCeXRlY29kZSogY29uZGl0aW9uZWRG
aWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBjb25kaXRp
b25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0
IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dW5zaWduZWQgYWN0aW9uc0xlbmd0aCgpIGNvbnN0ID0gMDsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uLmNwcAko
cmV2aXNpb24gMjEzMzc3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDIwICs0NSwyMCBAQCBDb250
ZW50RXh0ZW5zaW9uOjpDb250ZW50RXh0ZW5zaW9uKGNvbnN0CiAgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKICAgICAsIG1fY29tcGlsZWRFeHRlbnNpb24oV1RGTW92ZShjb21waWxlZEV4
dGVuc2lvbikpCiB7Ci0gICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB3aXRob3V0RG9tYWlucyht
X2NvbXBpbGVkRXh0ZW5zaW9uLT5maWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZSgpLCBtX2Nv
bXBpbGVkRXh0ZW5zaW9uLT5maWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZUxlbmd0aCgpKTsK
LSAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhEb21haW5zKG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmZp
bHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3RoKCkpOwotICAgIGZvciAodWludDY0X3QgYWN0
aW9uIDogd2l0aG91dERvbWFpbnMuYWN0aW9uc01hdGNoaW5nRXZlcnl0aGluZygpKSB7CisgICAg
REZBQnl0ZWNvZGVJbnRlcnByZXRlciB3aXRob3V0Q29uZGl0aW9ucyhtX2NvbXBpbGVkRXh0ZW5z
aW9uLT5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZSgpLCBtX2NvbXBpbGVkRXh0ZW5z
aW9uLT5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBERkFC
eXRlY29kZUludGVycHJldGVyIHdpdGhDb25kaXRpb25zKG1fY29tcGlsZWRFeHRlbnNpb24tPmZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkpOworICAgIGZvciAodWludDY0X3QgYWN0
aW9uIDogd2l0aG91dENvbmRpdGlvbnMuYWN0aW9uc01hdGNoaW5nRXZlcnl0aGluZygpKSB7CiAg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uKSA9PSBhY3Rpb24pOwot
ICAgICAgICBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0RG9tYWlucy5hcHBlbmQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGFjdGlvbikpOworICAgICAgICBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0
Q29uZGl0aW9ucy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikpOwogICAgIH0K
LSAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IHdpdGhEb21haW5zLmFjdGlvbnNNYXRjaGluZ0V2
ZXJ5dGhpbmcoKSkgewotICAgICAgICBBU1NFUlQoKGFjdGlvbiAmIH5JZkRvbWFpbkZsYWcpID09
IHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pKTsKLSAgICAgICAgbV91bml2ZXJzYWxBY3Rp
b25zV2l0aERvbWFpbnMuYXBwZW5kKGFjdGlvbik7CisgICAgZm9yICh1aW50NjRfdCBhY3Rpb24g
OiB3aXRoQ29uZGl0aW9ucy5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkpIHsKKyAgICAgICAg
QVNTRVJUKChhY3Rpb24gJiB+SWZDb25kaXRpb25GbGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0aW9uKSk7CisgICAgICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zLmFw
cGVuZChhY3Rpb24pOwogICAgIH0KICAgICAKICAgICBjb21waWxlR2xvYmFsRGlzcGxheU5vbmVT
dHlsZVNoZWV0KCk7Ci0gICAgbV91bml2ZXJzYWxBY3Rpb25zV2l0aG91dERvbWFpbnMuc2hyaW5r
VG9GaXQoKTsKLSAgICBtX3VuaXZlcnNhbEFjdGlvbnNXaXRoRG9tYWlucy5zaHJpbmtUb0ZpdCgp
OworICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLnNocmlua1RvRml0KCk7
CisgICAgbV91bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMuc2hyaW5rVG9GaXQoKTsKIH0K
IAogdWludDMyX3QgQ29udGVudEV4dGVuc2lvbjo6ZmluZEZpcnN0SWdub3JlUHJldmlvdXNSdWxl
cygpIGNvbnN0CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbjo6Y29tcGls
ZUdsb2JhbERpc3AKICAgICB9OwogICAgIAogICAgIFN0cmluZ0J1aWxkZXIgY3NzOwotICAgIGZv
ciAodWludDMyX3QgdW5pdmVyc2FsQWN0aW9uTG9jYXRpb24gOiBtX3VuaXZlcnNhbEFjdGlvbnNX
aXRob3V0RG9tYWlucykgeworICAgIGZvciAodWludDMyX3QgdW5pdmVyc2FsQWN0aW9uTG9jYXRp
b24gOiBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucykgewogICAgICAgICBpZiAo
aW5HbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQodW5pdmVyc2FsQWN0aW9uTG9jYXRpb24pKSB7
CiAgICAgICAgICAgICBpZiAoIWNzcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY3NzLmFw
cGVuZCgnLCcpOwpAQCAtMTEzLDQxICsxMTMsNDIgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uOjpj
b21waWxlR2xvYmFsRGlzcAogICAgICAgICBtX2dsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldCA9
IG51bGxwdHI7CiAKICAgICAvLyBUaGVzZSBhY3Rpb25zIGRvbid0IG5lZWQgdG8gYmUgYXBwbGll
ZCBpbmRpdmlkdWFsbHkgYW55IG1vcmUuIFRoZXkgd2lsbCBhbGwgYmUgYXBwbGllZCB0byBldmVy
eSBwYWdlIGFzIGEgcHJlY29tcGlsZWQgc3R5bGUgc2hlZXQuCi0gICAgbV91bml2ZXJzYWxBY3Rp
b25zV2l0aG91dERvbWFpbnMucmVtb3ZlQWxsTWF0Y2hpbmcoaW5HbG9iYWxEaXNwbGF5Tm9uZVN0
eWxlU2hlZXQpOworICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLnJlbW92
ZUFsbE1hdGNoaW5nKGluR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KTsKIH0KIAotdm9pZCBD
b250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZURvbWFpbkNhY2hlSWZOZWVkZWQoY29uc3QgU3RyaW5n
JiBkb21haW4pCit2b2lkIENvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJ
Zk5lZWRlZChjb25zdCBVUkwmIHRvcFVSTCkKIHsKKyAgICBTdHJpbmcgZG9tYWluID0gdG9wVVJM
Lmhvc3QoKTsKICAgICBpZiAobV9jYWNoZWREb21haW4gIT0gZG9tYWluKSB7Ci0gICAgICAgIERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIobV9jb21waWxlZEV4dGVuc2lvbi0+ZG9t
YWluRmlsdGVyc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmRvbWFpbkZpbHRlcnNC
eXRlY29kZUxlbmd0aCgpKTsKKyAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnBy
ZXRlcihtX2NvbXBpbGVkRXh0ZW5zaW9uLT5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZSgpLCBt
X2NvbXBpbGVkRXh0ZW5zaW9uLT5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpKTsK
ICAgICAgICAgY29uc3QgdWludDE2X3QgYWxsTG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyA9IExv
YWRUeXBlTWFzayB8IFJlc291cmNlVHlwZU1hc2s7CiAgICAgICAgIGF1dG8gZG9tYWluQWN0aW9u
cyA9IGludGVycHJldGVyLmludGVycHJldChkb21haW4udXRmOCgpLCBhbGxMb2FkVHlwZXNBbmRS
ZXNvdXJjZVR5cGVzKTsKICAgICAgICAgCi0gICAgICAgIG1fY2FjaGVkRG9tYWluQWN0aW9ucy5j
bGVhcigpOworICAgICAgICBtX2NhY2hlZENvbmRpdGlvbmVkQWN0aW9ucy5jbGVhcigpOwogICAg
ICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IGRvbWFpbkFjdGlvbnMpCi0gICAgICAgICAgICBt
X2NhY2hlZERvbWFpbkFjdGlvbnMuYWRkKGFjdGlvbik7CisgICAgICAgICAgICBtX2NhY2hlZENv
bmRpdGlvbmVkQWN0aW9ucy5hZGQoYWN0aW9uKTsKICAgICAgICAgCi0gICAgICAgIG1fY2FjaGVk
VW5pdmVyc2FsRG9tYWluQWN0aW9ucy5jbGVhcigpOwotICAgICAgICBmb3IgKHVpbnQ2NF90IGFj
dGlvbiA6IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhEb21haW5zKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKChhY3Rpb24gJiB+SWZEb21haW5GbGFnKSA9PSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oYWN0aW9uKSwgIlVuaXZlcnNhbCBhY3Rpb25zIHdpdGggZG9tYWlucyBzaG91bGQg
bm90IGhhdmUgZmxhZ3MuIik7Ci0gICAgICAgICAgICBpZiAoISEoYWN0aW9uICYgSWZEb21haW5G
bGFnKSA9PSBtX2NhY2hlZERvbWFpbkFjdGlvbnMuY29udGFpbnMoYWN0aW9uKSkKLSAgICAgICAg
ICAgICAgICBtX2NhY2hlZFVuaXZlcnNhbERvbWFpbkFjdGlvbnMuYXBwZW5kKHN0YXRpY19jYXN0
PHVpbnQzMl90PihhY3Rpb24pKTsKKyAgICAgICAgbV9jYWNoZWRVbml2ZXJzYWxDb25kaXRpb25l
ZEFjdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBtX3VuaXZl
cnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucykgeworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KChhY3Rpb24gJiB+SWZDb25kaXRpb25GbGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0
aW9uKSwgIlVuaXZlcnNhbCBhY3Rpb25zIHdpdGggZG9tYWlucyBzaG91bGQgbm90IGhhdmUgZmxh
Z3MuIik7CisgICAgICAgICAgICBpZiAoISEoYWN0aW9uICYgSWZDb25kaXRpb25GbGFnKSA9PSBt
X2NhY2hlZENvbmRpdGlvbmVkQWN0aW9ucy5jb250YWlucyhhY3Rpb24pKQorICAgICAgICAgICAg
ICAgIG1fY2FjaGVkVW5pdmVyc2FsQ29uZGl0aW9uZWRBY3Rpb25zLmFwcGVuZChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYWN0aW9uKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9jYWNoZWRVbml2ZXJz
YWxEb21haW5BY3Rpb25zLnNocmlua1RvRml0KCk7CisgICAgICAgIG1fY2FjaGVkVW5pdmVyc2Fs
Q29uZGl0aW9uZWRBY3Rpb25zLnNocmlua1RvRml0KCk7CiAgICAgICAgIG1fY2FjaGVkRG9tYWlu
ID0gZG9tYWluOwogICAgIH0KIH0KIAotY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0
aW9ucyYgQ29udGVudEV4dGVuc2lvbjo6Y2FjaGVkRG9tYWluQWN0aW9ucyhjb25zdCBTdHJpbmcm
IGRvbWFpbikKK2NvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIENvbnRlbnRF
eHRlbnNpb246OmNhY2hlZENvbmRpdGlvbmVkQWN0aW9ucyhjb25zdCBVUkwmIHRvcFVSTCkKIHsK
LSAgICBwb3B1bGF0ZURvbWFpbkNhY2hlSWZOZWVkZWQoZG9tYWluKTsKLSAgICByZXR1cm4gbV9j
YWNoZWREb21haW5BY3Rpb25zOworICAgIHBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCh0
b3BVUkwpOworICAgIHJldHVybiBtX2NhY2hlZENvbmRpdGlvbmVkQWN0aW9uczsKIH0KIAotY29u
c3QgVmVjdG9yPHVpbnQzMl90PiYgQ29udGVudEV4dGVuc2lvbjo6dW5pdmVyc2FsQWN0aW9uc1dp
dGhEb21haW5zKGNvbnN0IFN0cmluZyYgZG9tYWluKQorY29uc3QgVmVjdG9yPHVpbnQzMl90PiYg
Q29udGVudEV4dGVuc2lvbjo6dW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKGNvbnN0IFVS
TCYgdG9wVVJMKQogewotICAgIHBvcHVsYXRlRG9tYWluQ2FjaGVJZk5lZWRlZChkb21haW4pOwot
ICAgIHJldHVybiBtX2NhY2hlZFVuaXZlcnNhbERvbWFpbkFjdGlvbnM7CisgICAgcG9wdWxhdGVD
b25kaXRpb25DYWNoZUlmTmVlZGVkKHRvcFVSTCk7CisgICAgcmV0dXJuIG1fY2FjaGVkVW5pdmVy
c2FsQ29uZGl0aW9uZWRBY3Rpb25zOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDIxMzM3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsOSArNDYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uJiBjb21waWxlZEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGlsZWRFeHRl
bnNpb24uZ2V0KCk7IH0KICAgICBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25l
U3R5bGVTaGVldCgpOwotICAgIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMm
IGNhY2hlZERvbWFpbkFjdGlvbnMoY29uc3QgU3RyaW5nJiBkb21haW4pOwotICAgIGNvbnN0IFZl
Y3Rvcjx1aW50MzJfdD4mIHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0RG9tYWlucygpIHsgcmV0dXJu
IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXREb21haW5zOyB9Ci0gICAgY29uc3QgVmVjdG9yPHVp
bnQzMl90PiYgdW5pdmVyc2FsQWN0aW9uc1dpdGhEb21haW5zKGNvbnN0IFN0cmluZyYgZG9tYWlu
KTsKKyAgICBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiBjYWNoZWRDb25k
aXRpb25lZEFjdGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpOworICAgIGNvbnN0IFZlY3Rvcjx1aW50
MzJfdD4mIHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucygpIHsgcmV0dXJuIG1fdW5p
dmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQz
Ml90PiYgdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKGNvbnN0IFVSTCYgdG9wVVJMKTsK
IAogcHJpdmF0ZToKICAgICBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgUmVmPENvbXBpbGVkQ29udGVudEV4dGVuc2lvbj4mJik7CkBAIC02MSwxMiArNjEsMTIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVHbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoKTsK
IAogICAgIFN0cmluZyBtX2NhY2hlZERvbWFpbjsKLSAgICB2b2lkIHBvcHVsYXRlRG9tYWluQ2Fj
aGVJZk5lZWRlZChjb25zdCBTdHJpbmcmIGRvbWFpbik7Ci0gICAgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6QWN0aW9ucyBtX2NhY2hlZERvbWFpbkFjdGlvbnM7Ci0gICAgVmVjdG9yPHVpbnQzMl90
PiBtX2NhY2hlZFVuaXZlcnNhbERvbWFpbkFjdGlvbnM7CisgICAgdm9pZCBwb3B1bGF0ZUNvbmRp
dGlvbkNhY2hlSWZOZWVkZWQoY29uc3QgVVJMJiB0b3BVUkwpOworICAgIERGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXI6OkFjdGlvbnMgbV9jYWNoZWRDb25kaXRpb25lZEFjdGlvbnM7CisgICAgVmVjdG9y
PHVpbnQzMl90PiBtX2NhY2hlZFVuaXZlcnNhbENvbmRpdGlvbmVkQWN0aW9uczsKIAotICAgIFZl
Y3Rvcjx1aW50MzJfdD4gbV91bml2ZXJzYWxBY3Rpb25zV2l0aG91dERvbWFpbnM7Ci0gICAgVmVj
dG9yPHVpbnQ2NF90PiBtX3VuaXZlcnNhbEFjdGlvbnNXaXRoRG9tYWluczsKKyAgICBWZWN0b3I8
dWludDMyX3Q+IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zOworICAgIFZlY3Rv
cjx1aW50NjRfdD4gbV91bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAyMTMzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsOSAr
MTI1LDkgQEAgc3RhdGljIFZlY3Rvcjx1bnNpZ25lZD4gc2VyaWFsaXplQWN0aW9ucwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGlnbm9yZVByZXZpb3VzUnVsZUFjdGlvbnNNYXAuY2xlYXIo
KTsKIAotICAgICAgICAvLyBBbnl0aGluZyB3aXRoIGRvbWFpbiBpcyBqdXN0IHB1c2hlZC4KLSAg
ICAgICAgLy8gV2UgY291bGQgdHJ5IHRvIG1lcmdlIGRvbWFpbnMgYnV0IHRoYXQgY2FzZSBpcyBu
b3QgY29tbW9uIGluIHByYWN0aWNlLgotICAgICAgICBpZiAoIXJ1bGUudHJpZ2dlcigpLmRvbWFp
bnMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEFueXRoaW5nIHdpdGggY29uZGl0aW9uIGlzIGp1
c3QgcHVzaGVkLgorICAgICAgICAvLyBXZSBjb3VsZCB0cnkgdG8gbWVyZ2UgY29uZGl0aW9ucyBi
dXQgdGhhdCBjYXNlIGlzIG5vdCBjb21tb24gaW4gcHJhY3RpY2UuCisgICAgICAgIGlmICghcnVs
ZS50cmlnZ2VyKCkuY29uZGl0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGFjdGlvbkxv
Y2F0aW9ucy5hcHBlbmQoYWN0aW9ucy5zaXplKCkpOwogCiAgICAgICAgICAgICBpZiAoYWN0aW9u
VHlwZSA9PSBBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yKQpAQCAtMjIyLDE1ICsy
MjIsMTUgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RQogICAgIExP
R19MQVJHRV9TVFJVQ1RVUkVTKGFjdGlvbnMsIGFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZihT
ZXJpYWxpemVkQWN0aW9uQnl0ZSkpOwogICAgIGFjdGlvbnMuY2xlYXIoKTsKIAotICAgIFVuaXZl
cnNhbEFjdGlvblNldCB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dERvbWFpbnM7Ci0gICAgVW5pdmVy
c2FsQWN0aW9uU2V0IHVuaXZlcnNhbEFjdGlvbnNXaXRoRG9tYWluczsKKyAgICBVbml2ZXJzYWxB
Y3Rpb25TZXQgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zOworICAgIFVuaXZlcnNh
bEFjdGlvblNldCB1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnM7CiAKICAgICAvLyBGSVhN
RTogVGhlc2UgZG9uJ3QgYWxsIG5lZWQgdG8gYmUgaW4gbWVtb3J5IGF0IHRoZSBzYW1lIHRpbWUu
Ci0gICAgQ29tYmluZWRVUkxGaWx0ZXJzIGZpbHRlcnNXaXRob3V0RG9tYWluczsKLSAgICBDb21i
aW5lZFVSTEZpbHRlcnMgZmlsdGVyc1dpdGhEb21haW5zOwotICAgIENvbWJpbmVkVVJMRmlsdGVy
cyBkb21haW5GaWx0ZXJzOwotICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aG91dERvbWFp
blBhcnNlcihmaWx0ZXJzV2l0aG91dERvbWFpbnMpOwotICAgIFVSTEZpbHRlclBhcnNlciBmaWx0
ZXJzV2l0aERvbWFpblBhcnNlcihmaWx0ZXJzV2l0aERvbWFpbnMpOworICAgIENvbWJpbmVkVVJM
RmlsdGVycyBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnM7CisgICAgQ29tYmluZWRVUkxGaWx0ZXJz
IGZpbHRlcnNXaXRoQ29uZGl0aW9uczsKKyAgICBDb21iaW5lZFVSTEZpbHRlcnMgY29uZGl0aW9u
RmlsdGVyczsKKyAgICBVUkxGaWx0ZXJQYXJzZXIgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25QYXJz
ZXIoZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zKTsKKyAgICBVUkxGaWx0ZXJQYXJzZXIgZmlsdGVy
c1dpdGhDb25kaXRpb25QYXJzZXIoZmlsdGVyc1dpdGhDb25kaXRpb25zKTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJbmRleCA8IHBhcnNlZFJ1bGVMaXN0LnNp
emUoKTsgKytydWxlSW5kZXgpIHsKICAgICAgICAgY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUm
IGNvbnRlbnRFeHRlbnNpb25SdWxlID0gcGFyc2VkUnVsZUxpc3RbcnVsZUluZGV4XTsKQEAgLTI0
MiwxMSArMjQyLDExIEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEUK
ICAgICAgICAgQVNTRVJUKCEofkFjdGlvbkZsYWdNYXNrICYgKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih0cmlnZ2VyLmZsYWdzKSA8PCAzMikpKTsKICAgICAgICAgdWludDY0X3QgYWN0aW9uTG9jYXRp
b25BbmRGbGFncyA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4odHJpZ2dlci5mbGFncykgPDwgMzIp
IHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFjdGlvbkxvY2F0aW9uc1tydWxlSW5kZXhdKTsKICAg
ICAgICAgVVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1cyBzdGF0dXMgPSBVUkxGaWx0ZXJQYXJz
ZXI6Ok9rOwotICAgICAgICBpZiAodHJpZ2dlci5kb21haW5zLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKHRyaWdnZXIuZG9tYWluQ29uZGl0aW9uID09IFRyaWdnZXI6OkRvbWFpbkNv
bmRpdGlvbjo6Tm9uZSk7Ci0gICAgICAgICAgICBzdGF0dXMgPSBmaWx0ZXJzV2l0aG91dERvbWFp
blBhcnNlci5hZGRQYXR0ZXJuKHRyaWdnZXIudXJsRmlsdGVyLCB0cmlnZ2VyLnVybEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAgICAgIGlmICh0cmln
Z2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBBU1NFUlQodHJpZ2dlci5j
b25kaXRpb25UeXBlID09IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpOworICAgICAgICAg
ICAgc3RhdHVzID0gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25QYXJzZXIuYWRkUGF0dGVybih0cmln
Z2VyLnVybEZpbHRlciwgdHJpZ2dlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxv
Y2F0aW9uQW5kRmxhZ3MpOwogICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBVUkxGaWx0ZXJQYXJz
ZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKSB7Ci0gICAgICAgICAgICAgICAgdW5pdmVyc2FsQWN0aW9u
c1dpdGhvdXREb21haW5zLmFkZChhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgICAg
ICAgICB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMuYWRkKGFjdGlvbkxvY2F0aW9u
QW5kRmxhZ3MpOwogICAgICAgICAgICAgICAgIHN0YXR1cyA9IFVSTEZpbHRlclBhcnNlcjo6T2s7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IFVSTEZpbHRlclBhcnNl
cjo6T2spIHsKQEAgLTI1NCwyNCArMjU0LDI3IEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVs
ZUxpc3QoQ29udGVudEUKICAgICAgICAgICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVy
cm9yOjpKU09OSW52YWxpZFJlZ2V4OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKHRyaWdnZXIuZG9tYWluQ29uZGl0aW9uID09IFRyaWdnZXI6OkRvbWFp
bkNvbmRpdGlvbjo6SWZEb21haW4pCi0gICAgICAgICAgICAgICAgYWN0aW9uTG9jYXRpb25BbmRG
bGFncyB8PSBJZkRvbWFpbkZsYWc7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQodHJpZ2dlci5kb21haW5Db25kaXRpb24gPT0gVHJpZ2dlcjo6RG9tYWluQ29uZGl0
aW9uOjpVbmxlc3NEb21haW4pOwotICAgICAgICAgICAgICAgIEFTU0VSVCghKGFjdGlvbkxvY2F0
aW9uQW5kRmxhZ3MgJiBJZkRvbWFpbkZsYWcpKTsKKyAgICAgICAgICAgIHN3aXRjaCAodHJpZ2dl
ci5jb25kaXRpb25UeXBlKSB7CisgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5
cGU6OklmRG9tYWluOgorICAgICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgfD0g
SWZDb25kaXRpb25GbGFnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpOb25lOgorICAgICAgICAgICAgY2FzZSBUcmlnZ2Vy
OjpDb25kaXRpb25UeXBlOjpVbmxlc3NEb21haW46CisgICAgICAgICAgICAgICAgQVNTRVJUKCEo
YWN0aW9uTG9jYXRpb25BbmRGbGFncyAmIElmQ29uZGl0aW9uRmxhZykpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBzdGF0
dXMgPSBmaWx0ZXJzV2l0aERvbWFpblBhcnNlci5hZGRQYXR0ZXJuKHRyaWdnZXIudXJsRmlsdGVy
LCB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFn
cyk7CisgICAgICAgICAgICBzdGF0dXMgPSBmaWx0ZXJzV2l0aENvbmRpdGlvblBhcnNlci5hZGRQ
YXR0ZXJuKHRyaWdnZXIudXJsRmlsdGVyLCB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2
ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CiAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFVS
TEZpbHRlclBhcnNlcjo6TWF0Y2hlc0V2ZXJ5dGhpbmcpIHsKLSAgICAgICAgICAgICAgICB1bml2
ZXJzYWxBY3Rpb25zV2l0aERvbWFpbnMuYWRkKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOworICAg
ICAgICAgICAgICAgIHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucy5hZGQoYWN0aW9uTG9j
YXRpb25BbmRGbGFncyk7CiAgICAgICAgICAgICAgICAgc3RhdHVzID0gVVJMRmlsdGVyUGFyc2Vy
OjpPazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gVVJMRmlsdGVy
UGFyc2VyOjpPaykgewogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJz
aW5nICVzOiAlc1xuIiwgdHJpZ2dlci51cmxGaWx0ZXIudXRmOCgpLmRhdGEoKSwgVVJMRmlsdGVy
UGFyc2VyOjpzdGF0dXNTdHJpbmcoc3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFJlZ2V4OwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChjb25zdCBTdHJpbmcmIGRvbWFpbiA6IHRyaWdn
ZXIuZG9tYWlucykKLSAgICAgICAgICAgICAgICBkb21haW5GaWx0ZXJzLmFkZERvbWFpbihhY3Rp
b25Mb2NhdGlvbkFuZEZsYWdzLCBkb21haW4pOworICAgICAgICAgICAgZm9yIChjb25zdCBTdHJp
bmcmIGNvbmRpdGlvbiA6IHRyaWdnZXIuY29uZGl0aW9ucykKKyAgICAgICAgICAgICAgICBjb25k
aXRpb25GaWx0ZXJzLmFkZERvbWFpbihhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzLCBjb25kaXRpb24p
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChzdGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpP
ayk7CiAgICAgfQpAQCAtMjg1LDE1ICsyODgsMTUgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVS
dWxlTGlzdChDb250ZW50RQogICAgIGRhdGFMb2dGKCIgICAgVGltZSBzcGVudCBwYXJ0aXRpb25p
bmcgdGhlIHJ1bGVzIGludG8gZ3JvdXBzOiAlZlxuIiwgKHBhdHRlcm5QYXJ0aXRpb25pbmdFbmQg
LSBwYXR0ZXJuUGFydGl0aW9uaW5nU3RhcnQpKTsKICNlbmRpZgogCi0gICAgTE9HX0xBUkdFX1NU
UlVDVFVSRVMoZmlsdGVyc1dpdGhvdXREb21haW5zLCBmaWx0ZXJzV2l0aG91dERvbWFpbnMubWVt
b3J5VXNlZCgpKTsKLSAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhmaWx0ZXJzV2l0aERvbWFpbnMs
IGZpbHRlcnNXaXRoRG9tYWlucy5tZW1vcnlVc2VkKCkpOwotICAgIExPR19MQVJHRV9TVFJVQ1RV
UkVTKGRvbWFpbkZpbHRlcnMsIGRvbWFpbkZpbHRlcnMubWVtb3J5VXNlZCgpKTsKKyAgICBMT0df
TEFSR0VfU1RSVUNUVVJFUyhmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnMsIGZpbHRlcnNXaXRob3V0
Q29uZGl0aW9ucy5tZW1vcnlVc2VkKCkpOworICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGZpbHRl
cnNXaXRoQ29uZGl0aW9ucywgZmlsdGVyc1dpdGhDb25kaXRpb25zLm1lbW9yeVVzZWQoKSk7Cisg
ICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoY29uZGl0aW9uRmlsdGVycywgY29uZGl0aW9uRmlsdGVy
cy5tZW1vcnlVc2VkKCkpOwogCiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JF
UE9SVElORwotICAgIHVuc2lnbmVkIG1hY2hpbmVzV2l0aG91dERvbWFpbnNDb3VudCA9IDA7Ci0g
ICAgdW5zaWduZWQgdG90YWxCeXRlY29kZVNpemVGb3JNYWNoaW5lc1dpdGhvdXREb21haW5zID0g
MDsKLSAgICB1bnNpZ25lZCBtYWNoaW5lc1dpdGhEb21haW5zQ291bnQgPSAwOwotICAgIHVuc2ln
bmVkIHRvdGFsQnl0ZWNvZGVTaXplRm9yTWFjaGluZXNXaXRoRG9tYWlucyA9IDA7CisgICAgdW5z
aWduZWQgbWFjaGluZXNXaXRob3V0Q29uZGl0aW9uc0NvdW50ID0gMDsKKyAgICB1bnNpZ25lZCB0
b3RhbEJ5dGVjb2RlU2l6ZUZvck1hY2hpbmVzV2l0aG91dENvbmRpdGlvbnMgPSAwOworICAgIHVu
c2lnbmVkIG1hY2hpbmVzV2l0aENvbmRpdGlvbnNDb3VudCA9IDA7CisgICAgdW5zaWduZWQgdG90
YWxCeXRlY29kZVNpemVGb3JNYWNoaW5lc1dpdGhDb25kaXRpb25zID0gMDsKICAgICBkb3VibGUg
dG90YWxORkFUb0J5dGVDb2RlQnVpbGRUaW1lU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKICNlbmRpZgogCkBAIC0zMDEsMTkgKzMwNCwxOSBAQCBzdGQ6OmVycm9yX2NvZGUg
Y29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFCiAgICAgLy8gbGFyZ2VyIG1heE5GQVNpemVzIHVzZSB0
b28gbXVjaCBtZW1vcnkgd2hlbiBjb21waWxpbmcuCiAgICAgY29uc3QgdW5zaWduZWQgbWF4TkZB
U2l6ZSA9IDc1MDAwOwogICAgIAotICAgIGJvb2wgZmlyc3RORkFXaXRob3V0RG9tYWluc1NlZW4g
PSBmYWxzZTsKKyAgICBib29sIGZpcnN0TkZBV2l0aG91dENvbmRpdGlvbnNTZWVuID0gZmFsc2U7
CiAKLSAgICBhdXRvIGxvd2VyRmlsdGVyc1dpdGhvdXREb21haW5zREZBVG9CeXRlY29kZSA9IFsm
XShERkEmJiBkZmEpCisgICAgYXV0byBsb3dlckZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0RGQVRv
Qnl0ZWNvZGUgPSBbJl0oREZBJiYgZGZhKQogICAgIHsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNf
U1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICAgICAgZGF0YUxvZ0YoImZpbHRlcnNXaXRob3V0
RG9tYWlucyBERkFcbiIpOworICAgICAgICBkYXRhTG9nRigiZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zIERGQVxuIik7CiAgICAgICAgIGRmYS5kZWJ1Z1ByaW50RG90KCk7CiAjZW5kaWYKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZGZhLm5vZGVzW2RmYS5yb290XS5oYXNBY3Rpb25zKCks
ICJBbGwgYWN0aW9ucyBvbiB0aGUgREZBIHJvb3Qgc2hvdWxkIGNvbWUgZnJvbSByZWd1bGFyIGV4
cHJlc3Npb25zIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iKTsKIAotICAgICAgICBpZiAoIWZpcnN0
TkZBV2l0aG91dERvbWFpbnNTZWVuKSB7CisgICAgICAgIGlmICghZmlyc3RORkFXaXRob3V0Q29u
ZGl0aW9uc1NlZW4pIHsKICAgICAgICAgICAgIC8vIFB1dCBhbGwgdGhlIHVuaXZlcnNhbCBhY3Rp
b25zIG9uIHRoZSBmaXJzdCBERkEuCi0gICAgICAgICAgICBhZGRVbml2ZXJzYWxBY3Rpb25zVG9E
RkEoZGZhLCB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dERvbWFpbnMpOworICAgICAgICAgICAgYWRk
VW5pdmVyc2FsQWN0aW9uc1RvREZBKGRmYSwgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRp
b25zKTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3RvcjxERkFCeXRlY29kZT4gYnl0ZWNvZGU7
CkBAIC0zMjEsMTkgKzMyNCwxOSBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENv
bnRlbnRFCiAgICAgICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKICAgICAgICAgTE9HX0xBUkdFX1NU
UlVDVFVSRVMoYnl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkp
OwogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKLSAgICAgICAg
KyttYWNoaW5lc1dpdGhvdXREb21haW5zQ291bnQ7Ci0gICAgICAgIHRvdGFsQnl0ZWNvZGVTaXpl
Rm9yTWFjaGluZXNXaXRob3V0RG9tYWlucyArPSBieXRlY29kZS5zaXplKCk7CisgICAgICAgICsr
bWFjaGluZXNXaXRob3V0Q29uZGl0aW9uc0NvdW50OworICAgICAgICB0b3RhbEJ5dGVjb2RlU2l6
ZUZvck1hY2hpbmVzV2l0aG91dENvbmRpdGlvbnMgKz0gYnl0ZWNvZGUuc2l6ZSgpOwogI2VuZGlm
Ci0gICAgICAgIGNsaWVudC53cml0ZUZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlKFdURk1v
dmUoYnl0ZWNvZGUpKTsKKyAgICAgICAgY2xpZW50LndyaXRlRmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOwogCi0gICAgICAgIGZpcnN0TkZBV2l0aG91
dERvbWFpbnNTZWVuID0gdHJ1ZTsKKyAgICAgICAgZmlyc3RORkFXaXRob3V0Q29uZGl0aW9uc1Nl
ZW4gPSB0cnVlOwogICAgIH07CiAKICAgICBjb25zdCB1bnNpZ25lZCBzbWFsbERGQVNpemUgPSAx
MDA7Ci0gICAgREZBQ29tYmluZXIgc21hbGxGaWx0ZXJzV2l0aG91dERvbWFpbnNERkFDb21iaW5l
cjsKLSAgICBmaWx0ZXJzV2l0aG91dERvbWFpbnMucHJvY2Vzc05GQXMobWF4TkZBU2l6ZSwgWyZd
KE5GQSYmIG5mYSkgeworICAgIERGQUNvbWJpbmVyIHNtYWxsRmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zREZBQ29tYmluZXI7CisgICAgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLnByb2Nlc3NORkFz
KG1heE5GQVNpemUsIFsmXShORkEmJiBuZmEpIHsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfU1RB
VEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICAgICAgZGF0YUxvZ0YoImZpbHRlcnNXaXRob3V0RG9t
YWlucyBORkFcbiIpOworICAgICAgICBkYXRhTG9nRigiZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
IE5GQVxuIik7CiAgICAgICAgIG5mYS5kZWJ1Z1ByaW50RG90KCk7CiAjZW5kaWYKIApAQCAtMzQy
LDQzICszNDUsNDMgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RQog
ICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkpOwogCiAg
ICAgICAgIGlmIChkZmEuZ3JhcGhTaXplKCkgPCBzbWFsbERGQVNpemUpCi0gICAgICAgICAgICBz
bWFsbEZpbHRlcnNXaXRob3V0RG9tYWluc0RGQUNvbWJpbmVyLmFkZERGQShXVEZNb3ZlKGRmYSkp
OworICAgICAgICAgICAgc21hbGxGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNERkFDb21iaW5lci5h
ZGRERkEoV1RGTW92ZShkZmEpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkZmEubWlu
aW1pemUoKTsKLSAgICAgICAgICAgIGxvd2VyRmlsdGVyc1dpdGhvdXREb21haW5zREZBVG9CeXRl
Y29kZShXVEZNb3ZlKGRmYSkpOworICAgICAgICAgICAgbG93ZXJGaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNERkFUb0J5dGVjb2RlKFdURk1vdmUoZGZhKSk7CiAgICAgICAgIH0KICAgICB9KTsKIAog
Ci0gICAgc21hbGxGaWx0ZXJzV2l0aG91dERvbWFpbnNERkFDb21iaW5lci5jb21iaW5lREZBcyhz
bWFsbERGQVNpemUsIFsmXShERkEmJiBkZmEpIHsKKyAgICBzbWFsbEZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0RGQUNvbWJpbmVyLmNvbWJpbmVERkFzKHNtYWxsREZBU2l6ZSwgWyZdKERGQSYmIGRm
YSkgewogICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkp
OwotICAgICAgICBsb3dlckZpbHRlcnNXaXRob3V0RG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGTW92
ZShkZmEpKTsKKyAgICAgICAgbG93ZXJGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNERkFUb0J5dGVj
b2RlKFdURk1vdmUoZGZhKSk7CiAgICAgfSk7CiAKLSAgICBBU1NFUlQoZmlsdGVyc1dpdGhvdXRE
b21haW5zLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKGZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5p
c0VtcHR5KCkpOwogCi0gICAgaWYgKCFmaXJzdE5GQVdpdGhvdXREb21haW5zU2VlbikgeworICAg
IGlmICghZmlyc3RORkFXaXRob3V0Q29uZGl0aW9uc1NlZW4pIHsKICAgICAgICAgLy8gT3VyIGJ5
dGVjb2RlIGludGVycHJldGVyIGV4cGVjdHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgREZBLCBzbyBp
ZiB3ZSBoYXZlbid0IHNlZW4gYW55CiAgICAgICAgIC8vIGNyZWF0ZSBhIGR1bW15IG9uZSBhbmQg
YWRkIGFueSB1bml2ZXJzYWwgYWN0aW9ucy4KIAogICAgICAgICBERkEgZHVtbXlERkEgPSBERkE6
OmVtcHR5KCk7Ci0gICAgICAgIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShkdW1teURGQSwgdW5p
dmVyc2FsQWN0aW9uc1dpdGhvdXREb21haW5zKTsKKyAgICAgICAgYWRkVW5pdmVyc2FsQWN0aW9u
c1RvREZBKGR1bW15REZBLCB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMpOwogCiAg
ICAgICAgIFZlY3RvcjxERkFCeXRlY29kZT4gYnl0ZWNvZGU7CiAgICAgICAgIERGQUJ5dGVjb2Rl
Q29tcGlsZXIgY29tcGlsZXIoZHVtbXlERkEsIGJ5dGVjb2RlKTsKICAgICAgICAgY29tcGlsZXIu
Y29tcGlsZSgpOwogICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhieXRlY29kZSwgYnl0ZWNv
ZGUuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgICAgIGNsaWVudC53cml0ZUZp
bHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKKyAgICAgICAg
Y2xpZW50LndyaXRlRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoV1RGTW92ZShieXRl
Y29kZSkpOwogICAgIH0KLSAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh1bml2ZXJzYWxBY3Rpb25z
V2l0aG91dERvbWFpbnMsIHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0RG9tYWlucy5jYXBhY2l0eSgp
ICogc2l6ZW9mKHVuc2lnbmVkKSk7Ci0gICAgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXREb21haW5z
LmNsZWFyKCk7CisgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVModW5pdmVyc2FsQWN0aW9uc1dpdGhv
dXRDb25kaXRpb25zLCB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMuY2FwYWNpdHko
KSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgIHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0
aW9ucy5jbGVhcigpOwogICAgIAotICAgIGJvb2wgZmlyc3RORkFXaXRoRG9tYWluc1NlZW4gPSBm
YWxzZTsKLSAgICBhdXRvIGxvd2VyRmlsdGVyc1dpdGhEb21haW5zREZBVG9CeXRlY29kZSA9IFsm
XShERkEmJiBkZmEpCisgICAgYm9vbCBmaXJzdE5GQVdpdGhDb25kaXRpb25zU2VlbiA9IGZhbHNl
OworICAgIGF1dG8gbG93ZXJGaWx0ZXJzV2l0aENvbmRpdGlvbnNERkFUb0J5dGVjb2RlID0gWyZd
KERGQSYmIGRmYSkKICAgICB7Ci0gICAgICAgIGlmICghZmlyc3RORkFXaXRoRG9tYWluc1NlZW4p
IHsKKyAgICAgICAgaWYgKCFmaXJzdE5GQVdpdGhDb25kaXRpb25zU2VlbikgewogICAgICAgICAg
ICAgLy8gUHV0IGFsbCB0aGUgdW5pdmVyc2FsIGFjdGlvbnMgb24gdGhlIGZpcnN0IERGQS4KLSAg
ICAgICAgICAgIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShkZmEsIHVuaXZlcnNhbEFjdGlvbnNX
aXRoRG9tYWlucyk7CisgICAgICAgICAgICBhZGRVbml2ZXJzYWxBY3Rpb25zVG9ERkEoZGZhLCB1
bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMpOwogICAgICAgICB9CiAKICAgICAgICAgVmVj
dG9yPERGQUJ5dGVjb2RlPiBieXRlY29kZTsKQEAgLTM4Niw4OSArMzg5LDg5IEBAIHN0ZDo6ZXJy
b3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEUKICAgICAgICAgY29tcGlsZXIuY29tcGls
ZSgpOwogICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhieXRlY29kZSwgYnl0ZWNvZGUuY2Fw
YWNpdHkoKSAqIHNpemVvZih1aW50OF90KSk7CiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZP
Uk1BTkNFX1JFUE9SVElORwotICAgICAgICArK21hY2hpbmVzV2l0aERvbWFpbnNDb3VudDsKLSAg
ICAgICAgdG90YWxCeXRlY29kZVNpemVGb3JNYWNoaW5lc1dpdGhEb21haW5zICs9IGJ5dGVjb2Rl
LnNpemUoKTsKKyAgICAgICAgKyttYWNoaW5lc1dpdGhDb25kaXRpb25zQ291bnQ7CisgICAgICAg
IHRvdGFsQnl0ZWNvZGVTaXplRm9yTWFjaGluZXNXaXRoQ29uZGl0aW9ucyArPSBieXRlY29kZS5z
aXplKCk7CiAjZW5kaWYKLSAgICAgICAgY2xpZW50LndyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0
ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOworICAgICAgICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0
aENvbmRpdGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7CiAKLSAgICAgICAgZmlyc3RO
RkFXaXRoRG9tYWluc1NlZW4gPSB0cnVlOworICAgICAgICBmaXJzdE5GQVdpdGhDb25kaXRpb25z
U2VlbiA9IHRydWU7CiAgICAgfTsKIAotICAgIERGQUNvbWJpbmVyIHNtYWxsRmlsdGVyc1dpdGhE
b21haW5zREZBQ29tYmluZXI7Ci0gICAgZmlsdGVyc1dpdGhEb21haW5zLnByb2Nlc3NORkFzKG1h
eE5GQVNpemUsIFsmXShORkEmJiBuZmEpIHsKKyAgICBERkFDb21iaW5lciBzbWFsbEZpbHRlcnNX
aXRoQ29uZGl0aW9uc0RGQUNvbWJpbmVyOworICAgIGZpbHRlcnNXaXRoQ29uZGl0aW9ucy5wcm9j
ZXNzTkZBcyhtYXhORkFTaXplLCBbJl0oTkZBJiYgbmZhKSB7CiAjaWYgQ09OVEVOVF9FWFRFTlNJ
T05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi0gICAgICAgIGRhdGFMb2dGKCJmaWx0ZXJzV2l0
aERvbWFpbnMgTkZBXG4iKTsKKyAgICAgICAgZGF0YUxvZ0YoImZpbHRlcnNXaXRoQ29uZGl0aW9u
cyBORkFcbiIpOwogICAgICAgICBuZmEuZGVidWdQcmludERvdCgpOwogI2VuZGlmCiAgICAgICAg
IExPR19MQVJHRV9TVFJVQ1RVUkVTKG5mYSwgbmZhLm1lbW9yeVVzZWQoKSk7CiAgICAgICAgIERG
QSBkZmEgPSBORkFUb0RGQTo6Y29udmVydChuZmEpOwogI2lmIENPTlRFTlRfRVhURU5TSU9OU19T
VEFURV9NQUNISU5FX0RFQlVHR0lORwotICAgICAgICBkYXRhTG9nRigiZmlsdGVyc1dpdGhEb21h
aW5zIFBSRSBNSU5JTUlaSU5HIERGQVxuIik7CisgICAgICAgIGRhdGFMb2dGKCJmaWx0ZXJzV2l0
aENvbmRpdGlvbnMgUFJFIE1JTklNSVpJTkcgREZBXG4iKTsKICAgICAgICAgZGZhLmRlYnVnUHJp
bnREb3QoKTsKICNlbmRpZgogICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEsIGRmYS5t
ZW1vcnlVc2VkKCkpOwogCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWRmYS5ub2Rlc1tk
ZmEucm9vdF0uaGFzQWN0aW9ucygpLCAiRmlsdGVycyB3aXRoIGRvbWFpbnMgdGhhdCBtYXRjaCBl
dmVyeXRoaW5nIGFyZSBub3QgYWxsb3dlZCByaWdodCBub3cuIik7CisgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIWRmYS5ub2Rlc1tkZmEucm9vdF0uaGFzQWN0aW9ucygpLCAiRmlsdGVycyB3
aXRoIENvbmRpdGlvbnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nIGFyZSBub3QgYWxsb3dlZCByaWdo
dCBub3cuIik7CiAKICAgICAgICAgaWYgKGRmYS5ncmFwaFNpemUoKSA8IHNtYWxsREZBU2l6ZSkK
LSAgICAgICAgICAgIHNtYWxsRmlsdGVyc1dpdGhEb21haW5zREZBQ29tYmluZXIuYWRkREZBKFdU
Rk1vdmUoZGZhKSk7CisgICAgICAgICAgICBzbWFsbEZpbHRlcnNXaXRoQ29uZGl0aW9uc0RGQUNv
bWJpbmVyLmFkZERGQShXVEZNb3ZlKGRmYSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGRmYS5taW5pbWl6ZSgpOwotICAgICAgICAgICAgbG93ZXJGaWx0ZXJzV2l0aERvbWFpbnNERkFU
b0J5dGVjb2RlKFdURk1vdmUoZGZhKSk7CisgICAgICAgICAgICBsb3dlckZpbHRlcnNXaXRoQ29u
ZGl0aW9uc0RGQVRvQnl0ZWNvZGUoV1RGTW92ZShkZmEpKTsKICAgICAgICAgfQogICAgIH0pOwot
ICAgIHNtYWxsRmlsdGVyc1dpdGhEb21haW5zREZBQ29tYmluZXIuY29tYmluZURGQXMoc21hbGxE
RkFTaXplLCBbJl0oREZBJiYgZGZhKSB7CisgICAgc21hbGxGaWx0ZXJzV2l0aENvbmRpdGlvbnNE
RkFDb21iaW5lci5jb21iaW5lREZBcyhzbWFsbERGQVNpemUsIFsmXShERkEmJiBkZmEpIHsKICAg
ICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoZGZhLCBkZmEubWVtb3J5VXNlZCgpKTsKLSAgICAg
ICAgbG93ZXJGaWx0ZXJzV2l0aERvbWFpbnNERkFUb0J5dGVjb2RlKFdURk1vdmUoZGZhKSk7Cisg
ICAgICAgIGxvd2VyRmlsdGVyc1dpdGhDb25kaXRpb25zREZBVG9CeXRlY29kZShXVEZNb3ZlKGRm
YSkpOwogICAgIH0pOwotICAgIEFTU0VSVChmaWx0ZXJzV2l0aERvbWFpbnMuaXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQoZmlsdGVyc1dpdGhDb25kaXRpb25zLmlzRW1wdHkoKSk7CiAgICAgCi0gICAg
aWYgKCFmaXJzdE5GQVdpdGhEb21haW5zU2VlbikgeworICAgIGlmICghZmlyc3RORkFXaXRoQ29u
ZGl0aW9uc1NlZW4pIHsKICAgICAgICAgLy8gT3VyIGJ5dGVjb2RlIGludGVycHJldGVyIGV4cGVj
dHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgREZBLCBzbyBpZiB3ZSBoYXZlbid0IHNlZW4gYW55CiAg
ICAgICAgIC8vIGNyZWF0ZSBhIGR1bW15IG9uZSBhbmQgYWRkIGFueSB1bml2ZXJzYWwgYWN0aW9u
cy4KIAogICAgICAgICBERkEgZHVtbXlERkEgPSBERkE6OmVtcHR5KCk7Ci0gICAgICAgIGFkZFVu
aXZlcnNhbEFjdGlvbnNUb0RGQShkdW1teURGQSwgdW5pdmVyc2FsQWN0aW9uc1dpdGhEb21haW5z
KTsKKyAgICAgICAgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKGR1bW15REZBLCB1bml2ZXJzYWxB
Y3Rpb25zV2l0aENvbmRpdGlvbnMpOwogICAgICAgICAKICAgICAgICAgVmVjdG9yPERGQUJ5dGVj
b2RlPiBieXRlY29kZTsKICAgICAgICAgREZBQnl0ZWNvZGVDb21waWxlciBjb21waWxlcihkdW1t
eURGQSwgYnl0ZWNvZGUpOwogICAgICAgICBjb21waWxlci5jb21waWxlKCk7CiAgICAgICAgIExP
R19MQVJHRV9TVFJVQ1RVUkVTKGJ5dGVjb2RlLCBieXRlY29kZS5jYXBhY2l0eSgpICogc2l6ZW9m
KHVpbnQ4X3QpKTsKLSAgICAgICAgY2xpZW50LndyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0ZWNv
ZGUoV1RGTW92ZShieXRlY29kZSkpOworICAgICAgICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aENv
bmRpdGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfQotICAgIExPR19MQVJH
RV9TVFJVQ1RVUkVTKHVuaXZlcnNhbEFjdGlvbnNXaXRoRG9tYWlucywgdW5pdmVyc2FsQWN0aW9u
c1dpdGhEb21haW5zLmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQpKTsKLSAgICB1bml2ZXJz
YWxBY3Rpb25zV2l0aERvbWFpbnMuY2xlYXIoKTsKKyAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh1
bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMsIHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0
aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKHVuc2lnbmVkKSk7CisgICAgdW5pdmVyc2FsQWN0aW9u
c1dpdGhDb25kaXRpb25zLmNsZWFyKCk7CiAKLSAgICBkb21haW5GaWx0ZXJzLnByb2Nlc3NORkFz
KG1heE5GQVNpemUsIFsmXShORkEmJiBuZmEpIHsKKyAgICBjb25kaXRpb25GaWx0ZXJzLnByb2Nl
c3NORkFzKG1heE5GQVNpemUsIFsmXShORkEmJiBuZmEpIHsKICNpZiBDT05URU5UX0VYVEVOU0lP
TlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICAgICAgZGF0YUxvZ0YoImRvbWFpbkZpbHRl
cnMgTkZBXG4iKTsKKyAgICAgICAgZGF0YUxvZ0YoImNvbmRpdGlvbkZpbHRlcnMgTkZBXG4iKTsK
ICAgICAgICAgbmZhLmRlYnVnUHJpbnREb3QoKTsKICNlbmRpZgogICAgICAgICBMT0dfTEFSR0Vf
U1RSVUNUVVJFUyhuZmEsIG5mYS5tZW1vcnlVc2VkKCkpOwogICAgICAgICBERkEgZGZhID0gTkZB
VG9ERkE6OmNvbnZlcnQobmZhKTsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElO
RV9ERUJVR0dJTkcKLSAgICAgICAgZGF0YUxvZ0YoImRvbWFpbkZpbHRlcnMgREZBXG4iKTsKKyAg
ICAgICAgZGF0YUxvZ0YoImNvbmRpdGlvbkZpbHRlcnMgREZBXG4iKTsKICAgICAgICAgZGZhLmRl
YnVnUHJpbnREb3QoKTsKICNlbmRpZgogICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEs
IGRmYS5tZW1vcnlVc2VkKCkpOwogICAgICAgICAvLyBNaW5pbWl6aW5nIHRoaXMgREZBIHdvdWxk
IG5vdCBiZSBlZmZlY3RpdmUgYmVjYXVzZSBhbGwgYWN0aW9ucyBhcmUgdW5pcXVlCiAgICAgICAg
IC8vIGFuZCBiZWNhdXNlIG9mIHRoZSB0cmVlLWxpa2Ugc3RydWN0dXJlIG9mIHRoaXMgREZBLgot
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFkZmEubm9kZXNbZGZhLnJvb3RdLmhhc0FjdGlv
bnMoKSwgIlRoZXJlIHNob3VsZCBub3QgYmUgYW55IGRvbWFpbnMgdGhhdCBtYXRjaCBldmVyeXRo
aW5nLiIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFkZmEubm9kZXNbZGZhLnJvb3Rd
Lmhhc0FjdGlvbnMoKSwgIlRoZXJlIHNob3VsZCBub3QgYmUgYW55IGNvbmRpdGlvbnMgdGhhdCBt
YXRjaCBldmVyeXRoaW5nLiIpOwogCiAgICAgICAgIFZlY3RvcjxERkFCeXRlY29kZT4gYnl0ZWNv
ZGU7CiAgICAgICAgIERGQUJ5dGVjb2RlQ29tcGlsZXIgY29tcGlsZXIoZGZhLCBieXRlY29kZSk7
CiAgICAgICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKICAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVS
RVMoYnl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkpOwotICAg
ICAgICBjbGllbnQud3JpdGVEb21haW5GaWx0ZXJzQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkp
OworICAgICAgICBjbGllbnQud3JpdGVDb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZShXVEZNb3Zl
KGJ5dGVjb2RlKSk7CiAgICAgfSk7Ci0gICAgQVNTRVJUKGRvbWFpbkZpbHRlcnMuaXNFbXB0eSgp
KTsgICAgCisgICAgQVNTRVJUKGNvbmRpdGlvbkZpbHRlcnMuaXNFbXB0eSgpKTsKICAgICAKICNp
ZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCiAgICAgZG91YmxlIHRv
dGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZUVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOwogICAgIGRhdGFMb2dGKCIgICAgVGltZSBzcGVudCBidWlsZGluZyBhbmQgY29tcGlsaW5n
IHRoZSBERkFzOiAlZlxuIiwgKHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZUVuZCAtIHRvdGFs
TkZBVG9CeXRlQ29kZUJ1aWxkVGltZVN0YXJ0KSk7CiAKLSAgICBkYXRhTG9nRigiICAgIE51bWJl
ciBvZiBtYWNoaW5lcyB3aXRob3V0IGRvbWFpbiBmaWx0ZXJzOiAlZCAodG90YWwgYnl0ZWNvZGUg
c2l6ZSA9ICVkKVxuIiwgbWFjaGluZXNXaXRob3V0RG9tYWluc0NvdW50LCB0b3RhbEJ5dGVjb2Rl
U2l6ZUZvck1hY2hpbmVzV2l0aG91dERvbWFpbnMpOwotICAgIGRhdGFMb2dGKCIgICAgTnVtYmVy
IG9mIG1hY2hpbmVzIHdpdGggZG9tYWluIGZpbHRlcnM6ICVkICh0b3RhbCBieXRlY29kZSBzaXpl
ID0gJWQpXG4iLCBtYWNoaW5lc1dpdGhEb21haW5zQ291bnQsIHRvdGFsQnl0ZWNvZGVTaXplRm9y
TWFjaGluZXNXaXRoRG9tYWlucyk7CisgICAgZGF0YUxvZ0YoIiAgICBOdW1iZXIgb2YgbWFjaGlu
ZXMgd2l0aG91dCBjb25kaXRpb24gZmlsdGVyczogJWQgKHRvdGFsIGJ5dGVjb2RlIHNpemUgPSAl
ZClcbiIsIG1hY2hpbmVzV2l0aG91dENvbmRpdGlvbnNDb3VudCwgdG90YWxCeXRlY29kZVNpemVG
b3JNYWNoaW5lc1dpdGhvdXRDb25kaXRpb25zKTsKKyAgICBkYXRhTG9nRigiICAgIE51bWJlciBv
ZiBtYWNoaW5lcyB3aXRoIGNvbmRpdGlvbiBmaWx0ZXJzOiAlZCAodG90YWwgYnl0ZWNvZGUgc2l6
ZSA9ICVkKVxuIiwgbWFjaGluZXNXaXRoQ29uZGl0aW9uc0NvdW50LCB0b3RhbEJ5dGVjb2RlU2l6
ZUZvck1hY2hpbmVzV2l0aENvbmRpdGlvbnMpOwogI2VuZGlmCiAKICAgICBjbGllbnQuZmluYWxp
emUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25Db21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oCShyZXZpc2lvbiAyMTMzNzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
RnVuY3Rpb25zIHNob3VsZCBiZSBjYWxsZWQgaW4gdGhpcyBvcmRlci4gQWxsIGV4Y2VwdCB3cml0
ZUFjdGlvbnMgYW5kIGZpbmFsaXplIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRob3Vn
aC4KICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9u
Qnl0ZT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUZpbHRlcnNXaXRob3V0RG9tYWlu
c0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3
cml0ZUZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZURvbWFpbkZpbHRlcnNCeXRlY29kZShWZWN0b3I8REZB
Qnl0ZWNvZGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNv
ZGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVDb25kaXRpb25lZEZpbHRlcnNCeXRl
Y29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxp
emUoKSA9IDA7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAJKHJldmlzaW9uIDIxMzM3
NykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25F
cnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE0ICs3NywxNCBAQCBjb25zdCBzdGQ6OmVy
cm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zCiAgICAgICAgICAgICAgICAgcmV0dXJuICJJbnZh
bGlkIGNzcy1kaXNwbGF5LW5vbmUgYWN0aW9uIHR5cGUuIFJlcXVpcmVzIGEgc2VsZWN0b3IuIjsK
ICAgICAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFJlZ2V4
OgogICAgICAgICAgICAgICAgIHJldHVybiAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCByZWd1bGFy
IGV4cHJlc3Npb24uIjsKLSAgICAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbkVycm9yOjpK
U09OSW52YWxpZERvbWFpbkxpc3Q6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnZhbGlkIGRv
bWFpbiBsaXN0LiI7CisgICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
TkludmFsaWRDb25kaXRpb25MaXN0OgorICAgICAgICAgICAgICAgIHJldHVybiAiSW52YWxpZCBs
aXN0IG9mIGlmLWRvbWFpbiBvciB1bmxlc3MtZG9tYWluIGNvbmRpdGlvbnMuIjsKICAgICAgICAg
ICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9vTWFueVJ1bGVzOgogICAgICAg
ICAgICAgICAgIHJldHVybiAiVG9vIG1hbnkgcnVsZXMgaW4gSlNPTiBhcnJheS4iOwogICAgICAg
ICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Eb21haW5Ob3RMb3dlckNhc2VB
U0NJSToKICAgICAgICAgICAgICAgICByZXR1cm4gIkRvbWFpbnMgbXVzdCBiZSBsb3dlciBjYXNl
IEFTQ0lJLiBVc2UgcHVueWNvZGUgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiI7Ci0g
ICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlVubGVzc0FuZElmRG9t
YWluOgotICAgICAgICAgICAgICAgIHJldHVybiAiQSB0cmlnZ2VyIGNhbm5vdCBoYXZlIGJvdGgg
dW5sZXNzLSBhbmQgaWYtZG9tYWluLiI7CisgICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNp
b25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9uczoKKyAgICAgICAgICAgICAgICByZXR1cm4g
IkEgdHJpZ2dlciBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiAoaWYtZG9tYWlu
IG9yIHVubGVzcy1kb21haW4pIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAkocmV2aXNpb24gMjEzMzc3KQor
KysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAgZW51bSBjbGFzcyBDb250ZW50RXh0
ZW5zaW9uRXJyb3IgewogICAgIEpTT05JbnZhbGlkVHJpZ2dlckZsYWdzQXJyYXksCiAgICAgSlNP
TkludmFsaWRPYmplY3RJblRyaWdnZXJGbGFnc0FycmF5LAogICAgIEpTT05JbnZhbGlkU3RyaW5n
SW5UcmlnZ2VyRmxhZ3NBcnJheSwKLSAgICBKU09OSW52YWxpZERvbWFpbkxpc3QsCisgICAgSlNP
TkludmFsaWRDb25kaXRpb25MaXN0LAogICAgIEpTT05Eb21haW5Ob3RMb3dlckNhc2VBU0NJSSwK
LSAgICBKU09OVW5sZXNzQW5kSWZEb21haW4sCisgICAgSlNPTk11bHRpcGxlQ29uZGl0aW9ucywK
ICAgICBKU09OVG9vTWFueVJ1bGVzLAogICAgIAogICAgIEpTT05JbnZhbGlkQWN0aW9uLApJbmRl
eDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblBhcnNlci5jcHAJKHJldmlzaW9uIDIxMzQ3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw4ICs1OSw5IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUFTQ0lJV2l0
aE5vVXBwZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLXN0YXRpYyBFeHBlY3RlZDxWZWN0
b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXRTdHJpbmdMaXN0KEV4ZWNTdGF0ZSYgZXhl
YywgY29uc3QgSlNPYmplY3QqIGFycmF5T2JqZWN0LCBDb250ZW50RXh0ZW5zaW9uRXJyb3IgZXJy
b3IpCitzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4gZ2V0
U3RyaW5nTGlzdChFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBhcnJheU9iamVjdCkK
IHsKKyAgICBzdGF0aWMgY29uc3QgQ29udGVudEV4dGVuc2lvbkVycm9yIGVycm9yID0gQ29udGVu
dEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZENvbmRpdGlvbkxpc3Q7CiAgICAgVk0mIHZtID0g
ZXhlYy52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApA
QCAtNjgsMjQgKzY5LDI0IEBAIHN0YXRpYyBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjpl
cnIKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKICAgICBjb25zdCBKU0Fy
cmF5KiBhcnJheSA9IGpzQ2FzdDxjb25zdCBKU0FycmF5Kj4oYXJyYXlPYmplY3QpOwogICAgIAot
ICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGNvbnN0IEpTVmFsdWUgdmFsdWUg
PSBhcnJheS0+Z2V0SW5kZXgoJmV4ZWMsIGkpOwogICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkgfHwgIXZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZXJyb3IpOwogICAgICAgICAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBkb21haW4gPSBhc1N0
cmluZyh2YWx1ZSktPnZhbHVlKCZleGVjKTsKLSAgICAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkp
CisgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZSgm
ZXhlYyk7CisgICAgICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKLSAgICAgICAgZG9tYWlucy5hcHBlbmQoZG9tYWluKTsK
KyAgICAgICAgc3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKICAgICB9Ci0gICAgcmV0dXJuIFdURk1v
dmUoZG9tYWlucyk7CisgICAgcmV0dXJuIFdURk1vdmUoc3RyaW5ncyk7CiB9CiAKIHN0YXRpYyBF
eHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXREb21haW5MaXN0KEV4
ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPYmplY3QqIGFycmF5T2JqZWN0KQogewotICAgIGF1dG8g
c3RyaW5ncyA9IGdldFN0cmluZ0xpc3QoZXhlYywgYXJyYXlPYmplY3QsIENvbnRlbnRFeHRlbnNp
b25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKKyAgICBhdXRvIHN0cmluZ3MgPSBnZXRT
dHJpbmdMaXN0KGV4ZWMsIGFycmF5T2JqZWN0KTsKICAgICBpZiAoIXN0cmluZ3MuaGFzVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIHN0cmluZ3M7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBzdHJp
bmdzLnZhbHVlKCkpIHsKQEAgLTE3MywyNyArMTc0LDI3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmln
Z2VyLCBzdGQ6OmVycm9yX2NvZGUKICAgICAgICAgYXV0byBpZkRvbWFpbiA9IGdldERvbWFpbkxp
c3QoZXhlYywgYXNPYmplY3QoaWZEb21haW5WYWx1ZSkpOwogICAgICAgICBpZiAoIWlmRG9tYWlu
Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaWZEb21haW4u
ZXJyb3IoKSk7Ci0gICAgICAgIHRyaWdnZXIuZG9tYWlucyA9IFdURk1vdmUoaWZEb21haW4udmFs
dWUoKSk7Ci0gICAgICAgIGlmICh0cmlnZ2VyLmRvbWFpbnMuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWREb21haW5MaXN0KTsKLSAgICAgICAgQVNTRVJUKHRyaWdnZXIuZG9tYWluQ29uZGl0aW9uID09
IFRyaWdnZXI6OkRvbWFpbkNvbmRpdGlvbjo6Tm9uZSk7Ci0gICAgICAgIHRyaWdnZXIuZG9tYWlu
Q29uZGl0aW9uID0gVHJpZ2dlcjo6RG9tYWluQ29uZGl0aW9uOjpJZkRvbWFpbjsKKyAgICAgICAg
dHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZShpZkRvbWFpbi52YWx1ZSgpKTsKKyAgICAgICAg
aWYgKHRyaWdnZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZENvbmRpdGlvbkxp
c3QpOworICAgICAgICBBU1NFUlQodHJpZ2dlci5jb25kaXRpb25UeXBlID09IFRyaWdnZXI6OkNv
bmRpdGlvblR5cGU6Ok5vbmUpOworICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvblR5cGUgPSBUcmln
Z2VyOjpDb25kaXRpb25UeXBlOjpJZkRvbWFpbjsKICAgICB9IGVsc2UgaWYgKCFpZkRvbWFpblZh
bHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50
RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkRG9tYWluTGlzdCk7Ci0gICAgCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29u
ZGl0aW9uTGlzdCk7CisKICAgICBjb25zdCBKU1ZhbHVlIHVubGVzc0RvbWFpblZhbHVlID0gdHJp
Z2dlck9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1bmxl
c3MtZG9tYWluIikpOwogICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkgJiYgdW5sZXNzRG9tYWlu
VmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBpZiAodHJpZ2dlci5kb21haW5Db25kaXRpb24g
IT0gVHJpZ2dlcjo6RG9tYWluQ29uZGl0aW9uOjpOb25lKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlVubGVzc0FuZElmRG9tYWlu
KTsKKyAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9uVHlwZSAhPSBUcmlnZ2VyOjpDb25kaXRp
b25UeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRF
eHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9ucyk7CiAgICAgICAgIGF1dG8gdW5s
ZXNzRG9tYWluID0gZ2V0RG9tYWluTGlzdChleGVjLCBhc09iamVjdCh1bmxlc3NEb21haW5WYWx1
ZSkpOwogICAgICAgICBpZiAoIXVubGVzc0RvbWFpbi5oYXNWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKHVubGVzc0RvbWFpbi5lcnJvcigpKTsKLSAgICAgICAgdHJp
Z2dlci5kb21haW5zID0gV1RGTW92ZSh1bmxlc3NEb21haW4udmFsdWUoKSk7Ci0gICAgICAgIGlm
ICh0cmlnZ2VyLmRvbWFpbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKLSAg
ICAgICAgdHJpZ2dlci5kb21haW5Db25kaXRpb24gPSBUcmlnZ2VyOjpEb21haW5Db25kaXRpb246
OlVubGVzc0RvbWFpbjsKKyAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZSh1bmxl
c3NEb21haW4udmFsdWUoKSk7CisgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25F
cnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICAgICAgdHJpZ2dlci5jb25kaXRp
b25UeXBlID0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNzRG9tYWluOwogICAgIH0gZWxz
ZSBpZiAoIXVubGVzc0RvbWFpblZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkRG9tYWluTGlz
dCk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdCk7CiAKICAgICByZXR1cm4gV1RGTW92ZSh0cmlnZ2Vy
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAkocmV2aXNpb24gMjEzMzc3KQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsMTYgKzQ0LDE2IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICBTdHJpbmcgdXJs
RmlsdGVyOwogICAgIGJvb2wgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlIHsgZmFsc2UgfTsKICAg
ICBSZXNvdXJjZUZsYWdzIGZsYWdzIHsgMCB9OwotICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7
Ci0gICAgZW51bSBjbGFzcyBEb21haW5Db25kaXRpb24geworICAgIFZlY3RvcjxTdHJpbmc+IGNv
bmRpdGlvbnM7CisgICAgZW51bSBjbGFzcyBDb25kaXRpb25UeXBlIHsKICAgICAgICAgTm9uZSwK
ICAgICAgICAgSWZEb21haW4sCiAgICAgICAgIFVubGVzc0RvbWFpbiwKLSAgICB9IGRvbWFpbkNv
bmRpdGlvbiB7IERvbWFpbkNvbmRpdGlvbjo6Tm9uZSB9OworICAgIH0gY29uZGl0aW9uVHlwZSB7
IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKIAogICAgIH5UcmlnZ2VyKCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChkb21haW5zLmlzRW1wdHkoKSA9PSAoZG9tYWluQ29uZGl0aW9uID09IERvbWFpbkNv
bmRpdGlvbjo6Tm9uZSkpOworICAgICAgICBBU1NFUlQoY29uZGl0aW9ucy5pc0VtcHR5KCkgPT0g
KGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6Tm9uZSkpOwogICAgIH0KIAogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CkBAIC02MSw4ICs2MSw4IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAg
ICAgICAgcmV0dXJuIHVybEZpbHRlci5pc0VtcHR5KCkKICAgICAgICAgICAgICYmICF1cmxGaWx0
ZXJJc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmICFmbGFncwotICAgICAgICAgICAgJiYg
ZG9tYWlucy5pc0VtcHR5KCkKLSAgICAgICAgICAgICYmIGRvbWFpbkNvbmRpdGlvbiA9PSBEb21h
aW5Db25kaXRpb246Ok5vbmU7CisgICAgICAgICAgICAmJiBjb25kaXRpb25zLmlzRW1wdHkoKQor
ICAgICAgICAgICAgJiYgY29uZGl0aW9uVHlwZSA9PSBDb25kaXRpb25UeXBlOjpOb25lOwogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmlnZ2VyJiBvdGhlcikgY29uc3QKQEAg
LTcwLDggKzcwLDggQEAgc3RydWN0IFRyaWdnZXIgewogICAgICAgICByZXR1cm4gdXJsRmlsdGVy
ID09IG90aGVyLnVybEZpbHRlcgogICAgICAgICAgICAgJiYgdXJsRmlsdGVySXNDYXNlU2Vuc2l0
aXZlID09IG90aGVyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZQogICAgICAgICAgICAgJiYgZmxh
Z3MgPT0gb3RoZXIuZmxhZ3MKLSAgICAgICAgICAgICYmIGRvbWFpbnMgPT0gb3RoZXIuZG9tYWlu
cwotICAgICAgICAgICAgJiYgZG9tYWluQ29uZGl0aW9uID09IG90aGVyLmRvbWFpbkNvbmRpdGlv
bjsKKyAgICAgICAgICAgICYmIGNvbmRpdGlvbnMgPT0gb3RoZXIuY29uZGl0aW9ucworICAgICAg
ICAgICAgJiYgY29uZGl0aW9uVHlwZSA9PSBvdGhlci5jb25kaXRpb25UeXBlOwogICAgIH0KIH07
CiAKQEAgLTgzLDEzICs4MywxMCBAQCBzdHJ1Y3QgVHJpZ2dlckhhc2ggewogICAgICAgICAgICAg
aGFzaCBePSBTdHJpbmdIYXNoOjpoYXNoKHRyaWdnZXIudXJsRmlsdGVyKTsKICAgICAgICAgaGFz
aCA9IFdURjo6cGFpckludEhhc2goaGFzaCwgRGVmYXVsdEhhc2g8UmVzb3VyY2VGbGFncz46Okhh
c2g6Omhhc2godHJpZ2dlci5mbGFncykpOwogCi0gICAgICAgIGZvciAoY29uc3QgU3RyaW5nJiBk
b21haW4gOiB0cmlnZ2VyLmRvbWFpbnMpCi0gICAgICAgICAgICBoYXNoIF49IFN0cmluZ0hhc2g6
Omhhc2goZG9tYWluKTsKKyAgICAgICAgZm9yIChjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA6IHRy
aWdnZXIuY29uZGl0aW9ucykKKyAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFzaDo6aGFzaChj
b25kaXRpb24pOwogCi0gICAgICAgIGlmICh0cmlnZ2VyLmRvbWFpbkNvbmRpdGlvbiA9PSBUcmln
Z2VyOjpEb21haW5Db25kaXRpb246OklmRG9tYWluKQotICAgICAgICAgICAgaGFzaCB8PSAxIDw8
IDE2OwotICAgICAgICBlbHNlIGlmICh0cmlnZ2VyLmRvbWFpbkNvbmRpdGlvbiA9PSBUcmlnZ2Vy
OjpEb21haW5Db25kaXRpb246OklmRG9tYWluKQotICAgICAgICAgICAgaGFzaCB8PSAxIDw8IDMx
OworICAgICAgICBoYXNoIF49IDEgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyaWdnZXIuY29u
ZGl0aW9uVHlwZSk7CiAgICAgICAgIHJldHVybiBoYXNoOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyMTMzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSwyOSArOTEsMjkgQEAgVmVjdG9yPEFjdGlvbj4gQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb250ZW50RXh0ZW5zaW9uKTsKICAgICAg
ICAgY29uc3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNv
bnRlbnRFeHRlbnNpb24tPmNvbXBpbGVkRXh0ZW5zaW9uKCk7CiAgICAgICAgIAotICAgICAgICBE
RkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXREb21haW5zSW50ZXJwcmV0ZXIoY29tcGlsZWRF
eHRlbnNpb24uZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGUoKSwgY29tcGlsZWRFeHRlbnNp
b24uZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aG91dERvbWFpbnNBY3Rpb25zID0gd2l0aG91
dERvbWFpbnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOworICAgICAg
ICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29t
cGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSwgY29tcGls
ZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7Cisg
ICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aG91dENvbmRpdGlvbnNB
Y3Rpb25zID0gd2l0aG91dENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmlu
ZywgZmxhZ3MpOwogICAgICAgICAKLSAgICAgICAgU3RyaW5nIGRvbWFpbiA9IHJlc291cmNlTG9h
ZEluZm8ubWFpbkRvY3VtZW50VVJMLmhvc3QoKTsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlciB3aXRoRG9tYWluc0ludGVycHJldGVyKGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRo
RG9tYWluc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoRG9tYWluc0J5
dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25z
IHdpdGhEb21haW5zQWN0aW9ucyA9IHdpdGhEb21haW5zSW50ZXJwcmV0ZXIuaW50ZXJwcmV0V2l0
aERvbWFpbnModXJsQ1N0cmluZywgZmxhZ3MsIGNvbnRlbnRFeHRlbnNpb24tPmNhY2hlZERvbWFp
bkFjdGlvbnMoZG9tYWluKSk7CisgICAgICAgIFVSTCB0b3BVUkwgPSByZXNvdXJjZUxvYWRJbmZv
Lm1haW5Eb2N1bWVudFVSTDsKKyAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29u
ZGl0aW9uc0ludGVycHJldGVyKGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVj
b2RlTGVuZ3RoKCkpOworICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIHdp
dGhDb25kaXRpb25zQWN0aW9ucyA9IHdpdGhDb25kaXRpb25zSW50ZXJwcmV0ZXIuaW50ZXJwcmV0
V2l0aENvbmRpdGlvbnModXJsQ1N0cmluZywgZmxhZ3MsIGNvbnRlbnRFeHRlbnNpb24tPmNhY2hl
ZENvbmRpdGlvbmVkQWN0aW9ucyh0b3BVUkwpKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFNl
cmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zID0gY29tcGlsZWRFeHRlbnNpb24uYWN0aW9ucygp
OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoID0gY29tcGlsZWRFeHRlbnNp
b24uYWN0aW9uc0xlbmd0aCgpOwogICAgICAgICAKICAgICAgICAgYm9vbCBzYXdJZ25vcmVQcmV2
aW91c1J1bGVzID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIHVuaXZl
cnNhbFdpdGhEb21haW5zID0gY29udGVudEV4dGVuc2lvbi0+dW5pdmVyc2FsQWN0aW9uc1dpdGhE
b21haW5zKGRvbWFpbik7Ci0gICAgICAgIGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIHVuaXZlcnNh
bFdpdGhvdXREb21haW5zID0gY29udGVudEV4dGVuc2lvbi0+dW5pdmVyc2FsQWN0aW9uc1dpdGhv
dXREb21haW5zKCk7Ci0gICAgICAgIGlmICghd2l0aG91dERvbWFpbnNBY3Rpb25zLmlzRW1wdHko
KSB8fCAhd2l0aERvbWFpbnNBY3Rpb25zLmlzRW1wdHkoKSB8fCAhdW5pdmVyc2FsV2l0aERvbWFp
bnMuaXNFbXB0eSgpIHx8ICF1bml2ZXJzYWxXaXRob3V0RG9tYWlucy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgdW5pdmVyc2FsV2l0aENvbmRpdGlvbnMgPSBj
b250ZW50RXh0ZW5zaW9uLT51bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnModG9wVVJMKTsK
KyAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgdW5pdmVyc2FsV2l0aG91dENvbmRpdGlv
bnMgPSBjb250ZW50RXh0ZW5zaW9uLT51bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMo
KTsKKyAgICAgICAgaWYgKCF3aXRob3V0Q29uZGl0aW9uc0FjdGlvbnMuaXNFbXB0eSgpIHx8ICF3
aXRoQ29uZGl0aW9uc0FjdGlvbnMuaXNFbXB0eSgpIHx8ICF1bml2ZXJzYWxXaXRoQ29uZGl0aW9u
cy5pc0VtcHR5KCkgfHwgIXVuaXZlcnNhbFdpdGhvdXRDb25kaXRpb25zLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgVmVjdG9yPHVpbnQzMl90PiBhY3Rpb25Mb2NhdGlvbnM7Ci0gICAgICAgICAg
ICBhY3Rpb25Mb2NhdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh3aXRob3V0RG9tYWluc0Fj
dGlvbnMuc2l6ZSgpICsgd2l0aERvbWFpbnNBY3Rpb25zLnNpemUoKSArIHVuaXZlcnNhbFdpdGhv
dXREb21haW5zLnNpemUoKSArIHVuaXZlcnNhbFdpdGhEb21haW5zLnNpemUoKSk7Ci0gICAgICAg
ICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbkxvY2F0aW9uIDogd2l0aG91dERvbWFpbnNBY3Rpb25z
KQorICAgICAgICAgICAgYWN0aW9uTG9jYXRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2l0
aG91dENvbmRpdGlvbnNBY3Rpb25zLnNpemUoKSArIHdpdGhDb25kaXRpb25zQWN0aW9ucy5zaXpl
KCkgKyB1bml2ZXJzYWxXaXRob3V0Q29uZGl0aW9ucy5zaXplKCkgKyB1bml2ZXJzYWxXaXRoQ29u
ZGl0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb25Mb2NhdGlv
biA6IHdpdGhvdXRDb25kaXRpb25zQWN0aW9ucykKICAgICAgICAgICAgICAgICBhY3Rpb25Mb2Nh
dGlvbnMudW5jaGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb25Mb2NhdGlv
bikpOwotICAgICAgICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb25Mb2NhdGlvbiA6IHdpdGhEb21h
aW5zQWN0aW9ucykKKyAgICAgICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uTG9jYXRpb24gOiB3
aXRoQ29uZGl0aW9uc0FjdGlvbnMpCiAgICAgICAgICAgICAgICAgYWN0aW9uTG9jYXRpb25zLnVu
Y2hlY2tlZEFwcGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uTG9jYXRpb24pKTsKLSAg
ICAgICAgICAgIGZvciAodWludDMyX3QgYWN0aW9uTG9jYXRpb24gOiB1bml2ZXJzYWxXaXRob3V0
RG9tYWlucykKKyAgICAgICAgICAgIGZvciAodWludDMyX3QgYWN0aW9uTG9jYXRpb24gOiB1bml2
ZXJzYWxXaXRob3V0Q29uZGl0aW9ucykKICAgICAgICAgICAgICAgICBhY3Rpb25Mb2NhdGlvbnMu
dW5jaGVja2VkQXBwZW5kKGFjdGlvbkxvY2F0aW9uKTsKLSAgICAgICAgICAgIGZvciAodWludDMy
X3QgYWN0aW9uTG9jYXRpb24gOiB1bml2ZXJzYWxXaXRoRG9tYWlucykKKyAgICAgICAgICAgIGZv
ciAodWludDMyX3QgYWN0aW9uTG9jYXRpb24gOiB1bml2ZXJzYWxXaXRoQ29uZGl0aW9ucykKICAg
ICAgICAgICAgICAgICBhY3Rpb25Mb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKGFjdGlvbkxvY2F0
aW9uKTsKICAgICAgICAgICAgIHN0ZDo6c29ydChhY3Rpb25Mb2NhdGlvbnMuYmVnaW4oKSwgYWN0
aW9uTG9jYXRpb25zLmVuZCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCShyZXZpc2lvbiAyMTMzNzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MiwxMyArNjIsMTMgQEAgZW51bSBjbGFzcyBERkFCeXRlY29kZUluc3RydWN0aW9uIDogdWludAog
ICAgIC8vIEFwcGVuZEFjdGlvbiBoYXMgb25lIGFyZ3VtZW50OgogICAgIC8vIFRoZSBhY3Rpb24g
dG8gYXBwZW5kICg0IGJ5dGVzKS4KICAgICBBcHBlbmRBY3Rpb24gPSAweDYsCi0gICAgQXBwZW5k
QWN0aW9uV2l0aElmRG9tYWluID0gMHg3LAorICAgIEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlv
biA9IDB4NywKICAgICAKICAgICAvLyBUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24gaGFzIHR3byBh
cmd1bWVudHM6CiAgICAgLy8gVGhlIGZsYWdzIHRvIGNoZWNrIGJlZm9yZSBhcHBlbmRpbmcgKDIg
Ynl0ZXMpLgogICAgIC8vIFRoZSBhY3Rpb24gdG8gYXBwZW5kICg0IGJ5dGVzKS4KICAgICBUZXN0
RmxhZ3NBbmRBcHBlbmRBY3Rpb24gPSAweDgsCi0gICAgVGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
V2l0aElmRG9tYWluID0gMHg5LAorICAgIFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNv
bmRpdGlvbiA9IDB4OSwKIAogICAgIC8vIFRlcm1pbmF0ZSBoYXMgbm8gYXJndW1lbnRzLgogICAg
IFRlcm1pbmF0ZSA9IDB4QSwKQEAgLTExOCwxMCArMTE4LDEwIEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IGluc3RydWN0aW9uU2l6ZVdpdGgKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
Okp1bXA6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIFZhcmlhYmxl
IGluc3RydWN0aW9uIHNpemUuCiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBl
bmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25X
aXRoSWZEb21haW46CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rp
b25XaXRoSWZDb25kaXRpb246CiAgICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbikgKyBzaXplb2YodWludDMyX3QpOwogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgotICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmRG9tYWluOgorICAgIGNhc2Ug
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29u
ZGl0aW9uOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsg
c2l6ZW9mKHVpbnQxNl90KSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgY2FzZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpUZXJtaW5hdGU6CiAgICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFCeXRlY29kZUNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjEzMzc3KQor
KysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE1ICs4MSwxNSBAQCB2b2lkIERGQUJ5dGVjb2RlQ29t
cGlsZXI6OmVtaXRBcHBlbmRBY3RpCiB7CiAgICAgLy8gSGlnaCBiaXRzIGFyZSB1c2VkIHRvIHN0
b3JlIGZsYWdzLiBTZWUgY29tcGlsZVJ1bGVMaXN0LgogICAgIGlmIChhY3Rpb24gJiBBY3Rpb25G
bGFnTWFzaykgewotICAgICAgICBpZiAoYWN0aW9uICYgSWZEb21haW5GbGFnKQotICAgICAgICAg
ICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KG1fYnl0ZWNvZGUsIERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkRvbWFpbik7CisgICAg
ICAgIGlmIChhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpCisgICAgICAgICAgICBhcHBlbmQ8REZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29kZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6
VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KG1fYnl0ZWNvZGUsIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbik7CiAgICAgICAg
IGFwcGVuZDx1aW50MTZfdD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFjdGlv
biA+PiAzMikpOwogICAgICAgICBhcHBlbmQ8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihhY3Rpb24pKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoYWN0aW9u
ICYgSWZEb21haW5GbGFnKQotICAgICAgICAgICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b24+KG1fYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJ
ZkRvbWFpbik7CisgICAgICAgIGlmIChhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpCisgICAgICAg
ICAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29kZSwgREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KG1fYnl0ZWNvZGUs
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7CiAgICAgICAgIGFwcGVuZDx1
aW50MzJfdD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Qnl0ZWNvZGVJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIxMzM3NykKKysrIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NiwyOSArODYsMjkgQEAgc3RhdGljIGlubGluZSBpbnQzMl90IGdldEp1bXBE
aXN0YW5jZShjbwogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBib29sIG1hdGNoZXNEb21haW4o
dWludDY0X3QgYWN0aW9uQW5kRmxhZ3MsIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFj
dGlvbnMmIGRvbWFpbkFjdGlvbnMpCitzdGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hlc0NvbmRpdGlv
bih1aW50NjRfdCBhY3Rpb25BbmRGbGFncywgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6
QWN0aW9ucyYgY29uZGl0aW9uQWN0aW9ucykKIHsKLSAgICBib29sIGlmRG9tYWluID0gYWN0aW9u
QW5kRmxhZ3MgJiBJZkRvbWFpbkZsYWc7Ci0gICAgYm9vbCBkb21haW4gPSBkb21haW5BY3Rpb25z
LmNvbnRhaW5zKGFjdGlvbkFuZEZsYWdzKTsKLSAgICByZXR1cm4gaWZEb21haW4gPT0gZG9tYWlu
OworICAgIGJvb2wgaWZDb25kaXRpb24gPSBhY3Rpb25BbmRGbGFncyAmIElmQ29uZGl0aW9uRmxh
ZzsKKyAgICBib29sIGNvbmRpdGlvbiA9IGNvbmRpdGlvbkFjdGlvbnMuY29udGFpbnMoYWN0aW9u
QW5kRmxhZ3MpOworICAgIHJldHVybiBpZkNvbmRpdGlvbiA9PSBjb25kaXRpb247CiB9CiAKLXZv
aWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0QXBwZW5kQWN0aW9uKHVpbnQzMl90
JiBwcm9ncmFtQ291bnRlciwgQWN0aW9ucyYgYWN0aW9ucywgYm9vbCBpZkRvbWFpbikKK3ZvaWQg
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0QXBwZW5kQWN0aW9uKHVpbnQzMl90JiBw
cm9ncmFtQ291bnRlciwgQWN0aW9ucyYgYWN0aW9ucywgYm9vbCBpZkNvbmRpdGlvbikKIHsKICAg
ICBBU1NFUlQoZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJv
Z3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbgotICAg
ICAgICB8fCBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9n
cmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElm
RG9tYWluKTsKLSAgICB1aW50NjRfdCBhY3Rpb24gPSAoaWZEb21haW4gPyBJZkRvbWFpbkZsYWcg
OiAwKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVjb2Rl
LCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUlu
c3RydWN0aW9uKSkpOwotICAgIGlmICghbV9kb21haW5BY3Rpb25zIHx8IG1hdGNoZXNEb21haW4o
YWN0aW9uLCAqbV9kb21haW5BY3Rpb25zKSkKKyAgICAgICAgfHwgZ2V0SW5zdHJ1Y3Rpb24obV9i
eXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbik7CisgICAgdWludDY0X3Qg
YWN0aW9uID0gKGlmQ29uZGl0aW9uID8gSWZDb25kaXRpb25GbGFnIDogMCkgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oZ2V0Qml0czx1aW50MzJfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0
aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpKTsKKyAg
ICBpZiAoIW1fY29uZGl0aW9uQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0aW9uKGFjdGlvbiwgKm1f
Y29uZGl0aW9uQWN0aW9ucykpCiAgICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7CiAgICAgCiAg
ICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24pOwotICAgIEFTU0VSVChpbnN0cnVjdGlvblNp
emVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikgPT0g
aW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBl
bmRBY3Rpb25XaXRoSWZEb21haW4pKTsKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25TaXplV2l0aEFy
Z3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24pID09IGluc3RydWN0
aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9u
V2l0aElmQ29uZGl0aW9uKSk7CiB9CiAKLXZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50
ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwg
dWludDE2X3QgZmxhZ3MsIEFjdGlvbnMmIGFjdGlvbnMsIGJvb2wgaWZEb21haW4pCit2b2lkIERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1
aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBBY3Rpb25zJiBhY3Rpb25z
LCBib29sIGlmQ29uZGl0aW9uKQogewogICAgIEFTU0VSVChnZXRJbnN0cnVjdGlvbihtX2J5dGVj
b2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uCi0gICAgICAgIHx8IGdldEluc3RydWN0
aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFC
eXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZEb21haW4p
OworICAgICAgICB8fCBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3Ro
LCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKICAgICB1aW50MTZfdCBmbGFnc1RvQ2hlY2sg
PSBnZXRCaXRzPHVpbnQxNl90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSk7CiAKICAgICB1aW50MTZf
dCBsb2FkVHlwZUZsYWdzID0gZmxhZ3NUb0NoZWNrICYgTG9hZFR5cGVNYXNrOwpAQCAtMTE4LDEy
ICsxMTgsMTIgQEAgdm9pZCBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRUZQogICAg
IGJvb2wgcmVzb3VyY2VUeXBlTWF0Y2hlcyA9IHJlc291cmNlVHlwZUZsYWdzID8gKHJlc291cmNl
VHlwZUZsYWdzICYgZmxhZ3MpIDogdHJ1ZTsKICAgICAKICAgICBpZiAobG9hZFR5cGVNYXRjaGVz
ICYmIHJlc291cmNlVHlwZU1hdGNoZXMpIHsKLSAgICAgICAgdWludDY0X3QgYWN0aW9uQW5kRmxh
Z3MgPSAoaWZEb21haW4gPyBJZkRvbWFpbkZsYWcgOiAwKSB8IChzdGF0aWNfY2FzdDx1aW50NjRf
dD4oZmxhZ3NUb0NoZWNrKSA8PCAzMikgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZ2V0Qml0czx1
aW50MzJfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBz
aXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDE2X3QpKSk7Ci0gICAg
ICAgIGlmICghbV9kb21haW5BY3Rpb25zIHx8IG1hdGNoZXNEb21haW4oYWN0aW9uQW5kRmxhZ3Ms
ICptX2RvbWFpbkFjdGlvbnMpKQorICAgICAgICB1aW50NjRfdCBhY3Rpb25BbmRGbGFncyA9IChp
ZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihmbGFnc1RvQ2hlY2spIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihnZXRCaXRzPHVp
bnQzMl90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNp
emVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNpemVvZih1aW50MTZfdCkpKTsKKyAgICAg
ICAgaWYgKCFtX2NvbmRpdGlvbkFjdGlvbnMgfHwgbWF0Y2hlc0NvbmRpdGlvbihhY3Rpb25BbmRG
bGFncywgKm1fY29uZGl0aW9uQWN0aW9ucykpCiAgICAgICAgICAgICBhY3Rpb25zLmFkZChhY3Rp
b25BbmRGbGFncyk7CiAgICAgfQogICAgIHByb2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6
ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5k
QWN0aW9uKTsKLSAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24pID09IGluc3RydWN0aW9u
U2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBw
ZW5kQWN0aW9uV2l0aElmRG9tYWluKSk7CisgICAgQVNTRVJUKGluc3RydWN0aW9uU2l6ZVdpdGhB
cmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
KSA9PSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikpOwogfQogCiB0ZW1wbGF0
ZTxib29sIGNhc2VTZW5zaXRpdmU+CkBAIC0xNTcsMjQgKzE1NywyNCBAQCBERkFCeXRlY29kZUlu
dGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjCiAgICAgICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b24gaW5zdHJ1Y3Rpb24gPSBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlcik7CiAgICAgICAgIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24pCiAgICAgICAgICAgICBpbnRlcnByZXRBcHBl
bmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMsIGZhbHNlKTsKLSAgICAgICAgZWxzZSBp
ZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0
aElmRG9tYWluKQorICAgICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pCiAgICAgICAgICAgICBpbnRl
cnByZXRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMsIHRydWUpOwogICAgICAg
ICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb24pCiAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVj
dGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbik7Ci0gICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkRvbWFpbikKLSAg
ICAgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMo
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmRG9t
YWluKTsKKyAgICAgICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKQorICAgICAgICAg
ICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24p
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGFj
dGlvbnM7CiB9CiAgICAgCi1ERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVj
b2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFdpdGhEb21haW5zKGNvbnN0IENTdHJpbmcmIHVybENT
dHJpbmcsIHVpbnQxNl90IGZsYWdzLCBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rp
b25zJiBkb21haW5BY3Rpb25zKQorREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFC
eXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5n
JiB1cmxDU3RyaW5nLCB1aW50MTZfdCBmbGFncywgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRl
cjo6QWN0aW9ucyYgY29uZGl0aW9uQWN0aW9ucykKIHsKLSAgICBBU1NFUlQoIW1fZG9tYWluQWN0
aW9ucyk7Ci0gICAgbV9kb21haW5BY3Rpb25zID0gJmRvbWFpbkFjdGlvbnM7CisgICAgQVNTRVJU
KCFtX2NvbmRpdGlvbkFjdGlvbnMpOworICAgIG1fY29uZGl0aW9uQWN0aW9ucyA9ICZjb25kaXRp
b25BY3Rpb25zOwogICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgYWN0aW9ucyA9
IGludGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7Ci0gICAgbV9kb21haW5BY3Rpb25zID0gbnVs
bHB0cjsKKyAgICBtX2NvbmRpdGlvbkFjdGlvbnMgPSBudWxscHRyOwogICAgIHJldHVybiBhY3Rp
b25zOwogfQogCkBAIC0xOTksMTEgKzE5OSwxMSBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpB
Y3Rpb25zIERGQUJ5dGVjCiAgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBp
bnN0cnVjdGlvbiA9IGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgs
IHByb2dyYW1Db3VudGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBw
cm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5z
dHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmRG9t
YWluKQotICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNp
emVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJ
ZkRvbWFpbik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKQorICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRz
KERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbik7CiAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBpbnRl
cnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBhY3Rp
b25zLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmRG9tYWlu
KQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHByb2dyYW1D
b3VudGVyLCBmbGFncywgYWN0aW9ucywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxMiw5ICsyMTIsOSBAQCBERkFCeXRlY29kZUlu
dGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlv
bnM7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdl
dEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVy
KSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KLSAgICAgICAgICAgICAg
ICAmJiBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlcikgIT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmRG9t
YWluCisgICAgICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFw
cGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbgogICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0
aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFC
eXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24KLSAgICAgICAgICAg
ICAgICAmJiBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9n
cmFtQ291bnRlcikgIT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5k
QWN0aW9uV2l0aElmRG9tYWluLAorICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0aW9uKG1f
Ynl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24sCiAg
ICAgICAgICAgICAgICAgIlRyaWdnZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZyBzaG91bGQgb25s
eSBiZSBpbiB0aGUgZmlyc3QgREZBLiIpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzI5LDcg
KzMyOSw3IEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWMKICAgICAg
ICAgICAgICAgICBpbnRlcnByZXRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMs
IGZhbHNlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJ
ZkRvbWFpbjoKKyAgICAgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5k
QWN0aW9uV2l0aElmQ29uZGl0aW9uOgogICAgICAgICAgICAgICAgIGludGVycHJldEFwcGVuZEFj
dGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzM3LDcgKzMzNyw3IEBAIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWMKICAgICAgICAgICAgICAgICBpbnRlcnByZXRU
ZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBhY3Rpb25zLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0
aElmRG9tYWluOgorICAgICAgICAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0
RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246CiAgICAgICAgICAgICAgICAgaW50
ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHByb2dyYW1Db3VudGVyLCBmbGFncywgYWN0
aW9ucywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjEzMzc3KQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCwxOSArNDgsMTkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaFNldDx1
aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gQWN0aW9uczsKICAgICAKICAgICBBY3Rpb25zIGlu
dGVycHJldChjb25zdCBDU3RyaW5nJiwgdWludDE2X3QgZmxhZ3MpOwotICAgIEFjdGlvbnMgaW50
ZXJwcmV0V2l0aERvbWFpbnMoY29uc3QgQ1N0cmluZyYsIHVpbnQxNl90IGZsYWdzLCBjb25zdCBE
RkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiBkb21haW5BY3Rpb25zKTsKKyAgICBBY3Rp
b25zIGludGVycHJldFdpdGhDb25kaXRpb25zKGNvbnN0IENTdHJpbmcmLCB1aW50MTZfdCBmbGFn
cywgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgY29uZGl0aW9uQWN0aW9u
cyk7CiAgICAgQWN0aW9ucyBhY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCk7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBpbnRlcnByZXRBcHBlbmRBY3Rpb24odW5zaWduZWQmIHByb2dyYW1Db3VudGVy
LCBBY3Rpb25zJiwgYm9vbCBpZkRvbWFpbik7Ci0gICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NB
bmRBcHBlbmRBY3Rpb24odW5zaWduZWQmIHByb2dyYW1Db3VudGVyLCB1aW50MTZfdCBmbGFncywg
QWN0aW9ucyYsIGJvb2wgaWZEb21haW4pOworICAgIHZvaWQgaW50ZXJwcmV0QXBwZW5kQWN0aW9u
KHVuc2lnbmVkJiBwcm9ncmFtQ291bnRlciwgQWN0aW9ucyYsIGJvb2wgaWZDb25kaXRpb24pOwor
ICAgIHZvaWQgaW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHVuc2lnbmVkJiBwcm9n
cmFtQ291bnRlciwgdWludDE2X3QgZmxhZ3MsIEFjdGlvbnMmLCBib29sIGlmQ29uZGl0aW9uKTsK
IAogICAgIHRlbXBsYXRlPGJvb2wgY2FzZVNlbnNpdGl2ZT4KICAgICB2b2lkIGludGVycGV0SnVt
cFRhYmxlKGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QmIHVybEluZGV4LCB1aW50MzJfdCYgcHJv
Z3JhbUNvdW50ZXIsIGJvb2wmIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nKTsKIAogICAgIGNv
bnN0IERGQUJ5dGVjb2RlKiBtX2J5dGVjb2RlOwogICAgIGNvbnN0IHVuc2lnbmVkIG1fYnl0ZWNv
ZGVMZW5ndGg7Ci0gICAgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyogbV9k
b21haW5BY3Rpb25zIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXI6OkFjdGlvbnMqIG1fY29uZGl0aW9uQWN0aW9ucyB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkSW5mby5oCShyZXZpc2lvbiAyMTMzNzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMSArNTYs
MTMgQEAgdHlwZWRlZiB1aW50MTZfdCBSZXNvdXJjZUZsYWdzOwogCiAvLyBUaGUgZmlyc3QgMzIg
Yml0cyBvZiBhIHVpbnQ2NF90IGFjdGlvbiBhcmUgdXNlZCBmb3IgdGhlIGFjdGlvbiBsb2NhdGlv
bi4KIC8vIFRoZSBuZXh0IDE2IGJpdHMgYXJlIHVzZWQgZm9yIHRoZSBmbGFncyAoUmVzb3VyY2VU
eXBlIGFuZCBMb2FkVHlwZSkuCi0vLyBUaGUgbmV4dCBiaXQgaXMgdXNlZCB0byBtYXJrIGFjdGlv
bnMgdGhhdCBhcmUgZnJvbSBhIHJ1bGUgd2l0aCBhbiBpZi1kb21haW4gY29uZGl0aW9uLgotLy8g
VGhlIG5leHQgYml0IGlzIHVzZWQgdG8gbWFyayBhY3Rpb25zIHRoYXQgaW4gdGhlIGRlZmF1bHQg
c3R5bGVzaGVldC4KKy8vIFRoZSBuZXh0IGJpdCBpcyB1c2VkIHRvIG1hcmsgYWN0aW9ucyB0aGF0
IGFyZSBmcm9tIGEgcnVsZSB3aXRoIGFuIGlmLWRvbWFpbi4KKy8vICAgICBBY3Rpb25zIGZyb20g
cnVsZXMgd2l0aCB1bmxlc3MtZG9tYWluIGNvbmRpdGlvbnMgYXJlIGRpc3Rpbmd1aXNoZWQgZnJv
bQorLy8gICAgIHJ1bGVzIHdpdGggaWYtZG9tYWluIGNvbmRpdGlvbnMgYnkgbm90IGhhdmluZyB0
aGlzIGJpdCBzZXQuCisvLyAgICAgQWN0aW9ucyBmcm9tIHJ1bGVzIHdpdGggbm8gY29uZGl0aW9u
cyBhcmUgcHV0IGluIHRoZSBERkEgd2l0aG91dCBjb25kaXRpb25zLgogLy8gVGhlIHZhbHVlcyAt
MSBhbmQgLTIgYXJlIHVzZWQgZm9yIHJlbW92ZWQgYW5kIGVtcHR5IHZhbHVlcyBpbiBIYXNoVGFi
bGVzLgogY29uc3QgdWludDY0X3QgQWN0aW9uRmxhZ01hc2sgPSAweDAwMDBGRkZGMDAwMDAwMDA7
Ci1jb25zdCB1aW50NjRfdCBJZkRvbWFpbkZsYWcgPSAweDAwMDEwMDAwMDAwMDAwMDA7Citjb25z
dCB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcgPSAweDAwMDEwMDAwMDAwMDAwMDA7CiAKIFJlc291
cmNlVHlwZSB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSk7CiB1aW50MTZfdCBy
ZWFkUmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MjEzNDE4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTctMDMtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBSZW5hbWUgIkRvbWFp
biIgdG8gIkNvbmRpdGlvbiIgd2hlcmUgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI5NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lv
bjo6ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlTGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
OjpmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBpbGVkQ29udGVudEV4dGVuc2lvbjo6ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5n
dGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNvbmRp
dGlvbmVkRmlsdGVyc0J5dGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uOjpjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6ZmlsdGVyc1dpdGhvdXREb21h
aW5zQnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb246OmZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlTGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpmaWx0ZXJz
V2l0aERvbWFpbnNCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6ZmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGVMZW5ndGgpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmRv
bWFpbkZpbHRlcnNCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6ZG9tYWluRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGE6OldlYkNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbkRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRFeHRlbnNpb25N
ZXRhRGF0YTo6ZmlsZVNpemUpOgorICAgICAgICAoQVBJOjplbmNvZGVDb250ZW50RXh0ZW5zaW9u
TWV0YURhdGEpOgorICAgICAgICAoQVBJOjpkZWNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEp
OgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmlsZSk6CisgICAgICAgIChBUEk6OmNyZWF0ZUV4
dGVuc2lvbik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1
cENvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlOjpjb21waWxlQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmU6OnJlbW92ZUNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oOgorCiAyMDE3LTAzLTAzICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViUlRDXSBVcGRh
dGUgbGlid2VicnRjIHNvdXJjZSBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMjEzMzc3
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDM0ICs0NCwzNCBAQCBXZWJDb21waWxlZENvbnRlbnRF
eHRlbnNpb246On5XZWJDb21waWxlCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpmaWx0ZXJz
V2l0aG91dERvbWFpbnNCeXRlY29kZSgpIGNvbnN0Citjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGUqIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6ZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqPihtX2Rh
dGEuZGF0YS0+ZGF0YSgpKSArIG1fZGF0YS5maWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZU9m
ZnNldDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlKj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CiB9CiAKLXVuc2lnbmVkIFdlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6ZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVMZW5ndGgo
KSBjb25zdAordW5zaWduZWQgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpmaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0
YS5maWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZVNpemU7CisgICAgcmV0dXJuIG1fZGF0YS5m
aWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiB9CiAKLWNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZSgpIGNvbnN0Citjb25zdCBXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lv
bjo6ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdAogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUq
PihtX2RhdGEuZGF0YS0+ZGF0YSgpKSArIG1fZGF0YS5maWx0ZXJzV2l0aERvbWFpbnNCeXRlY29k
ZU9mZnNldDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuZmls
dGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CiB9CiAKLXVuc2lnbmVkIFdlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6ZmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGVMZW5ndGgoKSBj
b25zdAordW5zaWduZWQgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpmaWx0ZXJzV2l0aENv
bmRpdGlvbnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5maWx0
ZXJzV2l0aERvbWFpbnNCeXRlY29kZVNpemU7CisgICAgcmV0dXJuIG1fZGF0YS5maWx0ZXJzV2l0
aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpkb21haW5G
aWx0ZXJzQnl0ZWNvZGUoKSBjb25zdAorY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlKiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNvbmRpdGlvbmVkRmls
dGVyc0J5dGVjb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKj4obV9kYXRhLmRhdGEtPmRhdGEo
KSkgKyBtX2RhdGEuZG9tYWluRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqPiht
X2RhdGEuZGF0YS0+ZGF0YSgpKSArIG1fZGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZU9m
ZnNldDsKIH0KIAotdW5zaWduZWQgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpkb21haW5G
aWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdAordW5zaWduZWQgV2ViQ29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uOjpjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fZGF0YS5kb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIHJldHVybiBt
X2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplOwogfQogCiBjb25zdCBXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGUqIFdlYkNvbXBpbGVkQ29u
dGVudEV4dGVuc2lvbjo6YWN0aW9ucygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyMTMz
NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lv
bl9oCi0jZGVmaW5lIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbl9oCisjcHJhZ21hIG9uY2UK
IAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKQEAgLTQ0LDE1ICs0MywxNSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbihXZWJDb21w
aWxlZENvbnRlbnRFeHRlbnNpb25EYXRhJiYpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVj
b2RlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3Ro
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlKiBkb21haW5GaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB1bnNpZ25lZCBkb21haW5GaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGZpbHRl
cnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQg
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbDsKKyAg
ICBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGZpbHRlcnNX
aXRoQ29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgZmlsdGVy
c1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGNvbmRpdGlvbmVkRmlsdGVy
c0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgY29uZGl0aW9uZWRGaWx0ZXJz
Qnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBjb25zdCBXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRl
KiBhY3Rpb25zKCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgYWN0aW9uc0xlbmd0aCgpIGNv
bnN0IGZpbmFsOwogICAgIAogICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgbV9k
YXRhOwogfTsKQEAgLTYwLDQgKzU5LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSNlbmRpZiAvLyBXZWJD
b21waWxlZENvbnRlbnRFeHRlbnNpb25faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcAkocmV2aXNp
b24gMjEzMzc3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4
dGVuc2lvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTIgQEAgdm9pZCBX
ZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOjplbgogCiAgICAgZW5jb2RlciA8PCBhY3Rp
b25zT2Zmc2V0OwogICAgIGVuY29kZXIgPDwgYWN0aW9uc1NpemU7Ci0gICAgZW5jb2RlciA8PCBm
aWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZU9mZnNldDsKLSAgICBlbmNvZGVyIDw8IGZpbHRl
cnNXaXRob3V0RG9tYWluc0J5dGVjb2RlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IGZpbHRlcnNXaXRo
RG9tYWluc0J5dGVjb2RlT2Zmc2V0OwotICAgIGVuY29kZXIgPDwgZmlsdGVyc1dpdGhEb21haW5z
Qnl0ZWNvZGVTaXplOwotICAgIGVuY29kZXIgPDwgZG9tYWluRmlsdGVyc0J5dGVjb2RlT2Zmc2V0
OwotICAgIGVuY29kZXIgPDwgZG9tYWluRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBlbmNvZGVy
IDw8IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OworICAgIGVuY29kZXIg
PDwgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOworICAgIGVuY29kZXIgPDwg
ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CisgICAgZW5jb2RlciA8PCBmaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgZW5jb2RlciA8PCBjb25kaXRpb25l
ZEZpbHRlcnNCeXRlY29kZU9mZnNldDsKKyAgICBlbmNvZGVyIDw8IGNvbmRpdGlvbmVkRmlsdGVy
c0J5dGVjb2RlU2l6ZTsKIH0KIAogYm9vbCBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNp
b25EYXRhJiBjb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKQpAQCAtNTksMTcgKzU5LDE3IEBA
IGJvb2wgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YTo6ZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
RGF0YS5hY3Rpb25zU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuZmlsdGVyc1dpdGhvdXREb21h
aW5zQnl0ZWNvZGVPZmZzZXQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbkRhdGEuZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVTaXplKSkK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5m
aWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZU9mZnNldCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVj
b2RlT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5maWx0ZXJzV2l0aERvbWFpbnNCeXRlY29k
ZVNpemUpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
RGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb21waWxlZENvbnRlbnRFeHRlbnNpb25E
YXRhLmRvbWFpbkZpbHRlcnNCeXRlY29kZU9mZnNldCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2Rl
T2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5kb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplKSkK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY29u
ZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmgJKHJldmlzaW9uIDIxMzM3NykKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGFfaAotI2RlZmluZSBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhX2gKKyNwcmFnbWEg
b25jZQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIApAQCAtNDEsMjEgKzQwLDE5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNp
b25EYXRhIHsKIHB1YmxpYzoKLSAgICBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKCkK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEo
UmVmUHRyPFNoYXJlZE1lbW9yeT4mJiBkYXRhLCBOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEs
IHVuc2lnbmVkIGFjdGlvbnNPZmZzZXQsIHVuc2lnbmVkIGFjdGlvbnNTaXplLCB1bnNpZ25lZCBm
aWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgZmlsdGVyc1dpdGhv
dXREb21haW5zQnl0ZWNvZGVTaXplLCB1bnNpZ25lZCBmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29k
ZU9mZnNldCwgdW5zaWduZWQgZmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGVTaXplLCB1bnNpZ25l
ZCBkb21haW5GaWx0ZXJzQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGRvbWFpbkZpbHRlcnNCeXRl
Y29kZVNpemUpCisgICAgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSgpID0gZGVmYXVs
dDsKKworICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEoUmVmUHRyPFNoYXJlZE1l
bW9yeT4mJiBkYXRhLCBOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEsIHVuc2lnbmVkIGFjdGlv
bnNPZmZzZXQsIHVuc2lnbmVkIGFjdGlvbnNTaXplLCB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
Qnl0ZWNvZGVTaXplLCB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNl
dCwgdW5zaWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplLCB1bnNpZ25lZCBj
b25kaXRpb25lZEZpbHRlcnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgY29uZGl0aW9uZWRGaWx0
ZXJzQnl0ZWNvZGVTaXplKQogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRhKSkKICAgICAgICAg
LCBmaWxlRGF0YShmaWxlRGF0YSkKICAgICAgICAgLCBhY3Rpb25zT2Zmc2V0KGFjdGlvbnNPZmZz
ZXQpCiAgICAgICAgICwgYWN0aW9uc1NpemUoYWN0aW9uc1NpemUpCi0gICAgICAgICwgZmlsdGVy
c1dpdGhvdXREb21haW5zQnl0ZWNvZGVPZmZzZXQoZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNv
ZGVPZmZzZXQpCi0gICAgICAgICwgZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVTaXplKGZp
bHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlU2l6ZSkKLSAgICAgICAgLCBmaWx0ZXJzV2l0aERv
bWFpbnNCeXRlY29kZU9mZnNldChmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZU9mZnNldCkKLSAg
ICAgICAgLCBmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZVNpemUoZmlsdGVyc1dpdGhEb21haW5z
Qnl0ZWNvZGVTaXplKQotICAgICAgICAsIGRvbWFpbkZpbHRlcnNCeXRlY29kZU9mZnNldChkb21h
aW5GaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICwgZG9tYWluRmlsdGVyc0J5dGVjb2Rl
U2l6ZShkb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplKQorICAgICAgICAsIGZpbHRlcnNXaXRob3V0
Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0KGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0KQorICAgICAgICAsIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZShm
aWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUpCisgICAgICAgICwgZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQoZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVP
ZmZzZXQpCisgICAgICAgICwgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKGZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkKKyAgICAgICAgLCBjb25kaXRpb25lZEZpbHRl
cnNCeXRlY29kZU9mZnNldChjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZU9mZnNldCkKKyAgICAg
ICAgLCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUoY29uZGl0aW9uZWRGaWx0ZXJzQnl0
ZWNvZGVTaXplKQogICAgIHsKICAgICB9CiAKQEAgLTY2LDE1ICs2MywxNCBAQCBwdWJsaWM6CiAg
ICAgTmV0d29ya0NhY2hlOjpEYXRhIGZpbGVEYXRhOwogICAgIHVuc2lnbmVkIGFjdGlvbnNPZmZz
ZXQgeyAwIH07CiAgICAgdW5zaWduZWQgYWN0aW9uc1NpemUgeyAwIH07Ci0gICAgdW5zaWduZWQg
ZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVPZmZzZXQgeyAwIH07Ci0gICAgdW5zaWduZWQg
ZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVTaXplIHsgMCB9OwotICAgIHVuc2lnbmVkIGZp
bHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlT2Zmc2V0IHsgMCB9OwotICAgIHVuc2lnbmVkIGZpbHRl
cnNXaXRoRG9tYWluc0J5dGVjb2RlU2l6ZSB7IDAgfTsKLSAgICB1bnNpZ25lZCBkb21haW5GaWx0
ZXJzQnl0ZWNvZGVPZmZzZXQgeyAwIH07Ci0gICAgdW5zaWduZWQgZG9tYWluRmlsdGVyc0J5dGVj
b2RlU2l6ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZU9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZVNpemUgeyAwIH07CisgICAgdW5zaWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGVPZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGVTaXplIHsgMCB9OworICAgIHVuc2lnbmVkIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2Rl
T2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6
ZSB7IDAgfTsKIH07CiAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
Ci0jZW5kaWYgLy8gV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YV9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZS5jcHAJKHJldmlzaW9uIDIxMzM3NykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgzLDE3ICs4MywxNyBAQCBjb25zdCBzaXplX3QgQ29udGVudEV4dGVuc2lvbkZp
bGVIZWFkZXJTCiBzdHJ1Y3QgQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhIHsKICAgICB1aW50MzJf
dCB2ZXJzaW9uIHsgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6Q3VycmVudENvbnRlbnRFeHRl
bnNpb25GaWxlVmVyc2lvbiB9OwogICAgIHVpbnQ2NF90IGFjdGlvbnNTaXplIHsgMCB9OwotICAg
IHVpbnQ2NF90IGZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlU2l6ZSB7IDAgfTsKLSAgICB1
aW50NjRfdCBmaWx0ZXJzV2l0aERvbWFpbkJ5dGVjb2RlU2l6ZSB7IDAgfTsKLSAgICB1aW50NjRf
dCBkb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplIHsgMCB9OworICAgIHVpbnQ2NF90IGZpbHRlcnNX
aXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSB7IDAgfTsKKyAgICB1aW50NjRfdCBmaWx0ZXJz
V2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUgeyAwIH07CisgICAgdWludDY0X3QgY29uZGl0aW9u
ZWRGaWx0ZXJzQnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIAogICAgIHNpemVfdCBmaWxlU2l6ZSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJT
aXplCiAgICAgICAgICAgICArIGFjdGlvbnNTaXplCi0gICAgICAgICAgICArIGZpbHRlcnNXaXRo
b3V0RG9tYWluc0J5dGVjb2RlU2l6ZQotICAgICAgICAgICAgKyBmaWx0ZXJzV2l0aERvbWFpbkJ5
dGVjb2RlU2l6ZQotICAgICAgICAgICAgKyBkb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplOworICAg
ICAgICAgICAgKyBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUKKyAgICAgICAg
ICAgICsgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplCisgICAgICAgICAgICArIGNv
bmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAgICB9CiB9OwogCkBAIC0xMDMsOSArMTAz
LDkgQEAgc3RhdGljIERhdGEgZW5jb2RlQ29udGVudEV4dGVuc2lvbk1ldGFEYQogCiAgICAgZW5j
b2RlciA8PCBtZXRhRGF0YS52ZXJzaW9uOwogICAgIGVuY29kZXIgPDwgbWV0YURhdGEuYWN0aW9u
c1NpemU7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dERvbWFpbnNCeXRl
Y29kZVNpemU7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aERvbWFpbkJ5dGVj
b2RlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmRvbWFpbkZpbHRlcnNCeXRlY29kZVNp
emU7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZVNpemU7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNC
eXRlY29kZVNpemU7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5jb25kaXRpb25lZEZpbHRlcnNC
eXRlY29kZVNpemU7CiAKICAgICBBU1NFUlQoZW5jb2Rlci5idWZmZXJTaXplKCkgPT0gQ29udGVu
dEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplKTsKICAgICByZXR1cm4gRGF0YShlbmNvZGVyLmJ1ZmZl
cigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CkBAIC0xMjUsMTEgKzEyNSwxMSBAQCBzdGF0aWMg
Ym9vbCBkZWNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuYWN0aW9uc1NpemUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1l
dGFEYXRhLmZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlU2l6ZSkpCisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVT
aXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtZXRhRGF0YS5maWx0ZXJzV2l0aERvbWFpbkJ5dGVjb2RlU2l6ZSkpCisgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVT
aXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtZXRhRGF0YS5kb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplKSkKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZXRhRGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0LDM3ICsxNzQsMzcgQEAgc3RhdGljIHN0ZDo6ZXJyb3Jf
Y29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAgICAgICAgLCBtX21ldGFEYXRhKG1ldGFEYXRh
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmFjdGlvbnNTaXplKTsK
LSAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNv
ZGVTaXplKTsKLSAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhEb21haW5C
eXRlY29kZVNpemUpOwotICAgICAgICAgICAgQVNTRVJUKCFtZXRhRGF0YS5kb21haW5GaWx0ZXJz
Qnl0ZWNvZGVTaXplKTsKKyAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKKyAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEu
ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
bWV0YURhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgdm9pZCB3cml0ZUZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlKFZl
Y3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCB3cml0
ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJiBi
eXRlY29kZSkgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRl
cnNXaXRoRG9tYWluQnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9kb21h
aW5GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIG1fZmlsdGVyc1dpdGhvdXRE
b21haW5zQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKKyAgICAgICAgICAgIEFT
U0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAg
ICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAg
ICBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiArPSBieXRlY29kZS5z
aXplKCk7CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0
ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgd3JpdGVG
aWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUp
IG92ZXJyaWRlCisgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVCghbV9kb21haW5GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKLSAgICAg
ICAgICAgIG1fZmlsdGVyc1dpdGhEb21haW5CeXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUuc2l6
ZSgpOworICAgICAgICAgICAgQVNTRVJUKCFtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0
ZW4pOworICAgICAgICAgICAgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiAr
PSBieXRlY29kZS5zaXplKCk7CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2Rl
LmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHZvaWQgd3JpdGVEb21haW5GaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5
dGVjb2RlKSBvdmVycmlkZQorICAgICAgICB2b2lkIHdyaXRlQ29uZGl0aW9uZWRGaWx0ZXJzQnl0
ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX2RvbWFpbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUu
c2l6ZSgpOworICAgICAgICAgICAgbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuICs9
IGJ5dGVjb2RlLnNpemUoKTsKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUu
ZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgd3Jp
dGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiBhY3Rpb25zKSBvdmVycmlk
ZQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhvdXREb21haW5z
Qnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aERvbWFp
bkJ5dGVjb2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZG9tYWluRmlsdGVyc0J5
dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0
aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0
aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fYWN0aW9u
c1dyaXR0ZW4pOwogICAgICAgICAgICAgbV9hY3Rpb25zV3JpdHRlbiArPSBhY3Rpb25zLnNpemUo
KTsKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYWN0aW9ucy5kYXRhKCksIGFjdGlvbnMu
c2l6ZSgpKSk7CkBAIC0yMTMsOSArMjEzLDkgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21w
aWxlZFRvRmlsZShTdAogICAgICAgICB2b2lkIGZpbmFsaXplKCkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgbV9tZXRhRGF0YS5hY3Rpb25zU2l6ZSA9IG1fYWN0aW9uc1dyaXR0ZW47
Ci0gICAgICAgICAgICBtX21ldGFEYXRhLmZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlU2l6
ZSA9IG1fZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVXcml0dGVuOwotICAgICAgICAgICAg
bV9tZXRhRGF0YS5maWx0ZXJzV2l0aERvbWFpbkJ5dGVjb2RlU2l6ZSA9IG1fZmlsdGVyc1dpdGhE
b21haW5CeXRlY29kZVdyaXR0ZW47Ci0gICAgICAgICAgICBtX21ldGFEYXRhLmRvbWFpbkZpbHRl
cnNCeXRlY29kZVNpemUgPSBtX2RvbWFpbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW47CisgICAgICAg
ICAgICBtX21ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSA9IG1f
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuOworICAgICAgICAgICAgbV9t
ZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUgPSBtX2ZpbHRlcnNXaXRo
Q29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuOworICAgICAgICAgICAgbV9tZXRhRGF0YS5jb25kaXRp
b25lZEZpbHRlcnNCeXRlY29kZVNpemUgPSBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0
ZW47CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERhdGEgaGVhZGVyID0gZW5jb2RlQ29udGVu
dEV4dGVuc2lvbk1ldGFEYXRhKG1fbWV0YURhdGEpOwogICAgICAgICAgICAgaWYgKCFtX2ZpbGVF
cnJvciAmJiBXZWJDb3JlOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6Rmls
ZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewpAQCAtMjM4LDkgKzIzOCw5
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKICAgICAgICAgCiAg
ICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CiAgICAgICAg
IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSYgbV9tZXRhRGF0YTsKLSAgICAgICAgc2l6ZV90IG1f
ZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVXcml0dGVuIHsgMCB9OwotICAgICAgICBzaXpl
X3QgbV9maWx0ZXJzV2l0aERvbWFpbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKLSAgICAgICAgc2l6
ZV90IG1fZG9tYWluRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKKyAgICAgICAgc2l6ZV90
IG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuIHsgMCB9OworICAgICAg
ICBzaXplX3QgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKKyAg
ICAgICAgc2l6ZV90IG1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAg
ICAgICAgc2l6ZV90IG1fYWN0aW9uc1dyaXR0ZW4geyAwIH07CiAgICAgICAgIGJvb2wgbV9maWxl
RXJyb3IgeyBmYWxzZSB9OwogICAgIH07CkBAIC0yODksMjIgKzI4OSwyMiBAQCBzdGF0aWMgUmVm
UHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+CiAgICAgICAgIG1ldGFEYXRhLmFjdGlvbnNT
aXplLAogICAgICAgICBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUKICAgICAgICAgICAg
ICsgbWV0YURhdGEuYWN0aW9uc1NpemUsCi0gICAgICAgIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0
RG9tYWluc0J5dGVjb2RlU2l6ZSwKKyAgICAgICAgbWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGVTaXplLAogICAgICAgICBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNp
emUKICAgICAgICAgICAgICsgbWV0YURhdGEuYWN0aW9uc1NpemUKLSAgICAgICAgICAgICsgbWV0
YURhdGEuZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVTaXplLAotICAgICAgICBtZXRhRGF0
YS5maWx0ZXJzV2l0aERvbWFpbkJ5dGVjb2RlU2l6ZSwKKyAgICAgICAgICAgICsgbWV0YURhdGEu
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplLAorICAgICAgICBtZXRhRGF0YS5m
aWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUsCiAgICAgICAgIENvbnRlbnRFeHRlbnNp
b25GaWxlSGVhZGVyU2l6ZQogICAgICAgICAgICAgKyBtZXRhRGF0YS5hY3Rpb25zU2l6ZQotICAg
ICAgICAgICAgKyBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZVNpemUKLSAg
ICAgICAgICAgICsgbWV0YURhdGEuZmlsdGVyc1dpdGhEb21haW5CeXRlY29kZVNpemUsCi0gICAg
ICAgIG1ldGFEYXRhLmRvbWFpbkZpbHRlcnNCeXRlY29kZVNpemUKKyAgICAgICAgICAgICsgbWV0
YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplCisgICAgICAgICAgICAr
IG1ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSwKKyAgICAgICAgbWV0
YURhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplCiAgICAgKTsKICAgICBhdXRvIGNv
bXBpbGVkQ29udGVudEV4dGVuc2lvbiA9IFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpjcmVhdGUoV1RGTW92ZShjb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKSk7CiAgICAg
cmV0dXJuIEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShpZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbikpOwogfQogCi12b2lkIFVzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVu
c2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlOjpsb29rdXBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0
ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9y
ZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50
aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0
aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRo
KHN0b3JlUGF0aCwgaWRlbnRpZmllcik7CkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlOjpsb29rdXBDbwogICAgIH0pOwogfQogCi12b2lkIFVzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChS
ZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29u
dGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcm
JiBqc29uLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uPiwg
c3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb21waWxlUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIg
PSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29uID0ganNvbi5pc29sYXRlZENvcHkoKSwg
c3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBhdXRv
IHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyKTsKQEAgLTM1NCw3
ICszNTQsNyBAQCB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDCiAgICAg
fSk7CiB9CiAKLXZvaWQgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6cmVtb3ZlQ29udGVudEV4
dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lk
KHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlOjpyZW1vdmVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fcmVtb3ZlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9y
ZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRo
ID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmUuaAkocmV2aXNpb24gMjEzMzc3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVfaAotI2RlZmluZSBBUElVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKIApAQCAtNjAsOSArNTksOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoKTsK
ICAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudEV4dGVuc2lvblN0b3JlKCk7CiAKLSAgICB2b2lkIGNv
bXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6
OlN0cmluZyYmIGpzb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpVc2VyQ29udGVu
dEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKLSAgICB2b2lkIGxvb2t1cENvbnRlbnRF
eHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsK
LSAgICB2b2lkIHJlbW92ZUNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCBj
b21waWxlQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RG
OjpTdHJpbmcmJiBqc29uLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0
ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4pOworICAgIHZvaWQgbG9va3VwQ29udGVudEV4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8
QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKKyAgICB2b2lk
IHJlbW92ZUNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1
bmN0aW9uPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4pOwogCiAgICAgLy8gRm9yIHRlc3Rpbmcgb25s
eS4KICAgICB2b2lkIHN5bmNocm9ub3VzUmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKQEAg
LTkxLDQgKzkwLDMgQEAgbmFtZXNwYWNlIHN0ZCB7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQotI2VuZGlmIC8vIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVf
aApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjEzNTMwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTctMDMtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBSZW5hbWUgIkRvbWFp
biIgdG8gIkNvbmRpdGlvbiIgd2hlcmUgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI5NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluTWVtb3J5
Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKwogMjAxNy0wMy0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IFJlZmFjdG9yIHNldHVwX3Rlc3RfcnVuIGZvciBJ
T1NQb3J0IGFuZCBJT1NTaW11bGF0b3IKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAkocmV2aXNpb24gMjEz
Mzc3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsOSArODMsOSBAQCBwdWJsaWM6CiAKIHN0cnVj
dCBDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIHsKICAgICBWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlPiBhY3Rpb25zOwotICAgIFZlY3RvcjxDb250ZW50
RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGZpbHRlcnNXaXRob3V0RG9tYWluczsKLSAgICBWZWN0
b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiBmaWx0ZXJzV2l0aERvbWFpbnM7Ci0g
ICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4gZG9tYWluRmlsdGVyczsK
KyAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnM7CisgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4g
ZmlsdGVyc1dpdGhDb25kaXRpb25zOworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZB
Qnl0ZWNvZGU+IGNvbmRpdGlvbmVkRmlsdGVyczsKIH07CiAKIGNsYXNzIEluTWVtb3J5Q29udGVu
dEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQgewpAQCAtOTQsNDMgKzk0LDQz
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2RhdGEoZGF0YSkKICAgICB7CiAgICAgICAgIEVYUEVD
VF9FUShkYXRhLmFjdGlvbnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEu
ZmlsdGVyc1dpdGhvdXREb21haW5zLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIEVYUEVDVF9FUShk
YXRhLmZpbHRlcnNXaXRoRG9tYWlucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBFQ1RfRVEo
ZGF0YS5kb21haW5GaWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVYUEVDVF9FUShkYXRh
LmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1Rf
RVEoZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLnNpemUoKSwgMHVsbCk7CiAgICAgfQogCi0g
ICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVk
QWN0aW9uQnl0ZT4mJiBhY3Rpb25zKSBvdmVycmlkZQorICAgIHZvaWQgd3JpdGVBY3Rpb25zKFZl
Y3RvcjxDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYgYWN0aW9ucykg
ZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwogICAgICAgICBF
WFBFQ1RfRVEobV9kYXRhLmFjdGlvbnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgRVhQRUNUX0VR
KG1fZGF0YS5maWx0ZXJzV2l0aG91dERvbWFpbnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgRVhQ
RUNUX0VRKG1fZGF0YS5maWx0ZXJzV2l0aERvbWFpbnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAg
RVhQRUNUX0VRKG1fZGF0YS5kb21haW5GaWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVY
UEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLnNpemUoKSwgMHVsbCk7Cisg
ICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUoKSwgMHVs
bCk7CisgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLnNpemUoKSwg
MHVsbCk7CiAgICAgICAgIG1fZGF0YS5hY3Rpb25zLmFwcGVuZFZlY3RvcihhY3Rpb25zKTsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCB3cml0ZUZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlKFZl
Y3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIG92ZXJyaWRl
CisgICAgdm9pZCB3cml0ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAgewog
ICAgICAgICBFWFBFQ1RfRkFMU0UoZmluYWxpemVkKTsKLSAgICAgICAgRVhQRUNUX0VRKG1fZGF0
YS5maWx0ZXJzV2l0aERvbWFpbnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgRVhQRUNUX0VRKG1f
ZGF0YS5kb21haW5GaWx0ZXJzLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIG1fZGF0YS5maWx0ZXJz
V2l0aG91dERvbWFpbnMuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKKyAgICAgICAgRVhQRUNUX0VR
KG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG1fZGF0YS5jb25kaXRpb25lZEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKKyAgICAgICAg
bV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUK
KyAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPENvbnRl
bnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKICAgICB7CiAgICAg
ICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmRv
bWFpbkZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRoRG9t
YWlucy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmNv
bmRpdGlvbmVkRmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBtX2RhdGEuZmlsdGVyc1dp
dGhDb25kaXRpb25zLmFwcGVuZFZlY3RvcihieXRlY29kZSk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgd3JpdGVEb21haW5GaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHdyaXRlQ29uZGl0aW9u
ZWRGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4m
JiBieXRlY29kZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQp
OwotICAgICAgICBtX2RhdGEuZG9tYWluRmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwor
ICAgICAgICBtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLmFwcGVuZFZlY3RvcihieXRlY29kZSk7
CiAgICAgfQogICAgIAotICAgIHZvaWQgZmluYWxpemUoKSBvdmVycmlkZQorICAgIHZvaWQgZmlu
YWxpemUoKSBmaW5hbAogICAgIHsKICAgICAgICAgZmluYWxpemVkID0gdHJ1ZTsKICAgICB9CkBA
IC0xNTYsMjMgKzE1NiwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBJbk1lbW9yeUNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uRGF0YSkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb24+
IGNyZWF0ZShDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhJiYgZGF0YSkKKyAgICBzdGF0aWMg
UmVmPEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiBjcmVhdGUoQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uRGF0YSYmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKFdURk1vdmUoZGF0YSkpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNp
b24oV1RGTW92ZShkYXRhKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkluTWVtb3J5Q29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uKCkKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgQ29udGVudEV4
dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kYXRhLmFjdGlvbnMuZGF0YSgpOyB9Ci0gICAgdW5zaWduZWQgYWN0aW9uc0xl
bmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YS5hY3Rpb25zLnNpemUoKTsgfQot
ICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhvdXRE
b21haW5zQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RhdGEuZmlsdGVyc1dp
dGhvdXREb21haW5zLmRhdGEoKTsgfQotICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0RG9tYWlu
c0J5dGVjb2RlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kYXRhLmZpbHRlcnNX
aXRob3V0RG9tYWlucy5zaXplKCk7IH0KLSAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6REZB
Qnl0ZWNvZGUqIGZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9kYXRhLmZpbHRlcnNXaXRoRG9tYWlucy5kYXRhKCk7IH0KLSAgICB1bnNpZ25lZCBm
aWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGF0YS5maWx0ZXJzV2l0aERvbWFpbnMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgQ29udGVudEV4
dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBkb21haW5GaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2RhdGEuZG9tYWluRmlsdGVycy5kYXRhKCk7IH0KLSAgICB1bnNpZ25l
ZCBkb21haW5GaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2RhdGEuZG9tYWluRmlsdGVycy5zaXplKCk7IH0KKyAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9u
czo6U2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2RhdGEuYWN0aW9ucy5kYXRhKCk7IH0KKyAgICB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmFjdGlvbnMuc2l6ZSgpOyB9CisgICAgY29uc3QgQ29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlv
bnMuZGF0YSgpOyB9CisgICAgdW5zaWduZWQgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVMZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zLnNpemUoKTsgfQorICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29k
ZSogZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLmRhdGEoKTsgfQorICAgIHVuc2lnbmVkIGZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
YXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5zaXplKCk7IH0KKyAgICBjb25zdCBDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kYXRhLmNvbmRpdGlvbmVkRmlsdGVycy5kYXRhKCk7IH0KKyAgICB1
bnNpZ25lZCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZGF0YS5jb25kaXRpb25lZEZpbHRlcnMuc2l6ZSgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb24oQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uRGF0YSYmIGRhdGEpCkBAIC0xMzI2LDM0ICsxMzI2LDMwIEBAIFRFU1RfRihDb250ZW50RXh0
ZW5zaW9uVGVzdCwgSW52YWxpZEpTT04KICAgICBjaGVja0NvbXBpbGVyRXJyb3IocnVsZXM1MDAw
MC51dGY4KCkuZGF0YSgpLCB7IH0pOwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcihydWxlczUwMDAx
LnV0ZjgoKS5kYXRhKCksIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05Ub29NYW55UnVsZXMpOwogICAgIAotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
IndlYmtpdC5vcmdcIixcImlmLWRvbWFpblwiOnt9fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKLSAgICBjaGVja0Nv
bXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21haW5cIjpbNV19fV0iLCBD
b250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZERvbWFp
bkxpc3QpOworICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIixcImlm
LWRvbWFpblwiOnt9fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJv
cjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21haW5cIjpbNV19fV0iLCBDb250ZW50RXh0ZW5zaW9u
czo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZENvbmRpdGlvbkxpc3QpOwogICAg
IGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwi
dHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLWRvbWFpblwiOltc
ImFcIl19fV0iLCB7IH0pOwotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5v
cmdcIixcImlmLWRvbWFpblwiOlwiYVwifX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRF
eHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKLSAgICBjaGVja0NvbXBpbGVy
RXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21haW5cIjpmYWxzZX19XSIsIENvbnRl
bnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkRG9tYWluTGlz
dCk7Ci0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxv
Y2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtZG9t
YWluXCI6bnVsbH19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05JbnZhbGlkRG9tYWluTGlzdCk7Ci0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
d2Via2l0Lm9yZ1wiLFwidW5sZXNzLWRvbWFpblwiOnt9fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKLSAgICBjaGVj
a0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6WzVd
fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWREb21haW5MaXN0KTsKLSAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3Jn
XCIsXCJ1bmxlc3MtZG9tYWluXCI6W1wiXCJdfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRl
bnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKLSAgICBjaGVja0NvbXBp
bGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6XCJhXCJ9fV0i
LCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZERv
bWFpbkxpc3QpOwotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIixc
InVubGVzcy1kb21haW5cIjpudWxsfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25FcnJvcjo6SlNPTkludmFsaWREb21haW5MaXN0KTsKLSAgICBjaGVja0NvbXBpbGVyRXJy
b3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6ZmFsc2V9fV0iLCBDb250
ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZERvbWFpbkxp
c3QpOworICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLWRv
bWFpblwiOlwiYVwifX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJv
cjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21haW5cIjpmYWxzZX19XSIsIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdCk7Cisg
ICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtZG9tYWluXCI6
bnVsbH19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05J
bnZhbGlkQ29uZGl0aW9uTGlzdCk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Vi
a2l0Lm9yZ1wiLFwidW5sZXNzLWRvbWFpblwiOnt9fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVj
a0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6WzVd
fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQu
b3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6W1wiXCJdfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVj
a0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6XCJh
XCJ9fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52
YWxpZENvbmRpdGlvbkxpc3QpOworICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtp
dC5vcmdcIixcInVubGVzcy1kb21haW5cIjpudWxsfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVj
a0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6ZmFs
c2V9fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52
YWxpZENvbmRpdGlvbkxpc3QpOwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtp
dC5vcmdcIixcInVubGVzcy1kb21haW5cIjpbXCJBXCJdfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkRvbWFpbk5vdExvd2VyQ2FzZUFTQ0lJKTsKICAg
ICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWlu
XCI6W1wiXFx1MDBEQ1wiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9u
RXJyb3I6OkpTT05Eb21haW5Ob3RMb3dlckNhc2VBU0NJSSk7CiAgICAgY2hlY2tDb21waWxlckVy
cm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwidW5sZXNzLWRvbWFpblwiOltcIjBcIl19fV0iLCB7
IH0pOwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIixcInVubGVz
cy1kb21haW5cIjpbXCJhXCJdfX1dIiwgeyB9KTsKIAotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLWRvbWFpblwiOltdLFwidW5sZXNzLWRvbWFpblwiOltc
ImFcIl19fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09O
SW52YWxpZERvbWFpbkxpc3QpOwotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtp
dC5vcmdcIixcInVubGVzcy1kb21haW5cIjpbXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkRG9tYWluTGlzdCk7Ci0gICAgY2hlY2tDb21w
aWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtZG9tYWluXCI6NX19XSIsIENvbnRl
bnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkRG9tYWluTGlz
dCk7Ci0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxv
Y2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwidW5sZXNz
LWRvbWFpblwiOjV9fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9y
OjpKU09OSW52YWxpZERvbWFpbkxpc3QpOwotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
IndlYmtpdC5vcmdcIixcImlmLWRvbWFpblwiOjUsXCJ1bmxlc3MtZG9tYWluXCI6NX19XSIsIENv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkRG9tYWlu
TGlzdCk7Ci0gICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
YmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYt
ZG9tYWluXCI6W119fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9y
OjpKU09OSW52YWxpZERvbWFpbkxpc3QpOwotICAgIAotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLWRvbWFpblwiOltcImFcIl0sXCJ1bmxlc3MtZG9tYWlu
XCI6W119fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09O
VW5sZXNzQW5kSWZEb21haW4pOwotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtp
dC5vcmdcIixcImlmLWRvbWFpblwiOltcImFcIl0sXCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19
XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Vbmxlc3NB
bmRJZkRvbWFpbik7Ci0KLSAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3Jn
XCIsIFwidW5leHBlY3RlZC1pZGVudGlmaWVyLXNob3VsZC1iZS1pZ25vcmVkXCI6NX19XSIsIHsg
fSk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxv
Y2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtZG9t
YWluXCI6W10sXCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdCk7CisgICAg
Y2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwidW5sZXNzLWRvbWFpblwi
OltdfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTklu
dmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJr
aXQub3JnXCIsXCJpZi1kb21haW5cIjo1fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRF
eHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBjaGVja0NvbXBp
bGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJ1bmxlc3MtZG9tYWluXCI6NX19XSIsIENv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0
aW9uTGlzdCk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwi
aWYtZG9tYWluXCI6NSxcInVubGVzcy1kb21haW5cIjo1fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKKyAgICBj
aGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21haW5cIjpbXX19
XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlk
Q29uZGl0aW9uTGlzdCk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9y
Z1wiLFwiaWYtZG9tYWluXCI6W1wiYVwiXSxcInVubGVzcy1kb21haW5cIjpbXX19XSIsIENvbnRl
bnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlv
bnMpOwogCiAgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6NSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCJ9fV0iLAogICAgICAgICBDb250ZW50RXh0
ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZEFjdGlvbik7Cg==
</data>
<flag name="review"
          id="325304"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>