<?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>219078</bug_id>
          
          <creation_ts>2020-11-18 04:42:56 -0800</creation_ts>
          <short_desc>[GStreamer] GStreamerRegistryScanner cleanups and improvements</short_desc>
          <delta_ts>2020-11-19 11:44:37 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>lmoura</cc>
    
    <cc>menard</cc>
    
    <cc>pnormand</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708563</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-11-18 04:42:56 -0800</bug_when>
    <thetext>We are creating the factories and keeping them alive forever, because GStreamerRegistryScanner is singleton. We can just delete them after the initialization and then create the factories we need on demand when checking AV! codecs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708565</commentid>
    <comment_count>1</comment_count>
      <attachid>414438</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-11-18 04:53:44 -0800</bug_when>
    <thetext>Created attachment 414438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709001</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-11-19 00:54:54 -0800</bug_when>
    <thetext>Committed r270019: &lt;https://trac.webkit.org/changeset/270019&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709003</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-19 00:55:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/71577999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709208</commentid>
    <comment_count>4</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-11-19 11:44:37 -0800</bug_when>
    <thetext>The usage of OptionSet with All (`(1 &lt;&lt; 8) - 1`) was asserting in debug:

https://build.webkit.org/results/WPE-Linux-64-bit-Debug-Tests/r270023%20(5273)/css1/basic/contextual_selectors-crash-log.txt

https://build.webkit.org/results/WPE-Linux-64-bit-Debug-Tests/r270023%20(5273)/results.html

Tentative fix pushed in r270039 using fromRaw as suggested by Philippe.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414438</attachid>
            <date>2020-11-18 04:53:44 -0800</date>
            <delta_ts>2020-11-18 08:03:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-gst-registry-cleanup.diff</filename>
            <type>text/plain</type>
            <size>45646</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMzhkNmNmMWNlMTguLmY1Zjk1NGFiNmFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDIwLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIgY2xlYW51cHMgYW5kIGltcHJvdmVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UgYXJlIGNyZWF0aW5nIHRoZSBmYWN0b3JpZXMgYW5kIGtl
ZXBpbmcgdGhlbSBhbGl2ZSBmb3JldmVyLCBiZWNhdXNlIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
ciBpcyBzaW5nbGV0b24uIFdlCisgICAgICAgIGNhbiBqdXN0IGRlbGV0ZSB0aGVtIGFmdGVyIHRo
ZSBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBjcmVhdGUgdGhlIGZhY3RvcmllcyB3ZSBuZWVkIG9u
IGRlbWFuZCB3aGVuIGNoZWNraW5nIEFWMQorICAgICAgICBjb2RlY3MuIFRoaXMgcGF0Y2ggaW5j
bHVkZXMgc29tZSBvdGhlciBtaW5vciBmaXhlcyBhbmQgY2xlYW51cHMgKG1pc3NpbmcgY29uc3Qs
IGF2b2lkIHVzaW5nIGJsYWNrTGlzdCwgZXRjLikKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpFbGVtZW50
RmFjdG9yaWVzKTogQ3JlYXRlIHRoZSBmYWN0b3JpZXMgZm9yIHRoZSBnaXZlbiB0eXBlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmll
czo6fkVsZW1lbnRGYWN0b3JpZXMpOiBEZXN0cm95IHRoZSBmYWN0b3JpZXMuCisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXM6OmVsZW1l
bnRGYWN0b3J5VHlwZVRvU3RyaW5nKTogUmV0dXJuIGEgc3RyaW5nIGZvciB0aGUgZ2l2ZW4KKyAg
ICAgICAgZmFjdG9yeSB0eXBlLCB1c2VkIGZvciBsb2dnaW5nLgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpmYWN0b3J5IGNvbnN0
KTogUmV0dXJuIHRoZSBmYWN0b3J5IGZvciB0aGUgZ2l2ZW4gdHlwZS4KKyAgICAgICAgKFdlYkNv
cmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6aGFzRWxlbWVu
dEZvck1lZGlhVHlwZSBjb25zdCk6IE1vdmVkIGhlcmUgbm93IHJlY2VpdmluZyBhCisgICAgICAg
IGZhY3RvcnkgdHlwZSBpbnN0ZWFkIG9mIHRoZSBmYWN0b3J5IGl0c2VsZi4KKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
KTogQ3JlYXRlIGEgRWxlbWVudEZhY3RvcmllcyBmb3IgYWxsIHRoZSB0eXBlcyBhbmQKKyAgICAg
ICAgcGFzcyBpdCB0byB0aGUgaW5pdGlhbGl6ZXJzLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjptaW1lVHlwZVNldCBjb25zdCk6IFVzZSByZWxlYXNlIGFzc2Vy
dCBhbmQgcmVtb3ZlIHRoZSByZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OmlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRG
cm9tQ2Fwc01hcHBpbmcpOiBJdCByZWNlaXZlcyBhIEVsZW1lbnRGYWN0b3JpZXMgbm93LgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2Rl
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
aW5pdGlhbGl6ZUVuY29kZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXI6OmlzQ29kZWNTdXBwb3J0ZWQgY29uc3QpOiBNYWtlIHRoZSByZWNlaXZl
ZCBjb2RlIG5hbWUgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OmFyZUFsbENvZGVjc1N1cHBvcnRlZCBjb25zdCk6IFVzZSBjb25zdCByZWZlcmVuY2Vz
IHRvIGl0ZXJhdGUgdGhlIGNvZGVjcy4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aXNBVkMxQ29kZWNTdXBwb3J0ZWQgY29uc3QpOiBDcmVhdGUgYSBFbGVtZW50
RmFjdG9yaWVzIGZvciB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgdHlwZSBhbmQgdXNlIHRvIGNo
ZWNrIGlmIHRoZSBnaXZlbiBjb2RlYyBpcyBzdXBwb3J0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQ29uZmlndXJhdGlvblN1cHBvcnRlZCBjb25zdCk6
IE1ha2UgbWVkaWFDb25maWd1cmF0aW9uIHBhcmFtZXRlciBjb25zdC4KKyAgICAgICAgKFdlYkNv
cmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6fkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Om1p
bWVUeXBlU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aGFzRWxlbWVudEZvck1lZGlhVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5o
OgorCiAyMDIwLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggdGhlIGJ1aWxkIHdpdGggR0NDIDEwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDI3MGJjN2NkY2Uz
OC4uNTZkMzkyYTdmM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcApAQCAtMzksMTE4ICszOSwxMjIgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyJiBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHNoYXJlZElu
c3RhbmNlOwogfQogCi1HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcihib29sIGlzTWVkaWFTb3VyY2UpCi0gICAgOiBtX2lzTWVkaWFTb3VyY2UoaXNNZWRp
YVNvdXJjZSkKK0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6RWxl
bWVudEZhY3RvcmllcyhPcHRpb25TZXQ8RWxlbWVudEZhY3Rvcmllczo6VHlwZT4gdHlwZXMpCiB7
Ci0gICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21lZGlhX2dzdF9yZWdpc3RyeV9z
Y2FubmVyX2RlYnVnLCAid2Via2l0cmVnaXN0cnlzY2FubmVyIiwgMCwgIldlYktpdCBHU3RyZWFt
ZXIgcmVnaXN0cnkgc2Nhbm5lciIpOwotICAgIG1fYXVkaW9EZWNvZGVyRmFjdG9yaWVzID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9saXN0X2dldF9lbGVtZW50cyhHU1RfRUxFTUVOVF9GQUNUT1JZX1RZ
UEVfREVDT0RFUiB8IEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9NRURJQV9BVURJTywgR1NUX1JB
TktfTUFSR0lOQUwpOwotICAgIG1fYXVkaW9QYXJzZXJGYWN0b3JpZXMgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X2xpc3RfZ2V0X2VsZW1lbnRzKEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9QQVJTRVIg
fCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfTUVESUFfQVVESU8sIEdTVF9SQU5LX05PTkUpOwot
ICAgIG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9saXN0X2dl
dF9lbGVtZW50cyhHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfREVDT0RFUiB8IEdTVF9FTEVNRU5U
X0ZBQ1RPUllfVFlQRV9NRURJQV9WSURFTywgR1NUX1JBTktfTUFSR0lOQUwpOwotICAgIG1fdmlk
ZW9QYXJzZXJGYWN0b3JpZXMgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2xpc3RfZ2V0X2VsZW1lbnRz
KEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9QQVJTRVIgfCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZ
UEVfTUVESUFfVklERU8sIEdTVF9SQU5LX01BUkdJTkFMKTsKLSAgICBtX2RlbXV4ZXJGYWN0b3Jp
ZXMgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2xpc3RfZ2V0X2VsZW1lbnRzKEdTVF9FTEVNRU5UX0ZB
Q1RPUllfVFlQRV9ERU1VWEVSLCBHU1RfUkFOS19NQVJHSU5BTCk7Ci0KLSAgICBtX2F1ZGlvRW5j
b2RlckZhY3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NU
X0VMRU1FTlRfRkFDVE9SWV9UWVBFX0VOQ09ERVIgfCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVf
TUVESUFfQVVESU8sIEdTVF9SQU5LX01BUkdJTkFMKTsKLSAgICBtX3ZpZGVvRW5jb2RlckZhY3Rv
cmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VMRU1FTlRf
RkFDVE9SWV9UWVBFX0VOQ09ERVIgfCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfTUVESUFfVklE
RU8sIEdTVF9SQU5LX01BUkdJTkFMKTsKLSAgICBtX211eGVyRmFjdG9yaWVzID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9saXN0X2dldF9lbGVtZW50cyhHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfTVVY
RVIsIEdTVF9SQU5LX01BUkdJTkFMKTsKLQotICAgIGluaXRpYWxpemVEZWNvZGVycygpOwotICAg
IGluaXRpYWxpemVFbmNvZGVycygpOwotI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKLSAg
ICBHU1RfREVCVUcoIiVzIHJlZ2lzdHJ5IHNjYW5uZXIgaW5pdGlhbGl6ZWQiLCBtX2lzTWVkaWFT
b3VyY2UgPyAiTVNFIiA6ICJSZWd1bGFyIHBsYXliYWNrIik7Ci0gICAgZm9yIChhdXRvJiBtaW1l
VHlwZSA6IG1fZGVjb2Rlck1pbWVUeXBlU2V0KQotICAgICAgICBHU1RfREVCVUcoIkRlY29kZXIg
bWltZS10eXBlIHJlZ2lzdGVyZWQ6ICVzIiwgbWltZVR5cGUudXRmOCgpLmRhdGEoKSk7Ci0gICAg
Zm9yIChhdXRvJiBpdGVtIDogbV9kZWNvZGVyQ29kZWNNYXApCi0gICAgICAgIEdTVF9ERUJVRygi
JXMgZGVjb2RlciBjb2RlYyBwYXR0ZXJuIHJlZ2lzdGVyZWQ6ICVzIiwgaXRlbS52YWx1ZSA/ICJI
YXJkd2FyZSIgOiAiU29mdHdhcmUiLCBpdGVtLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogbV9lbmNvZGVyTWltZVR5cGVTZXQpCi0gICAgICAg
IEdTVF9ERUJVRygiRW5jb2RlciBtaW1lLXR5cGUgcmVnaXN0ZXJlZDogJXMiLCBtaW1lVHlwZS51
dGY4KCkuZGF0YSgpKTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VuY29kZXJDb2RlY01hcCkK
LSAgICAgICAgR1NUX0RFQlVHKCIlcyBlbmNvZGVyIGNvZGVjIHBhdHRlcm4gcmVnaXN0ZXJlZDog
JXMiLCBpdGVtLnZhbHVlID8gIkhhcmR3YXJlIiA6ICJTb2Z0d2FyZSIsIGl0ZW0ua2V5LnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotI2VuZGlmCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFR5cGU6
OkF1ZGlvRGVjb2RlcikpCisgICAgICAgIGF1ZGlvRGVjb2RlckZhY3RvcmllcyA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX0RF
Q09ERVIgfCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfTUVESUFfQVVESU8sIEdTVF9SQU5LX01B
UkdJTkFMKTsKKyAgICBpZiAodHlwZXMuY29udGFpbnMoVHlwZTo6QXVkaW9QYXJzZXIpKQorICAg
ICAgICBhdWRpb1BhcnNlckZhY3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRf
ZWxlbWVudHMoR1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX1BBUlNFUiB8IEdTVF9FTEVNRU5UX0ZB
Q1RPUllfVFlQRV9NRURJQV9BVURJTywgR1NUX1JBTktfTk9ORSk7CisgICAgaWYgKHR5cGVzLmNv
bnRhaW5zKFR5cGU6OlZpZGVvRGVjb2RlcikpCisgICAgICAgIHZpZGVvRGVjb2RlckZhY3Rvcmll
cyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VMRU1FTlRfRkFD
VE9SWV9UWVBFX0RFQ09ERVIgfCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZUEVfTUVESUFfVklERU8s
IEdTVF9SQU5LX01BUkdJTkFMKTsKKyAgICBpZiAodHlwZXMuY29udGFpbnMoVHlwZTo6VmlkZW9Q
YXJzZXIpKQorICAgICAgICB2aWRlb1BhcnNlckZhY3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX1BBUlNFUiB8IEdT
VF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9NRURJQV9WSURFTywgR1NUX1JBTktfTUFSR0lOQUwpOwor
ICAgIGlmICh0eXBlcy5jb250YWlucyhUeXBlOjpEZW11eGVyKSkKKyAgICAgICAgZGVtdXhlckZh
Y3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VMRU1F
TlRfRkFDVE9SWV9UWVBFX0RFTVVYRVIsIEdTVF9SQU5LX01BUkdJTkFMKTsKKyAgICBpZiAodHlw
ZXMuY29udGFpbnMoVHlwZTo6QXVkaW9FbmNvZGVyKSkKKyAgICAgICAgYXVkaW9FbmNvZGVyRmFj
dG9yaWVzID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9saXN0X2dldF9lbGVtZW50cyhHU1RfRUxFTUVO
VF9GQUNUT1JZX1RZUEVfRU5DT0RFUiB8IEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9NRURJQV9B
VURJTywgR1NUX1JBTktfTUFSR0lOQUwpOworICAgIGlmICh0eXBlcy5jb250YWlucyhUeXBlOjpW
aWRlb0VuY29kZXIpKQorICAgICAgICB2aWRlb0VuY29kZXJGYWN0b3JpZXMgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X2xpc3RfZ2V0X2VsZW1lbnRzKEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9FTkNP
REVSIHwgR1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX01FRElBX1ZJREVPLCBHU1RfUkFOS19NQVJH
SU5BTCk7CisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFR5cGU6Ok11eGVyKSkKKyAgICAgICAgbXV4
ZXJGYWN0b3JpZXMgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2xpc3RfZ2V0X2VsZW1lbnRzKEdTVF9F
TEVNRU5UX0ZBQ1RPUllfVFlQRV9NVVhFUiwgR1NUX1JBTktfTUFSR0lOQUwpOwogfQogCi1HU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6On5HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIoKQorR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjp+RWxlbWVudEZhY3Rvcmllcygp
CiB7Ci0gICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX2F1ZGlvRGVjb2RlckZhY3Rv
cmllcyk7Ci0gICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX2F1ZGlvUGFyc2VyRmFj
dG9yaWVzKTsKLSAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKG1fdmlkZW9EZWNvZGVy
RmFjdG9yaWVzKTsKLSAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKG1fdmlkZW9QYXJz
ZXJGYWN0b3JpZXMpOwotICAgIGdzdF9wbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUobV9kZW11eGVy
RmFjdG9yaWVzKTsKLSAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKG1fYXVkaW9FbmNv
ZGVyRmFjdG9yaWVzKTsKLSAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKG1fdmlkZW9F
bmNvZGVyRmFjdG9yaWVzKTsKLSAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKG1fbXV4
ZXJGYWN0b3JpZXMpOworICAgIGdzdF9wbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUoYXVkaW9EZWNv
ZGVyRmFjdG9yaWVzKTsKKyAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKGF1ZGlvUGFy
c2VyRmFjdG9yaWVzKTsKKyAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKHZpZGVvRGVj
b2RlckZhY3Rvcmllcyk7CisgICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZSh2aWRlb1Bh
cnNlckZhY3Rvcmllcyk7CisgICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShkZW11eGVy
RmFjdG9yaWVzKTsKKyAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKGF1ZGlvRW5jb2Rl
ckZhY3Rvcmllcyk7CisgICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZSh2aWRlb0VuY29k
ZXJGYWN0b3JpZXMpOworICAgIGdzdF9wbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUobXV4ZXJGYWN0
b3JpZXMpOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjptaW1lVHlwZVNldChDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24pCitjb25zdCBjaGFyKiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVs
ZW1lbnRGYWN0b3JpZXM6OmVsZW1lbnRGYWN0b3J5VHlwZVRvU3RyaW5nKEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6VHlwZSBmYWN0b3J5VHlwZSkKIHsKLSAgICBz
d2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKLSAgICBjYXNlIENvbmZpZ3VyYXRpb246OkRlY29kaW5n
OgotICAgICAgICByZXR1cm4gbV9kZWNvZGVyTWltZVR5cGVTZXQ7Ci0gICAgY2FzZSBDb25maWd1
cmF0aW9uOjpFbmNvZGluZzoKLSAgICAgICAgcmV0dXJuIG1fZW5jb2Rlck1pbWVUeXBlU2V0Owor
ICAgIHN3aXRjaCAoZmFjdG9yeVR5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkF1ZGlvUGFyc2VyOgor
ICAgICAgICByZXR1cm4gImF1ZGlvIHBhcnNlciI7CisgICAgY2FzZSBUeXBlOjpBdWRpb0RlY29k
ZXI6CisgICAgICAgIHJldHVybiAiYXVkaW8gZGVjb2RlciI7CisgICAgY2FzZSBUeXBlOjpWaWRl
b1BhcnNlcjoKKyAgICAgICAgcmV0dXJuICJ2aWRlbyBwYXJzZXIiOworICAgIGNhc2UgVHlwZTo6
VmlkZW9EZWNvZGVyOgorICAgICAgICByZXR1cm4gInZpZGVvIGRlY29kZXIiOworICAgIGNhc2Ug
VHlwZTo6RGVtdXhlcjoKKyAgICAgICAgcmV0dXJuICJkZW11eGVyIjsKKyAgICBjYXNlIFR5cGU6
OkF1ZGlvRW5jb2RlcjoKKyAgICAgICAgcmV0dXJuICJhdWRpbyBlbmNvZGVyIjsKKyAgICBjYXNl
IFR5cGU6OlZpZGVvRW5jb2RlcjoKKyAgICAgICAgcmV0dXJuICJ2aWRlbyBlbmNvZGVyIjsKKyAg
ICBjYXNlIFR5cGU6Ok11eGVyOgorICAgICAgICByZXR1cm4gIm11eGVyIjsKKyAgICBjYXNlIFR5
cGU6OkFsbDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBtX2RlY29kZXJNaW1lVHlwZVNldDsKKworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0Nv
bnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBTdHJpbmcg
Y29udGFpbmVyVHlwZSkgY29uc3QKK0dMaXN0KiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVs
ZW1lbnRGYWN0b3JpZXM6OmZhY3RvcnkoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50
RmFjdG9yaWVzOjpUeXBlIGZhY3RvcnlUeXBlKSBjb25zdAogewotICAgIHN3aXRjaCAoY29uZmln
dXJhdGlvbikgewotICAgIGNhc2UgQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmc6Ci0gICAgICAgIHJl
dHVybiBtX2RlY29kZXJNaW1lVHlwZVNldC5jb250YWlucyhjb250YWluZXJUeXBlKTsKLSAgICBj
YXNlIENvbmZpZ3VyYXRpb246OkVuY29kaW5nOgotICAgICAgICByZXR1cm4gbV9lbmNvZGVyTWlt
ZVR5cGVTZXQuY29udGFpbnMoY29udGFpbmVyVHlwZSk7CisgICAgc3dpdGNoIChmYWN0b3J5VHlw
ZSkgeworICAgIGNhc2UgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpBdWRpb1BhcnNlcjoKKyAgICAgICAgcmV0dXJuIGF1ZGlvUGFyc2VyRmFjdG9yaWVz
OworICAgIGNhc2UgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb0RlY29kZXI6CisgICAgICAgIHJldHVybiBhdWRpb0RlY29kZXJGYWN0b3JpZXM7
CisgICAgY2FzZSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OlZpZGVvUGFyc2VyOgorICAgICAgICByZXR1cm4gdmlkZW9QYXJzZXJGYWN0b3JpZXM7Cisg
ICAgY2FzZSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
OlZpZGVvRGVjb2RlcjoKKyAgICAgICAgcmV0dXJuIHZpZGVvRGVjb2RlckZhY3RvcmllczsKKyAg
ICBjYXNlIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
RGVtdXhlcjoKKyAgICAgICAgcmV0dXJuIGRlbXV4ZXJGYWN0b3JpZXM7CisgICAgY2FzZSBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2Rl
cjoKKyAgICAgICAgcmV0dXJuIGF1ZGlvRW5jb2RlckZhY3RvcmllczsKKyAgICBjYXNlIEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVy
OgorICAgICAgICByZXR1cm4gdmlkZW9FbmNvZGVyRmFjdG9yaWVzOworICAgIGNhc2UgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlcjoKKyAgICAg
ICAgcmV0dXJuIG11eGVyRmFjdG9yaWVzOworICAgIGNhc2UgR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyOjpFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBbGw6CisgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aGFzRWxlbWVu
dEZvck1lZGlhVHlwZShHTGlzdCogZWxlbWVudEZhY3RvcmllcywgY29uc3QgY2hhciogY2Fwc1N0
cmluZywgYm9vbCBzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciwgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IGJsYWNrTGlzdCkgY29uc3QKK0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVn
aXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9y
aWVzOjpoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGUgZmFjdG9y
eVR5cGUsIGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFy
ZHdhcmVDbGFzc2lmaWVyIHNob3VsZENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyLCBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QpIGNvbnN0CiB7CisgICAgYXV0byogZWxlbWVu
dEZhY3RvcmllcyA9IGZhY3RvcnkoZmFjdG9yeVR5cGUpOworICAgIGlmICghZWxlbWVudEZhY3Rv
cmllcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIEdzdFBhZERpcmVjdGlvbiBwYWREaXJl
Y3Rpb24gPSBHU1RfUEFEX1NJTks7Ci0gICAgaWYgKGVsZW1lbnRGYWN0b3JpZXMgPT0gbV9hdWRp
b0VuY29kZXJGYWN0b3JpZXMgfHwgZWxlbWVudEZhY3RvcmllcyA9PSBtX3ZpZGVvRW5jb2RlckZh
Y3RvcmllcyB8fCBlbGVtZW50RmFjdG9yaWVzID09IG1fbXV4ZXJGYWN0b3JpZXMpCisgICAgaWYg
KGZhY3RvcnlUeXBlID09IFR5cGU6OkF1ZGlvRW5jb2RlciB8fCBmYWN0b3J5VHlwZSA9PSBUeXBl
OjpWaWRlb0VuY29kZXIgfHwgZmFjdG9yeVR5cGUgPT0gVHlwZTo6TXV4ZXIpCiAgICAgICAgIHBh
ZERpcmVjdGlvbiA9IEdTVF9QQURfU1JDOworCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0g
YWRvcHRHUmVmKGdzdF9jYXBzX2Zyb21fc3RyaW5nKGNhcHNTdHJpbmcpKTsKICAgICBHTGlzdCog
Y2FuZGlkYXRlcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9maWx0ZXIoZWxlbWVudEZhY3Rv
cmllcywgY2Fwcy5nZXQoKSwgcGFkRGlyZWN0aW9uLCBmYWxzZSk7CiAgICAgYm9vbCBpc1N1cHBv
cnRlZCA9IGNhbmRpZGF0ZXM7CiAgICAgYm9vbCBpc1VzaW5nSGFyZHdhcmUgPSBmYWxzZTsKIAot
ICAgIGNvbnN0IGNoYXIqIGVsZW1lbnRUeXBlID0gIiI7Ci0gICAgaWYgKGVsZW1lbnRGYWN0b3Jp
ZXMgPT0gbV9hdWRpb1BhcnNlckZhY3RvcmllcykKLSAgICAgICAgZWxlbWVudFR5cGUgPSAiYXVk
aW8gcGFyc2VyIjsKLSAgICBlbHNlIGlmIChlbGVtZW50RmFjdG9yaWVzID09IG1fYXVkaW9EZWNv
ZGVyRmFjdG9yaWVzKQotICAgICAgICBlbGVtZW50VHlwZSA9ICJhdWRpbyBkZWNvZGVyIjsKLSAg
ICBlbHNlIGlmIChlbGVtZW50RmFjdG9yaWVzID09IG1fdmlkZW9QYXJzZXJGYWN0b3JpZXMpCi0g
ICAgICAgIGVsZW1lbnRUeXBlID0gInZpZGVvIHBhcnNlciI7Ci0gICAgZWxzZSBpZiAoZWxlbWVu
dEZhY3RvcmllcyA9PSBtX3ZpZGVvRGVjb2RlckZhY3RvcmllcykKLSAgICAgICAgZWxlbWVudFR5
cGUgPSAidmlkZW8gZGVjb2RlciI7Ci0gICAgZWxzZSBpZiAoZWxlbWVudEZhY3RvcmllcyA9PSBt
X2RlbXV4ZXJGYWN0b3JpZXMpCi0gICAgICAgIGVsZW1lbnRUeXBlID0gImRlbXV4ZXIiOwotICAg
IGVsc2UgaWYgKGVsZW1lbnRGYWN0b3JpZXMgPT0gbV9hdWRpb0VuY29kZXJGYWN0b3JpZXMpCi0g
ICAgICAgIGVsZW1lbnRUeXBlID0gImF1ZGlvIGVuY29kZXIiOwotICAgIGVsc2UgaWYgKGVsZW1l
bnRGYWN0b3JpZXMgPT0gbV92aWRlb0VuY29kZXJGYWN0b3JpZXMpCi0gICAgICAgIGVsZW1lbnRU
eXBlID0gInZpZGVvIGVuY29kZXIiOwotICAgIGVsc2UgaWYgKGVsZW1lbnRGYWN0b3JpZXMgPT0g
bV9tdXhlckZhY3RvcmllcykKLSAgICAgICAgZWxlbWVudFR5cGUgPSAibXV4ZXIiOwotICAgIGVs
c2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBpZiAoYmxhY2tMaXN0Lmhh
c1ZhbHVlKCkgJiYgIWJsYWNrTGlzdC0+aXNFbXB0eSgpKSB7CisgICAgaWYgKGRpc2FsbG93ZWRM
aXN0Lmhhc1ZhbHVlKCkgJiYgIWRpc2FsbG93ZWRMaXN0LT5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ym9vbCBoYXNWYWxpZENhbmRpZGF0ZSA9IGZhbHNlOwogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0
b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZh
Y3RvcmllcykpIHsKLSAgICAgICAgICAgIFN0cmluZyBuYW1lKGdzdF9wbHVnaW5fZmVhdHVyZV9n
ZXRfbmFtZShHU1RfUExVR0lOX0ZFQVRVUkVfQ0FTVChmYWN0b3JpZXMtPmRhdGEpKSk7Ci0gICAg
ICAgICAgICBpZiAoYmxhY2tMaXN0LT5jb250YWlucyhuYW1lKSkKKyAgICAgICAgICAgIFN0cmlu
ZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOChnc3RfcGx1Z2luX2ZlYXR1cmVfZ2V0X25hbWUoR1NU
X1BMVUdJTl9GRUFUVVJFX0NBU1QoZmFjdG9yaWVzLT5kYXRhKSkpOworICAgICAgICAgICAgaWYg
KGRpc2FsbG93ZWRMaXN0LT5jb250YWlucyhuYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGhhc1ZhbGlkQ2FuZGlkYXRlID0gdHJ1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICghaGFzVmFsaWRDYW5kaWRhdGUpIHsKLSAgICAg
ICAgICAgIEdTVF9XQVJOSU5HKCJBbGwgJXMgZWxlbWVudHMgbWF0Y2hpbmcgY2FwcyAlIiBHU1Rf
UFRSX0ZPUk1BVCAiIGFyZSBibGFja2xpc3RlZCIsIGVsZW1lbnRUeXBlLCBjYXBzLmdldCgpKTsK
KyAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJBbGwgJXMgZWxlbWVudHMgbWF0Y2hpbmcgY2FwcyAl
IiBHU1RfUFRSX0ZPUk1BVCAiIGFyZSBkaXNhbGxvd2VkIiwgZWxlbWVudEZhY3RvcnlUeXBlVG9T
dHJpbmcoZmFjdG9yeVR5cGUpLCBjYXBzLmdldCgpKTsKICAgICAgICAgICAgIGlzU3VwcG9ydGVk
ID0gZmFsc2U7Ci0gICAgICAgICAgICBzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IGZh
bHNlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPSBDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6Tm87CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6OlllcykgewogICAgICAgICBmb3Ig
KEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7IGZhY3RvcmllcyA9IGdf
bGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8qIGZhY3RvcnkgPSByZWlu
dGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVzLT5kYXRhKTsKICAgICAg
ICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRh
KGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKQEAgLTE2MywyNyArMTY3LDU4
IEBAIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjpoYXNFbGVtCiAgICAgfQogCiAgICAgZ3N0X3BsdWdpbl9mZWF0
dXJlX2xpc3RfZnJlZShjYW5kaWRhdGVzKTsKLSAgICBHU1RfTE9HKCJMb29rdXAgcmVzdWx0IGZv
ciAlcyBtYXRjaGluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFUICIgOiBpc1N1cHBvcnRlZD0lcywg
aXNVc2luZ0hhcmR3YXJlPSVzIiwgZWxlbWVudFR5cGUsIGNhcHMuZ2V0KCksIGJvb2xGb3JQcmlu
dGluZyhpc1N1cHBvcnRlZCksIGJvb2xGb3JQcmludGluZyhpc1VzaW5nSGFyZHdhcmUpKTsKLSAg
ICByZXR1cm4gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3VsdCB7
IGlzU3VwcG9ydGVkLCBpc1VzaW5nSGFyZHdhcmUgfTsKKyAgICBHU1RfTE9HKCJMb29rdXAgcmVz
dWx0IGZvciAlcyBtYXRjaGluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFUICIgOiBpc1N1cHBvcnRl
ZD0lcywgaXNVc2luZ0hhcmR3YXJlPSVzIiwgZWxlbWVudEZhY3RvcnlUeXBlVG9TdHJpbmcoZmFj
dG9yeVR5cGUpLCBjYXBzLmdldCgpLCBib29sRm9yUHJpbnRpbmcoaXNTdXBwb3J0ZWQpLCBib29s
Rm9yUHJpbnRpbmcoaXNVc2luZ0hhcmR3YXJlKSk7CisgICAgcmV0dXJuIHsgaXNTdXBwb3J0ZWQs
IGlzVXNpbmdIYXJkd2FyZSB9OwogfQogCi12b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
ZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGlu
Zz4mIG1hcHBpbmcpCitHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcihib29sIGlzTWVkaWFTb3VyY2UpCisgICAgOiBtX2lzTWVkaWFTb3VyY2UoaXNNZWRp
YVNvdXJjZSkKIHsKLSAgICBmb3IgKGF1dG8mIGN1cnJlbnQgOiBtYXBwaW5nKSB7Ci0gICAgICAg
IEdMaXN0KiBmYWN0b3JpZXM7Ci0gICAgICAgIHN3aXRjaCAoY3VycmVudC5lbGVtZW50VHlwZSkg
ewotICAgICAgICBjYXNlIERlbXV4ZXI6Ci0gICAgICAgICAgICBmYWN0b3JpZXMgPSBtX2RlbXV4
ZXJGYWN0b3JpZXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdWRpb0RlY29k
ZXI6Ci0gICAgICAgICAgICBmYWN0b3JpZXMgPSBtX2F1ZGlvRGVjb2RlckZhY3RvcmllczsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpZGVvRGVjb2RlcjoKLSAgICAgICAgICAg
IGZhY3RvcmllcyA9IG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbWVkaWFfZ3N0
X3JlZ2lzdHJ5X3NjYW5uZXJfZGVidWcsICJ3ZWJraXRyZWdpc3RyeXNjYW5uZXIiLCAwLCAiV2Vi
S2l0IEdTdHJlYW1lciByZWdpc3RyeSBzY2FubmVyIik7CisKKyAgICBFbGVtZW50RmFjdG9yaWVz
IGZhY3RvcmllcyhFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBbGwpOworICAgIGluaXRpYWxpemVE
ZWNvZGVycyhmYWN0b3JpZXMpOworICAgIGluaXRpYWxpemVFbmNvZGVycyhmYWN0b3JpZXMpOwor
CisjaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRworICAgIEdTVF9ERUJVRygiJXMgcmVnaXN0
cnkgc2Nhbm5lciBpbml0aWFsaXplZCIsIG1faXNNZWRpYVNvdXJjZSA/ICJNU0UiIDogIlJlZ3Vs
YXIgcGxheWJhY2siKTsKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogbV9kZWNvZGVyTWltZVR5
cGVTZXQpCisgICAgICAgIEdTVF9ERUJVRygiRGVjb2RlciBtaW1lLXR5cGUgcmVnaXN0ZXJlZDog
JXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2Rl
Y29kZXJDb2RlY01hcCkKKyAgICAgICAgR1NUX0RFQlVHKCIlcyBkZWNvZGVyIGNvZGVjIHBhdHRl
cm4gcmVnaXN0ZXJlZDogJXMiLCBpdGVtLnZhbHVlID8gIkhhcmR3YXJlIiA6ICJTb2Z0d2FyZSIs
IGl0ZW0ua2V5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGZvciAoYXV0byYgbWltZVR5
cGUgOiBtX2VuY29kZXJNaW1lVHlwZVNldCkKKyAgICAgICAgR1NUX0RFQlVHKCJFbmNvZGVyIG1p
bWUtdHlwZSByZWdpc3RlcmVkOiAlcyIsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOworICAgIGZv
ciAoYXV0byYgaXRlbSA6IG1fZW5jb2RlckNvZGVjTWFwKQorICAgICAgICBHU1RfREVCVUcoIiVz
IGVuY29kZXIgY29kZWMgcGF0dGVybiByZWdpc3RlcmVkOiAlcyIsIGl0ZW0udmFsdWUgPyAiSGFy
ZHdhcmUiIDogIlNvZnR3YXJlIiwgaXRlbS5rZXkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisj
ZW5kaWYKK30KIAotICAgICAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShmYWN0b3JpZXMs
IGN1cnJlbnQuY2Fwc1N0cmluZykpIHsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Om1pbWVUeXBlU2V0KENv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNvbmZpZ3Vy
YXRpb24pIHsKKyAgICBjYXNlIENvbmZpZ3VyYXRpb246OkRlY29kaW5nOgorICAgICAgICByZXR1
cm4gbV9kZWNvZGVyTWltZVR5cGVTZXQ7CisgICAgY2FzZSBDb25maWd1cmF0aW9uOjpFbmNvZGlu
ZzoKKyAgICAgICAgcmV0dXJuIG1fZW5jb2Rlck1pbWVUeXBlU2V0OworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6aXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgY29uc3QgU3RyaW5nJiBjb250YWluZXJUeXBlKSBjb25zdAoreworICAgIHN3aXRjaCAoY29u
ZmlndXJhdGlvbikgeworICAgIGNhc2UgQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmc6CisgICAgICAg
IHJldHVybiBtX2RlY29kZXJNaW1lVHlwZVNldC5jb250YWlucyhjb250YWluZXJUeXBlKTsKKyAg
ICBjYXNlIENvbmZpZ3VyYXRpb246OkVuY29kaW5nOgorICAgICAgICByZXR1cm4gbV9lbmNvZGVy
TWltZVR5cGVTZXQuY29udGFpbnMoY29udGFpbmVyVHlwZSk7CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
OjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyOjpFbGVtZW50RmFjdG9yaWVzJiBmYWN0b3JpZXMsIGNvbnN0IFZlY3RvcjxHc3RDYXBz
V2ViS2l0TWFwcGluZz4mIG1hcHBpbmcpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBjdXJyZW50
IDogbWFwcGluZykgeworICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5
cGUoY3VycmVudC5lbGVtZW50VHlwZSwgY3VycmVudC5jYXBzU3RyaW5nKSkgewogICAgICAgICAg
ICAgaWYgKCFjdXJyZW50LndlYmtpdENvZGVjUGF0dGVybnMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXR0ZXJuIDogY3VycmVudC53ZWJraXRDb2RlY1Bh
dHRlcm5zKQogICAgICAgICAgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQocGF0dGVy
biwgZmFsc2UpOwpAQCAtMTk3LDkgKzIzMiw5IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoVmVjdG9yPEdzdENhcHNXZWJLCiAg
ICAgfQogfQogCi12b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29k
ZXJzKCkKK3ZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzJiBmYWN0b3Jp
ZXMpCiB7Ci0gICAgaWYgKGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9hdWRpb0RlY29kZXJGYWN0
b3JpZXMsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgeworICAgIGlmIChmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRp
b0RlY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewogICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOwogICAgICAg
ICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7
CkBAIC0yMDcsMjMgKzI0MiwyMyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5p
dGlhbGl6ZURlY29kZXJzKCkKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIm1wNGEqIiksIGZhbHNlKTsKICAgICB9CiAKLSAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBo
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVyRmFjdG9yaWVzLCAiYXVkaW8veC1v
cHVzIik7Ci0gICAgaWYgKG9wdXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgaGFz
RWxlbWVudEZvck1lZGlhVHlwZShtX2F1ZGlvUGFyc2VyRmFjdG9yaWVzLCAiYXVkaW8veC1vcHVz
IikpKSB7CisgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1v
cHVzIik7CisgICAgaWYgKG9wdXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFj
dG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVk
aW9QYXJzZXIsICJhdWRpby94LW9wdXMiKSkpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIiksIGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyIpLCBmYWxzZSk7CiAgICAgfQogCi0gICAgYXV0
byB2b3JiaXNTdXBwb3J0ZWQgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVy
RmFjdG9yaWVzLCAiYXVkaW8veC12b3JiaXMiKTsKLSAgICBpZiAodm9yYmlzU3VwcG9ydGVkICYm
ICghbV9pc01lZGlhU291cmNlIHx8IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9hdWRpb1BhcnNl
ckZhY3RvcmllcywgImF1ZGlvL3gtdm9yYmlzIikpKSB7CisgICAgYXV0byB2b3JiaXNTdXBwb3J0
ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXZvcmJpcyIpOworICAgIGlmICh2b3JiaXNTdXBw
b3J0ZWQgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9QYXJzZXIsICJhdWRpby94LXZvcmJp
cyIpKSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlz
IiksIGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngt
dm9yYmlzIiksIGZhbHNlKTsKICAgICB9CiAKLSAgICBib29sIG1hdHJvc2thU3VwcG9ydGVkID0g
aGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2RlbXV4ZXJGYWN0b3JpZXMsICJ2aWRlby94LW1hdHJv
c2thIik7CisgICAgYm9vbCBtYXRyb3NrYVN1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50
Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby94LW1h
dHJvc2thIik7CiAgICAgaWYgKG1hdHJvc2thU3VwcG9ydGVkKSB7Ci0gICAgICAgIGF1dG8gdnA4
RGVjb2RlckF2YWlsYWJsZSA9IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb0RlY29kZXJG
YWN0b3JpZXMsICJ2aWRlby94LXZwOCIsIHRydWUpOwotICAgICAgICBhdXRvIHZwOURlY29kZXJB
dmFpbGFibGUgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVz
LCAidmlkZW8veC12cDkiLCB0cnVlKTsKKyAgICAgICAgYXV0byB2cDhEZWNvZGVyQXZhaWxhYmxl
ID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC12cDgiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKKyAgICAgICAgYXV0byB2cDlEZWNvZGVyQXZhaWxhYmxl
ID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKIAogICAgICAgICBpZiAodnA4RGVjb2RlckF2YWlsYWJs
ZSB8fCB2cDlEZWNvZGVyQXZhaWxhYmxlKQogICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CkBAIC0yNDMsOCArMjc4LDggQEAgdm9p
ZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycygpCiAgICAgICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsK
ICAgICB9CiAKLSAgICBhdXRvIGgyNjREZWNvZGVyQXZhaWxhYmxlID0gaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShtX3ZpZGVvRGVjb2RlckZhY3RvcmllcywgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0o
c3RyaW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCB0cnVlKTsK
LSAgICBpZiAoaDI2NERlY29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgaGFz
RWxlbWVudEZvck1lZGlhVHlwZShtX3ZpZGVvUGFyc2VyRmFjdG9yaWVzLCAidmlkZW8veC1oMjY0
IikpKSB7CisgICAgYXV0byBoMjY0RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZp
ZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3RyaW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2Vs
aW5lLCBoaWdoIH0iLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
WWVzKTsKKyAgICBpZiAoaDI2NERlY29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2Ug
fHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9QYXJzZXIsICJ2aWRlby94LWgyNjQiKSkpIHsKICAgICAgICAgbV9kZWNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCIpKTsKICAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2IikpOwogICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0IiksIGgyNjREZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBAIC0yNTIsOCArMjg3LDggQEAgdm9pZCBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycygpCiAgICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2KiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IGF2MURlY29kZXJzQmxh
Y2tsaXN0IHsgImF2MWRlYyJfcyB9OwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXND
b250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0
IikpICYmIGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsICJ2
aWRlby94LWF2MSIsIGZhbHNlLCBtYWtlT3B0aW9uYWwoV1RGTW92ZShhdjFEZWNvZGVyc0JsYWNr
bGlzdCkpKSkgeworICAgIFZlY3RvcjxTdHJpbmc+IGF2MURlY29kZXJzRGlzYWxsb3dlZExpc3Qg
eyAiYXYxZGVjIl9zIH07CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5l
clR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYg
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3
YXJlQ2xhc3NpZmllcjo6Tm8sIG1ha2VPcHRpb25hbChXVEZNb3ZlKGF2MURlY29kZXJzRGlzYWxs
b3dlZExpc3QpKSkpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImF2MDEqIiksIGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoImF2MSIpLCBmYWxzZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ4LWF2MSIpLCBmYWxzZSk7CkBAIC0yNjUsMzQgKzMwMCwzNCBAQCB2b2lkIEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKCkKICAgICAvLyBUaGUgbWltZS10
eXBlcyBpbml0aWFsaXplZCBiZWxvdyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgTVNFIGJhY2tl
bmQuCiAKICAgICBWZWN0b3I8R3N0Q2Fwc1dlYktpdE1hcHBpbmc+IG1hcHBpbmcgPSB7Ci0gICAg
ICAgIHtBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwgeyJhdWRpby9taWRpIiwgImF1ZGlvL3Jp
ZmYtbWlkaSJ9LCB7IH19LAotICAgICAgICB7QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1hYzMiLCB7
IH0sIHsgfX0sCi0gICAgICAgIHtBdWRpb0RlY29kZXIsICJhdWRpby94LWR0cyIsIHsgfSwgeyB9
fSwKLSAgICAgICAge0F1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsiYXVkaW8veC1hYzMi
fSwgeyB9fSwKLSAgICAgICAge0F1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZmxhYyIsIHsiYXVkaW8v
eC1mbGFjIiwgImF1ZGlvL2ZsYWMifSwgeyB9fSwKLSAgICAgICAge0F1ZGlvRGVjb2RlciwgImF1
ZGlvL3gtc2JjIiwgeyB9LCB7IH19LAotICAgICAgICB7QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1z
aWQiLCB7IH0sIHsgfX0sCi0gICAgICAgIHtBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4Iiwg
eyJhdWRpby9zcGVleCIsICJhdWRpby94LXNwZWV4In0sIHsgfX0sCi0gICAgICAgIHtBdWRpb0Rl
Y29kZXIsICJhdWRpby94LXdhdnBhY2siLCB7ImF1ZGlvL3gtd2F2cGFjayJ9LCB7IH19LAotICAg
ICAgICB7VmlkZW9EZWNvZGVyLCAidmlkZW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCl7MSwyfSwg
c3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNlIiwgeyJ2aWRlby9tcGVnIn0sIHsibXBlZyJ9fSwK
LSAgICAgICAge1ZpZGVvRGVjb2RlciwgInZpZGVvL21wZWd0cyIsIHsgfSwgeyB9fSwKLSAgICAg
ICAge1ZpZGVvRGVjb2RlciwgInZpZGVvL3gtZGlyYWMiLCB7IH0sIHsgfX0sCi0gICAgICAgIHtW
aWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwgeyJ2aWRlby9mbHYiLCAidmlkZW8v
eC1mbHYifSwgeyB9fSwKLSAgICAgICAge1ZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2MyIsIHsg
fSwgeyB9fSwKLSAgICAgICAge1ZpZGVvRGVjb2RlciwgInZpZGVvL3gtbXN2aWRlb2NvZGVjIiwg
eyJ2aWRlby94LW1zdmlkZW8ifSwgeyB9fSwKLSAgICAgICAge0RlbXV4ZXIsICJhcHBsaWNhdGlv
bi92bmQucm4tcmVhbG1lZGlhIiwgeyB9LCB7IH19LAotICAgICAgICB7RGVtdXhlciwgImFwcGxp
Y2F0aW9uL3gtM2dwIiwgeyB9LCB7IH19LAotICAgICAgICB7RGVtdXhlciwgImFwcGxpY2F0aW9u
L3gtaGxzIiwgeyJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCIsICJhcHBsaWNhdGlvbi94
LW1wZWd1cmwifSwgeyB9fSwKLSAgICAgICAge0RlbXV4ZXIsICJhcHBsaWNhdGlvbi94LXBuLXJl
YWxhdWRpbyIsIHsgfSwgeyB9fSwKLSAgICAgICAge0RlbXV4ZXIsICJhdWRpby94LWFpZmYiLCB7
IH0sIHsgfX0sCi0gICAgICAgIHtEZW11eGVyLCAiYXVkaW8veC13YXYiLCB7ImF1ZGlvL3gtd2F2
IiwgImF1ZGlvL3dhdiIsICJhdWRpby92bmQud2F2ZSJ9LCB7IjEifX0sCi0gICAgICAgIHtEZW11
eGVyLCAidmlkZW8vcXVpY2t0aW1lIiwgeyB9LCB7IH19LAotICAgICAgICB7RGVtdXhlciwgInZp
ZGVvL3F1aWNrdGltZSwgdmFyaWFudD0oc3RyaW5nKTNncHAiLCB7InZpZGVvLzNncHAifSwgeyB9
fSwKLSAgICAgICAge0RlbXV4ZXIsICJ2aWRlby94LW1zLWFzZiIsIHsgfSwgeyB9fSwKKyAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwg
eyAiYXVkaW8vbWlkaSIsICJhdWRpby9yaWZmLW1pZGkiIH0sIHsgfSB9LAorICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtYWMzIiwgeyB9LCB7
IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJh
dWRpby94LWR0cyIsIHsgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyAiYXVkaW8veC1hYzMiIH0sIHsgfSB9
LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlv
L3gtZmxhYyIsIHsgImF1ZGlvL3gtZmxhYyIsICJhdWRpby9mbGFjIiB9LCB7IH0gfSwKKyAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNiYyIs
IHsgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNv
ZGVyLCAiYXVkaW8veC1zaWQiLCB7IH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVleCIs
ICJhdWRpby94LXNwZWV4IiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXdhdnBhY2siLCB7ICJhdWRpby94LXdhdnBhY2si
IH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0cmVhbT0oYm9v
bGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciIH0sIHsgIm1wZWciIH0gfSwKKyAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby9tcGVndHMiLCB7IH0s
IHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rlciwg
InZpZGVvL3gtZGlyYWMiLCB7IH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtZmxhc2gtdmlkZW8iLCB7ICJ2aWRlby9mbHYi
LCAidmlkZW8veC1mbHYiIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2MyIsIHsgfSwgeyB9IH0sCisgICAgICAgIHsg
RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVvY29k
ZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhIiwgeyB9
LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBw
bGljYXRpb24veC0zZ3AiLCB7IH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94LWhscyIsIHsgImFwcGxpY2F0aW9uL3ZuZC5h
cHBsZS5tcGVndXJsIiwgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCIgfSwgeyB9IH0sCisgICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtcG4tcmVh
bGF1ZGlvIiwgeyB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAiYXVkaW8veC1haWZmIiwgeyB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFj
dG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXVkaW8veC13YXYiLCB7ICJhdWRpby94LXdhdiIsICJh
dWRpby93YXYiLCAiYXVkaW8vdm5kLndhdmUiIH0sIHsgIjEiIH0gfSwKKyAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lIiwgeyB9LCB7IH0g
fSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVp
Y2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVvLzNncHAiIH0sIHsgfSB9LAor
ICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby94LW1zLWFz
ZiIsIHsgfSwgeyB9IH0sCiAgICAgfTsKLSAgICBmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBp
bmcobWFwcGluZyk7CisgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKGZhY3Rvcmll
cywgbWFwcGluZyk7CiAKLSAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2RlbXV4ZXJG
YWN0b3JpZXMsICJhcHBsaWNhdGlvbi9vZ2ciKSkgeworICAgIGlmIChmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGlj
YXRpb24vb2dnIikpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImFwcGxpY2F0aW9uL29nZyIpKTsKIAogICAgICAgICBpZiAodm9yYmlzU3VwcG9ydGVkKSB7
CkBAIC0zMDAsMTkgKzMzNSwxOSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5p
dGlhbGl6ZURlY29kZXJzKCkKICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ciKSk7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2F1ZGlvRGVjb2RlckZhY3RvcmllcywgImF1ZGlv
L3gtc3BlZXgiKSkgeworICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5
cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zcGVleCIp
KSB7CiAgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vb2dnIikpOwogICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InNwZWV4IiksIGZhbHNlKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChoYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzLCAidmlkZW8veC10aGVvcmEiKSkgewor
ICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC10aGVvcmEiKSkgewogICAgICAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL29nZyIpKTsKICAg
ICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ0aGVvcmEiKSwgZmFs
c2UpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCBhdWRpb01wZWdTdXBwb3J0ZWQgPSBm
YWxzZTsKLSAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2F1ZGlvRGVjb2RlckZhY3Rv
cmllcywgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMSwgbGF5ZXI9KGludClbMSwgM10i
KSkgeworICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFj
dG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50
KTEsIGxheWVyPShpbnQpWzEsIDNdIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3VwcG9ydGVkID0g
dHJ1ZTsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L21wMSIpKTsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL21wMyIpKTsKQEAgLTMyMSw3ICszNTYsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKCkKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoIm1wMyIpLCBmYWxzZSk7CiAgICAgfQogCi0gICAgaWYgKGhhc0VsZW1lbnRG
b3JNZWRpYVR5cGUobV9hdWRpb0RlY29kZXJGYWN0b3JpZXMsICJhdWRpby9tcGVnLCBtcGVndmVy
c2lvbj0oaW50KTIiKSkgeworICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9tcGVnLCBtcGVn
dmVyc2lvbj0oaW50KTIiKSkgewogICAgICAgICBhdWRpb01wZWdTdXBwb3J0ZWQgPSB0cnVlOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikp
OwogICAgIH0KQEAgLTMzNSw1MSArMzcwLDUxIEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyOjppbml0aWFsaXplRGVjb2RlcnMoKQogICAgIGlmIChtYXRyb3NrYVN1cHBvcnRlZCkgewog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tYXRy
b3NrYSIpKTsKIAotICAgICAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX3ZpZGVvRGVj
b2RlckZhY3RvcmllcywgInZpZGVvL3gtdnAxMCIpKQorICAgICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVy
LCAidmlkZW8veC12cDEwIikpCiAgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygidmlkZW8vd2VibSIpKTsKICAgICB9CiB9CiAKLXZvaWQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMoKQordm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OkVsZW1lbnRGYWN0b3JpZXMmIGZhY3RvcmllcykKIHsKICAgICAvLyBNU0UgaXMgYWJvdXQg
cGxheWJhY2ssIHdoaWNoIG1lYW5zIGRlY29kaW5nLiBObyBuZWVkIHRvIGNoZWNrIGZvciBlbmNv
ZGVycyB0aGVuLgogICAgIGlmIChtX2lzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gYWFjU3VwcG9ydGVkID0gaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2F1ZGlvRW5j
b2RlckZhY3RvcmllcywgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpOwotICAgIGlm
IChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9FbmNvZGVyRmFjdG9yaWVzLCAiYXVkaW8v
bXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKKyAgICBhdXRvIGFhY1N1cHBvcnRlZCA9IGZh
Y3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1
ZGlvRW5jb2RlciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpOworICAgIGlmIChm
YWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpB
dWRpb0VuY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewogICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBmYWxzZSk7CiAgICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIpLCBmYWxzZSk7CiAg
ICAgfQogCi0gICAgYXV0byBvcHVzU3VwcG9ydGVkID0gaGFzRWxlbWVudEZvck1lZGlhVHlwZSht
X2F1ZGlvRW5jb2RlckZhY3RvcmllcywgImF1ZGlvL3gtb3B1cyIpOworICAgIGF1dG8gb3B1c1N1
cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gtb3B1cyIpOwogICAgIGlmIChvcHVzU3Vw
cG9ydGVkKSB7CiAgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJvcHVz
IiksIGZhbHNlKTsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngt
b3B1cyIpLCBmYWxzZSk7CiAgICAgfQogCi0gICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBoYXNF
bGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9FbmNvZGVyRmFjdG9yaWVzLCAiYXVkaW8veC12b3Ji
aXMiKTsKKyAgICBhdXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gt
dm9yYmlzIik7CiAgICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewogICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKICAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKICAgICB9CiAK
LSAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVyc0JsYWNrbGlzdCB7ICJhdjFlbmMiX3MgfTsK
LSAgICBhdXRvIGF2MUVuY29kZXJBdmFpbGFibGUgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1f
dmlkZW9FbmNvZGVyRmFjdG9yaWVzLCAidmlkZW8veC1hdjEiLCB0cnVlLCBtYWtlT3B0aW9uYWwo
V1RGTW92ZShhdjFFbmNvZGVyc0JsYWNrbGlzdCkpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhdjFF
bmNvZGVyc0Rpc2FsbG93ZWRMaXN0IHsgImF2MWVuYyJfcyB9OworICAgIGF1dG8gYXYxRW5jb2Rl
ckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmll
czo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6OlllcywgbWFrZU9wdGlvbmFsKFdURk1vdmUoYXYx
RW5jb2RlcnNEaXNhbGxvd2VkTGlzdCkpKTsKICAgICBpZiAoYXYxRW5jb2RlckF2YWlsYWJsZSkg
ewogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFs
c2UpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGZh
bHNlKTsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiks
IGZhbHNlKTsKICAgICB9CiAKLSAgICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBoYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9FbmNvZGVyRmFjdG9yaWVzLCAidmlkZW8veC12cDgiLCB0
cnVlKTsKKyAgICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRl
by94LXZwOCIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogICAgIGlmICh2cDhFbmNvZGVyQXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgi
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAotICAgIGF1dG8gdnA5RW5jb2RlckF2YWlsYWJsZSA9
IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb0VuY29kZXJGYWN0b3JpZXMsICJ2aWRlby94
LXZwOSIsIHRydWUpOworICAgIGF1dG8gdnA5RW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2Rl
ciwgInZpZGVvL3gtdnA5IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7CiAgICAgaWYgKHZwOUVuY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ4LXZwOSIpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBAIC0zODcs
MjYgKzQyMiwyNiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVu
Y29kZXJzKCkKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkq
IiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKLSAgICBp
ZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX211eGVyRmFjdG9yaWVzLCAidmlkZW8vd2VibSIp
ICYmICh2cDhFbmNvZGVyQXZhaWxhYmxlIHx8IHZwOUVuY29kZXJBdmFpbGFibGUgfHwgYXYxRW5j
b2RlckF2YWlsYWJsZSkpCisgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBl
KEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAidmlkZW8vd2VibSIpICYmICh2cDhFbmNv
ZGVyQXZhaWxhYmxlIHx8IHZwOUVuY29kZXJBdmFpbGFibGUgfHwgYXYxRW5jb2RlckF2YWlsYWJs
ZSkpCiAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93
ZWJtIikpOwogCi0gICAgaWYgKGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9tdXhlckZhY3Rvcmll
cywgImF1ZGlvL3dlYm0iKSkgeworICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlvL3dlYm0iKSkgewogICAg
ICAgICBpZiAob3B1c1N1cHBvcnRlZCkKICAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwogICAgICAgICBtX2VuY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKICAgICB9CiAKLSAgICBpZiAoaGFz
RWxlbWVudEZvck1lZGlhVHlwZShtX211eGVyRmFjdG9yaWVzLCAiYXVkaW8vb2dnIikgJiYgKHZv
cmJpc1N1cHBvcnRlZCB8fCBvcHVzU3VwcG9ydGVkKSkKKyAgICBpZiAoZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJhdWRpby9v
Z2ciKSAmJiAodm9yYmlzU3VwcG9ydGVkIHx8IG9wdXNTdXBwb3J0ZWQpKQogICAgICAgICBtX2Vu
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOwogCi0gICAgYXV0
byBoMjY0RW5jb2RlckF2YWlsYWJsZSA9IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb0Vu
Y29kZXJGYWN0b3JpZXMsICJ2aWRlby94LWgyNjQsIHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFp
bmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9IiwgdHJ1ZSk7CisgICAgYXV0byBoMjY0RW5j
b2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3Ry
aW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50RmFj
dG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
IngtaDI2NCIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygibXA0dioiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJl
KTsKICAgICB9CiAKLSAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX211eGVyRmFjdG9y
aWVzLCAidmlkZW8vcXVpY2t0aW1lIikpIHsKKyAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRG
b3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJ2aWRlby9xdWlja3Rp
bWUiKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKICAgICAgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwogICAgICAgICBpZiAo
YWFjU3VwcG9ydGVkKSB7CkBAIC00MjEsMjAgKzQ1NiwxOSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKCkKICAgICB9CiB9CiAKLWJvb2wgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbiwgU3RyaW5nIGNvZGVjLCBib29sIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpIGNv
bnN0Citib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb2RlY1N1cHBvcnRlZChDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmluZyYgY29kZWMsIGJvb2wgc2hvdWxk
Q2hlY2tGb3JIYXJkd2FyZVVzZSkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgY29kZWMgaXMgbmFt
ZWQgbGlrZSBhIG1pbWV0eXBlIChlZzogdmlkZW8vYXZjKSByZW1vdmUgdGhlICJ2aWRlby8iIHBh
cnQuCiAgICAgc2l6ZV90IHNsYXNoSW5kZXggPSBjb2RlYy5maW5kKCcvJyk7Ci0gICAgaWYgKHNs
YXNoSW5kZXggIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgY29kZWMgPSBjb2RlYy5zdWJzdHJp
bmcoc2xhc2hJbmRleCArIDEpOworICAgIFN0cmluZyBjb2RlY05hbWUgPSBzbGFzaEluZGV4ICE9
IFdURjo6bm90Rm91bmQgPyBjb2RlYy5zdWJzdHJpbmcoc2xhc2hJbmRleCArIDEpIDogY29kZWM7
CiAKICAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOwotICAgIGlmIChjb2RlYy5zdGFydHNXaXRo
KCJhdmMxIikpCi0gICAgICAgIHN1cHBvcnRlZCA9IGlzQVZDMUNvZGVjU3VwcG9ydGVkKGNvbmZp
Z3VyYXRpb24sIGNvZGVjLCBzaG91bGRDaGVja0ZvckhhcmR3YXJlVXNlKTsKKyAgICBpZiAoY29k
ZWNOYW1lLnN0YXJ0c1dpdGgoImF2YzEiKSkKKyAgICAgICAgc3VwcG9ydGVkID0gaXNBVkMxQ29k
ZWNTdXBwb3J0ZWQoY29uZmlndXJhdGlvbiwgY29kZWNOYW1lLCBzaG91bGRDaGVja0ZvckhhcmR3
YXJlVXNlKTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byYgY29kZWNNYXAgPSBjb25maWd1cmF0
aW9uID09IENvbmZpZ3VyYXRpb246OkRlY29kaW5nID8gbV9kZWNvZGVyQ29kZWNNYXAgOiBtX2Vu
Y29kZXJDb2RlY01hcDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogY29kZWNNYXAp
IHsKLSAgICAgICAgICAgIGlmICghZm5tYXRjaChpdGVtLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBjb2RlYy51dGY4KCkuZGF0YSgpLCAwKSkgeworICAgICAgICAgICAgaWYgKCFmbm1hdGNo
KGl0ZW0ua2V5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGNvZGVjTmFtZS51dGY4KCkuZGF0YSgp
LCAwKSkgewogICAgICAgICAgICAgICAgIHN1cHBvcnRlZCA9IHNob3VsZENoZWNrRm9ySGFyZHdh
cmVVc2UgPyBpdGVtLnZhbHVlIDogdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVk
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ0Myw3ICs0NzcsNyBAQCBib29sIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb2RlY1N1cHBvcnRlZChDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24sIFN0cgogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIGNvbmZpZ0xvZ1N0cmlu
ZyA9IGNvbmZpZ3VyYXRpb25OYW1lRm9yTG9nZ2luZyhjb25maWd1cmF0aW9uKTsKLSAgICBHU1Rf
TE9HKCJDaGVja2VkICVzICVzIGNvZGVjIFwiJXNcIiBzdXBwb3J0ZWQgJXMiLCBzaG91bGRDaGVj
a0ZvckhhcmR3YXJlVXNlID8gImhhcmR3YXJlIiA6ICJzb2Z0d2FyZSIsIGNvbmZpZ0xvZ1N0cmlu
ZywgY29kZWMudXRmOCgpLmRhdGEoKSwgYm9vbEZvclByaW50aW5nKHN1cHBvcnRlZCkpOworICAg
IEdTVF9MT0coIkNoZWNrZWQgJXMgJXMgY29kZWMgXCIlc1wiIHN1cHBvcnRlZCAlcyIsIHNob3Vs
ZENoZWNrRm9ySGFyZHdhcmVVc2UgPyAiaGFyZHdhcmUiIDogInNvZnR3YXJlIiwgY29uZmlnTG9n
U3RyaW5nLCBjb2RlY05hbWUudXRmOCgpLmRhdGEoKSwgYm9vbEZvclByaW50aW5nKHN1cHBvcnRl
ZCkpOwogICAgIHJldHVybiBzdXBwb3J0ZWQ7CiB9CiAKQEAgLTQ4Myw3ICs1MTcsNyBAQCBNZWRp
YVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0Nv
bnRlbnRUeXBlU3VwcG9ydGVkKAogCiBib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6YXJl
QWxsQ29kZWNzU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvZGVjcywgYm9vbCBzaG91bGRDaGVja0ZvckhhcmR3YXJlVXNlKSBjb25z
dAogewotICAgIGZvciAoU3RyaW5nIGNvZGVjIDogY29kZWNzKSB7CisgICAgZm9yIChjb25zdCBh
dXRvJiBjb2RlYyA6IGNvZGVjcykgewogICAgICAgICBpZiAoIWlzQ29kZWNTdXBwb3J0ZWQoY29u
ZmlndXJhdGlvbiwgY29kZWMsIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQ5NCwxOSArNTI4LDE3IEBAIGJvb2wgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjphcmVBbGxDb2RlY3NTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uCiBib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNBVkMxQ29kZWNT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBjb25zdCBTdHJpbmcmIGNvZGVj
LCBib29sIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpIGNvbnN0CiB7CiAgICAgYXV0byBjaGVj
a0gyNjRDYXBzID0gWyZdKGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcpIHsKLSAgICAgICAgYm9vbCBz
dXBwb3J0ZWQgPSBmYWxzZTsKLSAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgbG9va3VwUmVz
dWx0OworICAgICAgICBPcHRpb25TZXQ8RWxlbWVudEZhY3Rvcmllczo6VHlwZT4gZmFjdG9yeVR5
cGVzOwogICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgY2FzZSBDb25m
aWd1cmF0aW9uOjpEZWNvZGluZzoKLSAgICAgICAgICAgIGxvb2t1cFJlc3VsdCA9IGhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsIGNhcHNTdHJpbmcsIHRydWUp
OworICAgICAgICAgICAgZmFjdG9yeVR5cGVzLmFkZChFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpW
aWRlb0RlY29kZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29uZmlndXJh
dGlvbjo6RW5jb2Rpbmc6Ci0gICAgICAgICAgICBsb29rdXBSZXN1bHQgPSBoYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKG1fdmlkZW9FbmNvZGVyRmFjdG9yaWVzLCBjYXBzU3RyaW5nLCB0cnVlKTsKKyAg
ICAgICAgICAgIGZhY3RvcnlUeXBlcy5hZGQoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9F
bmNvZGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHN1cHBvcnRl
ZCA9IGxvb2t1cFJlc3VsdDsKLSAgICAgICAgaWYgKHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2Up
Ci0gICAgICAgICAgICBzdXBwb3J0ZWQgPSBsb29rdXBSZXN1bHQuaXNVc2luZ0hhcmR3YXJlOwor
ICAgICAgICBhdXRvIGxvb2t1cFJlc3VsdCA9IEVsZW1lbnRGYWN0b3JpZXMoZmFjdG9yeVR5cGVz
KS5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKGZhY3RvcnlUeXBlcy50b1NpbmdsZVZhbHVlKCkudmFs
dWUoKSwgY2Fwc1N0cmluZywgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7CisgICAgICAgIGJvb2wgc3VwcG9ydGVkID0gbG9va3VwUmVzdWx0ICYmIHNob3Vs
ZENoZWNrRm9ySGFyZHdhcmVVc2UgPyBsb29rdXBSZXN1bHQuaXNVc2luZ0hhcmR3YXJlIDogdHJ1
ZTsKICAgICAgICAgR1NUX0RFQlVHKCIlcyBkZWNvZGluZyBzdXBwb3J0ZWQgZm9yIGNvZGVjICVz
OiAlcyIsIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UgPyAiSGFyZHdhcmUiIDogIlNvZnR3YXJl
IiwgY29kZWMudXRmOCgpLmRhdGEoKSwgYm9vbEZvclByaW50aW5nKHN1cHBvcnRlZCkpOwogICAg
ICAgICByZXR1cm4gc3VwcG9ydGVkOwogICAgIH07CkBAIC01ODksNyArNjIxLDcgQEAgY29uc3Qg
Y2hhciogR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpjb25maWd1cmF0aW9uTmFtZUZvckxvZ2dp
bmcoQ29uZmlndXJhdGlvbgogICAgIHJldHVybiBjb25maWdMb2dTdHJpbmc7CiB9CiAKLUdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjppc0NvbmZpZ3VyYXRpb25TdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uLCBNZWRpYUNvbmZpZ3VyYXRpb24mIG1lZGlhQ29uZmlndXJhdGlvbikgY29uc3QKK0dT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjppc0NvbmZpZ3VyYXRpb25TdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uLCBjb25zdCBNZWRpYUNvbmZpZ3VyYXRpb24mIG1lZGlhQ29uZmlndXJhdGlvbikg
Y29uc3QKIHsKICAgICBib29sIGlzU3VwcG9ydGVkID0gZmFsc2U7CiAgICAgYm9vbCBpc1VzaW5n
SGFyZHdhcmUgPSBmYWxzZTsKQEAgLTYxOCw3ICs2NTAsNyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXND
b25maQogICAgICAgICBpc1N1cHBvcnRlZCA9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChjb25m
aWd1cmF0aW9uLCBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkpOwogICAgIH0KIAotICAgIHJl
dHVybiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IHsgaXNT
dXBwb3J0ZWQsIGlzVXNpbmdIYXJkd2FyZSB9OworICAgIHJldHVybiB7IGlzU3VwcG9ydGVkLCBp
c1VzaW5nSGFyZHdhcmUgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lci5oCmluZGV4IGQ4NGQzNGFlYzQ5YS4uMGMzZjYwODkyM2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDYxICs0NSw3NyBAQCBwdWJs
aWM6CiAgICAgICAgIEVuY29kaW5nCiAgICAgfTsKIAotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZVNldChDb25maWd1cmF0aW9uKTsK
LSAgICBib29sIGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uLCBTdHJpbmcg
Y29udGFpbmVyVHlwZSkgY29uc3Q7CisgICAgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVUeXBlU2V0KENvbmZpZ3VyYXRpb24pIGNvbnN0OworICAg
IGJvb2wgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmlu
ZyYgY29udGFpbmVyVHlwZSkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUmVnaXN0cnlMb29rdXBSZXN1
bHQgewotICAgICAgICBib29sIGlzU3VwcG9ydGVkOwotICAgICAgICBib29sIGlzVXNpbmdIYXJk
d2FyZTsKKyAgICAgICAgYm9vbCBpc1N1cHBvcnRlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wg
aXNVc2luZ0hhcmR3YXJlIHsgZmFsc2UgfTsKIAogICAgICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gaXNTdXBwb3J0ZWQ7IH0KICAgICB9OwogICAgIFJlZ2lzdHJ5TG9va3VwUmVz
dWx0IGlzRGVjb2RpbmdTdXBwb3J0ZWQoTWVkaWFDb25maWd1cmF0aW9uJiBtZWRpYUNvbmZpZ3Vy
YXRpb24pIGNvbnN0IHsgcmV0dXJuIGlzQ29uZmlndXJhdGlvblN1cHBvcnRlZChDb25maWd1cmF0
aW9uOjpEZWNvZGluZywgbWVkaWFDb25maWd1cmF0aW9uKTsgfTsKICAgICBSZWdpc3RyeUxvb2t1
cFJlc3VsdCBpc0VuY29kaW5nU3VwcG9ydGVkKE1lZGlhQ29uZmlndXJhdGlvbiYgbWVkaWFDb25m
aWd1cmF0aW9uKSBjb25zdCB7IHJldHVybiBpc0NvbmZpZ3VyYXRpb25TdXBwb3J0ZWQoQ29uZmln
dXJhdGlvbjo6RW5jb2RpbmcsIG1lZGlhQ29uZmlndXJhdGlvbik7IH0KIAotICAgIGJvb2wgaXND
b2RlY1N1cHBvcnRlZChDb25maWd1cmF0aW9uLCBTdHJpbmcgY29kZWMsIGJvb2wgdXNpbmdIYXJk
d2FyZSA9IGZhbHNlKSBjb25zdDsKKyAgICBib29sIGlzQ29kZWNTdXBwb3J0ZWQoQ29uZmlndXJh
dGlvbiwgY29uc3QgU3RyaW5nJiBjb2RlYywgYm9vbCB1c2luZ0hhcmR3YXJlID0gZmFsc2UpIGNv
bnN0OwogICAgIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBpc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKENvbmZpZ3VyYXRpb24sIGNvbnN0IENvbnRlbnRUeXBlJiwgY29uc3QgVmVjdG9yPENv
bnRlbnRUeXBlPiYgY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSBjb25zdDsK
ICAgICBib29sIGFyZUFsbENvZGVjc1N1cHBvcnRlZChDb25maWd1cmF0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgY29kZWNzLCBib29sIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UgPSBmYWxz
ZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIoYm9v
bCBpc01lZGlhU291cmNlID0gZmFsc2UpOwotICAgIH5HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIo
KTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZURlY29kZXJzKCk7Ci0gICAgdm9pZCBpbml0aWFsaXpl
RW5jb2RlcnMoKTsKKyAgICB+R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyKCkgPSBkZWZhdWx0Owor
CisgICAgc3RydWN0IEVsZW1lbnRGYWN0b3JpZXMgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUg
eworICAgICAgICAgICAgQXVkaW9QYXJzZXIgID0gMSA8PCAwLAorICAgICAgICAgICAgQXVkaW9E
ZWNvZGVyID0gMSA8PCAxLAorICAgICAgICAgICAgVmlkZW9QYXJzZXIgID0gMSA8PCAyLAorICAg
ICAgICAgICAgVmlkZW9EZWNvZGVyID0gMSA8PCAzLAorICAgICAgICAgICAgRGVtdXhlciAgICAg
ID0gMSA8PCA0LAorICAgICAgICAgICAgQXVkaW9FbmNvZGVyID0gMSA8PCA1LAorICAgICAgICAg
ICAgVmlkZW9FbmNvZGVyID0gMSA8PCA2LAorICAgICAgICAgICAgTXV4ZXIgICAgICAgID0gMSA8
PCA3LAorICAgICAgICAgICAgQWxsICAgICAgICAgID0gKDEgPDwgOCkgLSAxCisgICAgICAgIH07
CisKKyAgICAgICAgZXhwbGljaXQgRWxlbWVudEZhY3RvcmllcyhPcHRpb25TZXQ8VHlwZT4pOwor
ICAgICAgICB+RWxlbWVudEZhY3RvcmllcygpOworCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBlbGVtZW50RmFjdG9yeVR5cGVUb1N0cmluZyhUeXBlKTsKKyAgICAgICAgR0xpc3QqIGZhY3Rv
cnkoVHlwZSkgY29uc3Q7CisKKyAgICAgICAgZW51bSBjbGFzcyBDaGVja0hhcmR3YXJlQ2xhc3Np
ZmllciB7IE5vLCBZZXMgfTsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJl
Q2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKworICAgICAg
ICBHTGlzdCogYXVkaW9EZWNvZGVyRmFjdG9yaWVzIHsgbnVsbHB0ciB9OworICAgICAgICBHTGlz
dCogYXVkaW9QYXJzZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CisgICAgICAgIEdMaXN0KiB2aWRl
b0RlY29kZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CisgICAgICAgIEdMaXN0KiB2aWRlb1BhcnNl
ckZhY3RvcmllcyB7IG51bGxwdHIgfTsKKyAgICAgICAgR0xpc3QqIGRlbXV4ZXJGYWN0b3JpZXMg
eyBudWxscHRyIH07CisgICAgICAgIEdMaXN0KiBhdWRpb0VuY29kZXJGYWN0b3JpZXMgeyBudWxs
cHRyIH07CisgICAgICAgIEdMaXN0KiB2aWRlb0VuY29kZXJGYWN0b3JpZXMgeyBudWxscHRyIH07
CisgICAgICAgIEdMaXN0KiBtdXhlckZhY3RvcmllcyB7IG51bGxwdHIgfTsKKyAgICB9OwogCi0g
ICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaXNDb25maWd1cmF0aW9uU3VwcG9ydGVkKENvbmZpZ3Vy
YXRpb24sIE1lZGlhQ29uZmlndXJhdGlvbiYpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZURl
Y29kZXJzKGNvbnN0IEVsZW1lbnRGYWN0b3JpZXMmKTsKKyAgICB2b2lkIGluaXRpYWxpemVFbmNv
ZGVycyhjb25zdCBFbGVtZW50RmFjdG9yaWVzJik7CiAKLSAgICBlbnVtIEVsZW1lbnRUeXBlIHsK
LSAgICAgICAgQXVkaW9EZWNvZGVyID0gMCwKLSAgICAgICAgVmlkZW9EZWNvZGVyLAotICAgICAg
ICBEZW11eGVyCi0gICAgfTsKKyAgICBSZWdpc3RyeUxvb2t1cFJlc3VsdCBpc0NvbmZpZ3VyYXRp
b25TdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiwgY29uc3QgTWVkaWFDb25maWd1cmF0aW9uJikgY29u
c3Q7CiAKICAgICBzdHJ1Y3QgR3N0Q2Fwc1dlYktpdE1hcHBpbmcgewotICAgICAgICBFbGVtZW50
VHlwZSBlbGVtZW50VHlwZTsKKyAgICAgICAgRWxlbWVudEZhY3Rvcmllczo6VHlwZSBlbGVtZW50
VHlwZTsKICAgICAgICAgY29uc3QgY2hhciogY2Fwc1N0cmluZzsKICAgICAgICAgVmVjdG9yPEF0
b21TdHJpbmc+IHdlYmtpdE1pbWVUeXBlczsKICAgICAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHdl
YmtpdENvZGVjUGF0dGVybnM7CiAgICAgfTsKLSAgICB2b2lkIGZpbGxNaW1lVHlwZVNldEZyb21D
YXBzTWFwcGluZyhWZWN0b3I8R3N0Q2Fwc1dlYktpdE1hcHBpbmc+Jik7Ci0KLSAgICBSZWdpc3Ry
eUxvb2t1cFJlc3VsdCBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEdMaXN0KiBlbGVtZW50RmFjdG9y
aWVzLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBib29sIHNob3VsZENoZWNrSGFyZHdhcmVDbGFz
c2lmaWVyID0gZmFsc2UsIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibGFja0xpc3QgPSBXVEY6
Om51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5n
KGNvbnN0IEVsZW1lbnRGYWN0b3JpZXMmLCBjb25zdCBWZWN0b3I8R3N0Q2Fwc1dlYktpdE1hcHBp
bmc+Jik7CiAKICAgICBib29sIGlzQVZDMUNvZGVjU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24sIGNv
bnN0IFN0cmluZyYgY29kZWMsIGJvb2wgc2hvdWxkQ2hlY2tGb3JIYXJkd2FyZVVzZSkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogY29uZmlndXJhdGlvbk5hbWVGb3JMb2dnaW5n
KENvbmZpZ3VyYXRpb24pIGNvbnN0OwogCi0gICAgYm9vbCBtX2lzTWVkaWFTb3VyY2U7Ci0gICAg
R0xpc3QqIG1fYXVkaW9EZWNvZGVyRmFjdG9yaWVzOwotICAgIEdMaXN0KiBtX2F1ZGlvUGFyc2Vy
RmFjdG9yaWVzOwotICAgIEdMaXN0KiBtX3ZpZGVvRGVjb2RlckZhY3RvcmllczsKLSAgICBHTGlz
dCogbV92aWRlb1BhcnNlckZhY3RvcmllczsKLSAgICBHTGlzdCogbV9kZW11eGVyRmFjdG9yaWVz
OwotICAgIEdMaXN0KiBtX2F1ZGlvRW5jb2RlckZhY3RvcmllczsKLSAgICBHTGlzdCogbV92aWRl
b0VuY29kZXJGYWN0b3JpZXM7Ci0gICAgR0xpc3QqIG1fbXV4ZXJGYWN0b3JpZXM7CisgICAgYm9v
bCBtX2lzTWVkaWFTb3VyY2UgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IG1fZGVjb2Rlck1pbWVUeXBlU2V0OwogICAgIEhhc2hNYXA8QXRv
bVN0cmluZywgYm9vbD4gbV9kZWNvZGVyQ29kZWNNYXA7CiAgICAgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9lbmNvZGVyTWltZVR5cGVTZXQ7Cg==
</data>
<flag name="review"
          id="431328"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>